@strapi/admin 4.10.1 → 4.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/src/components/AuthenticatedApp/index.js +19 -24
- package/admin/src/components/DragLayer/DragLayer.js +53 -0
- package/admin/src/components/DragLayer/index.js +1 -0
- package/admin/src/components/LeftMenu/index.js +2 -2
- package/admin/src/components/Providers/index.js +11 -7
- package/admin/src/content-manager/contexts/index.js +0 -1
- package/admin/src/content-manager/hooks/index.js +0 -1
- package/admin/src/content-manager/hooks/useLazyComponents/index.js +7 -3
- package/admin/src/content-manager/hooks/useRelation/useRelation.js +1 -3
- package/admin/src/content-manager/pages/{ListSettingsView/components/CardPreview.js → App/components/CardDragPreview.js} +28 -28
- package/admin/src/content-manager/pages/App/components/ComponentDragPreview.js +75 -0
- package/admin/src/content-manager/{components/DragLayer → pages/App/components}/RelationDragPreview.js +7 -4
- package/admin/src/content-manager/pages/App/index.js +39 -2
- package/admin/src/content-manager/pages/EditSettingsView/components/ComponentFieldList.js +1 -1
- package/admin/src/content-manager/pages/EditSettingsView/components/DisplayedFieldButton.js +1 -1
- package/admin/src/content-manager/pages/EditSettingsView/components/DynamicZoneList.js +1 -1
- package/admin/src/content-manager/pages/EditSettingsView/components/FormModal.js +1 -1
- package/admin/src/content-manager/{components → pages/EditSettingsView/components}/LayoutDndProvider/index.js +3 -4
- package/admin/src/content-manager/pages/EditSettingsView/components/LinkToCTB.js +1 -1
- package/admin/src/content-manager/pages/EditSettingsView/components/ModalForm.js +1 -1
- package/admin/src/content-manager/pages/EditSettingsView/components/RowItemsLayout.js +1 -1
- package/admin/src/content-manager/pages/EditSettingsView/hooks/useLayoutDnd.js +6 -0
- package/admin/src/content-manager/pages/EditSettingsView/index.js +1 -1
- package/admin/src/content-manager/pages/ListSettingsView/components/DraggableCard.js +6 -6
- package/admin/src/hooks/useMenu/index.js +2 -2
- package/admin/src/hooks/useReleaseNotification/index.js +2 -2
- package/admin/src/hooks/useSettingsMenu/index.js +2 -2
- package/admin/src/pages/Admin/Onboarding/index.js +2 -2
- package/admin/src/pages/App/index.js +2 -2
- package/admin/src/pages/HomePage/SocialLinks.js +2 -2
- package/admin/src/pages/MarketplacePage/index.js +2 -2
- package/admin/src/pages/ProfilePage/index.js +2 -2
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/index.js +2 -2
- package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/updateValues.js +3 -3
- package/admin/src/pages/SettingsPage/pages/Users/EditPage/index.js +2 -2
- package/admin/src/translations/fr.json +1 -1
- package/build/{5563.905daa13.chunk.js → 5563.986609ed.chunk.js} +2 -2
- package/build/6858.56d4d528.chunk.js +50 -0
- package/build/{7259.b7d00cea.chunk.js → 7259.7a48aa2f.chunk.js} +1 -1
- package/build/7725.1633e06f.chunk.js +213 -0
- package/build/9703.e590889d.chunk.js +1 -0
- package/build/Admin-authenticatedApp.a8373103.chunk.js +79 -0
- package/build/{Admin_InternalErrorPage.15c6bf07.chunk.js → Admin_InternalErrorPage.96ceaae1.chunk.js} +1 -1
- package/build/{Admin_homePage.f9309c6d.chunk.js → Admin_homePage.9f7c0bb1.chunk.js} +5 -5
- package/build/{Admin_marketplace.56bc1008.chunk.js → Admin_marketplace.a60cde15.chunk.js} +5 -5
- package/build/{Admin_pluginsPage.f6b52ee9.chunk.js → Admin_pluginsPage.9e6fa51c.chunk.js} +1 -1
- package/build/{Admin_profilePage.9112cffc.chunk.js → Admin_profilePage.1b337b73.chunk.js} +2 -2
- package/build/{Admin_settingsPage.4604a16c.chunk.js → Admin_settingsPage.5e045f42.chunk.js} +2 -2
- package/build/{Upload_ConfigureTheView.eaaec495.chunk.js → Upload_ConfigureTheView.4fc648b5.chunk.js} +1 -1
- package/build/admin-app.9bfe4ec7.chunk.js +63 -0
- package/build/{admin-edit-roles-page.8a4063f7.chunk.js → admin-edit-roles-page.d0c9497b.chunk.js} +24 -24
- package/build/{admin-edit-users.7e14d85f.chunk.js → admin-edit-users.ba27c532.chunk.js} +2 -2
- package/build/{admin-roles-list.329c1f63.chunk.js → admin-roles-list.c759daa3.chunk.js} +1 -1
- package/build/{admin-users.d02de059.chunk.js → admin-users.ad5dd832.chunk.js} +2 -2
- package/build/{api-tokens-create-page.97595e12.chunk.js → api-tokens-create-page.973d2816.chunk.js} +1 -1
- package/build/{api-tokens-edit-page.cd36e30e.chunk.js → api-tokens-edit-page.29725c5e.chunk.js} +1 -1
- package/build/{api-tokens-list-page.6757c7b9.chunk.js → api-tokens-list-page.66c4fbdd.chunk.js} +2 -2
- package/build/{audit-logs-settings-page.19d90bda.chunk.js → audit-logs-settings-page.45cb4fb5.chunk.js} +1 -1
- package/build/content-manager.d28eb183.chunk.js +1111 -0
- package/build/{content-type-builder-list-view.9c2c020c.chunk.js → content-type-builder-list-view.5ff685ec.chunk.js} +1 -1
- package/build/{content-type-builder.68af11d2.chunk.js → content-type-builder.4737a30c.chunk.js} +3 -3
- package/build/{email-settings-page.1095e1ab.chunk.js → email-settings-page.dc07d518.chunk.js} +1 -1
- package/build/{fr-json.5947cf63.chunk.js → fr-json.73494bf5.chunk.js} +1 -1
- package/build/{i18n-settings-page.d95b32df.chunk.js → i18n-settings-page.8219dd99.chunk.js} +1 -1
- package/build/index.html +1 -1
- package/build/main.41970e4c.js +2597 -0
- package/build/review-workflows-settings.7c0b4e73.chunk.js +61 -0
- package/build/{runtime~main.d4c8d6a2.js → runtime~main.c20330f1.js} +1 -1
- package/build/{sso-settings-page.1dd4886e.chunk.js → sso-settings-page.f44d95d8.chunk.js} +1 -1
- package/build/{transfer-tokens-create-page.ec2ca215.chunk.js → transfer-tokens-create-page.170acee6.chunk.js} +1 -1
- package/build/{transfer-tokens-edit-page.22bf28e5.chunk.js → transfer-tokens-edit-page.6cf23295.chunk.js} +1 -1
- package/build/{transfer-tokens-list-page.cf8c77f2.chunk.js → transfer-tokens-list-page.c3fec4c1.chunk.js} +2 -2
- package/build/{upload-settings.945fdcfa.chunk.js → upload-settings.dd2d987c.chunk.js} +1 -1
- package/build/{upload.a86b1054.chunk.js → upload.c8479232.chunk.js} +1 -1
- package/build/{users-advanced-settings-page.5b5a9baa.chunk.js → users-advanced-settings-page.c36cfd59.chunk.js} +1 -1
- package/build/{users-email-settings-page.e5506eb4.chunk.js → users-email-settings-page.2716ce8e.chunk.js} +5 -5
- package/build/{users-providers-settings-page.e32089c2.chunk.js → users-providers-settings-page.0d6304a5.chunk.js} +1 -1
- package/build/{users-roles-settings-page.20656f92.chunk.js → users-roles-settings-page.eeb3a339.chunk.js} +1 -1
- package/build/{webhook-edit-page.a3b62049.chunk.js → webhook-edit-page.f4db86f3.chunk.js} +2 -2
- package/build/{webhook-list-page.ca38eeef.chunk.js → webhook-list-page.30d73114.chunk.js} +1 -1
- package/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/ReviewWorkflowsStageEE.js +11 -5
- package/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/getTableColumn.js +7 -3
- package/ee/admin/content-manager/pages/EditView/InformationBox/InformationBoxEE.js +16 -2
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/ReviewWorkflows.js +34 -25
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/actions/index.js +11 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/StageDragPreview/StageDragPreview.js +45 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/StageDragPreview/index.js +1 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stage/Stage.js +287 -63
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stage/components/OptionColor/OptionColor.js +27 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stage/components/OptionColor/index.js +1 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stage/components/SingleValueColor/SingleValueColor.js +31 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stage/components/SingleValueColor/index.js +1 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stages.js +2 -1
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/constants.js +26 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/reducer/index.js +36 -2
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/utils/colors.js +33 -0
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/utils/getWorkflowValidationSchema.js +9 -0
- package/ee/server/constants/workflows.js +1 -0
- package/ee/server/content-types/workflow-stage/index.js +7 -0
- package/ee/server/controllers/authentication/middlewares.js +1 -1
- package/ee/server/migrations/review-workflows-stages-color.js +20 -0
- package/ee/server/register.js +2 -0
- package/ee/server/services/review-workflows/review-workflows.js +1 -1
- package/ee/server/services/review-workflows/stages.js +1 -1
- package/ee/server/utils/persisted-tables.js +3 -0
- package/ee/server/validation/review-workflows.js +7 -1
- package/jest.config.front.js +1 -0
- package/package.json +10 -10
- package/admin/src/components/AutoReloadOverlayBlockerProvider/Blocker.js +0 -95
- package/admin/src/components/AutoReloadOverlayBlockerProvider/Overlay.js +0 -42
- package/admin/src/components/AutoReloadOverlayBlockerProvider/index.js +0 -99
- package/admin/src/components/Notifications/Notification/index.js +0 -159
- package/admin/src/components/Notifications/index.js +0 -46
- package/admin/src/components/Notifications/reducer.js +0 -47
- package/admin/src/components/OverlayBlocker/index.js +0 -67
- package/admin/src/content-manager/components/DragLayer/ComponentDragPreview.js +0 -83
- package/admin/src/content-manager/components/DragLayer/index.js +0 -85
- package/admin/src/content-manager/contexts/LayoutDnd.js +0 -5
- package/admin/src/content-manager/hooks/useCallbackRef.js +0 -23
- package/admin/src/content-manager/hooks/useLayoutDnd.js +0 -6
- package/admin/src/content-manager/pages/ListSettingsView/utils/ellipsisCardTitle.js +0 -7
- package/build/8694.6522968d.chunk.js +0 -247
- package/build/Admin-authenticatedApp.5562aedc.chunk.js +0 -79
- package/build/admin-app.014adc27.chunk.js +0 -110
- package/build/content-manager.84f81966.chunk.js +0 -1130
- package/build/main.841e0dcb.js +0 -2280
- package/build/review-workflows-settings.f7890c40.chunk.js +0 -106
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[8853],{77495:function(Pe,V,a){a.r(V),a.d(V,{default:function(){return Mt}});var e=a(32735),C=a(53038),l=a(
|
|
1
|
+
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[8853],{77495:function(Pe,V,a){a.r(V),a.d(V,{default:function(){return Mt}});var e=a(32735),C=a(53038),l=a(24989),R=a(90201),T=a(88369),te=a(94638),J=a(96709),j=a(27649),Z=a(82055),O=a(41415),H=a(99223),U=a(17e3),Y=a(56755),F=a(33827),I=a(94547),M=a(19786),h=a(49372),De=a(3685),be=a(19406),b=a(67879),K=a(20108),G=a(59677);const Le=async(t,n)=>{try{const{get:s}=(0,l.tg)(),{data:r}=await s((0,G.Gc)("roles"));return n("The roles have loaded successfully"),r}catch{throw t({type:"warning",message:{id:"notification.error"}}),new Error("error")}},Se=async(t,n)=>{try{const{del:s}=(0,l.tg)();await s(`${(0,G.Gc)("roles")}/${t}`)}catch{n({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}};var Ze=a(60216),f=a.n(Ze),Me=a(35658),v=a(87933),se=a(50563),Oe=a(68625),Ue=a(4038);const q=({sortedRoles:t,canDelete:n,permissions:s,setRoleToDelete:r,onDelete:c})=>{const{formatMessage:o}=(0,b.Z)(),{push:g}=(0,C.k6)(),[d,m]=c,u=i=>n&&!["public","authenticated"].includes(i.type),p=i=>{r(i),m(!d)},E=i=>{g(`/settings/${R.Z}/roles/${i}`)};return e.createElement(Me.p,null,t?.map(i=>e.createElement(I.Tr,{key:i.name,...(0,l.X7)({fn:()=>E(i.id)})},e.createElement(M.Td,{width:"20%"},e.createElement(h.Z,null,i.name)),e.createElement(M.Td,{width:"50%"},e.createElement(h.Z,null,i.description)),e.createElement(M.Td,{width:"30%"},e.createElement(h.Z,null,`${i.nb_users} ${o({id:"global.users",defaultMessage:"users"}).toLowerCase()}`)),e.createElement(M.Td,null,e.createElement(v.k,{justifyContent:"end",...l.UW},e.createElement(l.jW,{permissions:s.updateRole},e.createElement(se.h,{onClick:()=>E(i.id),noBorder:!0,icon:e.createElement(Oe.Z,null),label:o({id:"app.component.table.edit",defaultMessage:"Edit {target}"},{target:`${i.name}`})})),u(i)&&e.createElement(l.jW,{permissions:s.deleteRole},e.createElement(se.h,{onClick:()=>p(i.id),noBorder:!0,icon:e.createElement(Ue.Z,null),label:o({id:"global.delete-target",defaultMessage:"Delete {target}"},{target:`${i.name}`})})))))))};var xe=q;q.defaultProps={canDelete:!1},q.propTypes={onDelete:f().array.isRequired,permissions:f().object.isRequired,setRoleToDelete:f().func.isRequired,sortedRoles:f().array.isRequired,canDelete:f().bool};var ke=()=>{const{trackUsage:t}=(0,l.rS)(),{formatMessage:n,locale:s}=(0,b.Z)(),{push:r}=(0,C.k6)(),c=(0,l.lm)(),{notifyStatus:o}=(0,te.G)(),[{query:g}]=(0,l.Kx)(),d=g?._q||"",[m,u]=(0,e.useState)(!1),[p,E]=(0,e.useState)(!1),[i,L]=(0,e.useState)();(0,l.go)();const S=(0,K.useQueryClient)(),y=(0,e.useMemo)(()=>({create:T.Z.createRole,read:T.Z.readRoles,update:T.Z.updateRole,delete:T.Z.deleteRole}),[]),{isLoading:A,allowedActions:{canRead:P,canDelete:$}}=(0,l.ss)(y),{isLoading:Ot,data:{roles:ye},isFetching:Ut}=(0,K.useQuery)("get-roles",()=>Le(c,o),{initialData:{},enabled:P}),{includes:Re}=(0,l.L0)(s,{sensitivity:"base"}),Ce=(0,l.Xe)(s,{sensitivity:"base"}),Te=Ot||Ut,xt=()=>{t("willCreateRole"),r(`/settings/${R.Z}/roles/new`)},kt=()=>{u(!m)},It={roles:{id:(0,G.OB)("Roles.empty"),defaultMessage:"You don't have any roles yet."},search:{id:(0,G.OB)("Roles.empty.search"),defaultMessage:"No roles match the search."}},Gt=n({id:"global.roles",defaultMessage:"Roles"}),Bt=(0,K.useMutation)(k=>Se(k,c),{async onSuccess(){await S.invalidateQueries("get-roles")}}),Nt=async()=>{E(!0),await Bt.mutateAsync(i),u(!m),E(!1)},Q=(ye||[]).filter(k=>Re(k.name,d)||Re(k.description,d)).sort((k,Ae)=>Ce.compare(k.name,Ae.name)||Ce.compare(k.description,Ae.description)),$t=d&&!Q.length?"search":"roles",jt=4,Ft=(ye?.length||0)+1;return e.createElement(J.A,null,e.createElement(l.SL,{name:Gt}),e.createElement(j.o,{"aria-busy":Te},e.createElement(Z.T,{title:n({id:"global.roles",defaultMessage:"Roles"}),subtitle:n({id:"Settings.roles.list.description",defaultMessage:"List of roles"}),primaryAction:e.createElement(l.jW,{permissions:T.Z.createRole},e.createElement(O.z,{onClick:xt,startIcon:e.createElement(be.Z,null),size:"S"},n({id:(0,G.OB)("List.button.roles"),defaultMessage:"Add new role"})))}),e.createElement(H.Z,{startActions:e.createElement(l.m,{label:n({id:"app.component.search.label",defaultMessage:"Search"})})}),e.createElement(U.D,null,!P&&e.createElement(l.ZF,null),(Te||A)&&e.createElement(l.dO,null),P&&Q&&Q?.length?e.createElement(Y.i,{colCount:jt,rowCount:Ft},e.createElement(F.h,null,e.createElement(I.Tr,null,e.createElement(M.Th,null,e.createElement(h.Z,{variant:"sigma",textColor:"neutral600"},n({id:"global.name",defaultMessage:"Name"}))),e.createElement(M.Th,null,e.createElement(h.Z,{variant:"sigma",textColor:"neutral600"},n({id:"global.description",defaultMessage:"Description"}))),e.createElement(M.Th,null,e.createElement(h.Z,{variant:"sigma",textColor:"neutral600"},n({id:"global.users",defaultMessage:"Users"}))),e.createElement(M.Th,null,e.createElement(De.T,null,n({id:"global.actions",defaultMessage:"Actions"}))))),e.createElement(xe,{sortedRoles:Q,canDelete:$,permissions:T.Z,setRoleToDelete:L,onDelete:[m,u]})):e.createElement(l.x7,{content:It[$t]})),e.createElement(l.QH,{isConfirmButtonLoading:p,onConfirm:Nt,onToggleDialog:kt,isOpen:m})))},Ie=()=>e.createElement(l.O4,{permissions:T.Z.accessRoles},e.createElement(ke,null)),ne=a(92802),D=a(72850),z=a(15335),x=a(5803),ae=a(10369),re=a(10508),oe=a(66456),Ge=a(29439),B=a(82069),Be=a(33795),W=a.n(Be),Ne=a(86834),$e=a.n(Ne),je=a(86205),Fe=a.n(je);const le=(0,e.createContext)({}),ie=({children:t,value:n})=>e.createElement(le.Provider,{value:n},t),_=()=>(0,e.useContext)(le);ie.propTypes={children:f().node.isRequired,value:f().object.isRequired};var X=a(8471),We=a(37213),Ve=a.n(We),He=a(15738),Ye=a.n(He),ze=t=>{switch(t){case"POST":return{text:"success600",border:"success200",background:"success100"};case"GET":return{text:"secondary600",border:"secondary200",background:"secondary100"};case"PUT":return{text:"warning600",border:"warning200",background:"warning100"};case"DELETE":return{text:"danger600",border:"danger200",background:"danger100"};default:return{text:"neutral600",border:"neutral200",background:"neutral100"}}};const Xe=(0,X.ZP)(D.x)`
|
|
2
2
|
margin: -1px;
|
|
3
3
|
border-radius: ${({theme:t})=>t.spaces[1]} 0 0 ${({theme:t})=>t.spaces[1]};
|
|
4
4
|
`;function ee({route:t}){const{formatMessage:n}=(0,b.Z)(),{method:s,handler:r,path:c}=t,o=c?Ye()(c.split("/")):[],[g="",d=""]=r?r.split("."):[],m=ze(t.method);return e.createElement(v.k,{direction:"column",alignItems:"stretch",gap:2},e.createElement(h.Z,{variant:"delta",as:"h3"},n({id:"users-permissions.BoundRoute.title",defaultMessage:"Bound route to"}),"\xA0",e.createElement("span",null,g),e.createElement(h.Z,{variant:"delta",textColor:"primary600"},".",d)),e.createElement(v.k,{hasRadius:!0,background:"neutral0",borderColor:"neutral200",gap:0},e.createElement(Xe,{background:m.background,borderColor:m.border,padding:2},e.createElement(h.Z,{fontWeight:"bold",textColor:m.text},s)),e.createElement(D.x,{paddingLeft:2,paddingRight:2},Ve()(o,u=>e.createElement(h.Z,{key:u,textColor:u.includes(":")?"neutral600":"neutral900"},"/",u)))))}ee.defaultProps={route:{handler:"Nocontroller.error",method:"GET",path:"/there-is-no-path"}},ee.propTypes={route:f().shape({handler:f().string,method:f().string,path:f().string})};var we=ee,Qe=()=>{const{formatMessage:t}=(0,b.Z)(),{selectedAction:n,routes:s}=_(),r=Fe()(n.split("."),"controllers"),c=W()(s,r[0]),o=r.slice(1).join("."),g=$e()(c)?[]:c.filter(d=>d.handler.endsWith(o));return e.createElement(x.P,{col:5,background:"neutral150",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7,style:{minHeight:"100%"}},n?e.createElement(v.k,{direction:"column",alignItems:"stretch",gap:2},g.map((d,m)=>e.createElement(we,{key:m,route:d}))):e.createElement(v.k,{direction:"column",alignItems:"stretch",gap:2},e.createElement(h.Z,{variant:"delta",as:"h3"},t({id:"users-permissions.Policies.header.title",defaultMessage:"Advanced settings"})),e.createElement(h.Z,{as:"p",textColor:"neutral600"},t({id:"users-permissions.Policies.header.hint",defaultMessage:"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route"}))))},Je=a(83828),Ke=a(61762),qe=a(89966),_e=a(23940),et=a.n(_e);function tt(t){switch(t){case"application":return"Application";case"plugin::content-manager":return"Content manager";case"plugin::content-type-builder":return"Content types builder";case"plugin::documentation":return"Documentation";case"plugin::email":return"Email";case"plugin::i18n":return"i18n";case"plugin::upload":return"Upload";case"plugin::users-permissions":return"Users-permissions";default:return et()(t.replace("api::","").replace("plugin::",""))}}var st=tt,nt=a(98978),ce=a.n(nt),de=a(8284),at=a(45112);const ue=X.iv`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5162],{47272:function(ne,S,t){t.d(S,{Z:function(){return Se}});var e=t(32735),d=t(
|
|
1
|
+
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5162],{47272:function(ne,S,t){t.d(S,{Z:function(){return Se}});var e=t(32735),d=t(24989),L=t(27649),o=t(20108),O=t(53038),D=t(67927),J=t(60216),s=t.n(J),g=t(2438),m=t(66456),N=t(29439),Oe=t(82055),b=t(87933),he=t(41415),ke=t(17e3),ae=t(72850),le=t(15335),V=t(5803),ie=t(10369),Z=t(92802),j=t(67879),Ee=t(28847),W=t(49372),de=t(8471),ve=t(8284),Le=t(44426),Q=t(23940),ce=t.n(Q);const i=({disabledEvents:n,name:r,events:a,inputValue:l,handleChange:p,handleChangeAll:I})=>{const u=a.filter(E=>!n.includes(E)),f=l.length===u.length,C=l.length>0,y=({target:{name:E}})=>{I({target:{name:E,value:!f}})};return e.createElement("tr",null,e.createElement("td",null,e.createElement(ve.X,{indeterminate:C&&!f,"aria-label":"Select all entries",name:r,onChange:y,value:f},ce()(r))),a.map(E=>e.createElement("td",{key:E},e.createElement(Le.C,{disabled:n.includes(E),"aria-label":E,name:E,value:l.includes(E),onValueChange:M=>p({target:{name:E,value:M}})}))))};i.defaultProps={disabledEvents:[],events:[],inputValue:[],handleChange(){},handleChangeAll(){}},i.propTypes={disabledEvents:s().array,events:s().array,inputValue:s().array,handleChange:s().func,handleChangeAll:s().func,name:s().string.isRequired};var A=i,X=n=>n.reduce((r,a)=>{const l=a.split(".")[0];return r[l]||(r[l]=[]),r[l].push(a),r},{});const R=de.ZP.table`
|
|
2
2
|
td {
|
|
3
3
|
height: ${52/16}rem;
|
|
4
4
|
width: 10%;
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
path {
|
|
21
21
|
fill: ${n.colors[r]};
|
|
22
22
|
}
|
|
23
|
-
`),B=({isPending:n,statusCode:r})=>{const{formatMessage:a}=(0,j.Z)();return n?e.createElement(b.k,{gap:2,alignItems:"center"},e.createElement(q,{as:Ae.Z}),e.createElement(W.Z,null,a({id:"Settings.webhooks.trigger.pending",defaultMessage:"pending"}))):r>=200&&r<300?e.createElement(b.k,{gap:2,alignItems:"center"},e.createElement(q,{as:m.Z,color:"success700"}),e.createElement(W.Z,null,a({id:"Settings.webhooks.trigger.success",defaultMessage:"success"}))):r>=300?e.createElement(b.k,{gap:2,alignItems:"center"},e.createElement(q,{as:Pe.Z,color:"danger700"}),e.createElement(W.Z,null,a({id:"Settings.error",defaultMessage:"error"})," ",r)):null};B.propTypes={isPending:s().bool.isRequired,statusCode:s().number},B.defaultProps={statusCode:void 0};const me=({statusCode:n,message:r})=>{const{formatMessage:a}=(0,j.Z)();return n>=200&&n<300?e.createElement(b.k,{justifyContent:"flex-end"},e.createElement(W.Z,{textColor:"neutral600",ellipsis:!0},a({id:"Settings.webhooks.trigger.success.label",defaultMessage:"Trigger succeeded"}))):n>=300?e.createElement(b.k,{justifyContent:"flex-end"},e.createElement(b.k,{maxWidth:(0,d.Q1)(250),justifyContent:"flex-end",title:r},e.createElement(W.Z,{ellipsis:!0,textColor:"neutral600"},r))):null};me.propTypes={statusCode:s().number,message:s().string},me.defaultProps={statusCode:void 0,message:void 0};const xe=({onCancel:n})=>{const{formatMessage:r}=(0,j.Z)();return e.createElement(b.k,{justifyContent:"flex-end"},e.createElement("button",{onClick:n,type:"button"},e.createElement(b.k,{gap:2,alignItems:"center"},e.createElement(W.Z,{textColor:"neutral400"},r({id:"Settings.webhooks.trigger.cancel",defaultMessage:"cancel"})),e.createElement(q,{as:Pe.Z,color:"neutral400"}))))};xe.propTypes={onCancel:s().func.isRequired};const x=({isPending:n,onCancel:r,response:a})=>{const{statusCode:l,message:p}=a,{formatMessage:I}=(0,j.Z)();return e.createElement(ae.x,{background:"neutral0",padding:5,shadow:"filterShadow",hasRadius:!0},e.createElement(le.r,{gap:4,style:{alignItems:"center"}},e.createElement(V.P,{col:3},e.createElement(W.Z,null,I({id:"Settings.webhooks.trigger.test",defaultMessage:"Test-trigger"}))),e.createElement(V.P,{col:3},e.createElement(B,{isPending:n,statusCode:l})),e.createElement(V.P,{col:6},n?e.createElement(xe,{onCancel:r}):e.createElement(me,{statusCode:l,message:p}))))};x.defaultProps={isPending:!1,onCancel(){},response:{}},x.propTypes={isPending:s().bool,onCancel:s().func,response:s().object};var Ie=x,w=t(24346);const De=/(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/,U=/(^$)|((https?:\/\/.*)(d*)\/?(.*))/;var z=w.Ry().shape({name:w.Z_(d.I0.string).required(d.I0.required).matches(De,d.I0.regex),url:w.Z_(d.I0.string).required(d.I0.required).matches(U,d.I0.regex),headers:w.Vo(n=>{let r=w.IX();if(n.length===1){const{key:a,value:l}=n[0];if(!a&&!l)return r}return r.of(w.Ry().shape({key:w.Z_().required(d.I0.required),value:w.Z_().required(d.I0.required)}))}),events:w.IX()});const pe=({handleSubmit:n,data:r,triggerWebhook:a,isCreating:l,isTriggering:p,triggerResponse:I,isDraftAndPublishEvents:u})=>{const{formatMessage:f}=(0,j.Z)(),[C,y]=(0,e.useState)(!1);return e.createElement(Z.J9,{onSubmit:n,initialValues:{name:r?.name||"",url:r?.url||"",headers:Object.keys(r?.headers||[]).length?Object.entries(r.headers).map(([E,M])=>({key:E,value:M})):[{key:"",value:""}],events:r?.events||[]},validationSchema:z,validateOnChange:!1,validateOnBlur:!1},({handleSubmit:E,errors:M})=>e.createElement(d.l0,{noValidate:!0},e.createElement(Oe.T,{primaryAction:e.createElement(b.k,{gap:2},e.createElement(he.z,{onClick:()=>{a(),y(!0)},variant:"tertiary",startIcon:e.createElement(g.Z,null),disabled:l||p,size:"L"},f({id:"Settings.webhooks.trigger",defaultMessage:"Trigger"})),e.createElement(he.z,{startIcon:e.createElement(m.Z,null),onClick:E,type:"submit",size:"L"},f({id:"global.save",defaultMessage:"Save"}))),title:l?f({id:"Settings.webhooks.create",defaultMessage:"Create a webhook"}):r?.name,navigationAction:e.createElement(d.rU,{startIcon:e.createElement(N.Z,null),to:"/settings/webhooks"},f({id:"global.back",defaultMessage:"Back"}))}),e.createElement(ke.D,null,e.createElement(b.k,{direction:"column",alignItems:"stretch",gap:4},C&&e.createElement("div",{className:"trigger-wrapper"},e.createElement(Ie,{isPending:p,response:I,onCancel:()=>y(!1)})),e.createElement(ae.x,{background:"neutral0",padding:8,shadow:"filterShadow",hasRadius:!0},e.createElement(b.k,{direction:"column",alignItems:"stretch",gap:6},e.createElement(le.r,{gap:6},e.createElement(V.P,{col:6},e.createElement(Z.gN,{as:ie.o,name:"name",error:M.name&&f({id:M.name}),label:f({id:"global.name",defaultMessage:"Name"}),required:!0})),e.createElement(V.P,{col:12},e.createElement(Z.gN,{as:ie.o,name:"url",error:M.url&&f({id:M.url}),label:f({id:"Settings.roles.form.input.url",defaultMessage:"Url"}),required:!0}))),e.createElement(Me,null),e.createElement(ue,{isDraftAndPublish:u})))))))};pe.propTypes={data:s().object,handleSubmit:s().func.isRequired,triggerWebhook:s().func.isRequired,isCreating:s().bool.isRequired,isDraftAndPublishEvents:s().bool.isRequired,isTriggering:s().bool.isRequired,triggerResponse:s().object},pe.defaultProps={data:void 0,triggerResponse:void 0};var k=pe;const oe=n=>({...n,headers:_(n.headers)}),_=n=>n.reduce((r,a)=>{const{key:l,value:p}=a;return l!==""?{...r,[l]:p}:r},{});var ee=oe,Se=()=>{const{params:{id:n}}=(0,O.$B)("/settings/webhooks/:id"),{replace:r}=(0,O.k6)(),{lockApp:a,unlockApp:l}=(0,d.o1)(),p=(0,d.lm)(),I=(0,o.useQueryClient)(),{isLoading:u,collectionTypes:f}=(0,D.bP)(),{put:C,get:y,post:E}=(0,d.kY)(),M=n==="create",{isLoading:h,data:T}=(0,o.useQuery)(["get-webhook",n],async()=>{try{const{data:{data:P}}=await y(`/admin/webhooks/${n}`);return P}catch{return p({type:"warning",message:{id:"notification.error"}}),null}},{enabled:!M}),{isLoading:F,data:G,isIdle:$e,mutate:Be}=(0,o.useMutation)(()=>E(`/admin/webhooks/${n}/trigger`)),Ue=()=>Be(null,{onError(){p({type:"warning",message:{id:"notification.error"}})}}),fe=(0,o.useMutation)(P=>E("/admin/webhooks",P)),c=(0,o.useMutation)(({id:P,body:te})=>C(`/admin/webhooks/${P}`,te)),v=async P=>{M?(a(),fe.mutate(ee(P),{onSuccess({data:te}){p({type:"success",message:{id:"Settings.webhooks.created"}}),r(`/settings/webhooks/${te.data.id}`),l()},onError(te){p({type:"warning",message:{id:"notification.error"}}),console.log(te),l()}})):(a(),c.mutate({id:n,body:ee(P)},{onSuccess(){I.invalidateQueries(["get-webhook",n]),p({type:"success",message:{id:"notification.form.success.fields"}}),l()},onError(te){p({type:"warning",message:{id:"notification.error"}}),console.log(te),l()}}))},K=e.useMemo(()=>f.some(P=>P.options.draftAndPublish===!0),[f]);return h||u?e.createElement(d.dO,null):e.createElement(L.o,null,e.createElement(d.SL,{name:"Webhooks"}),e.createElement(k,{handleSubmit:v,data:T,triggerWebhook:Ue,isCreating:M,isTriggering:F,isTriggerIdle:$e,triggerResponse:G?.data.data,isDraftAndPublishEvents:K}))}},33238:function(ne,S,t){t.r(S);var e=t(32735),d=t(43383),L=t(83983),o=t(47272);const O=()=>e.createElement(d.O4,{permissions:L.Z.settings.webhooks.create},e.createElement(o.Z,null));S.default=O},59021:function(ne,S,t){t.r(S);var e=t(32735),d=t(43383),L=t(83983),o=t(47272);const O=()=>e.createElement(d.O4,{permissions:L.Z.settings.webhooks.update},e.createElement(o.Z,null));S.default=O},42623:function(ne,S,t){t.d(S,{h:function(){return Q},X:function(){return ce}});var e=t(32735),d=t(35331),L=t(16899),o=t(60216),O=t(90333),D=t(91225),J=t(17289),s=t(94486);const g={Close:"Close",CloseSelect:"CloseSelect",First:"First",Last:"Last",Next:"Next",Open:"Open",PageDown:"PageDown",PageUp:"PageUp",Previous:"Previous",Select:"Select",Space:"Space",Type:"Type"},m={Close:"Close",First:"First",Last:"Last",Next:"Next",Open:"Open",Previous:"Previous",Select:"Select",UpLevel:"UpLevel"};function N(i=[],A=null,$=[]){const X=String(A??"").toLowerCase();return X?i.filter(R=>R.props.children.toString().toLowerCase().includes(X)&&$.indexOf(R)<0):i}function Oe(i,A){if(!A&&i===s.y.DOWN)return g.Open;if(i===s.y.DOWN)return g.Next;if(i===s.y.UP)return g.Previous;if(i===s.y.HOME)return g.First;if(i===s.y.END)return g.Last;if(i===s.y.ESCAPE)return g.Close;if(i===s.y.ENTER)return g.CloseSelect;if(i===s.y.BACKSPACE||i===s.y.CLEAR||i.length===1)return g.Type}function b(i,A,$){switch($){case g.First:return 0;case g.Last:return A;case g.Previous:return Math.max(0,i-1);case g.Next:return Math.min(A,i+1);default:return i}}function he(i){(0,J.Z)(i,{scrollMode:"if-needed",block:"nearest",inline:"nearest"}).forEach(({el:A,top:$,left:X})=>{A.scrollTop=$,A.scrollLeft=X})}var ke=t(72850),ae=t(87107),le=t(28847),V=t(67014),ie=t(47851),Z=t(87933),j=t(74971),Ee=t(97405),W=t(4101),de=t(93958),ve=t(49372),Le=t(3685);const Q=({children:i,clearLabel:A,creatable:$,createMessage:X,disabled:R,error:H,hasMoreItems:be,hint:ue,id:Re,label:Y,labelAction:Te,loading:ge,loadingMessage:We,noOptionsMessage:Ce,onChange:re,onClear:ye,onCreateOption:we,onInputChange:Me,onLoadMore:Ae,placeholder:Pe,required:q,value:B,...me})=>{const xe=()=>i.find(c=>c.props?.value.toLowerCase()===B.toLowerCase()).props?.children,[x,Ie]=(0,e.useState)(0),[w,De]=(0,e.useState)(null),[U,Ze]=(0,e.useState)(i),[z,pe]=(0,e.useState)(!1),[k,oe]=(0,e.useState)(""),_=(0,e.useRef)(),ee=(0,e.useRef)(!1),se=(0,e.useRef)(),Se=(0,e.useRef)(),n=(0,e.useRef)(),r=(0,e.useRef)(!0),a=(0,j.M)(Re),l=`${a}-label`;if(!Y&&!me["aria-label"])throw new Error('The Combobox component needs a "label" or an "aria-label" props');(0,e.useEffect)(()=>{Ze(N(i,k))},[k,i]),(0,e.useEffect)(()=>{z&&_.current&&he(_.current)},[x,z]),(0,e.useLayoutEffect)(()=>{r.current&&(r.current=!1)},[B]);const p=z?`${a}-${x}`:"",I=()=>{re(null),oe("")},u=c=>{Me&&Me(c);const v=se.current.value;Ze(N(i,v)),Ie(0),De(null),k!==v&&oe(v),z||T(!0,!1)},f=c=>{const{key:v}=c,K=$&&k?U.length:U.length-1,P=Oe(v,z);switch(B&&!k&&v===s.y.BACKSPACE&&I(),P){case g.Next:{if(x===K){y(0);break}y(b(x,K,P));break}case g.Previous:{if(x===0){y(K);break}y(b(x,K,P));break}case g.Last:case g.First:{if(x===K){y(0);break}y(b(x,K,P));break}case g.CloseSelect:c.preventDefault(),h(x);break;case g.Close:c.preventDefault(),T(!1);break;case g.Open:T(!0);break}},C=c=>{if(c.preventDefault(),B&&!ee.current&&oe(""),ee.current){ee.current=!1;return}T(!1,!1)},y=c=>{Ie(c)},E=c=>{y(c),h(c)},M=()=>{ee.current=!0},h=c=>{const v=U[c];if(oe(""),v){re(v.props.value),T(!1);return}$&&(we(k),T(!1))},T=(c,v=!0)=>{pe(c),v&&se.current.focus()},F=e.Children.toArray(U).map((c,v)=>{const K=x===v;return(0,e.cloneElement)(c,{id:`${a}-${v}`,"aria-selected":w===v,"aria-posinset":v+1,"aria-setsize":e.Children.toArray(U).length,ref(P){K&&(_.current=P)},onClick:()=>E(v),onMouseDown:M,isSelected:K})}),G=()=>{se.current.focus(),ye&&ye(),I()},$e=()=>{se.current.focus(),T(!0)},Be=()=>{const c=U.findIndex(v=>v.props?.children===k);return k&&c===-1},Ue=c=>{c.preventDefault(),T(c,!0)};let fe;return H?fe=`${a}-error`:ue&&(fe=`${a}-hint`),e.createElement(ae.g,{hint:ue,error:H,id:a,required:q},e.createElement(Le.T,{"aria-live":"polite","aria-atomic":"false","aria-relevant":"additions text"},B),e.createElement(Z.k,{direction:"column",alignItems:"stretch",gap:Y||ue||H?1:0},Y&&e.createElement(le.Q,{action:Te},Y),e.createElement(D.d8,{ref:Se,$disabled:R,hasError:H},e.createElement(D.fv,{wrap:"wrap"},!k&&B&&e.createElement(D.K7,{id:`${a}-selected-value`},e.createElement(ve.Z,null,xe())),e.createElement(D.II,{"aria-activedescendant":p,"aria-autocomplete":"list","aria-controls":`${a}-listbox`,"aria-disabled":R,"aria-expanded":z,"aria-haspopup":"listbox","aria-describedby":fe,autoComplete:"off",autoCorrect:"off",id:a,onBlur:R?void 0:C,onClick:R?void 0:Ue,onInput:R?void 0:u,onKeyDown:R?void 0:f,placeholder:B?"":Pe,readOnly:R,ref:se,required:q,role:"combobox",spellCheck:"off",type:"text",value:k})),e.createElement(Z.k,null,(B||k)&&e.createElement(de.zb,{id:`${a}-clear`,"aria-label":A,disabled:R,paddingLeft:3,as:"button",onClick:G,type:"button"},e.createElement(d.Z,null)),e.createElement(de.AV,{disabled:R,paddingLeft:3,"aria-hidden":!0,as:"button",onClick:$e,tabIndex:-1,type:"button"},e.createElement(L.Z,null)))),e.createElement(V.J,null),e.createElement(ie.c,null)),z&&e.createElement(W.J2,{id:`${a}-popover`,source:Se,spacing:4,fullWidth:!0,intersectionId:`${a}-listbox-popover-intersection`,onReachEnd:be&&!ge?Ae:void 0},e.createElement("div",{role:"listbox",ref:n,id:`${a}-listbox`,"aria-labelledby":Y?l:void 0},(Boolean(U.length)||$)&&e.createElement(e.Fragment,null,F,Be()&&$&&e.createElement(O.O,{isSelected:x===U.length,ref:c=>{x===U.length&&(_.current=c)},onMouseDown:M,onClick:()=>h(),taindex:0},X(k))),!U.length&&!$&&!ge&&e.createElement(ke.x,{paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2,ref:_},e.createElement(ve.Z,{textColor:"neutral800"},Ce(k))),ge&&e.createElement(Z.k,{justifyContent:"center",alignItems:"center",paddingTop:2,paddingBottom:2},e.createElement(Ee.a,{small:!0},We)))))},ce=i=>e.createElement(Q,{...i,creatable:!0});Q.defaultProps={"aria-label":void 0,clearLabel:"clear",creatable:!1,createMessage:i=>`Create "${i}"`,disabled:!1,error:void 0,hasMoreItems:!1,hint:void 0,id:void 0,label:void 0,loading:!1,loadingMessage:"Loading content...",noOptionsMessage:()=>"No results found",onClear:void 0,onCreateOption:void 0,onInputChange:void 0,onLoadMore:void 0,placeholder:"Select or enter a value",value:void 0},ce.defaultProps=Q.defaultProps,Q.propTypes={"aria-label":o.string,children:o.oneOfType([o.arrayOf(o.node),o.node]),clearLabel:o.string,creatable:o.bool,createMessage:o.func,disabled:o.bool,error:o.string,hasMoreItems:o.bool,id:o.string,hint:o.oneOfType([o.string,o.node,o.arrayOf(o.node)]),label:o.string,labelAction:o.element,loading:o.bool,loadingMessage:o.string,noOptionsMessage:o.func,onChange:o.func.isRequired,onClear:o.func,onCreateOption:o.func,onInputChange:o.func,onLoadMore:o.func,placeholder:o.string,value:o.string},ce.propTypes={...Q.propTypes,onCreateOption:o.func.isRequired}},90333:function(ne,S,t){t.d(S,{O:function(){return O}});var e=t(32735),d=t(60216),L=t(91225),o=t(49372);const O=(0,e.forwardRef)(({isSelected:D,children:J,...s},g)=>e.createElement(L.Zq,{hasRadius:!0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2,role:"option",background:"neutral0",isSelected:D,ref:g,...s},e.createElement(o.Z,{textColor:D?"primary600":"neutral800",fontWeight:D?"bold":null},J)));O.defaultProps={isSelected:!1},O.propTypes={children:d.oneOfType([d.string,d.number]).isRequired,isSelected:d.bool},O.displayName="ComboboxOption"},91225:function(ne,S,t){t.d(S,{II:function(){return s},K7:function(){return D},Zq:function(){return g},d8:function(){return O},fv:function(){return J}});var e=t(8471),d=t(72850),L=t(87933),o=t(30350);const O=(0,e.ZP)(L.k)`
|
|
23
|
+
`),B=({isPending:n,statusCode:r})=>{const{formatMessage:a}=(0,j.Z)();return n?e.createElement(b.k,{gap:2,alignItems:"center"},e.createElement(q,{as:Ae.Z}),e.createElement(W.Z,null,a({id:"Settings.webhooks.trigger.pending",defaultMessage:"pending"}))):r>=200&&r<300?e.createElement(b.k,{gap:2,alignItems:"center"},e.createElement(q,{as:m.Z,color:"success700"}),e.createElement(W.Z,null,a({id:"Settings.webhooks.trigger.success",defaultMessage:"success"}))):r>=300?e.createElement(b.k,{gap:2,alignItems:"center"},e.createElement(q,{as:Pe.Z,color:"danger700"}),e.createElement(W.Z,null,a({id:"Settings.error",defaultMessage:"error"})," ",r)):null};B.propTypes={isPending:s().bool.isRequired,statusCode:s().number},B.defaultProps={statusCode:void 0};const me=({statusCode:n,message:r})=>{const{formatMessage:a}=(0,j.Z)();return n>=200&&n<300?e.createElement(b.k,{justifyContent:"flex-end"},e.createElement(W.Z,{textColor:"neutral600",ellipsis:!0},a({id:"Settings.webhooks.trigger.success.label",defaultMessage:"Trigger succeeded"}))):n>=300?e.createElement(b.k,{justifyContent:"flex-end"},e.createElement(b.k,{maxWidth:(0,d.Q1)(250),justifyContent:"flex-end",title:r},e.createElement(W.Z,{ellipsis:!0,textColor:"neutral600"},r))):null};me.propTypes={statusCode:s().number,message:s().string},me.defaultProps={statusCode:void 0,message:void 0};const xe=({onCancel:n})=>{const{formatMessage:r}=(0,j.Z)();return e.createElement(b.k,{justifyContent:"flex-end"},e.createElement("button",{onClick:n,type:"button"},e.createElement(b.k,{gap:2,alignItems:"center"},e.createElement(W.Z,{textColor:"neutral400"},r({id:"Settings.webhooks.trigger.cancel",defaultMessage:"cancel"})),e.createElement(q,{as:Pe.Z,color:"neutral400"}))))};xe.propTypes={onCancel:s().func.isRequired};const x=({isPending:n,onCancel:r,response:a})=>{const{statusCode:l,message:p}=a,{formatMessage:I}=(0,j.Z)();return e.createElement(ae.x,{background:"neutral0",padding:5,shadow:"filterShadow",hasRadius:!0},e.createElement(le.r,{gap:4,style:{alignItems:"center"}},e.createElement(V.P,{col:3},e.createElement(W.Z,null,I({id:"Settings.webhooks.trigger.test",defaultMessage:"Test-trigger"}))),e.createElement(V.P,{col:3},e.createElement(B,{isPending:n,statusCode:l})),e.createElement(V.P,{col:6},n?e.createElement(xe,{onCancel:r}):e.createElement(me,{statusCode:l,message:p}))))};x.defaultProps={isPending:!1,onCancel(){},response:{}},x.propTypes={isPending:s().bool,onCancel:s().func,response:s().object};var Ie=x,w=t(24346);const De=/(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/,U=/(^$)|((https?:\/\/.*)(d*)\/?(.*))/;var z=w.Ry().shape({name:w.Z_(d.I0.string).required(d.I0.required).matches(De,d.I0.regex),url:w.Z_(d.I0.string).required(d.I0.required).matches(U,d.I0.regex),headers:w.Vo(n=>{let r=w.IX();if(n.length===1){const{key:a,value:l}=n[0];if(!a&&!l)return r}return r.of(w.Ry().shape({key:w.Z_().required(d.I0.required),value:w.Z_().required(d.I0.required)}))}),events:w.IX()});const pe=({handleSubmit:n,data:r,triggerWebhook:a,isCreating:l,isTriggering:p,triggerResponse:I,isDraftAndPublishEvents:u})=>{const{formatMessage:f}=(0,j.Z)(),[C,y]=(0,e.useState)(!1);return e.createElement(Z.J9,{onSubmit:n,initialValues:{name:r?.name||"",url:r?.url||"",headers:Object.keys(r?.headers||[]).length?Object.entries(r.headers).map(([E,M])=>({key:E,value:M})):[{key:"",value:""}],events:r?.events||[]},validationSchema:z,validateOnChange:!1,validateOnBlur:!1},({handleSubmit:E,errors:M})=>e.createElement(d.l0,{noValidate:!0},e.createElement(Oe.T,{primaryAction:e.createElement(b.k,{gap:2},e.createElement(he.z,{onClick:()=>{a(),y(!0)},variant:"tertiary",startIcon:e.createElement(g.Z,null),disabled:l||p,size:"L"},f({id:"Settings.webhooks.trigger",defaultMessage:"Trigger"})),e.createElement(he.z,{startIcon:e.createElement(m.Z,null),onClick:E,type:"submit",size:"L"},f({id:"global.save",defaultMessage:"Save"}))),title:l?f({id:"Settings.webhooks.create",defaultMessage:"Create a webhook"}):r?.name,navigationAction:e.createElement(d.rU,{startIcon:e.createElement(N.Z,null),to:"/settings/webhooks"},f({id:"global.back",defaultMessage:"Back"}))}),e.createElement(ke.D,null,e.createElement(b.k,{direction:"column",alignItems:"stretch",gap:4},C&&e.createElement("div",{className:"trigger-wrapper"},e.createElement(Ie,{isPending:p,response:I,onCancel:()=>y(!1)})),e.createElement(ae.x,{background:"neutral0",padding:8,shadow:"filterShadow",hasRadius:!0},e.createElement(b.k,{direction:"column",alignItems:"stretch",gap:6},e.createElement(le.r,{gap:6},e.createElement(V.P,{col:6},e.createElement(Z.gN,{as:ie.o,name:"name",error:M.name&&f({id:M.name}),label:f({id:"global.name",defaultMessage:"Name"}),required:!0})),e.createElement(V.P,{col:12},e.createElement(Z.gN,{as:ie.o,name:"url",error:M.url&&f({id:M.url}),label:f({id:"Settings.roles.form.input.url",defaultMessage:"Url"}),required:!0}))),e.createElement(Me,null),e.createElement(ue,{isDraftAndPublish:u})))))))};pe.propTypes={data:s().object,handleSubmit:s().func.isRequired,triggerWebhook:s().func.isRequired,isCreating:s().bool.isRequired,isDraftAndPublishEvents:s().bool.isRequired,isTriggering:s().bool.isRequired,triggerResponse:s().object},pe.defaultProps={data:void 0,triggerResponse:void 0};var k=pe;const oe=n=>({...n,headers:_(n.headers)}),_=n=>n.reduce((r,a)=>{const{key:l,value:p}=a;return l!==""?{...r,[l]:p}:r},{});var ee=oe,Se=()=>{const{params:{id:n}}=(0,O.$B)("/settings/webhooks/:id"),{replace:r}=(0,O.k6)(),{lockApp:a,unlockApp:l}=(0,d.o1)(),p=(0,d.lm)(),I=(0,o.useQueryClient)(),{isLoading:u,collectionTypes:f}=(0,D.bP)(),{put:C,get:y,post:E}=(0,d.kY)(),M=n==="create",{isLoading:h,data:T}=(0,o.useQuery)(["get-webhook",n],async()=>{try{const{data:{data:P}}=await y(`/admin/webhooks/${n}`);return P}catch{return p({type:"warning",message:{id:"notification.error"}}),null}},{enabled:!M}),{isLoading:F,data:G,isIdle:$e,mutate:Be}=(0,o.useMutation)(()=>E(`/admin/webhooks/${n}/trigger`)),Ue=()=>Be(null,{onError(){p({type:"warning",message:{id:"notification.error"}})}}),fe=(0,o.useMutation)(P=>E("/admin/webhooks",P)),c=(0,o.useMutation)(({id:P,body:te})=>C(`/admin/webhooks/${P}`,te)),v=async P=>{M?(a(),fe.mutate(ee(P),{onSuccess({data:te}){p({type:"success",message:{id:"Settings.webhooks.created"}}),r(`/settings/webhooks/${te.data.id}`),l()},onError(te){p({type:"warning",message:{id:"notification.error"}}),console.log(te),l()}})):(a(),c.mutate({id:n,body:ee(P)},{onSuccess(){I.invalidateQueries(["get-webhook",n]),p({type:"success",message:{id:"notification.form.success.fields"}}),l()},onError(te){p({type:"warning",message:{id:"notification.error"}}),console.log(te),l()}}))},K=e.useMemo(()=>f.some(P=>P.options.draftAndPublish===!0),[f]);return h||u?e.createElement(d.dO,null):e.createElement(L.o,null,e.createElement(d.SL,{name:"Webhooks"}),e.createElement(k,{handleSubmit:v,data:T,triggerWebhook:Ue,isCreating:M,isTriggering:F,isTriggerIdle:$e,triggerResponse:G?.data.data,isDraftAndPublishEvents:K}))}},33238:function(ne,S,t){t.r(S);var e=t(32735),d=t(24989),L=t(83983),o=t(47272);const O=()=>e.createElement(d.O4,{permissions:L.Z.settings.webhooks.create},e.createElement(o.Z,null));S.default=O},59021:function(ne,S,t){t.r(S);var e=t(32735),d=t(24989),L=t(83983),o=t(47272);const O=()=>e.createElement(d.O4,{permissions:L.Z.settings.webhooks.update},e.createElement(o.Z,null));S.default=O},42623:function(ne,S,t){t.d(S,{h:function(){return Q},X:function(){return ce}});var e=t(32735),d=t(35331),L=t(16899),o=t(60216),O=t(90333),D=t(91225),J=t(17289),s=t(94486);const g={Close:"Close",CloseSelect:"CloseSelect",First:"First",Last:"Last",Next:"Next",Open:"Open",PageDown:"PageDown",PageUp:"PageUp",Previous:"Previous",Select:"Select",Space:"Space",Type:"Type"},m={Close:"Close",First:"First",Last:"Last",Next:"Next",Open:"Open",Previous:"Previous",Select:"Select",UpLevel:"UpLevel"};function N(i=[],A=null,$=[]){const X=String(A??"").toLowerCase();return X?i.filter(R=>R.props.children.toString().toLowerCase().includes(X)&&$.indexOf(R)<0):i}function Oe(i,A){if(!A&&i===s.y.DOWN)return g.Open;if(i===s.y.DOWN)return g.Next;if(i===s.y.UP)return g.Previous;if(i===s.y.HOME)return g.First;if(i===s.y.END)return g.Last;if(i===s.y.ESCAPE)return g.Close;if(i===s.y.ENTER)return g.CloseSelect;if(i===s.y.BACKSPACE||i===s.y.CLEAR||i.length===1)return g.Type}function b(i,A,$){switch($){case g.First:return 0;case g.Last:return A;case g.Previous:return Math.max(0,i-1);case g.Next:return Math.min(A,i+1);default:return i}}function he(i){(0,J.Z)(i,{scrollMode:"if-needed",block:"nearest",inline:"nearest"}).forEach(({el:A,top:$,left:X})=>{A.scrollTop=$,A.scrollLeft=X})}var ke=t(72850),ae=t(87107),le=t(28847),V=t(67014),ie=t(47851),Z=t(87933),j=t(74971),Ee=t(97405),W=t(4101),de=t(93958),ve=t(49372),Le=t(3685);const Q=({children:i,clearLabel:A,creatable:$,createMessage:X,disabled:R,error:H,hasMoreItems:be,hint:ue,id:Re,label:Y,labelAction:Te,loading:ge,loadingMessage:We,noOptionsMessage:Ce,onChange:re,onClear:ye,onCreateOption:we,onInputChange:Me,onLoadMore:Ae,placeholder:Pe,required:q,value:B,...me})=>{const xe=()=>i.find(c=>c.props?.value.toLowerCase()===B.toLowerCase()).props?.children,[x,Ie]=(0,e.useState)(0),[w,De]=(0,e.useState)(null),[U,Ze]=(0,e.useState)(i),[z,pe]=(0,e.useState)(!1),[k,oe]=(0,e.useState)(""),_=(0,e.useRef)(),ee=(0,e.useRef)(!1),se=(0,e.useRef)(),Se=(0,e.useRef)(),n=(0,e.useRef)(),r=(0,e.useRef)(!0),a=(0,j.M)(Re),l=`${a}-label`;if(!Y&&!me["aria-label"])throw new Error('The Combobox component needs a "label" or an "aria-label" props');(0,e.useEffect)(()=>{Ze(N(i,k))},[k,i]),(0,e.useEffect)(()=>{z&&_.current&&he(_.current)},[x,z]),(0,e.useLayoutEffect)(()=>{r.current&&(r.current=!1)},[B]);const p=z?`${a}-${x}`:"",I=()=>{re(null),oe("")},u=c=>{Me&&Me(c);const v=se.current.value;Ze(N(i,v)),Ie(0),De(null),k!==v&&oe(v),z||T(!0,!1)},f=c=>{const{key:v}=c,K=$&&k?U.length:U.length-1,P=Oe(v,z);switch(B&&!k&&v===s.y.BACKSPACE&&I(),P){case g.Next:{if(x===K){y(0);break}y(b(x,K,P));break}case g.Previous:{if(x===0){y(K);break}y(b(x,K,P));break}case g.Last:case g.First:{if(x===K){y(0);break}y(b(x,K,P));break}case g.CloseSelect:c.preventDefault(),h(x);break;case g.Close:c.preventDefault(),T(!1);break;case g.Open:T(!0);break}},C=c=>{if(c.preventDefault(),B&&!ee.current&&oe(""),ee.current){ee.current=!1;return}T(!1,!1)},y=c=>{Ie(c)},E=c=>{y(c),h(c)},M=()=>{ee.current=!0},h=c=>{const v=U[c];if(oe(""),v){re(v.props.value),T(!1);return}$&&(we(k),T(!1))},T=(c,v=!0)=>{pe(c),v&&se.current.focus()},F=e.Children.toArray(U).map((c,v)=>{const K=x===v;return(0,e.cloneElement)(c,{id:`${a}-${v}`,"aria-selected":w===v,"aria-posinset":v+1,"aria-setsize":e.Children.toArray(U).length,ref(P){K&&(_.current=P)},onClick:()=>E(v),onMouseDown:M,isSelected:K})}),G=()=>{se.current.focus(),ye&&ye(),I()},$e=()=>{se.current.focus(),T(!0)},Be=()=>{const c=U.findIndex(v=>v.props?.children===k);return k&&c===-1},Ue=c=>{c.preventDefault(),T(c,!0)};let fe;return H?fe=`${a}-error`:ue&&(fe=`${a}-hint`),e.createElement(ae.g,{hint:ue,error:H,id:a,required:q},e.createElement(Le.T,{"aria-live":"polite","aria-atomic":"false","aria-relevant":"additions text"},B),e.createElement(Z.k,{direction:"column",alignItems:"stretch",gap:Y||ue||H?1:0},Y&&e.createElement(le.Q,{action:Te},Y),e.createElement(D.d8,{ref:Se,$disabled:R,hasError:H},e.createElement(D.fv,{wrap:"wrap"},!k&&B&&e.createElement(D.K7,{id:`${a}-selected-value`},e.createElement(ve.Z,null,xe())),e.createElement(D.II,{"aria-activedescendant":p,"aria-autocomplete":"list","aria-controls":`${a}-listbox`,"aria-disabled":R,"aria-expanded":z,"aria-haspopup":"listbox","aria-describedby":fe,autoComplete:"off",autoCorrect:"off",id:a,onBlur:R?void 0:C,onClick:R?void 0:Ue,onInput:R?void 0:u,onKeyDown:R?void 0:f,placeholder:B?"":Pe,readOnly:R,ref:se,required:q,role:"combobox",spellCheck:"off",type:"text",value:k})),e.createElement(Z.k,null,(B||k)&&e.createElement(de.zb,{id:`${a}-clear`,"aria-label":A,disabled:R,paddingLeft:3,as:"button",onClick:G,type:"button"},e.createElement(d.Z,null)),e.createElement(de.AV,{disabled:R,paddingLeft:3,"aria-hidden":!0,as:"button",onClick:$e,tabIndex:-1,type:"button"},e.createElement(L.Z,null)))),e.createElement(V.J,null),e.createElement(ie.c,null)),z&&e.createElement(W.J2,{id:`${a}-popover`,source:Se,spacing:4,fullWidth:!0,intersectionId:`${a}-listbox-popover-intersection`,onReachEnd:be&&!ge?Ae:void 0},e.createElement("div",{role:"listbox",ref:n,id:`${a}-listbox`,"aria-labelledby":Y?l:void 0},(Boolean(U.length)||$)&&e.createElement(e.Fragment,null,F,Be()&&$&&e.createElement(O.O,{isSelected:x===U.length,ref:c=>{x===U.length&&(_.current=c)},onMouseDown:M,onClick:()=>h(),taindex:0},X(k))),!U.length&&!$&&!ge&&e.createElement(ke.x,{paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2,ref:_},e.createElement(ve.Z,{textColor:"neutral800"},Ce(k))),ge&&e.createElement(Z.k,{justifyContent:"center",alignItems:"center",paddingTop:2,paddingBottom:2},e.createElement(Ee.a,{small:!0},We)))))},ce=i=>e.createElement(Q,{...i,creatable:!0});Q.defaultProps={"aria-label":void 0,clearLabel:"clear",creatable:!1,createMessage:i=>`Create "${i}"`,disabled:!1,error:void 0,hasMoreItems:!1,hint:void 0,id:void 0,label:void 0,loading:!1,loadingMessage:"Loading content...",noOptionsMessage:()=>"No results found",onClear:void 0,onCreateOption:void 0,onInputChange:void 0,onLoadMore:void 0,placeholder:"Select or enter a value",value:void 0},ce.defaultProps=Q.defaultProps,Q.propTypes={"aria-label":o.string,children:o.oneOfType([o.arrayOf(o.node),o.node]),clearLabel:o.string,creatable:o.bool,createMessage:o.func,disabled:o.bool,error:o.string,hasMoreItems:o.bool,id:o.string,hint:o.oneOfType([o.string,o.node,o.arrayOf(o.node)]),label:o.string,labelAction:o.element,loading:o.bool,loadingMessage:o.string,noOptionsMessage:o.func,onChange:o.func.isRequired,onClear:o.func,onCreateOption:o.func,onInputChange:o.func,onLoadMore:o.func,placeholder:o.string,value:o.string},ce.propTypes={...Q.propTypes,onCreateOption:o.func.isRequired}},90333:function(ne,S,t){t.d(S,{O:function(){return O}});var e=t(32735),d=t(60216),L=t(91225),o=t(49372);const O=(0,e.forwardRef)(({isSelected:D,children:J,...s},g)=>e.createElement(L.Zq,{hasRadius:!0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2,role:"option",background:"neutral0",isSelected:D,ref:g,...s},e.createElement(o.Z,{textColor:D?"primary600":"neutral800",fontWeight:D?"bold":null},J)));O.defaultProps={isSelected:!1},O.propTypes={children:d.oneOfType([d.string,d.number]).isRequired,isSelected:d.bool},O.displayName="ComboboxOption"},91225:function(ne,S,t){t.d(S,{II:function(){return s},K7:function(){return D},Zq:function(){return g},d8:function(){return O},fv:function(){return J}});var e=t(8471),d=t(72850),L=t(87933),o=t(30350);const O=(0,e.ZP)(L.k)`
|
|
24
24
|
position: relative;
|
|
25
25
|
border: 1px solid ${({theme:m,hasError:N})=>N?m.colors.danger600:m.colors.neutral200};
|
|
26
26
|
padding-right: ${({theme:m})=>m.spaces[3]};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[4121],{74767:function(U,p,t){t.r(p),t.d(p,{default:function(){return be}});var e=t(32735),s=t(
|
|
1
|
+
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[4121],{74767:function(U,p,t){t.r(p),t.d(p,{default:function(){return be}});var e=t(32735),s=t(24989),b=t(83983),h=t(53038),L=t(67879),O=t(94638),C=t(96709),D=t(27649),E=t(82055),f=t(99223),d=t(49372),M=t(41415),x=t(17e3),H=t(72850),te=t(56755),ne=t(73269),le=t(33827),G=t(94547),m=t(19786),N=t(44426),ae=t(3685),oe=t(35658),S=t(87933),y=t(60216),V=t(8471);const $=V.ZP.div`
|
|
2
2
|
background: ${({theme:l})=>l.colors.danger500};
|
|
3
3
|
border: none;
|
|
4
4
|
border-radius: 16px;
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import { Typography } from '@strapi/design-system';
|
|
3
|
+
import { Box, Flex, Typography } from '@strapi/design-system';
|
|
4
|
+
import { pxToRem } from '@strapi/helper-plugin';
|
|
4
5
|
|
|
5
|
-
export function ReviewWorkflowsStageEE({ name }) {
|
|
6
|
+
export function ReviewWorkflowsStageEE({ color, name }) {
|
|
6
7
|
return (
|
|
7
|
-
<
|
|
8
|
-
{
|
|
9
|
-
|
|
8
|
+
<Flex alignItems="center" gap={2} maxWidth={pxToRem(300)}>
|
|
9
|
+
<Box height={2} background={color} hasRadius shrink={0} width={2} />
|
|
10
|
+
|
|
11
|
+
<Typography fontWeight="regular" textColor="neutral700" ellipsis>
|
|
12
|
+
{name}
|
|
13
|
+
</Typography>
|
|
14
|
+
</Flex>
|
|
10
15
|
);
|
|
11
16
|
}
|
|
12
17
|
|
|
13
18
|
ReviewWorkflowsStageEE.propTypes = {
|
|
19
|
+
color: PropTypes.string.isRequired,
|
|
14
20
|
name: PropTypes.string.isRequired,
|
|
15
21
|
};
|
|
@@ -4,6 +4,7 @@ import { Typography } from '@strapi/design-system';
|
|
|
4
4
|
|
|
5
5
|
import ReviewWorkflowsStage from '.';
|
|
6
6
|
import getTrad from '../../../../../../../admin/src/content-manager/utils/getTrad';
|
|
7
|
+
import { STAGE_COLOR_DEFAULT } from '../../../../../pages/SettingsPage/pages/ReviewWorkflows/constants';
|
|
7
8
|
|
|
8
9
|
export default (layout) => {
|
|
9
10
|
const { formatMessage } = useIntl();
|
|
@@ -24,7 +25,7 @@ export default (layout) => {
|
|
|
24
25
|
key: '__strapi_reviewWorkflows_stage_temp_key__',
|
|
25
26
|
name: 'strapi_reviewWorkflows_stage',
|
|
26
27
|
fieldSchema: {
|
|
27
|
-
type: '
|
|
28
|
+
type: 'relation',
|
|
28
29
|
},
|
|
29
30
|
metadatas: {
|
|
30
31
|
label: formatMessage({
|
|
@@ -32,7 +33,8 @@ export default (layout) => {
|
|
|
32
33
|
defaultMessage: 'Review stage',
|
|
33
34
|
}),
|
|
34
35
|
searchable: false,
|
|
35
|
-
sortable:
|
|
36
|
+
sortable: true,
|
|
37
|
+
mainField: 'name',
|
|
36
38
|
},
|
|
37
39
|
cellFormatter({ strapi_reviewWorkflows_stage }) {
|
|
38
40
|
// if entities are created e.g. through lifecycle methods
|
|
@@ -41,7 +43,9 @@ export default (layout) => {
|
|
|
41
43
|
return <Typography textColor="neutral800">-</Typography>;
|
|
42
44
|
}
|
|
43
45
|
|
|
44
|
-
|
|
46
|
+
const { color, name } = strapi_reviewWorkflows_stage;
|
|
47
|
+
|
|
48
|
+
return <ReviewWorkflowsStage color={color ?? STAGE_COLOR_DEFAULT} name={name} />;
|
|
45
49
|
},
|
|
46
50
|
};
|
|
47
51
|
};
|
|
@@ -11,6 +11,8 @@ import { useIntl } from 'react-intl';
|
|
|
11
11
|
import { useMutation } from 'react-query';
|
|
12
12
|
|
|
13
13
|
import { useReviewWorkflows } from '../../../../pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflows';
|
|
14
|
+
import { OptionColor } from '../../../../pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stage/components/OptionColor';
|
|
15
|
+
import { SingleValueColor } from '../../../../pages/SettingsPage/pages/ReviewWorkflows/components/Stages/Stage/components/SingleValueColor';
|
|
14
16
|
import Information from '../../../../../../admin/src/content-manager/pages/EditView/Information';
|
|
15
17
|
|
|
16
18
|
const ATTRIBUTE_NAME = 'strapi_reviewWorkflows_stage';
|
|
@@ -113,6 +115,8 @@ export function InformationBoxEE() {
|
|
|
113
115
|
<ReactSelect
|
|
114
116
|
components={{
|
|
115
117
|
LoadingIndicator: () => <Loader small />,
|
|
118
|
+
Option: OptionColor,
|
|
119
|
+
SingleValue: SingleValueColor,
|
|
116
120
|
}}
|
|
117
121
|
error={formattedError}
|
|
118
122
|
inputId={ATTRIBUTE_NAME}
|
|
@@ -122,9 +126,19 @@ export function InformationBoxEE() {
|
|
|
122
126
|
name={ATTRIBUTE_NAME}
|
|
123
127
|
onChange={handleStageChange}
|
|
124
128
|
options={
|
|
125
|
-
workflow
|
|
129
|
+
workflow
|
|
130
|
+
? workflow.stages.map(({ id, color, name }) => ({
|
|
131
|
+
value: id,
|
|
132
|
+
label: name,
|
|
133
|
+
color,
|
|
134
|
+
}))
|
|
135
|
+
: []
|
|
126
136
|
}
|
|
127
|
-
value={{
|
|
137
|
+
value={{
|
|
138
|
+
value: activeWorkflowStage?.id,
|
|
139
|
+
label: activeWorkflowStage?.name,
|
|
140
|
+
color: activeWorkflowStage?.color,
|
|
141
|
+
}}
|
|
128
142
|
/>
|
|
129
143
|
|
|
130
144
|
<FieldError />
|
|
@@ -18,12 +18,24 @@ import { Check } from '@strapi/icons';
|
|
|
18
18
|
|
|
19
19
|
import { Stages } from './components/Stages';
|
|
20
20
|
import { reducer, initialState } from './reducer';
|
|
21
|
-
import { REDUX_NAMESPACE } from './constants';
|
|
21
|
+
import { REDUX_NAMESPACE, DRAG_DROP_TYPES } from './constants';
|
|
22
22
|
import { useInjectReducer } from '../../../../../../admin/src/hooks/useInjectReducer';
|
|
23
23
|
import { useReviewWorkflows } from './hooks/useReviewWorkflows';
|
|
24
24
|
import { setWorkflows } from './actions';
|
|
25
25
|
import { getWorkflowValidationSchema } from './utils/getWorkflowValidationSchema';
|
|
26
26
|
import adminPermissions from '../../../../../../admin/src/permissions';
|
|
27
|
+
import { StageDragPreview } from './components/StageDragPreview';
|
|
28
|
+
import { DragLayer } from '../../../../../../admin/src/components/DragLayer';
|
|
29
|
+
|
|
30
|
+
function renderDragLayerItem({ type, item }) {
|
|
31
|
+
switch (type) {
|
|
32
|
+
case DRAG_DROP_TYPES.STAGE:
|
|
33
|
+
return <StageDragPreview {...item} />;
|
|
34
|
+
|
|
35
|
+
default:
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
27
39
|
|
|
28
40
|
export function ReviewWorkflowsPage() {
|
|
29
41
|
const { trackUsage } = useTracking();
|
|
@@ -47,31 +59,15 @@ export function ReviewWorkflowsPage() {
|
|
|
47
59
|
|
|
48
60
|
const { mutateAsync, isLoading } = useMutation(
|
|
49
61
|
async ({ workflowId, stages }) => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
});
|
|
62
|
+
const {
|
|
63
|
+
data: { data },
|
|
64
|
+
} = await put(`/admin/review-workflows/workflows/${workflowId}/stages`, {
|
|
65
|
+
data: stages,
|
|
66
|
+
});
|
|
56
67
|
|
|
57
|
-
|
|
58
|
-
} catch (error) {
|
|
59
|
-
toggleNotification({
|
|
60
|
-
type: 'warning',
|
|
61
|
-
message: formatAPIError(error),
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return null;
|
|
68
|
+
return data;
|
|
66
69
|
},
|
|
67
70
|
{
|
|
68
|
-
onError(error) {
|
|
69
|
-
toggleNotification({
|
|
70
|
-
type: 'warning',
|
|
71
|
-
message: formatAPIError(error),
|
|
72
|
-
});
|
|
73
|
-
},
|
|
74
|
-
|
|
75
71
|
onSuccess() {
|
|
76
72
|
toggleNotification({
|
|
77
73
|
type: 'success',
|
|
@@ -81,8 +77,19 @@ export function ReviewWorkflowsPage() {
|
|
|
81
77
|
}
|
|
82
78
|
);
|
|
83
79
|
|
|
84
|
-
const updateWorkflowStages = (workflowId, stages) => {
|
|
85
|
-
|
|
80
|
+
const updateWorkflowStages = async (workflowId, stages) => {
|
|
81
|
+
try {
|
|
82
|
+
const res = await mutateAsync({ workflowId, stages });
|
|
83
|
+
|
|
84
|
+
return res;
|
|
85
|
+
} catch (error) {
|
|
86
|
+
toggleNotification({
|
|
87
|
+
type: 'warning',
|
|
88
|
+
message: formatAPIError(error),
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
86
93
|
};
|
|
87
94
|
|
|
88
95
|
const submitForm = async () => {
|
|
@@ -135,6 +142,8 @@ export function ReviewWorkflowsPage() {
|
|
|
135
142
|
})}
|
|
136
143
|
/>
|
|
137
144
|
<Main tabIndex={-1}>
|
|
145
|
+
<DragLayer renderItem={renderDragLayerItem} />
|
|
146
|
+
|
|
138
147
|
<FormikProvider value={formik}>
|
|
139
148
|
<Form onSubmit={formik.handleSubmit}>
|
|
140
149
|
<HeaderLayout
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
ACTION_DELETE_STAGE,
|
|
4
4
|
ACTION_ADD_STAGE,
|
|
5
5
|
ACTION_UPDATE_STAGE,
|
|
6
|
+
ACTION_UPDATE_STAGE_POSITION,
|
|
6
7
|
} from '../constants';
|
|
7
8
|
|
|
8
9
|
export function setWorkflows({ status, data }) {
|
|
@@ -40,3 +41,13 @@ export function updateStage(stageId, payload) {
|
|
|
40
41
|
},
|
|
41
42
|
};
|
|
42
43
|
}
|
|
44
|
+
|
|
45
|
+
export function updateStagePosition(oldIndex, newIndex) {
|
|
46
|
+
return {
|
|
47
|
+
type: ACTION_UPDATE_STAGE_POSITION,
|
|
48
|
+
payload: {
|
|
49
|
+
newIndex,
|
|
50
|
+
oldIndex,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import styled from 'styled-components';
|
|
4
|
+
import { Flex, Typography } from '@strapi/design-system';
|
|
5
|
+
import { CarretDown } from '@strapi/icons';
|
|
6
|
+
import { pxToRem } from '@strapi/helper-plugin';
|
|
7
|
+
|
|
8
|
+
const Toggle = styled(Flex)`
|
|
9
|
+
svg path {
|
|
10
|
+
fill: ${({ theme }) => theme.colors.neutral600};
|
|
11
|
+
}
|
|
12
|
+
`;
|
|
13
|
+
|
|
14
|
+
export function StageDragPreview({ name }) {
|
|
15
|
+
return (
|
|
16
|
+
<Flex
|
|
17
|
+
background="primary100"
|
|
18
|
+
borderStyle="dashed"
|
|
19
|
+
borderColor="primary600"
|
|
20
|
+
borderWidth="1px"
|
|
21
|
+
gap={3}
|
|
22
|
+
hasRadius
|
|
23
|
+
padding={3}
|
|
24
|
+
shadow="tableShadow"
|
|
25
|
+
width={pxToRem(300)}
|
|
26
|
+
>
|
|
27
|
+
<Toggle
|
|
28
|
+
alignItems="center"
|
|
29
|
+
background="neutral200"
|
|
30
|
+
borderRadius="50%"
|
|
31
|
+
height={6}
|
|
32
|
+
justifyContent="center"
|
|
33
|
+
width={6}
|
|
34
|
+
>
|
|
35
|
+
<CarretDown width={`${8 / 16}rem`} />
|
|
36
|
+
</Toggle>
|
|
37
|
+
|
|
38
|
+
<Typography fontWeight="bold">{name}</Typography>
|
|
39
|
+
</Flex>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
StageDragPreview.propTypes = {
|
|
44
|
+
name: PropTypes.string.isRequired,
|
|
45
|
+
};
|
package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/StageDragPreview/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './StageDragPreview';
|