@strapi/admin 4.11.0-beta.1 → 4.11.0-exp.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/content-manager/components/ComponentIcon/ComponentIcon.js +16 -26
- package/admin/src/content-manager/components/ComponentIcon/constants.js +133 -0
- package/admin/src/content-manager/components/DynamicZone/components/AddComponentButton.js +32 -95
- package/admin/src/content-manager/components/DynamicZone/components/ComponentCard.js +10 -2
- package/admin/src/content-manager/components/DynamicZone/components/ComponentCategory.js +63 -15
- package/admin/src/content-manager/components/DynamicZone/components/ComponentPicker.js +50 -63
- package/admin/src/content-manager/components/DynamicZone/components/DynamicComponent.js +132 -58
- package/admin/src/content-manager/components/DynamicZone/components/DynamicZoneLabel.js +29 -37
- package/admin/src/content-manager/components/DynamicZone/index.js +131 -83
- package/admin/src/content-manager/components/EditViewDataManagerProvider/index.js +28 -6
- package/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js +18 -6
- package/admin/src/content-manager/pages/EditSettingsView/components/DynamicZoneList.js +7 -1
- package/admin/src/content-manager/pages/EditView/index.js +1 -1
- package/admin/src/hooks/useContentTypes/useContentTypes.js +0 -2
- package/admin/src/index.js +4 -3
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable/EventTableCE.js +13 -0
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable/index.js +3 -0
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/Events/index.js +331 -0
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/Combobox.js +54 -4
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/index.js +12 -23
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/index.js +129 -116
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/utils/makeWebhookValidationSchema.js +62 -0
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/index.js +59 -64
- package/admin/src/translations/en.json +6 -0
- package/build/1887.6f71e8b2.chunk.js +39 -0
- package/build/3081.7e9329cb.chunk.js +105 -0
- package/build/371.6e4e2c1f.chunk.js +71 -0
- package/build/5542.64b623c9.chunk.js +63 -0
- package/build/{5563.79950369.chunk.js → 5563.badbffde.chunk.js} +2 -2
- package/build/{6970.7ea35fbd.chunk.js → 6970.d456705f.chunk.js} +1 -1
- package/build/{7259.5cc67413.chunk.js → 7259.5d0de931.chunk.js} +1 -1
- package/build/8976.a85384ce.chunk.js +155 -0
- package/build/{1657.ca8562dd.chunk.js → 9932.5ef475c5.chunk.js} +54 -62
- package/build/{Admin-authenticatedApp.990df65d.chunk.js → Admin-authenticatedApp.9b88039c.chunk.js} +2 -2
- package/build/{Admin_InternalErrorPage.96ceaae1.chunk.js → Admin_InternalErrorPage.f25f04f3.chunk.js} +1 -1
- package/build/Admin_homePage.05063e43.chunk.js +73 -0
- package/build/Admin_marketplace.23ea289f.chunk.js +55 -0
- package/build/Admin_pluginsPage.b1031a00.chunk.js +6 -0
- package/build/{Admin_profilePage.75bc083a.chunk.js → Admin_profilePage.e7ccee9f.chunk.js} +2 -2
- package/build/Admin_settingsPage.07a6a5f0.chunk.js +79 -0
- package/build/{Upload_ConfigureTheView.aa64ed9a.chunk.js → Upload_ConfigureTheView.121deffb.chunk.js} +1 -1
- package/build/admin-app.8644c322.chunk.js +63 -0
- package/build/{admin-edit-roles-page.0d12b741.chunk.js → admin-edit-roles-page.bfe3304d.chunk.js} +3 -3
- package/build/{admin-edit-users.f9ce7844.chunk.js → admin-edit-users.6efe0382.chunk.js} +2 -2
- package/build/admin-roles-list.b2577370.chunk.js +23 -0
- package/build/admin-users.4af49ccf.chunk.js +26 -0
- package/build/{api-tokens-create-page.973d2816.chunk.js → api-tokens-create-page.65411a36.chunk.js} +1 -1
- package/build/{api-tokens-edit-page.29725c5e.chunk.js → api-tokens-edit-page.60312cb6.chunk.js} +1 -1
- package/build/{api-tokens-list-page.66c4fbdd.chunk.js → api-tokens-list-page.01a4d5cd.chunk.js} +2 -2
- package/build/audit-logs-settings-page.09c75037.chunk.js +121 -0
- package/build/content-manager.04fa9c14.chunk.js +1094 -0
- package/build/content-type-builder-list-view.58f9ed20.chunk.js +211 -0
- package/build/{content-type-builder-translation-en-json.af293c9e.chunk.js → content-type-builder-translation-en-json.f592325b.chunk.js} +1 -1
- package/build/content-type-builder.baeb0413.chunk.js +132 -0
- package/build/email-settings-page.85b71afc.chunk.js +11 -0
- package/build/en-json.a8f34002.chunk.js +1 -0
- package/build/i18n-settings-page.c0da2362.chunk.js +114 -0
- package/build/index.html +1 -1
- package/build/main.4a51b662.js +2633 -0
- package/build/{review-workflows-settings.4b39b837.chunk.js → review-workflows-settings.3a7bae25.chunk.js} +1 -1
- package/build/{runtime~main.55d43bd7.js → runtime~main.9b9e21e3.js} +2 -2
- package/build/{sso-settings-page.265e3d72.chunk.js → sso-settings-page.4bb073e0.chunk.js} +1 -1
- package/build/{transfer-tokens-create-page.170acee6.chunk.js → transfer-tokens-create-page.9ec277d7.chunk.js} +1 -1
- package/build/{transfer-tokens-edit-page.6cf23295.chunk.js → transfer-tokens-edit-page.fa5ade14.chunk.js} +1 -1
- package/build/{transfer-tokens-list-page.c3fec4c1.chunk.js → transfer-tokens-list-page.5d68d590.chunk.js} +2 -2
- package/build/upload-settings.2c1565d6.chunk.js +14 -0
- package/build/upload.257b2aef.chunk.js +26 -0
- package/build/users-advanced-settings-page.dda58320.chunk.js +9 -0
- package/build/users-email-settings-page.a0c08594.chunk.js +24 -0
- package/build/users-providers-settings-page.14a82632.chunk.js +29 -0
- package/build/{users-roles-settings-page.c773086b.chunk.js → users-roles-settings-page.1f408276.chunk.js} +1 -1
- package/build/webhook-edit-page.b9a13be7.chunk.js +136 -0
- package/build/webhook-list-page.84e5abc9.chunk.js +63 -0
- package/ee/admin/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable/EventTableEE.js +23 -0
- package/ee/admin/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable/index.js +3 -0
- package/ee/server/services/review-workflows/review-workflows.js +4 -0
- package/package.json +19 -21
- package/server/controllers/webhooks.js +6 -6
- package/admin/src/content-manager/components/DynamicZone/utils/connect.js +0 -12
- package/admin/src/content-manager/components/DynamicZone/utils/select.js +0 -53
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventInput/EventRow.js +0 -70
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventInput/index.js +0 -174
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/keys.js +0 -39
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/utils/fieldsRegex.js +0 -4
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/utils/schema.js +0 -35
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/reducer.js +0 -100
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/utils/formatData.js +0 -20
- package/build/3081.c2cdfac8.chunk.js +0 -108
- package/build/456.9b85d4c6.chunk.js +0 -39
- package/build/462.a073ff1f.chunk.js +0 -71
- package/build/5542.002522eb.chunk.js +0 -71
- package/build/617.87b2fe96.chunk.js +0 -155
- package/build/Admin_homePage.107a9fe0.chunk.js +0 -73
- package/build/Admin_marketplace.1436fc2b.chunk.js +0 -55
- package/build/Admin_pluginsPage.e1afd5ed.chunk.js +0 -6
- package/build/Admin_settingsPage.bd715ed3.chunk.js +0 -79
- package/build/admin-app.8b102fe2.chunk.js +0 -63
- package/build/admin-roles-list.e8bf9685.chunk.js +0 -31
- package/build/admin-users.751b28b2.chunk.js +0 -34
- package/build/audit-logs-settings-page.3c6cea81.chunk.js +0 -129
- package/build/content-manager.89099707.chunk.js +0 -1123
- package/build/content-type-builder-list-view.1e821eb9.chunk.js +0 -215
- package/build/content-type-builder.b10576e7.chunk.js +0 -126
- package/build/email-settings-page.4368689f.chunk.js +0 -11
- package/build/en-json.0f5cc115.chunk.js +0 -1
- package/build/i18n-settings-page.7988d872.chunk.js +0 -114
- package/build/main.5a232c3d.js +0 -2630
- package/build/upload-settings.63d99bf5.chunk.js +0 -14
- package/build/upload.c50d8c7a.chunk.js +0 -34
- package/build/users-advanced-settings-page.2cfb5d24.chunk.js +0 -9
- package/build/users-email-settings-page.bd6c774a.chunk.js +0 -24
- package/build/users-providers-settings-page.528f0036.chunk.js +0 -29
- package/build/webhook-edit-page.ddd5963d.chunk.js +0 -128
- package/build/webhook-list-page.b0f5a02c.chunk.js +0 -71
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5162],{5998:function(Q,p,t){t.d(p,{Z:function(){return f}});var e=t(32735),r=t(70958);function d(){return e.createElement(r.Z.Root,null,e.createElement(r.Z.Headers,null),e.createElement(r.Z.Body,null))}var f=d},70958:function(Q,p,t){var e=t(32735),r=t(60216),d=t.n(r),f=t(92802),h=t(67879),W=t(8471),ie=t(29397),u=t(87933),D=t(28847),k=t(23866),de=t(31121),G=t(35197),S=t(38837),w=t(3685),v=t(49372),F=t(40801),ce=t(8284),z=t(82884),J=t(70166);const I=n=>n.reduce((s,i)=>{const M=i.split(".")[0];return s[M]||(s[M]=[]),s[M].push(i),s},{}),Y=(0,W.ZP)(ie.w)`
|
|
2
|
+
tbody tr:nth-child(odd) {
|
|
3
|
+
background: ${({theme:n})=>n.colors.neutral100};
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
thead th span {
|
|
7
|
+
color: ${({theme:n})=>n.colors.neutral500};
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
td,
|
|
11
|
+
th {
|
|
12
|
+
padding-block-start: ${({theme:n})=>n.spaces[3]};
|
|
13
|
+
padding-block-end: ${({theme:n})=>n.spaces[3]};
|
|
14
|
+
width: 10%;
|
|
15
|
+
vertical-align: middle;
|
|
16
|
+
text-align: center;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
tbody tr td:first-child {
|
|
20
|
+
// Add padding to the start of the first column to avoid the checkbox appearing
|
|
21
|
+
// too close to the edge of the table
|
|
22
|
+
padding-inline-start: ${({theme:n})=>n.spaces[2]};
|
|
23
|
+
}
|
|
24
|
+
`,x=n=>{const s=[{id:"Settings.webhooks.events.create",defaultMessage:"Create"},{id:"Settings.webhooks.events.update",defaultMessage:"Update"},{id:"app.utils.delete",defaultMessage:"Delete"}];return n&&(s.push({id:"app.utils.publish",defaultMessage:"Publish"}),s.push({id:"app.utils.unpublish",defaultMessage:"Unpublish"})),s},ue=n=>{const s=["entry.create","entry.update","entry.delete"];return n&&s.push("entry.publish","entry.unpublish"),{entry:s,media:["media.create","media.update","media.delete"]}},q=e.createContext(),se=({children:n})=>{const{formatMessage:s}=(0,h.Z)(),{collectionTypes:i,isLoading:M}=(0,J.G)(),b=e.useMemo(()=>i.some(B=>B.options.draftAndPublish===!0),[i]),R=s({id:"Settings.webhooks.form.events",defaultMessage:"Events"});return e.createElement(q.Provider,{value:{isDraftAndPublish:b}},e.createElement(u.k,{direction:"column",alignItems:"stretch",gap:1},e.createElement(D.Q,{"aria-hidden":!0},R),M&&e.createElement(k.a,null,s({id:"Settings.webhooks.events.isLoading",defaultMessage:"Events loading"})),e.createElement(Y,{"aria-label":R},n)))};se.propTypes={children:d().oneOfType([d().arrayOf(d().node),d().node]).isRequired};const ee=({getHeaders:n=x})=>{const{isDraftAndPublish:s}=e.useContext(q),{formatMessage:i}=(0,h.Z)(),M=n(s);return e.createElement(de.S,null,e.createElement(G.Z,null,e.createElement(S.g,null,e.createElement(w.T,null,i({id:"Settings.webhooks.event.select",defaultMessage:"Select event"}))),M.map(b=>["app.utils.publish","app.utils.unpublish"].includes(b.id)?e.createElement(S.g,{key:b.id,title:i({id:"Settings.webhooks.event.publish-tooltip",defaultMessage:"This event only exists for content with draft & publish enabled"})},e.createElement(v.Z,{variant:"sigma",textColor:"neutral600"},i(b))):e.createElement(S.g,{key:b.id},e.createElement(v.Z,{variant:"sigma",textColor:"neutral600"},i(b))))))};ee.defaultProps={getHeaders:x},ee.propTypes={getHeaders:d().func};const te=({providedEvents:n})=>{const{isDraftAndPublish:s}=e.useContext(q),i=n||ue(s),{values:M,handleChange:b}=(0,f.u6)(),R="events",B=M.events,N=[],X=I(B),y=({target:{name:P,value:m}})=>{let T=new Set(B);m?T.add(P):T.delete(P),b({target:{name:R,value:Array.from(T)}})},Z=({target:{name:P,value:m}})=>{let T=new Set(B);m?i[P].forEach(V=>{N.includes(V)||T.add(V)}):i[P].forEach(V=>T.delete(V)),b({target:{name:R,value:Array.from(T)}})};return e.createElement(F.X,null,Object.entries(i).map(([P,m])=>e.createElement(K,{disabledEvents:N,key:P,name:P,events:m,inputValue:X[P],handleSelect:y,handleSelectAll:Z})))};te.defaultProps={providedEvents:null},te.propTypes={providedEvents:d().object};const ge=n=>n.replace(/-/g," ").split(" ").map(s=>s.charAt(0).toUpperCase()+s.slice(1).toLowerCase()).join(" "),K=({disabledEvents:n,name:s,events:i,inputValue:M,handleSelect:b,handleSelectAll:R})=>{const{formatMessage:B}=(0,h.Z)(),N=i.filter(m=>!n.includes(m)),X=M.length>0,y=M.length===N.length,Z=({target:{name:m}})=>{R({target:{name:m,value:!y}})},P=5;return e.createElement(G.Z,null,e.createElement(S.f,null,e.createElement(ce.X,{indeterminate:X&&!y,"aria-label":B({id:"global.select-all-entries",defaultMessage:"Select all entries"}),name:s,onChange:Z,value:y},ge(s))),i.map(m=>e.createElement(S.f,{key:m},e.createElement(z.C,{disabled:n.includes(m),"aria-label":m,name:m,value:M.includes(m),onValueChange:T=>b({target:{name:m,value:T}})}))),i.length<P&&e.createElement(S.f,{colSpan:`${P-i.length}`}))};K.defaultProps={disabledEvents:[],events:[],inputValue:[],handleSelect(){},handleSelectAll(){}},K.propTypes={disabledEvents:d().array,events:d().array,inputValue:d().array,handleSelect:d().func,handleSelectAll:d().func,name:d().string.isRequired},p.Z={Root:se,Headers:ee,Body:te,EventRow:K}},82167:function(Q,p,t){t.d(p,{Z:function(){return he}});var e=t(32735),r=t(69262),d=t(27649),f=t(20108),h=t(53038),W=t(70166),ie=t(60216),u=t.n(ie),D=t(92802),k=t(67879),de=t(2438),G=t(66456),S=t(29439),w=t(82055),v=t(87933),F=t(41415),ce=t(17e3),z=t(72850),J=t(15335),I=t(5803),Y=t(10369),x=t(24346);const ue=/(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/,q=/(^$)|((https?:\/\/.*)(d*)\/?(.*))/,se=({formatMessage:a})=>x.Ry().shape({name:x.Z_().required(a({id:"Settings.webhooks.validation.name",defaultMessage:"Name is required"})).matches(ue,r.I0.regex),url:x.Z_().required(a({id:"Settings.webhooks.validation.url.required",defaultMessage:"Url is required"})).matches(q,a({id:r.I0.regex,defaultMessage:"The value does not match the regex"})),headers:x.Vo(o=>{let l=x.IX();if(o.length===1){const{key:g,value:E}=o[0];if(!g&&!E)return l}return l.of(x.Ry().shape({key:x.Z_().required(a({id:"Settings.webhooks.validation.key",defaultMessage:"Key is required"})),value:x.Z_().required(a({id:"Settings.webhooks.validation.value",defaultMessage:"Value is required"}))}))}),events:x.IX()});var ee=t(19406),te=t(28847),ge=t(7563),K=t(21428),n=t(90333);const s=["A-IM","Accept","Accept-Charset","Accept-Encoding","Accept-Language","Accept-Datetime","Access-Control-Request-Method","Access-Control-Request-Headers","Authorization","Cache-Control","Connection","Content-Length","Content-Type","Cookie","Date","Expect","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Max-Forwards","Origin","Pragma","Proxy-Authorization","Range","Referer","TE","User-Agent","Upgrade","Via","Warning"],i=({name:a,onChange:o,value:l,...g})=>{const{values:{headers:E}}=(0,D.u6)(),[U,c]=(0,e.useState)(s);(0,e.useEffect)(()=>{c(s.filter(C=>!E?.some(_=>_.key!==l&&_.key===C)))},[E,l]);const O=C=>{o({target:{name:a,value:C}})},ae=C=>{c(_=>[..._,C]),O(C)};return e.createElement(K.XU,{...g,onClear:()=>O(""),onChange:O,onCreateOption:ae,placeholder:"",value:l},U.map(C=>e.createElement(n.O,{value:C,key:C},C)))};i.defaultProps={value:void 0},i.propTypes={name:u().string.isRequired,onChange:u().func.isRequired,value:u().string};var M=i,R=()=>{const{formatMessage:a}=(0,k.Z)(),{values:o,errors:l}=(0,D.u6)();return e.createElement(v.k,{direction:"column",alignItems:"stretch",gap:1},e.createElement(te.Q,null,a({id:"Settings.webhooks.form.headers",defaultMessage:"Headers"})),e.createElement(z.x,{padding:8,background:"neutral100",hasRadius:!0},e.createElement(D.F2,{validateOnChange:!1,name:"headers",render:({push:g,remove:E})=>e.createElement(J.r,{gap:4},o.headers.map((U,c)=>e.createElement(e.Fragment,{key:`${c}.${U.key}`},e.createElement(I.P,{col:6},e.createElement(D.gN,{as:M,name:`headers.${c}.key`,"aria-label":`row ${c+1} key`,label:a({id:"Settings.webhooks.key",defaultMessage:"Key"}),error:l.headers?.[c]?.key&&l.headers[c].key})),e.createElement(I.P,{col:6},e.createElement(v.k,{alignItems:"flex-end"},e.createElement(z.x,{style:{flex:1}},e.createElement(D.gN,{as:Y.o,name:`headers.${c}.value`,"aria-label":`row ${c+1} value`,label:a({id:"Settings.webhooks.value",defaultMessage:"Value"}),error:l.headers?.[c]?.value&&l.headers[c].value})),e.createElement(v.k,{paddingLeft:2,style:{alignSelf:"center"},paddingTop:l.headers?.[c]?.value?0:5},e.createElement(r.fG,{disabled:o.headers.length===1,onClick:()=>E(c),label:a({id:"Settings.webhooks.headers.remove",defaultMessage:"Remove header row {number}"},{number:c+1})})))))),e.createElement(I.P,{col:12},e.createElement(ge.A,{type:"button",onClick:()=>{g({key:"",value:""})},startIcon:e.createElement(ee.Z,null)},a({id:"Settings.webhooks.create.header",defaultMessage:"Create new header"}))))})))},B=t(8471),N=t(27169),X=t(35331),y=t(49372);const Z=B.ZP.svg(({theme:a,color:o})=>`
|
|
25
|
+
width: ${12/16}rem;
|
|
26
|
+
height: ${12/16}rem;
|
|
27
|
+
|
|
28
|
+
path {
|
|
29
|
+
fill: ${a.colors[o]};
|
|
30
|
+
}
|
|
31
|
+
`),P=({isPending:a,statusCode:o})=>{const{formatMessage:l}=(0,k.Z)();return a?e.createElement(v.k,{gap:2,alignItems:"center"},e.createElement(Z,{as:N.Z}),e.createElement(y.Z,null,l({id:"Settings.webhooks.trigger.pending",defaultMessage:"pending"}))):o>=200&&o<300?e.createElement(v.k,{gap:2,alignItems:"center"},e.createElement(Z,{as:G.Z,color:"success700"}),e.createElement(y.Z,null,l({id:"Settings.webhooks.trigger.success",defaultMessage:"success"}))):o>=300?e.createElement(v.k,{gap:2,alignItems:"center"},e.createElement(Z,{as:X.Z,color:"danger700"}),e.createElement(y.Z,null,l({id:"Settings.error",defaultMessage:"error"})," ",o)):null};P.propTypes={isPending:u().bool.isRequired,statusCode:u().number},P.defaultProps={statusCode:void 0};const m=({statusCode:a,message:o})=>{const{formatMessage:l}=(0,k.Z)();return a>=200&&a<300?e.createElement(v.k,{justifyContent:"flex-end"},e.createElement(y.Z,{textColor:"neutral600",ellipsis:!0},l({id:"Settings.webhooks.trigger.success.label",defaultMessage:"Trigger succeeded"}))):a>=300?e.createElement(v.k,{justifyContent:"flex-end"},e.createElement(v.k,{maxWidth:(0,r.Q1)(250),justifyContent:"flex-end",title:o},e.createElement(y.Z,{ellipsis:!0,textColor:"neutral600"},o))):null};m.propTypes={statusCode:u().number,message:u().string},m.defaultProps={statusCode:void 0,message:void 0};const T=({onCancel:a})=>{const{formatMessage:o}=(0,k.Z)();return e.createElement(v.k,{justifyContent:"flex-end"},e.createElement("button",{onClick:a,type:"button"},e.createElement(v.k,{gap:2,alignItems:"center"},e.createElement(y.Z,{textColor:"neutral400"},o({id:"Settings.webhooks.trigger.cancel",defaultMessage:"cancel"})),e.createElement(Z,{as:X.Z,color:"neutral400"}))))};T.propTypes={onCancel:u().func.isRequired};const V=({isPending:a,onCancel:o,response:l})=>{const{statusCode:g,message:E}=l,{formatMessage:U}=(0,k.Z)();return e.createElement(z.x,{background:"neutral0",padding:5,shadow:"filterShadow",hasRadius:!0},e.createElement(J.r,{gap:4,style:{alignItems:"center"}},e.createElement(I.P,{col:3},e.createElement(y.Z,null,U({id:"Settings.webhooks.trigger.test",defaultMessage:"Test-trigger"}))),e.createElement(I.P,{col:3},e.createElement(P,{isPending:a,statusCode:g})),e.createElement(I.P,{col:6},a?e.createElement(T,{onCancel:o}):e.createElement(m,{statusCode:g,message:E}))))};V.defaultProps={isPending:!1,onCancel(){},response:{}},V.propTypes={isPending:u().bool,onCancel:u().func,response:u().object};var ve=V;const Me=(()=>window&&window.strapi&&window.strapi.isEE?t(10635).Z:t(5998).Z)(),ne=a=>{let{handleSubmit:o,triggerWebhook:l,isCreating:g,isTriggering:E,triggerResponse:U,data:c}=a;const{formatMessage:O}=(0,k.Z)(),[ae,C]=(0,e.useState)(!1),_=A=>Object.keys(A).length?Object.entries(A).map(re=>{let[me,oe]=re;return{key:me,value:oe}}):[{key:"",value:""}],$=(0,D.TA)({initialValues:{name:c?.name||"",url:c?.url||"",headers:_(c?.headers||{}),events:c?.events||[]},onSubmit:o,validationSchema:se({formatMessage:O}),validateOnChange:!1,validateOnBlur:!1});return e.createElement(D.Hy,{value:$},e.createElement(r.l0,{onSubmit:$.handleSubmit},e.createElement(w.T,{primaryAction:e.createElement(v.k,{gap:2},e.createElement(F.z,{onClick:()=>{l(),C(!0)},variant:"tertiary",startIcon:e.createElement(de.Z,null),disabled:g||E,size:"L"},O({id:"Settings.webhooks.trigger",defaultMessage:"Trigger"})),e.createElement(F.z,{startIcon:e.createElement(G.Z,null),type:"submit",size:"L",disabled:!$.dirty,loading:$.isSubmitting},O({id:"global.save",defaultMessage:"Save"}))),title:g?O({id:"Settings.webhooks.create",defaultMessage:"Create a webhook"}):c?.name,navigationAction:e.createElement(r.rU,{startIcon:e.createElement(S.Z,null),to:"/settings/webhooks"},O({id:"global.back",defaultMessage:"Back"}))}),e.createElement(ce.D,null,e.createElement(v.k,{direction:"column",alignItems:"stretch",gap:4},ae&&e.createElement(ve,{isPending:E,response:U,onCancel:()=>C(!1)}),e.createElement(z.x,{background:"neutral0",padding:8,shadow:"filterShadow",hasRadius:!0},e.createElement(v.k,{direction:"column",alignItems:"stretch",gap:6},e.createElement(J.r,{gap:6},e.createElement(I.P,{col:6},e.createElement(D.gN,{as:Y.o,name:"name",error:$?.errors?.name&&$.errors.name,label:O({id:"global.name",defaultMessage:"Name"}),required:!0})),e.createElement(I.P,{col:12},e.createElement(D.gN,{as:Y.o,name:"url",error:$?.errors?.url&&$.errors.url,label:O({id:"Settings.roles.form.input.url",defaultMessage:"Url"}),required:!0}))),e.createElement(R,null),e.createElement(Me,null)))))))};ne.propTypes={data:u().object,handleSubmit:u().func.isRequired,triggerWebhook:u().func.isRequired,isCreating:u().bool.isRequired,isTriggering:u().bool.isRequired,triggerResponse:u().object},ne.defaultProps={data:void 0,triggerResponse:void 0};var Ce=ne;const Ee=a=>({...a,headers:a.headers.reduce((o,{key:l,value:g})=>(l!==""&&(o[l]=g),o),{})});var he=()=>{const{params:{id:a}}=(0,h.$B)("/settings/webhooks/:id"),o=a==="create",{replace:l}=(0,h.k6)(),g=(0,r.lm)(),{formatAPIError:E}=(0,r.So)(),U=(0,f.useQueryClient)(),{isLoading:c}=(0,W.G)(),{put:O,get:ae,post:C}=(0,r.kY)(),{isLoading:_,data:$,error:A}=(0,f.useQuery)(["webhooks",a],async()=>{const{data:{data:j}}=await ae(`/admin/webhooks/${a}`);return j},{enabled:!o});e.useEffect(()=>{A&&g({type:"warning",message:E(A)})},[A,g,E]);const{isLoading:re,data:me,isIdle:oe,mutate:pe}=(0,f.useMutation)(()=>C(`/admin/webhooks/${a}/trigger`)),fe=()=>pe(null,{onError(j){g({type:"warning",message:E(j)})}}),be=(0,f.useMutation)(j=>C("/admin/webhooks",j)),le=(0,f.useMutation)(({id:j,body:H})=>O(`/admin/webhooks/${j}`,H)),ye=async j=>{if(o){be.mutate(Ee(j),{onSuccess({data:H}){g({type:"success",message:{id:"Settings.webhooks.created"}}),l(`/settings/webhooks/${H.data.id}`)},onError(H){g({type:"warning",message:E(H)})}});return}le.mutate({id:a,body:Ee(j)},{onSuccess(){U.invalidateQueries(["webhooks",a]),g({type:"success",message:{id:"notification.form.success.fields"}})},onError(H){g({type:"warning",message:E(H)})}})};return _||c?e.createElement(r.dO,null):e.createElement(d.o,null,e.createElement(r.SL,{name:"Webhooks"}),e.createElement(Ce,{data:$,handleSubmit:ye,triggerWebhook:fe,isCreating:o,isTriggering:re,isTriggerIdle:oe,triggerResponse:me?.data.data}))}},33238:function(Q,p,t){t.r(p);var e=t(32735),r=t(69262),d=t(83983),f=t(82167);const h=()=>e.createElement(r.O4,{permissions:d.Z.settings.webhooks.create},e.createElement(f.Z,null));p.default=h},59021:function(Q,p,t){t.r(p);var e=t(32735),r=t(69262),d=t(83983),f=t(82167);const h=()=>e.createElement(r.O4,{permissions:d.Z.settings.webhooks.update},e.createElement(f.Z,null));p.default=h},10635:function(Q,p,t){t.d(p,{Z:function(){return f}});var e=t(32735),r=t(70958);function d(){return e.createElement(r.Z.Root,null,e.createElement(r.Z.Headers,null),e.createElement(r.Z.Body,null))}var f=d},21428:function(Q,p,t){t.d(p,{Wx:function(){return ge},XU:function(){return Y},hQ:function(){return I}});var e=t(74512),r=t(32735),d=t(35331),f=t(16899),h=t(77840),W=t(8471),ie=t(14268),u=t(95976),D=t(74971),k=t(36971),de=t(30350),G=t(23866),S=t(72850),w=t(49372),v=t(87107),F=t(87933),ce=t(28847),z=t(67014),J=t(47851);const I=({children:n,clearLabel:s="clear",creatable:i=!1,createMessage:M=_=>`Create "${_}"`,defaultFilterValue:b,defaultTextValue:R,defaultOpen:B=!1,open:N,onOpenChange:X,disabled:y=!1,error:Z,filterValue:P,hasMoreItems:m=!1,hint:T,id:V,label:ve,labelAction:Me,loading:ne=!1,loadingMessage:Ce="Loading content...",noOptionsMessage:Ee=()=>"No results found",onChange:Pe,onClear:he,onCreateOption:a,onFilterValueChange:o,onInputChange:l,onTextValueChange:g,onLoadMore:E,placeholder:U="Select or enter a value",required:c=!1,startIcon:O,textValue:ae,value:C})=>{const[_,$]=(0,u.T)({prop:N,defaultProp:B,onChange:X}),[A,re]=(0,u.T)({prop:ae,defaultProp:R,onChange:g}),[me,oe]=(0,u.T)({prop:P,defaultProp:b,onChange:o}),pe=r.useRef(null),fe=r.useRef(null),be=r.useRef(null),le=(0,D.M)(V),ye=L=>{he&&!y&&(re(""),oe(""),he(L),fe.current.focus())},j=L=>{$(L)},H=L=>{re(L)},De=L=>{oe(L)},xe=L=>{l&&l(L)},Ie=L=>{Pe&&Pe(L)},Re=(0,D.M)(),Oe=`intersection-${(0,ie.B)(Re)}`,_e=L=>{E&&m&&!ne&&E(L)},Te=()=>{a&&A&&a(A)};(0,k.s)(pe,_e,{selectorToWatch:`#${Oe}`,skipWhen:!_});const Ae=`${le}-hint`,Le=`${le}-error`;return(0,e.jsx)(v.g,{hint:T,error:Z,id:le,required:c,children:(0,e.jsxs)(F.k,{direction:"column",alignItems:"stretch",gap:1,children:[(0,e.jsx)(ce.Q,{action:Me,children:ve}),(0,e.jsxs)(h.hQ.Root,{autocomplete:i?"list":"both",open:_,onOpenChange:j,onTextValueChange:H,textValue:A,allowCustomValue:!0,disabled:y,required:c,value:C===null?void 0:C,onValueChange:Ie,filterValue:me,onFilterValueChange:De,children:[(0,e.jsxs)(ue,{$hasError:!!Z,children:[(0,e.jsxs)(F.k,{flex:"1",as:"span",gap:3,children:[O?(0,e.jsx)(S.x,{as:"span","aria-hidden":!0,children:O}):null,(0,e.jsx)(q,{placeholder:U,id:le,"aria-invalid":!!Z,"aria-labelledby":`${Ae} ${Le}`,onChange:xe,ref:fe})]}),(0,e.jsxs)(F.k,{as:"span",gap:3,children:[A&&he?(0,e.jsx)(x,{as:"button",hasRadius:!0,background:"transparent",type:"button",onClick:ye,"aria-disabled":y,"aria-label":s,title:s,ref:be,children:(0,e.jsx)(d.Z,{})}):null,(0,e.jsx)(se,{children:(0,e.jsx)(f.Z,{})})]})]}),(0,e.jsx)(h.hQ.Portal,{children:(0,e.jsx)(ee,{sideOffset:4,children:(0,e.jsxs)(te,{ref:pe,children:[n,i?(0,e.jsx)(h.hQ.CreateItem,{onPointerUp:Te,onClick:Te,asChild:!0,children:(0,e.jsx)(K,{children:(0,e.jsx)(w.Z,{children:M(A??"")})})}):null,!i&&!ne?(0,e.jsx)(h.hQ.NoValueFound,{asChild:!0,children:(0,e.jsx)(K,{$hasHover:!1,children:(0,e.jsx)(w.Z,{children:Ee(A??"")})})}):null,ne?(0,e.jsx)(F.k,{justifyContent:"center",alignItems:"center",paddingTop:2,paddingBottom:2,children:(0,e.jsx)(G.a,{small:!0,children:Ce})}):null,(0,e.jsx)(S.x,{id:Oe,width:"100%",height:"1px"})]})})})]}),(0,e.jsx)(z.J,{}),(0,e.jsx)(J.c,{})]})})},Y=n=>(0,e.jsx)(I,{...n,creatable:!0}),x=(0,W.ZP)(S.x)`
|
|
32
|
+
border: none;
|
|
33
|
+
|
|
34
|
+
svg {
|
|
35
|
+
height: ${11/16}rem;
|
|
36
|
+
width: ${11/16}rem;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
svg path {
|
|
40
|
+
fill: ${({theme:n})=>n.colors.neutral600};
|
|
41
|
+
}
|
|
42
|
+
`,ue=(0,W.ZP)(h.hQ.Trigger)`
|
|
43
|
+
position: relative;
|
|
44
|
+
border: 1px solid ${({theme:n,$hasError:s})=>s?n.colors.danger600:n.colors.neutral200};
|
|
45
|
+
padding-right: ${({theme:n})=>n.spaces[3]};
|
|
46
|
+
padding-left: ${({theme:n})=>n.spaces[3]};
|
|
47
|
+
border-radius: ${({theme:n})=>n.borderRadius};
|
|
48
|
+
background: ${({theme:n})=>n.colors.neutral0};
|
|
49
|
+
overflow: hidden;
|
|
50
|
+
display: flex;
|
|
51
|
+
align-items: center;
|
|
52
|
+
justify-content: space-between;
|
|
53
|
+
gap: ${({theme:n})=>n.spaces[4]};
|
|
54
|
+
|
|
55
|
+
&[data-disabled] {
|
|
56
|
+
color: ${({theme:n})=>n.colors.neutral600};
|
|
57
|
+
background: ${({theme:n})=>n.colors.neutral150};
|
|
58
|
+
cursor: not-allowed;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Required to ensure the below inputFocusStyles are adhered too */
|
|
62
|
+
&:focus-visible {
|
|
63
|
+
outline: none;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
${({theme:n,$hasError:s})=>(0,de.k3)()({theme:n,hasError:s})};
|
|
67
|
+
`,q=(0,W.ZP)(h.hQ.TextInput)`
|
|
68
|
+
width: 100%;
|
|
69
|
+
font-size: ${14/16}rem;
|
|
70
|
+
color: ${({theme:n})=>n.colors.neutral800};
|
|
71
|
+
min-height: ${40/16}rem;
|
|
72
|
+
border: none;
|
|
73
|
+
background-color: transparent;
|
|
74
|
+
|
|
75
|
+
&:focus-visible {
|
|
76
|
+
outline: none;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
&[aria-disabled='true'] {
|
|
80
|
+
cursor: inherit;
|
|
81
|
+
}
|
|
82
|
+
`,se=(0,W.ZP)(h.hQ.Icon)`
|
|
83
|
+
& > svg {
|
|
84
|
+
width: ${6/16}rem;
|
|
85
|
+
|
|
86
|
+
& > path {
|
|
87
|
+
fill: ${({theme:n})=>n.colors.neutral600};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
&[aria-disabled='true'] {
|
|
92
|
+
cursor: inherit;
|
|
93
|
+
}
|
|
94
|
+
`,ee=(0,W.ZP)(h.hQ.Content)`
|
|
95
|
+
background: ${({theme:n})=>n.colors.neutral0};
|
|
96
|
+
box-shadow: ${({theme:n})=>n.shadows.filterShadow};
|
|
97
|
+
border: 1px solid ${({theme:n})=>n.colors.neutral150};
|
|
98
|
+
border-radius: ${({theme:n})=>n.borderRadius};
|
|
99
|
+
width: var(--radix-combobox-trigger-width);
|
|
100
|
+
/* This is from the design-system figma file. */
|
|
101
|
+
max-height: 15rem;
|
|
102
|
+
z-index: ${({theme:n})=>n.zIndices[1]};
|
|
103
|
+
`,te=(0,W.ZP)(h.hQ.Viewport)`
|
|
104
|
+
padding: ${({theme:n})=>n.spaces[1]};
|
|
105
|
+
`,ge=r.forwardRef(({children:n,value:s,disabled:i,textValue:M,...b},R)=>(0,e.jsx)(h.hQ.ComboboxItem,{asChild:!0,value:s,disabled:i,textValue:M,children:(0,e.jsx)(K,{ref:R,...b,children:(0,e.jsx)(h.hQ.ItemText,{asChild:!0,children:(0,e.jsx)(w.Z,{children:n})})})})),K=W.ZP.div`
|
|
106
|
+
width: 100%;
|
|
107
|
+
border: none;
|
|
108
|
+
text-align: left;
|
|
109
|
+
outline-offset: -3px;
|
|
110
|
+
padding: ${({theme:n})=>n.spaces[2]} ${({theme:n})=>n.spaces[4]};
|
|
111
|
+
background-color: ${({theme:n})=>n.colors.neutral0};
|
|
112
|
+
border-radius: ${({theme:n})=>n.borderRadius};
|
|
113
|
+
user-select: none;
|
|
114
|
+
|
|
115
|
+
&[data-selected] {
|
|
116
|
+
background-color: ${({theme:n})=>n.colors.primary100};
|
|
117
|
+
|
|
118
|
+
${w.Z} {
|
|
119
|
+
color: ${({theme:n})=>n.colors.primary600};
|
|
120
|
+
font-weight: bold;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
&:hover,
|
|
125
|
+
&[data-highlighted] {
|
|
126
|
+
outline: none;
|
|
127
|
+
background-color: ${({theme:n,$hasHover:s=!0})=>s?n.colors.primary100:n.colors.neutral0};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
&[data-highlighted] {
|
|
131
|
+
${w.Z} {
|
|
132
|
+
color: ${({theme:n})=>n.colors.primary600};
|
|
133
|
+
font-weight: bold;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
`},90333:function(Q,p,t){t.d(p,{O:function(){return r}});var e=t(21428);const r=e.Wx},29439:function(Q,p,t){t.d(p,{Z:function(){return d}});var e=t(74512);const r=f=>(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1rem",height:"1rem",fill:"none",viewBox:"0 0 24 24",...f,children:(0,e.jsx)("path",{fill:"#212134",d:"M24 13.3a.2.2 0 0 1-.2.2H5.74l8.239 8.239a.2.2 0 0 1 0 .282L12.14 23.86a.2.2 0 0 1-.282 0L.14 12.14a.2.2 0 0 1 0-.282L11.86.14a.2.2 0 0 1 .282 0L13.98 1.98a.2.2 0 0 1 0 .282L5.74 10.5H23.8c.11 0 .2.09.2.2v2.6Z"})}),d=r}}]);
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[4121],{32393:function(R,E,t){t.r(E),t.d(E,{default:function(){return ce}});var e=t(32735),s=t(69262),c=t(83983),h=t(53038),f=t(67879),p=t(20108),T=t(7395),D=t(96709),S=t(27649),i=t(82055),P=t(99223),m=t(49372),I=t(41415),q=t(17e3),U=t(72850),_=t(56755),ee=t(73269),te=t(33827),K=t(94547),r=t(19786),V=t(82884),ne=t(3685),ae=t(35658),k=t(87933),b=t(74512),F=t(8471);const j=F.ZP.div`
|
|
2
|
+
background: ${({theme:o})=>o.colors.danger500};
|
|
3
|
+
border: none;
|
|
4
|
+
border-radius: 16px;
|
|
5
|
+
position: relative;
|
|
6
|
+
height: ${24/16}rem;
|
|
7
|
+
width: ${40/16}rem;
|
|
8
|
+
|
|
9
|
+
& span {
|
|
10
|
+
font-size: ${({visibleLabels:o})=>o?"1rem":0};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
&:before {
|
|
14
|
+
content: '';
|
|
15
|
+
background: ${({theme:o})=>o.colors.neutral0};
|
|
16
|
+
width: 1rem;
|
|
17
|
+
height: 1rem;
|
|
18
|
+
border-radius: 50%;
|
|
19
|
+
position: absolute;
|
|
20
|
+
transition: all 0.5s;
|
|
21
|
+
left: ${({theme:o})=>o.spaces[1]};
|
|
22
|
+
top: ${({theme:o})=>o.spaces[1]};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@media (prefers-reduced-motion: reduce) {
|
|
26
|
+
&:before {
|
|
27
|
+
transition: none;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
`,se=F.ZP.button`
|
|
31
|
+
background: transparent;
|
|
32
|
+
padding: 0;
|
|
33
|
+
border: none;
|
|
34
|
+
|
|
35
|
+
&[aria-checked='true'] ${j} {
|
|
36
|
+
background: ${({theme:o})=>o.colors.success500};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
&[aria-checked='true'] ${j}:before {
|
|
40
|
+
transform: translateX(1rem);
|
|
41
|
+
}
|
|
42
|
+
`,oe=e.forwardRef(({label:o,onChange:u,onLabel:v="On",offLabel:d="Off",selected:a,visibleLabels:g=!1,...x},$)=>(0,b.jsx)(se,{ref:$,role:"switch","aria-checked":a,"aria-label":o,onClick:u,visibleLabels:g,type:"button",...x,children:(0,b.jsxs)(k.k,{children:[(0,b.jsxs)(j,{children:[(0,b.jsx)("span",{children:v}),(0,b.jsx)("span",{children:d})]}),g&&(0,b.jsx)(U.x,{as:"span","aria-hidden":!0,paddingLeft:2,color:a?"success600":"danger600",children:a?v:d})]})}));var z=t(50563),le=t(9695),w=t(19406),H=t(4038),re=t(68625),ie=t(54725),de=()=>{const[o,u]=(0,e.useState)(!1),[v,d]=(0,e.useState)([]),{formatMessage:a}=(0,f.Z)(),{formatAPIError:g}=(0,s.So)(),x=(0,s.lm)();(0,s.go)();const{push:$}=(0,h.k6)(),{pathname:N}=(0,h.TH)(),{isLoading:me,allowedActions:{canCreate:O,canUpdate:Q,canDelete:Y}}=(0,s.ss)(c.Z.settings.webhooks),{get:he,post:ue,put:ge}=(0,s.kY)(),{notifyStatus:G}=(0,T.G)(),Ee="webhooks",{isLoading:fe,data:M,error:Z,refetch:X}=(0,p.useQuery)(Ee,async()=>{const{data:{data:n}}=await he("/admin/webhooks");return n});(0,e.useEffect)(()=>{if(Z){x({type:"warning",message:g(Z)});return}M&&G(a({id:"Settings.webhooks.list.loading.success",defaultMessage:"Webhooks have been loaded"}))},[M,Z,x,a,G,g]);const J=(0,p.useMutation)(async()=>{await ue("/admin/webhooks/batch-delete",{ids:v})},{onError(n){x({type:"warning",message:g(n)}),u(!1)},onSuccess(){d([]),u(!1),X()}}),be=(0,p.useMutation)(async({isEnabled:n,id:l})=>{const{id:L,...W}=M.find(Ce=>Ce.id===l)??{},pe={...W,isEnabled:n};await ge(`/admin/webhooks/${l}`,pe)},{onError(n){x({type:"warning",message:g(n)})},onSuccess(){X()}}),ve=()=>J.mutate(),xe=n=>d(n?M.map(l=>l.id):[]),Me=(n,l)=>d(n?L=>[...L,l]:L=>L.filter(W=>W!==l)),A=n=>$(`${N}/${n}`),B=me||fe,y=M?.length??0,C=v.length;return e.createElement(D.A,null,e.createElement(s.SL,{name:"Webhooks"}),e.createElement(S.o,{"aria-busy":B},e.createElement(i.T,{title:a({id:"Settings.webhooks.title",defaultMessage:"Webhooks"}),subtitle:a({id:"Settings.webhooks.list.description",defaultMessage:"Get POST changes notifications"}),primaryAction:O&&!B&&e.createElement(s.Qj,{startIcon:e.createElement(w.Z,null),variant:"default",to:`${N}/create`,size:"S"},a({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))}),C>0&&Y&&e.createElement(P.Z,{startActions:e.createElement(e.Fragment,null,e.createElement(m.Z,{variant:"epsilon",textColor:"neutral600"},a({id:"Settings.webhooks.to.delete",defaultMessage:"{webhooksToDeleteLength, plural, one {# webhook} other {# webhooks}} selected"},{webhooksToDeleteLength:C})),e.createElement(I.z,{onClick:()=>u(!0),startIcon:e.createElement(H.Z,null),size:"L",variant:"danger-light"},a({id:"global.delete",defaultMessage:"Delete"})))}),e.createElement(q.D,null,B?e.createElement(U.x,{background:"neutral0",padding:6,shadow:"filterShadow",hasRadius:!0},e.createElement(s.dO,null)):y>0?e.createElement(_.i,{colCount:5,rowCount:y+1,footer:e.createElement(ee.c,{onClick:()=>O?A("create"):{},icon:e.createElement(w.Z,null)},a({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))},e.createElement(te.h,null,e.createElement(K.Tr,null,e.createElement(r.Th,null,e.createElement(V.C,{"aria-label":a({id:"global.select-all-entries",defaultMessage:"Select all entries"}),indeterminate:C>0&&C<y,value:C===y,onValueChange:xe})),e.createElement(r.Th,{width:"20%"},e.createElement(m.Z,{variant:"sigma",textColor:"neutral600"},a({id:"global.name",defaultMessage:"Name"}))),e.createElement(r.Th,{width:"60%"},e.createElement(m.Z,{variant:"sigma",textColor:"neutral600"},a({id:"Settings.webhooks.form.url",defaultMessage:"URL"}))),e.createElement(r.Th,{width:"20%"},e.createElement(m.Z,{variant:"sigma",textColor:"neutral600"},a({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"}))),e.createElement(r.Th,null,e.createElement(ne.T,null,a({id:"Settings.webhooks.list.th.actions",defaultMessage:"Actions"}))))),e.createElement(ae.p,null,M.map(n=>e.createElement(K.Tr,{key:n.id,...(0,s.X7)({fn:()=>A(n.id),condition:Q})},e.createElement(r.Td,{...s.UW},e.createElement(V.C,{"aria-label":`${a({id:"global.select",defaultMessage:"Select"})} ${n.name}`,value:v?.includes(n.id),onValueChange:l=>Me(l,n.id),name:"select"})),e.createElement(r.Td,null,e.createElement(m.Z,{fontWeight:"semiBold",textColor:"neutral800"},n.name)),e.createElement(r.Td,null,e.createElement(m.Z,{textColor:"neutral800"},n.url)),e.createElement(r.Td,null,e.createElement(k.k,null,e.createElement(oe,{onLabel:a({id:"global.enabled",defaultMessage:"Enabled"}),offLabel:a({id:"global.disabled",defaultMessage:"Disabled"}),label:`${n.name} ${a({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"})}`,selected:n.isEnabled,onChange:l=>{l.stopPropagation(),be.mutate({isEnabled:!n.isEnabled,id:n.id})},visibleLabels:!0}))),e.createElement(r.Td,null,e.createElement(k.k,{gap:1},Q&&e.createElement(z.h,{label:a({id:"Settings.webhooks.events.update",defaultMessage:"Update"}),icon:e.createElement(re.Z,null),noBorder:!0}),Y&&e.createElement(z.h,{onClick:l=>{l.stopPropagation(),d([n.id]),u(!0)},label:a({id:"Settings.webhooks.events.delete",defaultMessage:"Delete webhook"}),icon:e.createElement(H.Z,null),noBorder:!0}))))))):e.createElement(le.x,{icon:e.createElement(ie.Z,{width:"160px"}),content:a({id:"Settings.webhooks.list.empty.description",defaultMessage:"No webhooks found"}),action:e.createElement(I.z,{variant:"secondary",startIcon:e.createElement(w.Z,null),onClick:()=>O?A("create"):{}},a({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))}))),e.createElement(s.QH,{isOpen:o,onToggleDialog:()=>u(n=>!n),onConfirm:ve,isConfirmButtonLoading:J.isLoading}))},ce=()=>e.createElement(s.O4,{permissions:c.Z.settings.webhooks.main},e.createElement(de,null))},99223:function(R,E,t){t.d(E,{Z:function(){return c}});var e=t(74512),s=t(87933);const c=({startActions:h,endActions:f})=>!h&&!f?null:(0,e.jsxs)(s.k,{justifyContent:"space-between",alignItems:"flex-start",paddingBottom:4,paddingLeft:10,paddingRight:10,children:[(0,e.jsx)(s.k,{gap:2,wrap:"wrap",children:h}),(0,e.jsx)(s.k,{gap:2,shrink:0,wrap:"wrap",children:f})]})},73269:function(R,E,t){t.d(E,{c:function(){return S}});var e=t(74512),s=t(8471),c=t(72850),h=t(9026),f=t(87933),p=t(49372);const T=(0,s.ZP)(c.x)`
|
|
43
|
+
height: ${24/16}rem;
|
|
44
|
+
width: ${24/16}rem;
|
|
45
|
+
border-radius: 50%;
|
|
46
|
+
display: flex;
|
|
47
|
+
justify-content: center;
|
|
48
|
+
align-items: center;
|
|
49
|
+
|
|
50
|
+
svg {
|
|
51
|
+
height: ${10/16}rem;
|
|
52
|
+
width: ${10/16}rem;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
svg path {
|
|
56
|
+
fill: ${({theme:i})=>i.colors.primary600};
|
|
57
|
+
}
|
|
58
|
+
`,D=(0,s.ZP)(c.x)`
|
|
59
|
+
border-radius: 0 0 ${({theme:i})=>i.borderRadius} ${({theme:i})=>i.borderRadius};
|
|
60
|
+
display: block;
|
|
61
|
+
width: 100%;
|
|
62
|
+
border: none;
|
|
63
|
+
`,S=({children:i,icon:P,...m})=>(0,e.jsxs)("div",{children:[(0,e.jsx)(h.i,{}),(0,e.jsx)(D,{as:"button",background:"primary100",padding:5,...m,children:(0,e.jsxs)(f.k,{children:[(0,e.jsx)(T,{"aria-hidden":!0,background:"primary200",children:P}),(0,e.jsx)(c.x,{paddingLeft:3,children:(0,e.jsx)(p.Z,{variant:"pi",fontWeight:"bold",textColor:"primary600",children:i})})]})})]})}}]);
|
package/ee/admin/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable/EventTableEE.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import EventTable from '../../../../../../../../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/Events';
|
|
4
|
+
|
|
5
|
+
// const events = {
|
|
6
|
+
// 'review-workflows': ['workflows.updateEntryStage'],
|
|
7
|
+
// };
|
|
8
|
+
|
|
9
|
+
// TODO: extend this to support review workflow events once the BE logic is ready
|
|
10
|
+
// const getHeaders = () => {
|
|
11
|
+
// return [{ id: 'review-workflows.updateEntryStage', defaultMessage: 'Stage Change' }];
|
|
12
|
+
// };
|
|
13
|
+
|
|
14
|
+
export function EventTableEE() {
|
|
15
|
+
return (
|
|
16
|
+
<EventTable.Root>
|
|
17
|
+
<EventTable.Headers />
|
|
18
|
+
<EventTable.Body />
|
|
19
|
+
{/* <EventTable.Headers getHeaders={getHeaders} />
|
|
20
|
+
<EventTable.Body providedEvents={events} /> */}
|
|
21
|
+
</EventTable.Root>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
@@ -108,12 +108,16 @@ function persistStagesJoinTables({ strapi }) {
|
|
|
108
108
|
};
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
+
const registerWebhookEvents = async ({ strapi }) =>
|
|
112
|
+
strapi.webhookStore.addAllowedEvent('WORKFLOW_UPDATE_STAGE', 'workflow.updateEntryStage');
|
|
113
|
+
|
|
111
114
|
module.exports = ({ strapi }) => {
|
|
112
115
|
const workflowsService = getService('workflows', { strapi });
|
|
113
116
|
const stagesService = getService('stages', { strapi });
|
|
114
117
|
|
|
115
118
|
return {
|
|
116
119
|
async bootstrap() {
|
|
120
|
+
await registerWebhookEvents({ strapi });
|
|
117
121
|
await initDefaultWorkflow({ workflowsService, stagesService, strapi });
|
|
118
122
|
},
|
|
119
123
|
async register() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/admin",
|
|
3
|
-
"version": "4.11.0-
|
|
3
|
+
"version": "4.11.0-exp.2",
|
|
4
4
|
"description": "Strapi Admin",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -48,15 +48,15 @@
|
|
|
48
48
|
"@casl/ability": "^5.4.3",
|
|
49
49
|
"@fingerprintjs/fingerprintjs": "3.4.1",
|
|
50
50
|
"@pmmmwh/react-refresh-webpack-plugin": "0.5.10",
|
|
51
|
-
"@strapi/babel-plugin-switch-ee-ce": "4.11.0-
|
|
52
|
-
"@strapi/data-transfer": "4.11.0-
|
|
53
|
-
"@strapi/design-system": "
|
|
54
|
-
"@strapi/helper-plugin": "4.11.0-
|
|
55
|
-
"@strapi/icons": "
|
|
56
|
-
"@strapi/permissions": "4.11.0-
|
|
57
|
-
"@strapi/provider-audit-logs-local": "4.11.0-
|
|
58
|
-
"@strapi/typescript-utils": "4.11.0-
|
|
59
|
-
"@strapi/utils": "4.11.0-
|
|
51
|
+
"@strapi/babel-plugin-switch-ee-ce": "4.11.0-exp.2",
|
|
52
|
+
"@strapi/data-transfer": "4.11.0-exp.2",
|
|
53
|
+
"@strapi/design-system": "1.8.0",
|
|
54
|
+
"@strapi/helper-plugin": "4.11.0-exp.2",
|
|
55
|
+
"@strapi/icons": "1.8.0",
|
|
56
|
+
"@strapi/permissions": "4.11.0-exp.2",
|
|
57
|
+
"@strapi/provider-audit-logs-local": "4.11.0-exp.2",
|
|
58
|
+
"@strapi/typescript-utils": "4.11.0-exp.2",
|
|
59
|
+
"@strapi/utils": "4.11.0-exp.2",
|
|
60
60
|
"axios": "1.4.0",
|
|
61
61
|
"babel-loader": "^9.1.2",
|
|
62
62
|
"babel-plugin-styled-components": "2.1.1",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"chokidar": "^3.5.1",
|
|
68
68
|
"codemirror5": "npm:codemirror@^5.65.11",
|
|
69
69
|
"cross-env": "^7.0.3",
|
|
70
|
-
"css-loader": "^6.
|
|
70
|
+
"css-loader": "^6.8.1",
|
|
71
71
|
"date-fns": "2.30.0",
|
|
72
72
|
"dotenv": "8.5.1",
|
|
73
73
|
"esbuild-loader": "^2.21.0",
|
|
@@ -80,7 +80,6 @@
|
|
|
80
80
|
"fs-extra": "10.0.0",
|
|
81
81
|
"highlight.js": "^10.4.1",
|
|
82
82
|
"history": "^4.9.0",
|
|
83
|
-
"hoist-non-react-statics": "^3.3.0",
|
|
84
83
|
"html-loader": "^4.2.0",
|
|
85
84
|
"html-webpack-plugin": "5.5.0",
|
|
86
85
|
"immer": "9.0.19",
|
|
@@ -107,16 +106,16 @@
|
|
|
107
106
|
"p-map": "4.0.0",
|
|
108
107
|
"passport-local": "1.0.0",
|
|
109
108
|
"pluralize": "8.0.0",
|
|
110
|
-
"prop-types": "^15.
|
|
109
|
+
"prop-types": "^15.8.1",
|
|
111
110
|
"qs": "6.11.1",
|
|
112
|
-
"react": "^
|
|
111
|
+
"react": "^18.2.0",
|
|
113
112
|
"react-dnd": "15.1.2",
|
|
114
113
|
"react-dnd-html5-backend": "15.1.3",
|
|
115
|
-
"react-dom": "^
|
|
114
|
+
"react-dom": "^18.2.0",
|
|
116
115
|
"react-error-boundary": "3.1.4",
|
|
117
116
|
"react-helmet": "^6.1.0",
|
|
118
117
|
"react-intl": "6.4.1",
|
|
119
|
-
"react-is": "^
|
|
118
|
+
"react-is": "^18.2.0",
|
|
120
119
|
"react-query": "3.39.3",
|
|
121
120
|
"react-redux": "8.0.5",
|
|
122
121
|
"react-refresh": "0.14.0",
|
|
@@ -131,7 +130,7 @@
|
|
|
131
130
|
"sift": "16.0.1",
|
|
132
131
|
"style-loader": "3.3.1",
|
|
133
132
|
"styled-components": "5.3.3",
|
|
134
|
-
"typescript": "5.
|
|
133
|
+
"typescript": "5.1.3",
|
|
135
134
|
"webpack": "^5.82.0",
|
|
136
135
|
"webpack-cli": "^5.1.0",
|
|
137
136
|
"webpack-dev-server": "^4.15.0",
|
|
@@ -139,9 +138,8 @@
|
|
|
139
138
|
"yup": "^0.32.9"
|
|
140
139
|
},
|
|
141
140
|
"devDependencies": {
|
|
142
|
-
"@testing-library/dom": "
|
|
143
|
-
"@testing-library/react": "
|
|
144
|
-
"@testing-library/react-hooks": "8.0.1",
|
|
141
|
+
"@testing-library/dom": "9.2.0",
|
|
142
|
+
"@testing-library/react": "14.0.0",
|
|
145
143
|
"@testing-library/user-event": "14.4.3",
|
|
146
144
|
"duplicate-dependencies-webpack-plugin": "^1.0.2",
|
|
147
145
|
"glob": "8.0.3",
|
|
@@ -165,5 +163,5 @@
|
|
|
165
163
|
}
|
|
166
164
|
}
|
|
167
165
|
},
|
|
168
|
-
"gitHead": "
|
|
166
|
+
"gitHead": "d0785a2eb7588c1314108a40fee617bdfd3148e2"
|
|
169
167
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const _ = require('lodash');
|
|
4
|
-
const { yup,
|
|
4
|
+
const { yup, validateYupSchema } = require('@strapi/utils');
|
|
5
5
|
|
|
6
6
|
const urlRegex =
|
|
7
7
|
/^(?:([a-z0-9+.-]+):\/\/)(?:\S+(?::\S*)?@)?(?:(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9_]-*)*[a-z\u00a1-\uffff0-9_]+)(?:\.(?:[a-z\u00a1-\uffff0-9_]-*)*[a-z\u00a1-\uffff0-9_]+)*\.?)(?::\d{2,5})?(?:[/?#]\S*)?$/;
|
|
@@ -23,7 +23,7 @@ const webhookValidator = yup
|
|
|
23
23
|
)
|
|
24
24
|
.required();
|
|
25
25
|
}),
|
|
26
|
-
events: yup.array().of(yup.string()
|
|
26
|
+
events: yup.array().of(yup.string()).required(),
|
|
27
27
|
})
|
|
28
28
|
.noUnknown();
|
|
29
29
|
|
|
@@ -111,10 +111,10 @@ module.exports = {
|
|
|
111
111
|
for (const id of ids) {
|
|
112
112
|
const webhook = await strapi.webhookStore.findWebhook(id);
|
|
113
113
|
|
|
114
|
-
if (
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
114
|
+
if (webhook) {
|
|
115
|
+
await strapi.webhookStore.deleteWebhook(id);
|
|
116
|
+
strapi.webhookRunner.remove(webhook);
|
|
117
|
+
}
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
ctx.send({ data: ids });
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
function connect(WrappedComponent, select) {
|
|
4
|
-
return (props) => {
|
|
5
|
-
// eslint-disable-next-line react/prop-types
|
|
6
|
-
const selectors = select(props.name);
|
|
7
|
-
|
|
8
|
-
return <WrappedComponent {...props} {...selectors} />;
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export default connect;
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { useMemo } from 'react';
|
|
2
|
-
import get from 'lodash/get';
|
|
3
|
-
import { useCMEditViewDataManager } from '@strapi/helper-plugin';
|
|
4
|
-
|
|
5
|
-
function useSelect(name) {
|
|
6
|
-
const {
|
|
7
|
-
addComponentToDynamicZone,
|
|
8
|
-
createActionAllowedFields,
|
|
9
|
-
isCreatingEntry,
|
|
10
|
-
formErrors,
|
|
11
|
-
modifiedData,
|
|
12
|
-
moveComponentField,
|
|
13
|
-
removeComponentFromDynamicZone,
|
|
14
|
-
readActionAllowedFields,
|
|
15
|
-
updateActionAllowedFields,
|
|
16
|
-
} = useCMEditViewDataManager();
|
|
17
|
-
|
|
18
|
-
const dynamicDisplayedComponents = useMemo(
|
|
19
|
-
() =>
|
|
20
|
-
get(modifiedData, [name], []).map((data) => {
|
|
21
|
-
return {
|
|
22
|
-
componentUid: data.__component,
|
|
23
|
-
id: data.id ?? data.__temp_key__,
|
|
24
|
-
};
|
|
25
|
-
}),
|
|
26
|
-
[modifiedData, name]
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
const isFieldAllowed = useMemo(() => {
|
|
30
|
-
const allowedFields = isCreatingEntry ? createActionAllowedFields : updateActionAllowedFields;
|
|
31
|
-
|
|
32
|
-
return allowedFields.includes(name);
|
|
33
|
-
}, [name, isCreatingEntry, createActionAllowedFields, updateActionAllowedFields]);
|
|
34
|
-
|
|
35
|
-
const isFieldReadable = useMemo(() => {
|
|
36
|
-
const allowedFields = isCreatingEntry ? [] : readActionAllowedFields;
|
|
37
|
-
|
|
38
|
-
return allowedFields.includes(name);
|
|
39
|
-
}, [name, isCreatingEntry, readActionAllowedFields]);
|
|
40
|
-
|
|
41
|
-
return {
|
|
42
|
-
addComponentToDynamicZone,
|
|
43
|
-
formErrors,
|
|
44
|
-
isCreatingEntry,
|
|
45
|
-
isFieldAllowed,
|
|
46
|
-
isFieldReadable,
|
|
47
|
-
moveComponentField,
|
|
48
|
-
removeComponentFromDynamicZone,
|
|
49
|
-
dynamicDisplayedComponents,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export default useSelect;
|
package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventInput/EventRow.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
|
-
import { BaseCheckbox, Checkbox } from '@strapi/design-system';
|
|
4
|
-
import upperFirst from 'lodash/upperFirst';
|
|
5
|
-
|
|
6
|
-
const EventRow = ({ disabledEvents, name, events, inputValue, handleChange, handleChangeAll }) => {
|
|
7
|
-
const enabledCheckboxes = events.filter((event) => {
|
|
8
|
-
return !disabledEvents.includes(event);
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
const areAllCheckboxesSelected = inputValue.length === enabledCheckboxes.length;
|
|
12
|
-
const hasSomeCheckboxSelected = inputValue.length > 0;
|
|
13
|
-
|
|
14
|
-
const onChangeAll = ({ target: { name } }) => {
|
|
15
|
-
const valueToSet = !areAllCheckboxesSelected;
|
|
16
|
-
|
|
17
|
-
handleChangeAll({
|
|
18
|
-
target: { name, value: valueToSet },
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
return (
|
|
23
|
-
<tr>
|
|
24
|
-
<td>
|
|
25
|
-
<Checkbox
|
|
26
|
-
indeterminate={hasSomeCheckboxSelected && !areAllCheckboxesSelected}
|
|
27
|
-
aria-label="Select all entries"
|
|
28
|
-
name={name}
|
|
29
|
-
onChange={onChangeAll}
|
|
30
|
-
value={areAllCheckboxesSelected}
|
|
31
|
-
>
|
|
32
|
-
{upperFirst(name)}
|
|
33
|
-
</Checkbox>
|
|
34
|
-
</td>
|
|
35
|
-
|
|
36
|
-
{events.map((event) => {
|
|
37
|
-
return (
|
|
38
|
-
<td key={event}>
|
|
39
|
-
<BaseCheckbox
|
|
40
|
-
disabled={disabledEvents.includes(event)}
|
|
41
|
-
aria-label={event}
|
|
42
|
-
name={event}
|
|
43
|
-
value={inputValue.includes(event)}
|
|
44
|
-
onValueChange={(value) => handleChange({ target: { name: event, value } })}
|
|
45
|
-
/>
|
|
46
|
-
</td>
|
|
47
|
-
);
|
|
48
|
-
})}
|
|
49
|
-
</tr>
|
|
50
|
-
);
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
EventRow.defaultProps = {
|
|
54
|
-
disabledEvents: [],
|
|
55
|
-
events: [],
|
|
56
|
-
inputValue: [],
|
|
57
|
-
handleChange() {},
|
|
58
|
-
handleChangeAll() {},
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
EventRow.propTypes = {
|
|
62
|
-
disabledEvents: PropTypes.array,
|
|
63
|
-
events: PropTypes.array,
|
|
64
|
-
inputValue: PropTypes.array,
|
|
65
|
-
handleChange: PropTypes.func,
|
|
66
|
-
handleChangeAll: PropTypes.func,
|
|
67
|
-
name: PropTypes.string.isRequired,
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
export default EventRow;
|