@strapi/admin 4.2.0-beta.3 → 4.2.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/admin/src/components/ConfigurationsProvider/index.js +51 -0
  2. package/admin/src/components/ConfigurationsProvider/reducer.js +28 -0
  3. package/admin/src/components/LeftMenu/index.js +12 -2
  4. package/admin/src/components/Providers/index.js +8 -4
  5. package/admin/src/components/UnauthenticatedLogo/index.js +4 -2
  6. package/admin/src/pages/App/index.js +7 -2
  7. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/Form/index.js +85 -0
  8. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/Form/init.js +13 -0
  9. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/Form/reducer.js +43 -0
  10. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoInput/index.js +118 -0
  11. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoInput/reducer.js +28 -0
  12. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoInput/stepper.js +25 -0
  13. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/AddLogoDialog.js +67 -0
  14. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/FromComputerForm.js +176 -0
  15. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/FromUrlForm.js +82 -0
  16. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/ImageCardAsset.js +51 -0
  17. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/PendingLogoDialog.js +97 -0
  18. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/index.js +85 -0
  19. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/reducer.js +28 -0
  20. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/index.js +153 -91
  21. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/api.js +16 -0
  22. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/constants.js +3 -0
  23. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/getFormData.js +17 -0
  24. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/parseFileMetadatas.js +76 -0
  25. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/prefixAllUrls.js +17 -0
  26. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/urlToFile.js +21 -0
  27. package/admin/src/translations/en.json +26 -0
  28. package/build/1541.6c1c96f9.chunk.js +307 -0
  29. package/build/3214.9196aeff.chunk.js +235 -0
  30. package/build/3865.21cec9de.chunk.js +310 -0
  31. package/build/{4073.41ac1235.chunk.js → 4073.e144a91a.chunk.js} +1 -1
  32. package/build/{210.014495c1.chunk.js → 472.0350a5bd.chunk.js} +32 -32
  33. package/build/4800.d3ebc81d.chunk.js +1 -0
  34. package/build/4982.f53b78a4.chunk.js +308 -0
  35. package/build/7351.b95e65ae.chunk.js +428 -0
  36. package/build/7418.6db737ce.chunk.js +112 -0
  37. package/build/8826.58e236d4.chunk.js +1057 -0
  38. package/build/9066.118ecccd.chunk.js +101 -0
  39. package/build/{7191.3bde3cbf.chunk.js → 9298.aff28744.chunk.js} +85 -86
  40. package/build/948.d64fb515.chunk.js +2 -0
  41. package/build/9988.f84412d9.chunk.js +162 -0
  42. package/build/Admin-authenticatedApp.162a5805.chunk.js +80 -0
  43. package/build/{Admin_homePage.f157e33e.chunk.js → Admin_homePage.0ac648e8.chunk.js} +2 -2
  44. package/build/Admin_marketplace.0bb91ec8.chunk.js +11 -0
  45. package/build/{Admin_profilePage.62c203ad.chunk.js → Admin_profilePage.27191ed2.chunk.js} +1 -1
  46. package/build/Admin_settingsPage.23e873f0.chunk.js +178 -0
  47. package/build/{admin-edit-roles-page.94e1403b.chunk.js → admin-edit-roles-page.fb374555.chunk.js} +1 -1
  48. package/build/admin-edit-users.a360deaf.chunk.js +10 -0
  49. package/build/admin-users.47d06d24.chunk.js +11 -0
  50. package/build/api-tokens-create-page.698f132d.chunk.js +1 -0
  51. package/build/api-tokens-edit-page.afece2fe.chunk.js +1 -0
  52. package/build/{api-tokens-list-page.340750a6.chunk.js → api-tokens-list-page.46d96dee.chunk.js} +1 -1
  53. package/build/{content-manager.6cdcfb6e.chunk.js → content-manager.7cd28f84.chunk.js} +14 -14
  54. package/build/{content-type-builder.e73879b9.chunk.js → content-type-builder.7456cabe.chunk.js} +10 -10
  55. package/build/en-json.40ee00aa.chunk.js +1 -0
  56. package/build/index.html +1 -1
  57. package/build/main.b632a0d6.js +11625 -0
  58. package/build/runtime~main.38d418e9.js +2 -0
  59. package/build/{sso-settings-page.e9034e22.chunk.js → sso-settings-page.dfb0b917.chunk.js} +1 -1
  60. package/build/webhook-edit-page.a7ae6e3b.chunk.js +23 -0
  61. package/build/webhook-list-page.83297d98.chunk.js +133 -0
  62. package/package.json +7 -7
  63. package/server/config/admin-actions.js +14 -0
  64. package/server/controllers/admin.js +33 -1
  65. package/server/routes/admin.js +28 -0
  66. package/server/services/index.js +1 -0
  67. package/server/services/project-settings.js +173 -0
  68. package/server/utils/index.d.ts +2 -0
  69. package/server/validation/project-settings.js +39 -0
  70. package/build/1709.ceed0e18.chunk.js +0 -503
  71. package/build/20.cf744c35.chunk.js +0 -308
  72. package/build/2135.95ee6de1.chunk.js +0 -162
  73. package/build/2524.688d0355.chunk.js +0 -1
  74. package/build/4761.3eabdf46.chunk.js +0 -101
  75. package/build/6281.f10a7e3a.chunk.js +0 -1
  76. package/build/7009.79fce86d.chunk.js +0 -164
  77. package/build/7863.bc7a8f3a.chunk.js +0 -112
  78. package/build/Admin-authenticatedApp.4ce8d292.chunk.js +0 -80
  79. package/build/Admin_marketplace.1e3393c9.chunk.js +0 -11
  80. package/build/Admin_settingsPage.924a7816.chunk.js +0 -170
  81. package/build/admin-edit-users.6c2bf718.chunk.js +0 -10
  82. package/build/admin-users.e03db115.chunk.js +0 -11
  83. package/build/api-tokens-create-page.787ab302.chunk.js +0 -1
  84. package/build/api-tokens-edit-page.e4010c0c.chunk.js +0 -1
  85. package/build/en-json.3e1a222e.chunk.js +0 -1
  86. package/build/main.45472ea9.js +0 -8404
  87. package/build/runtime~main.e7611418.js +0 -2
  88. package/build/webhook-edit-page.2fa94db3.chunk.js +0 -23
  89. package/build/webhook-list-page.b594db49.chunk.js +0 -133
@@ -0,0 +1,2 @@
1
+ (()=>{"use strict";var u={},m={};function e(n){var r=m[n];if(r!==void 0)return r.exports;var a=m[n]={id:n,loaded:!1,exports:{}};return u[n].call(a.exports,a,a.exports,e),a.loaded=!0,a.exports}e.m=u,(()=>{var n=[];e.O=(r,a,o,i)=>{if(a){i=i||0;for(var t=n.length;t>0&&n[t-1][2]>i;t--)n[t]=n[t-1];n[t]=[a,o,i];return}for(var s=1/0,t=0;t<n.length;t++){for(var[a,o,i]=n[t],c=!0,l=0;l<a.length;l++)(i&!1||s>=i)&&Object.keys(e.O).every(j=>e.O[j](a[l]))?a.splice(l--,1):(c=!1,i<s&&(s=i));if(c){n.splice(t--,1);var f=o();f!==void 0&&(r=f)}}return r}})(),e.n=n=>{var r=n&&n.__esModule?()=>n.default:()=>n;return e.d(r,{a:r}),r},(()=>{var n=Object.getPrototypeOf?a=>Object.getPrototypeOf(a):a=>a.__proto__,r;e.t=function(a,o){if(o&1&&(a=this(a)),o&8||typeof a=="object"&&a&&(o&4&&a.__esModule||o&16&&typeof a.then=="function"))return a;var i=Object.create(null);e.r(i);var t={};r=r||[null,n({}),n([]),n(n)];for(var s=o&2&&a;typeof s=="object"&&!~r.indexOf(s);s=n(s))Object.getOwnPropertyNames(s).forEach(c=>t[c]=()=>a[c]);return t.default=()=>a,e.d(i,t),i}})(),e.d=(n,r)=>{for(var a in r)e.o(r,a)&&!e.o(n,a)&&Object.defineProperty(n,a,{enumerable:!0,get:r[a]})},e.f={},e.e=n=>Promise.all(Object.keys(e.f).reduce((r,a)=>(e.f[a](n,r),r),[])),e.u=n=>""+({"46":"content-type-builder-translation-zh-Hans-json","90":"i18n-translation-de-json","92":"api-tokens-edit-page","96":"email-translation-de-json","123":"ru-json","129":"i18n-translation-es-json","302":"sso-settings-page","320":"en-json","395":"tr-json","435":"email-translation-it-json","562":"no-json","606":"sk-json","615":"upload-translation-uk-json","695":"upload-settings","742":"content-type-builder-translation-th-json","744":"email-translation-cs-json","749":"th-json","801":"Admin-authenticatedApp","830":"he-json","931":"content-type-builder-translation-en-json","953":"codemirror-addon-lint-js","994":"content-manager","1001":"content-type-builder-translation-nl-json","1009":"upload-translation-ms-json","1011":"zh-json","1018":"email-translation-ko-json","1023":"content-type-builder-translation-it-json","1157":"email-translation-pt-BR-json","1167":"users-permissions-translation-ko-json","1312":"ja-json","1331":"upload-translation-es-json","1375":"upload-translation-pt-BR-json","1377":"ko-json","1442":"users-permissions-translation-cs-json","1495":"email-settings-page","1674":"users-permissions-translation-ru-json","1930":"users-permissions-translation-pt-json","2137":"i18n-translation-fr-json","2151":"content-type-builder-translation-id-json","2218":"codemirror-theme","2246":"content-type-builder-translation-dk-json","2282":"users-providers-settings-page","2380":"users-permissions-translation-tr-json","2411":"email-translation-tr-json","2464":"users-permissions-translation-de-json","2489":"upload-translation-ko-json","2544":"admin-edit-roles-page","2553":"zh-Hans-json","2567":"content-type-builder-translation-ko-json","2603":"email-translation-en-json","2648":"email-translation-ar-json","2657":"content-type-builder-translation-cs-json","2671":"nl-json","2742":"users-permissions-translation-zh-Hans-json","2781":"codemirror-addon-lint","3025":"ms-json","3038":"upload-translation-sk-json","3043":"email-translation-zh-Hans-json","3095":"users-permissions-translation-sk-json","3098":"users-permissions-translation-fr-json","3166":"email-translation-pt-json","3206":"email-translation-nl-json","3278":"vi-json","3304":"content-type-builder-translation-tr-json","3340":"pt-json","3516":"ca-json","3530":"users-permissions-translation-vi-json","3552":"i18n-settings-page","3650":"upload","3677":"Admin_pluginsPage","3702":"users-permissions-translation-pl-json","3825":"email-translation-dk-json","3860":"codemirror-javacript","3948":"content-type-builder-translation-pl-json","3964":"content-type-builder-translation-ms-json","3973":"codemirror-css","3981":"Admin_homePage","4021":"upload-translation-de-json","4121":"webhook-list-page","4179":"users-permissions-translation-id-json","4263":"admin-edit-users","4299":"api-tokens-create-page","4302":"content-type-builder-translation-zh-json","4587":"email-translation-th-json","4693":"email-translation-fr-json","4804":"upload-translation-ru-json","4987":"upload-translation-pl-json","5053":"upload-translation-zh-json","5162":"webhook-edit-page","5178":"codemirror-addon-closebrackets","5199":"admin-users","5222":"upload-translation-it-json","5296":"i18n-translation-dk-json","5388":"email-translation-ru-json","5396":"users-permissions-translation-zh-json","5509":"codemirror-addon-mark-selection","5516":"Admin_marketplace","5751":"email-translation-es-json","5880":"upload-translation-ja-json","5894":"hu-json","5895":"Admin_settingsPage","5906":"content-type-builder-translation-pt-BR-json","6232":"upload-translation-th-json","6280":"i18n-translation-ko-json","6377":"users-permissions-translation-dk-json","6434":"upload-translation-en-json","6460":"users-permissions-translation-en-json","6745":"email-translation-uk-json","6784":"email-translation-ms-json","6817":"it-json","6831":"upload-translation-zh-Hans-json","6836":"users-permissions-translation-uk-json","6848":"email-translation-zh-json","6901":"de-json","7048":"users-permissions-translation-nl-json","7094":"users-permissions-translation-ar-json","7155":"content-type-builder-translation-de-json","7186":"content-type-builder-translation-ru-json","7327":"email-translation-vi-json","7347":"highlight.js","7403":"uk-json","7465":"upload-translation-dk-json","7519":"cs-json","7566":"fontawesome-css-all","7663":"email-translation-id-json","7723":"fontawesome-css","7784":"cropper-css","7817":"users-permissions-translation-es-json","7828":"users-permissions-translation-th-json","7833":"upload-translation-fr-json","7846":"pl-json","7898":"dk-json","7934":"content-type-builder-translation-pt-json","7958":"ar-json","7997":"content-type-builder-translation-sk-json","8000":"fontawesome-js","8006":"fr-json","8056":"api-tokens-list-page","8175":"i18n-translation-en-json","8178":"email-translation-ja-json","8342":"content-type-builder-translation-es-json","8367":"es-json","8418":"users-email-settings-page","8423":"upload-translation-ca-json","8467":"users-permissions-translation-sv-json","8481":"email-translation-pl-json","8573":"content-type-builder-translation-uk-json","8736":"users-permissions-translation-pt-BR-json","8853":"users-roles-settings-page","8880":"content-type-builder","8897":"id-json","8907":"content-type-builder-translation-ja-json","8965":"content-type-builder-translation-fr-json","9220":"users-permissions-translation-ms-json","9303":"sv-json","9412":"email-translation-sk-json","9460":"users-advanced-settings-page","9497":"Admin_profilePage","9502":"users-permissions-translation-ja-json","9511":"content-type-builder-translation-ar-json","9647":"pt-BR-json","9762":"i18n-translation-zh-Hans-json","9797":"upload-translation-he-json","9905":"users-permissions-translation-it-json"}[n]||n)+"."+{"46":"92a27f59","90":"92534555","92":"afece2fe","96":"54743260","123":"28147733","129":"488206ae","302":"dfb0b917","320":"40ee00aa","395":"276e59fe","435":"6ffd1774","472":"0350a5bd","562":"e8749dd4","606":"5b33afc2","615":"6fb09148","695":"3db55de0","742":"c96a2d3f","744":"cb18caab","749":"3aadaec6","801":"162a5805","830":"d40da459","931":"e5110288","948":"d64fb515","953":"7c35dcb0","994":"7cd28f84","1001":"c46c8f30","1009":"dc3bf0d7","1011":"96bf6019","1018":"e61d4e7a","1023":"a906b389","1157":"2c98ab20","1167":"3be77775","1312":"850237e9","1331":"8ec935ef","1375":"7e8d9550","1377":"2f3d256e","1442":"e6649c5f","1495":"f67d13b2","1541":"6c1c96f9","1674":"319d51ef","1856":"521a99fd","1930":"38afed04","2077":"51485bfb","2137":"0839d68d","2151":"7c00a32a","2218":"cf9f9eb6","2246":"4729f055","2282":"bfe7755a","2380":"cdc49a3c","2411":"87f2feb3","2464":"c3628843","2489":"5e06e112","2544":"fb374555","2553":"c84ce330","2567":"51201b12","2603":"6da7e388","2648":"c624512d","2657":"4aafb972","2671":"465b173f","2742":"c3fd301b","2781":"505ff1d4","2912":"79c2b3c8","3025":"836ed013","3038":"bfdf4f09","3043":"b463cb25","3095":"ba1cd385","3098":"172aa69f","3166":"959ea070","3206":"5349635f","3214":"9196aeff","3278":"3d14e91e","3304":"2e52bc60","3340":"c23020ab","3516":"0097e443","3530":"dccc02fc","3552":"6b67cb75","3650":"070c189b","3677":"788fb2f6","3702":"3c4fe81c","3825":"f323fe4e","3860":"41bdefda","3865":"21cec9de","3948":"a866acda","3964":"963a1a01","3973":"b467b1de","3981":"0ac648e8","4021":"b642da08","4073":"e144a91a","4121":"83297d98","4179":"5aadd143","4263":"a360deaf","4299":"698f132d","4302":"2cc55621","4587":"989cfecc","4693":"9f125db0","4715":"77e04177","4800":"d3ebc81d","4804":"da2529f3","4982":"f53b78a4","4987":"6071e38c","5053":"711f804b","5162":"a7ae6e3b","5178":"c0f97916","5199":"47d06d24","5222":"8e58456e","5296":"54f410ca","5388":"d508cf3e","5396":"e03ae2a4","5509":"653e904d","5516":"0bb91ec8","5751":"9021417d","5880":"1378a2e7","5894":"c81ce352","5895":"23e873f0","5906":"5739a2aa","6229":"a5cca9f2","6232":"6a48b826","6280":"d0bc1203","6377":"fe39c74b","6434":"59269508","6460":"3fe86528","6745":"0396a803","6784":"b2b11e05","6817":"12df4cdf","6831":"c9622577","6836":"63eaa01c","6848":"3455468b","6901":"0b92acd2","6925":"fafef528","7048":"d638c4ce","7094":"e8123ed2","7155":"0d7696b9","7186":"cf8d7c5c","7327":"c0d8c414","7347":"3381ffc3","7351":"b95e65ae","7403":"5b5b9c27","7418":"6db737ce","7465":"fc61df13","7519":"c8f28ba8","7566":"04f33619","7663":"3bcae5f5","7723":"477ba714","7784":"ecc0d670","7817":"1bb9cde2","7828":"68873214","7833":"eb9b4f84","7841":"f0e7d629","7846":"94f05d2c","7898":"9f1bc016","7934":"766bd747","7958":"d4cb26d9","7997":"3a6defe0","8000":"252cc5f3","8006":"84064a0b","8056":"46d96dee","8175":"85bc892c","8178":"72b3f73c","8342":"333cf47f","8367":"2a5a9fc1","8418":"0a096388","8423":"79159984","8467":"83c60841","8469":"3af1823d","8481":"6da50d0f","8573":"d8c0b6dd","8736":"f6791a86","8826":"58e236d4","8853":"988ebc3b","8880":"7456cabe","8897":"fad45d17","8907":"87f71930","8965":"aa6eeea8","9066":"118ecccd","9220":"ea8a2baf","9298":"aff28744","9303":"cdcac02d","9412":"fa1fd4b3","9420":"cb0b75e8","9460":"a23cda17","9497":"27191ed2","9502":"4967badf","9511":"142327af","9647":"6301d49b","9762":"560a98e3","9797":"c226f2dc","9905":"7d377480","9988":"f84412d9"}[n]+".chunk.js",e.miniCssF=n=>{},e.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(n){if(typeof window=="object")return window}}(),e.o=(n,r)=>Object.prototype.hasOwnProperty.call(n,r),(()=>{var n={},r="@strapi/admin:";e.l=(a,o,i,t)=>{if(n[a]){n[a].push(o);return}var s,c;if(i!==void 0)for(var l=document.getElementsByTagName("script"),f=0;f<l.length;f++){var d=l[f];if(d.getAttribute("src")==a||d.getAttribute("data-webpack")==r+i){s=d;break}}s||(c=!0,s=document.createElement("script"),s.charset="utf-8",s.timeout=120,e.nc&&s.setAttribute("nonce",e.nc),s.setAttribute("data-webpack",r+i),s.src=a),n[a]=[o];var b=(g,j)=>{s.onerror=s.onload=null,clearTimeout(p);var h=n[a];if(delete n[a],s.parentNode&&s.parentNode.removeChild(s),h&&h.forEach(y=>y(j)),g)return g(j)},p=setTimeout(b.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=b.bind(null,s.onerror),s.onload=b.bind(null,s.onload),c&&document.head.appendChild(s)}})(),e.r=n=>{typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},e.nmd=n=>(n.paths=[],n.children||(n.children=[]),n),e.p="/admin/",(()=>{e.b=document.baseURI||self.location.href;var n={1303:0};e.f.j=(o,i)=>{var t=e.o(n,o)?n[o]:void 0;if(t!==0)if(t)i.push(t[2]);else if(o!=1303){var s=new Promise((d,b)=>t=n[o]=[d,b]);i.push(t[2]=s);var c=e.p+e.u(o),l=new Error,f=d=>{if(e.o(n,o)&&(t=n[o],t!==0&&(n[o]=void 0),t)){var b=d&&(d.type==="load"?"missing":d.type),p=d&&d.target&&d.target.src;l.message="Loading chunk "+o+` failed.
2
+ (`+b+": "+p+")",l.name="ChunkLoadError",l.type=b,l.request=p,t[1](l)}};e.l(c,f,"chunk-"+o,o)}else n[o]=0},e.O.j=o=>n[o]===0;var r=(o,i)=>{var[t,s,c]=i,l,f,d=0;if(t.some(p=>n[p]!==0)){for(l in s)e.o(s,l)&&(e.m[l]=s[l]);if(c)var b=c(e)}for(o&&o(i);d<t.length;d++)f=t[d],e.o(n,f)&&n[f]&&n[f][0](),n[t[d]]=0;return e.O(b)},a=self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[];a.forEach(r.bind(null,0)),a.push=r.bind(null,a.push.bind(a))})()})();
@@ -1 +1 @@
1
- "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[302],{84363:(w,c,t)=>{t.r(c),t.d(c,{SingleSignOn:()=>E,default:()=>K});var a=t(32735),l=t(10938),P=t(98221),y=t.n(P),i=t(11856),C=t(44526),M=t(16540),b=t(90662),I=t(95602),L=t(63865),f=t(25716),d=t(78330),D=t(5636),T=t(89793),B=t.n(T),G=t(13271),m=t(41072),h=t(2805),g=t(5173);const j=g.Ry().shape({autoRegister:g.Xg().required(l.translatedErrors.required),defaultRole:g.nK().when("autoRegister",(e,s)=>e?s.required(l.translatedErrors.required):s.nullable())});var A=Object.defineProperty,F=Object.defineProperties,x=Object.getOwnPropertyDescriptors,p=Object.getOwnPropertySymbols,H=Object.prototype.hasOwnProperty,N=Object.prototype.propertyIsEnumerable,v=(e,s,n)=>s in e?A(e,s,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[s]=n,Z=(e,s)=>{for(var n in s||(s={}))H.call(s,n)&&v(e,n,s[n]);if(p)for(var n of p(s))N.call(s,n)&&v(e,n,s[n]);return e},z=(e,s)=>F(e,x(s));const S=z(Z({},h.Z.settings.sso),{readRoles:h.Z.settings.roles.read}),E=()=>{const{formatMessage:e}=(0,D.useIntl)(),{isLoading:s,allowedActions:{canUpdate:n,canReadRoles:U}}=(0,l.useRBAC)(S),[{formErrors:r,initialData:V,isLoading:W,modifiedData:u,showHeaderButtonLoader:X},_,{handleChange:R,handleSubmit:J}]=(0,m.G4)((0,G.IF)("providers/options"),j,()=>{},["autoRegister","defaultRole"]),{roles:Q}=(0,m.bF)(U);(0,l.useFocusWhenNavigate)();const Y=s||W;(0,a.useEffect)(()=>{if(r.defaultRole){const o='[name="defaultRole"]';document.querySelector(o).focus()}},[r]);const O=B()(V,u);return a.createElement(i.Layout,null,a.createElement(l.SettingsPageTitle,{name:"SSO"}),a.createElement(M.Main,{tabIndex:-1},a.createElement("form",{onSubmit:o=>{if(O){o.preventDefault();return}J(o)}},a.createElement(i.HeaderLayout,{primaryAction:a.createElement(C.Button,{"data-testid":"save-button",disabled:O,loading:X,startIcon:a.createElement(y(),null),type:"submit",size:"L"},e({id:"global.save",defaultMessage:"Save"})),title:e({id:"Settings.sso.title",defaultMessage:"Single Sign-On"}),subtitle:e({id:"Settings.sso.description",defaultMessage:"Configure the settings for the Single Sign-On feature."})}),a.createElement(i.ContentLayout,null,Y?a.createElement(l.LoadingIndicatorPage,null):a.createElement(b.Stack,{spacing:4,background:"neutral0",padding:6,shadow:"filterShadow",hasRadius:!0},a.createElement(I.Typography,{variant:"delta",as:"h2"},e({id:"global.settings",defaultMessage:"Settings"})),a.createElement(d.Grid,{gap:4},a.createElement(d.GridItem,{col:6,m:6,s:12},a.createElement(L.ToggleInput,{"aria-label":"autoRegister","data-testid":"autoRegister",disabled:!n,checked:u.autoRegister,hint:e({id:"Settings.sso.form.registration.description",defaultMessage:"Create new user on SSO login if no account exists"}),label:e({id:"Settings.sso.form.registration.label",defaultMessage:"Auto-registration"}),name:"autoRegister",offLabel:e({id:"app.components.ToggleCheckbox.off-label",defaultMessage:"Off"}),onLabel:e({id:"app.components.ToggleCheckbox.on-label",defaultMessage:"On"}),onChange:o=>{R({target:{name:"autoRegister",value:o.target.checked}})}})),a.createElement(d.GridItem,{col:6,m:6,s:12},a.createElement(f.Select,{disabled:!n,hint:e({id:"Settings.sso.form.defaultRole.description",defaultMessage:"It will attach the new authenticated user to the selected role"}),error:r.defaultRole?e({id:r.defaultRole.id,defaultMessage:r.defaultRole.id}):"",label:e({id:"Settings.sso.form.defaultRole.label",defaultMessage:"Default role"}),name:"defaultRole",onChange:o=>{R({target:{name:"defaultRole",value:o}})},placeholder:e({id:"components.InputSelect.option.placeholder",defaultMessage:"Choose here"}),value:u.defaultRole},Q.map(({id:o,name:$})=>a.createElement(f.Option,{key:o,value:o.toString()},$))))))))))},K=()=>a.createElement(l.CheckPagePermissions,{permissions:S.main},a.createElement(E,null))}}]);
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[302],{84363:(w,c,t)=>{t.r(c),t.d(c,{SingleSignOn:()=>E,default:()=>K});var a=t(32735),l=t(10938),P=t(88677),y=t.n(P),i=t(11856),C=t(44526),M=t(16540),b=t(90662),I=t(95602),L=t(63865),f=t(25716),d=t(78330),D=t(5636),T=t(89793),B=t.n(T),G=t(13271),m=t(41072),h=t(2805),g=t(5173);const j=g.Ry().shape({autoRegister:g.Xg().required(l.translatedErrors.required),defaultRole:g.nK().when("autoRegister",(e,s)=>e?s.required(l.translatedErrors.required):s.nullable())});var A=Object.defineProperty,F=Object.defineProperties,x=Object.getOwnPropertyDescriptors,p=Object.getOwnPropertySymbols,H=Object.prototype.hasOwnProperty,N=Object.prototype.propertyIsEnumerable,v=(e,s,n)=>s in e?A(e,s,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[s]=n,Z=(e,s)=>{for(var n in s||(s={}))H.call(s,n)&&v(e,n,s[n]);if(p)for(var n of p(s))N.call(s,n)&&v(e,n,s[n]);return e},z=(e,s)=>F(e,x(s));const S=z(Z({},h.Z.settings.sso),{readRoles:h.Z.settings.roles.read}),E=()=>{const{formatMessage:e}=(0,D.useIntl)(),{isLoading:s,allowedActions:{canUpdate:n,canReadRoles:U}}=(0,l.useRBAC)(S),[{formErrors:r,initialData:V,isLoading:W,modifiedData:u,showHeaderButtonLoader:X},_,{handleChange:R,handleSubmit:J}]=(0,m.G4)((0,G.IF)("providers/options"),j,()=>{},["autoRegister","defaultRole"]),{roles:Q}=(0,m.bF)(U);(0,l.useFocusWhenNavigate)();const Y=s||W;(0,a.useEffect)(()=>{if(r.defaultRole){const o='[name="defaultRole"]';document.querySelector(o).focus()}},[r]);const O=B()(V,u);return a.createElement(i.Layout,null,a.createElement(l.SettingsPageTitle,{name:"SSO"}),a.createElement(M.Main,{tabIndex:-1},a.createElement("form",{onSubmit:o=>{if(O){o.preventDefault();return}J(o)}},a.createElement(i.HeaderLayout,{primaryAction:a.createElement(C.Button,{"data-testid":"save-button",disabled:O,loading:X,startIcon:a.createElement(y(),null),type:"submit",size:"L"},e({id:"global.save",defaultMessage:"Save"})),title:e({id:"Settings.sso.title",defaultMessage:"Single Sign-On"}),subtitle:e({id:"Settings.sso.description",defaultMessage:"Configure the settings for the Single Sign-On feature."})}),a.createElement(i.ContentLayout,null,Y?a.createElement(l.LoadingIndicatorPage,null):a.createElement(b.Stack,{spacing:4,background:"neutral0",padding:6,shadow:"filterShadow",hasRadius:!0},a.createElement(I.Typography,{variant:"delta",as:"h2"},e({id:"global.settings",defaultMessage:"Settings"})),a.createElement(d.Grid,{gap:4},a.createElement(d.GridItem,{col:6,m:6,s:12},a.createElement(L.ToggleInput,{"aria-label":"autoRegister","data-testid":"autoRegister",disabled:!n,checked:u.autoRegister,hint:e({id:"Settings.sso.form.registration.description",defaultMessage:"Create new user on SSO login if no account exists"}),label:e({id:"Settings.sso.form.registration.label",defaultMessage:"Auto-registration"}),name:"autoRegister",offLabel:e({id:"app.components.ToggleCheckbox.off-label",defaultMessage:"Off"}),onLabel:e({id:"app.components.ToggleCheckbox.on-label",defaultMessage:"On"}),onChange:o=>{R({target:{name:"autoRegister",value:o.target.checked}})}})),a.createElement(d.GridItem,{col:6,m:6,s:12},a.createElement(f.Select,{disabled:!n,hint:e({id:"Settings.sso.form.defaultRole.description",defaultMessage:"It will attach the new authenticated user to the selected role"}),error:r.defaultRole?e({id:r.defaultRole.id,defaultMessage:r.defaultRole.id}):"",label:e({id:"Settings.sso.form.defaultRole.label",defaultMessage:"Default role"}),name:"defaultRole",onChange:o=>{R({target:{name:"defaultRole",value:o}})},placeholder:e({id:"components.InputSelect.option.placeholder",defaultMessage:"Choose here"}),value:u.defaultRole},Q.map(({id:o,name:$})=>a.createElement(f.Option,{key:o,value:o.toString()},$))))))))))},K=()=>a.createElement(l.CheckPagePermissions,{permissions:S.main},a.createElement(E,null))}}]);
@@ -0,0 +1,23 @@
1
+ (self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5162],{49750:function(B,A,a){(function(e,i){B.exports=i(a(32735))})(this,function(e){return function(i){var P={};function c(o){if(P[o])return P[o].exports;var g=P[o]={i:o,l:!1,exports:{}};return i[o].call(g.exports,g,g.exports,c),g.l=!0,g.exports}return c.m=i,c.c=P,c.d=function(o,g,v){c.o(o,g)||Object.defineProperty(o,g,{enumerable:!0,get:v})},c.r=function(o){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},c.t=function(o,g){if(1&g&&(o=c(o)),8&g||4&g&&typeof o=="object"&&o&&o.__esModule)return o;var v=Object.create(null);if(c.r(v),Object.defineProperty(v,"default",{enumerable:!0,value:o}),2&g&&typeof o!="string")for(var k in o)c.d(v,k,function(d){return o[d]}.bind(null,k));return v},c.n=function(o){var g=o&&o.__esModule?function(){return o.default}:function(){return o};return c.d(g,"a",g),g},c.o=function(o,g){return Object.prototype.hasOwnProperty.call(o,g)},c.p="",c(c.s=145)}({0:function(i,P){i.exports=e},145:function(i,P,c){"use strict";c.r(P);var o=c(0);function g(){return(g=Object.assign||function(v){for(var k=1;k<arguments.length;k++){var d=arguments[k];for(var V in d)Object.prototype.hasOwnProperty.call(d,V)&&(v[V]=d[V])}return v}).apply(this,arguments)}P.default=function(v){return o.createElement("svg",g({width:"1em",height:"1em",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},v),o.createElement("path",{d:"M4 20.252V3.748a1 1 0 011.507-.862l14.028 8.252a1 1 0 010 1.724L5.507 21.113A1 1 0 014 20.252z",fill:"#212134"}))}}})})},26972:(B,A,a)=>{"use strict";a.d(A,{Z:()=>it});var e=a(32735),i=a(10938),P=a(16540),c=a(84968),o=a(5141),g=a(41072),v=a(16558),k=a(60216),d=a.n(k),V=a(98599),Ee=a.n(V),ye=a(88677),Y=a.n(ye),be=a(49750),Pe=a.n(be),q=a(11856),F=a(9808),_=a(44526),S=a(90662),z=a(37178),O=a(78330),D=a(83281),L=a(5636),ee=a(20001),I=a(95602),te=a(19615),Ce=a(35980),Oe=a(52111),Me=a(23940),Se=a.n(Me);const H=({disabledEvents:n,name:t,events:r,inputValue:s,handleChange:m,handleChangeAll:E})=>{const b=r.filter(u=>!n.includes(u)),l=s.length===b.length,f=s.length>0,y=({target:{name:u}})=>{E({target:{name:u,value:!l}})};return e.createElement("tr",null,e.createElement("td",null,e.createElement(Oe.Checkbox,{indeterminate:f&&!l,"aria-label":"Select all entries",name:t,onChange:y,value:l},Se()(t))),r.map(u=>e.createElement("td",{key:u},e.createElement(Ce.BaseCheckbox,{disabled:n.includes(u),"aria-label":u,name:u,value:s.includes(u),onValueChange:h=>m({target:{name:u,value:h}})}))))};H.defaultProps={disabledEvents:[],events:[],inputValue:[],handleChange:()=>{},handleChangeAll:()=>{}},H.propTypes={disabledEvents:d().array,events:d().array,inputValue:d().array,handleChange:d().func,handleChangeAll:d().func,name:d().string.isRequired};const Ie=H,xe=n=>n.reduce((t,r)=>{const s=r.split(".")[0];return t[s]||(t[s]=[]),t[s].push(r),t},{}),Te=te.default.table`
2
+ td {
3
+ height: ${52/16}rem;
4
+ width: 10%;
5
+ vertical-align: middle;
6
+ text-align: center;
7
+ }
8
+
9
+ tbody tr:nth-child(odd) {
10
+ background: ${({theme:n})=>n.colors.neutral100};
11
+ }
12
+
13
+ tbody tr td:first-child {
14
+ padding-left: ${({theme:n})=>n.spaces[7]};
15
+ }
16
+ `,W={headers:{default:["Settings.webhooks.events.create","Settings.webhooks.events.update","app.utils.delete"],draftAndPublish:["Settings.webhooks.events.create","Settings.webhooks.events.update","app.utils.delete","app.utils.publish","app.utils.unpublish"]},events:{default:{entry:["entry.create","entry.update","entry.delete"],media:["media.create","media.update","media.delete"]},draftAndPublish:{entry:["entry.create","entry.update","entry.delete","entry.publish","entry.unpublish"],media:["media.create","media.update","media.delete"]}}},ne=({isDraftAndPublish:n})=>{const t=n?W.headers.draftAndPublish:W.headers.default,r=n?W.events.draftAndPublish:W.events.default,{formatMessage:s}=(0,L.useIntl)(),{values:m,handleChange:E}=(0,D.useFormikContext)(),b="events",l=m.events,f=[],y=xe(l),u=({target:{name:p,value:T}})=>{let C=new Set(l);T?C.add(p):C.delete(p),E({target:{name:b,value:Array.from(C)}})},h=({target:{name:p,value:T}})=>{let C=new Set(l);T?r[p].forEach(w=>{f.includes(w)||C.add(w)}):r[p].forEach(w=>C.delete(w)),E({target:{name:b,value:Array.from(C)}})};return e.createElement(S.Stack,{spacing:1},e.createElement(ee.FieldLabel,null,s({id:"Settings.webhooks.form.events",defaultMessage:"Events"})),e.createElement(Te,null,e.createElement("thead",null,e.createElement("tr",null,e.createElement("td",null),t.map(p=>p==="app.utils.publish"||p==="app.utils.unpublish"?e.createElement("td",{key:p,title:s({id:"Settings.webhooks.event.publish-tooltip",defaultMessage:"This event only exists for contents with Draft/Publish system enabled"})},e.createElement(I.Typography,{variant:"sigma",textColor:"neutral600"},s({id:p,defaultMessage:p}))):e.createElement("td",{key:p},e.createElement(I.Typography,{variant:"sigma",textColor:"neutral600"},s({id:p,defaultMessage:p})))))),e.createElement("tbody",null,Object.keys(r).map(p=>e.createElement(Ie,{disabledEvents:f,key:p,name:p,events:r[p],inputValue:y[p],handleChange:u,handleChangeAll:h})))))};ne.propTypes={isDraftAndPublish:d().bool.isRequired};const we=ne;var Re=a(59290),Ae=a.n(Re),j=a(19192),ke=a(74201),re=a(14715);const ae=["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"];var De=Object.defineProperty,Le=Object.defineProperties,je=Object.getOwnPropertyDescriptors,U=Object.getOwnPropertySymbols,se=Object.prototype.hasOwnProperty,oe=Object.prototype.propertyIsEnumerable,le=(n,t,r)=>t in n?De(n,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[t]=r,Ve=(n,t)=>{for(var r in t||(t={}))se.call(t,r)&&le(n,r,t[r]);if(U)for(var r of U(t))oe.call(t,r)&&le(n,r,t[r]);return n},Be=(n,t)=>Le(n,je(t)),Fe=(n,t)=>{var r={};for(var s in n)se.call(n,s)&&t.indexOf(s)<0&&(r[s]=n[s]);if(n!=null&&U)for(var s of U(n))t.indexOf(s)<0&&oe.call(n,s)&&(r[s]=n[s]);return r};const N=n=>{var t=n,{name:r,onChange:s,value:m}=t,E=Fe(t,["name","onChange","value"]);const[b,l]=(0,e.useState)(m?[...ae,m]:ae),f=u=>{s({target:{name:r,value:u}})},y=u=>{l(h=>[...h,u]),s({target:{name:r,value:u}})};return e.createElement(re.CreatableCombobox,Be(Ve({},E),{onChange:f,onCreateOption:y,placeholder:"",value:m}),b.map(u=>e.createElement(re.ComboboxOption,{value:u,key:u},u)))};N.defaultProps={value:void 0},N.propTypes={name:d().string.isRequired,onChange:d().func.isRequired,value:d().string};const We=N,Ue=()=>{const{formatMessage:n}=(0,L.useIntl)(),{values:t,errors:r}=(0,D.useFormikContext)();return e.createElement(S.Stack,{spacing:1},e.createElement(ee.FieldLabel,null,n({id:"Settings.webhooks.form.headers",defaultMessage:"Headers"})),e.createElement(F.Box,{padding:8,background:"neutral100",hasRadius:!0},e.createElement(D.FieldArray,{validateOnChange:!1,name:"headers",render:({push:s,remove:m})=>{var E;return e.createElement(O.Grid,{gap:4},(E=t.headers)==null?void 0:E.map((b,l)=>{var f,y,u,h,p,T,C,w,G,K;return e.createElement(e.Fragment,{key:l},e.createElement(O.GridItem,{col:6},e.createElement(D.Field,{as:We,name:`headers.${l}.key`,"aria-label":`row ${l+1} key`,label:n({id:"Settings.webhooks.key",defaultMessage:"Key"}),error:((y=(f=r.headers)==null?void 0:f[l])==null?void 0:y.key)&&n({id:(u=r.headers[l])==null?void 0:u.key,defaultMessage:(h=r.headers[l])==null?void 0:h.key})})),e.createElement(O.GridItem,{col:6},e.createElement(j.Flex,{alignItems:"flex-end"},e.createElement(F.Box,{style:{flex:1}},e.createElement(D.Field,{as:z.TextInput,"aria-label":`row ${l+1} value`,label:n({id:"Settings.webhooks.value",defaultMessage:"Value"}),name:`headers.${l}.value`,error:((T=(p=r.headers)==null?void 0:p[l])==null?void 0:T.value)&&n({id:(C=r.headers[l])==null?void 0:C.value,defaultMessage:(w=r.headers[l])==null?void 0:w.value})})),e.createElement(j.Flex,{paddingLeft:2,style:{alignSelf:"center"},paddingTop:(K=(G=r.headers)==null?void 0:G[l])!=null&&K.value?0:5},e.createElement(i.RemoveRoundedButton,{onClick:()=>t.headers.length!==1&&m(l),label:n({id:"Settings.webhooks.headers.remove",defaultMessage:"Remove header row {number}"},{number:l+1})})))))}),e.createElement(O.GridItem,{col:12},e.createElement(ke.TextButton,{type:"button",onClick:()=>{s({key:"",value:""})},startIcon:e.createElement(Ae(),null)},n({id:"Settings.webhooks.create.header",defaultMessage:"Create new header"}))))}})))};var $e=a(94009),ie=a.n($e),Ge=a(103),Ke=a.n(Ge);const $=te.default.svg(({theme:n,color:t})=>`
17
+ width: ${12/16}rem;
18
+ height: ${12/16}rem;
19
+
20
+ path {
21
+ fill: ${n.colors[t]};
22
+ }
23
+ `),Z=({isPending:n,statusCode:t})=>{const{formatMessage:r}=(0,L.useIntl)();return n?e.createElement(S.Stack,{horizontal:!0,spacing:2,style:{alignItems:"center"}},e.createElement($,{as:Ke()}),e.createElement(I.Typography,null,r({id:"Settings.webhooks.trigger.pending",defaultMessage:"pending"}))):t>=200&&t<300?e.createElement(S.Stack,{horizontal:!0,spacing:2,style:{alignItems:"center"}},e.createElement($,{as:Y(),color:"success700"}),e.createElement(I.Typography,null,r({id:"Settings.webhooks.trigger.success",defaultMessage:"success"}))):t>=300?e.createElement(S.Stack,{horizontal:!0,spacing:2,style:{alignItems:"center"}},e.createElement($,{as:ie(),color:"danger700"}),e.createElement(I.Typography,null,r({id:"Settings.error",defaultMessage:"error"})," ",t)):null};Z.propTypes={isPending:d().bool.isRequired,statusCode:d().number},Z.defaultProps={statusCode:void 0};const X=({statusCode:n,message:t})=>{const{formatMessage:r}=(0,L.useIntl)();return n>=200&&n<300?e.createElement(j.Flex,{justifyContent:"flex-end"},e.createElement(I.Typography,{textColor:"neutral600",ellipsis:!0},r({id:"Settings.webhooks.trigger.success.label",defaultMessage:"Trigger succeeded"}))):n>=300?e.createElement(j.Flex,{justifyContent:"flex-end"},e.createElement(j.Flex,{maxWidth:(0,i.pxToRem)(250),justifyContent:"flex-end",title:t},e.createElement(I.Typography,{ellipsis:!0,textColor:"neutral600"},t))):null};X.propTypes={statusCode:d().number,message:d().string},X.defaultProps={statusCode:void 0,message:void 0};const de=({onCancel:n})=>{const{formatMessage:t}=(0,L.useIntl)();return e.createElement(j.Flex,{justifyContent:"flex-end"},e.createElement("button",{onClick:n,type:"button"},e.createElement(S.Stack,{horizontal:!0,spacing:2,style:{alignItems:"center"}},e.createElement(I.Typography,{textColor:"neutral400"},t({id:"Settings.webhooks.trigger.cancel",defaultMessage:"cancel"})),e.createElement($,{as:ie(),color:"neutral400"}))))};de.propTypes={onCancel:d().func.isRequired};const Q=({isPending:n,onCancel:t,response:r})=>{const{statusCode:s,message:m}=r,{formatMessage:E}=(0,L.useIntl)();return e.createElement(F.Box,{background:"neutral0",padding:5,shadow:"filterShadow",hasRadius:!0},e.createElement(O.Grid,{gap:4,style:{alignItems:"center"}},e.createElement(O.GridItem,{col:3},e.createElement(I.Typography,null,E({id:"Settings.webhooks.trigger.test",defaultMessage:"Test-trigger"}))),e.createElement(O.GridItem,{col:3},e.createElement(Z,{isPending:n,statusCode:s})),e.createElement(O.GridItem,{col:6},n?e.createElement(de,{onCancel:t}):e.createElement(X,{statusCode:s,message:m}))))};Q.defaultProps={isPending:!1,onCancel:()=>{},response:{}},Q.propTypes={isPending:d().bool,onCancel:d().func,response:d().object};const ze=Q;var x=a(5173);const He=new RegExp("(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)"),Ne=new RegExp("(^$)|((https?://.*)(d*)/?(.*))"),Ze=x.Ry().shape({name:x.Z_(i.translatedErrors.string).required(i.translatedErrors.required).matches(He,i.translatedErrors.regex),url:x.Z_(i.translatedErrors.string).required(i.translatedErrors.required).matches(Ne,i.translatedErrors.regex),headers:x.Vo(n=>{let t=x.IX();if(n.length===1){const{key:r,value:s}=n[0];if(!r&&!s)return t}return t.of(x.Ry().shape({key:x.Z_().required(i.translatedErrors.required),value:x.Z_().required(i.translatedErrors.required)}))}),events:x.IX()}),J=({handleSubmit:n,data:t,triggerWebhook:r,isCreating:s,isTriggering:m,triggerResponse:E,isDraftAndPublishEvents:b})=>{const{formatMessage:l}=(0,L.useIntl)(),[f,y]=(0,e.useState)(!1);return e.createElement(D.Formik,{onSubmit:n,initialValues:{name:(t==null?void 0:t.name)||"",url:(t==null?void 0:t.url)||"",headers:Object.keys((t==null?void 0:t.headers)||[]).length?Object.entries(t.headers).map(([u,h])=>({key:u,value:h})):[{key:"",value:""}],events:(t==null?void 0:t.events)||[]},validationSchema:Ze,validateOnChange:!1,validateOnBlur:!1},({handleSubmit:u,errors:h})=>e.createElement(i.Form,{noValidate:!0},e.createElement(q.HeaderLayout,{primaryAction:e.createElement(S.Stack,{horizontal:!0,spacing:2},e.createElement(_.Button,{onClick:()=>{r(),y(!0)},variant:"tertiary",startIcon:e.createElement(Pe(),null),disabled:s||m,size:"L"},l({id:"Settings.webhooks.trigger",defaultMessage:"Trigger"})),e.createElement(_.Button,{startIcon:e.createElement(Y(),null),onClick:u,type:"submit",size:"L"},l({id:"global.save",defaultMessage:"Save"}))),title:s?l({id:"Settings.webhooks.create",defaultMessage:"Create a webhook"}):t==null?void 0:t.name,navigationAction:e.createElement(i.Link,{startIcon:e.createElement(Ee(),null),to:"/settings/webhooks"},l({id:"global.back",defaultMessage:"Back"}))}),e.createElement(q.ContentLayout,null,e.createElement(S.Stack,{spacing:4},f&&e.createElement("div",{className:"trigger-wrapper"},e.createElement(ze,{isPending:m,response:E,onCancel:()=>y(!1)})),e.createElement(F.Box,{background:"neutral0",padding:8,shadow:"filterShadow",hasRadius:!0},e.createElement(S.Stack,{spacing:6},e.createElement(O.Grid,{gap:6},e.createElement(O.GridItem,{col:6},e.createElement(D.Field,{as:z.TextInput,name:"name",error:h.name&&l({id:h.name}),label:l({id:"global.name",defaultMessage:"Name"}),required:!0})),e.createElement(O.GridItem,{col:12},e.createElement(D.Field,{as:z.TextInput,name:"url",error:h.url&&l({id:h.url}),label:l({id:"Settings.roles.form.input.url",defaultMessage:"Url"}),required:!0}))),e.createElement(Ue,null),e.createElement(we,{isDraftAndPublish:b})))))))};J.propTypes={data:d().object,handleSubmit:d().func.isRequired,triggerWebhook:d().func.isRequired,isCreating:d().bool.isRequired,isDraftAndPublishEvents:d().bool.isRequired,isTriggering:d().bool.isRequired,triggerResponse:d().object},J.defaultProps={data:void 0,triggerResponse:void 0};const Xe=J;var Qe=a(92891),Je=Object.defineProperty,Ye=Object.defineProperties,qe=Object.getOwnPropertyDescriptors,ue=Object.getOwnPropertySymbols,_e=Object.prototype.hasOwnProperty,et=Object.prototype.propertyIsEnumerable,ce=(n,t,r)=>t in n?Je(n,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[t]=r,me=(n,t)=>{for(var r in t||(t={}))_e.call(t,r)&&ce(n,r,t[r]);if(ue)for(var r of ue(t))et.call(t,r)&&ce(n,r,t[r]);return n},tt=(n,t)=>Ye(n,qe(t));const nt=n=>{const t=me({},n);return(0,Qe.set)(t,"headers",rt(n.headers)),t},rt=n=>n.reduce((t,r)=>{const{key:s,value:m}=r;return s!==""?tt(me({},t),{[s]:m}):t},{}),ge=nt;var pe=a(98399),at=Object.defineProperty,fe=Object.getOwnPropertySymbols,st=Object.prototype.hasOwnProperty,ot=Object.prototype.propertyIsEnumerable,he=(n,t,r)=>t in n?at(n,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[t]=r,lt=(n,t)=>{for(var r in t||(t={}))st.call(t,r)&&he(n,r,t[r]);if(fe)for(var r of fe(t))ot.call(t,r)&&he(n,r,t[r]);return n},ve=(n,t,r)=>new Promise((s,m)=>{var E=f=>{try{l(r.next(f))}catch(y){m(y)}},b=f=>{try{l(r.throw(f))}catch(y){m(y)}},l=f=>f.done?s(f.value):Promise.resolve(f.value).then(E,b);l((r=r.apply(n,t)).next())});const it=()=>{const{params:{id:n}}=(0,o.useRouteMatch)("/settings/webhooks/:id"),{replace:t}=(0,o.useHistory)(),{lockApp:r,unlockApp:s}=(0,i.useOverlayBlocker)(),m=(0,i.useNotification)(),E=(0,c.useQueryClient)(),{isLoading:b,collectionTypes:l}=(0,g.bP)(),f=n==="create",y=(0,e.useCallback)(M=>ve(void 0,null,function*(){const[R,{data:mt}]=yield(0,i.to)((0,i.request)(`/admin/webhooks/${M}`,{method:"GET"}));return R?(m({type:"warning",message:{id:"notification.error"}}),null):mt}),[m]),{isLoading:u,data:h}=(0,c.useQuery)(["get-webhook",n],()=>y(n),{enabled:!f}),{isLoading:p,data:T,isIdle:C,mutate:w}=(0,c.useMutation)(()=>v.be.post(`/admin/webhooks/${n}/trigger`)),G=()=>w(null,{onError:()=>{m({type:"warning",message:{id:"notification.error"}})}}),K=(0,c.useMutation)(M=>(0,i.request)("/admin/webhooks",{method:"POST",body:M})),dt=(0,c.useMutation)(({id:M,body:R})=>(0,i.request)(`/admin/webhooks/${M}`,{method:"PUT",body:R})),ut=M=>ve(void 0,null,function*(){f?(r(),K.mutate(ge(M),{onSuccess:R=>{m({type:"success",message:{id:"Settings.webhooks.created"}}),t(`/settings/webhooks/${R.data.id}`),s()},onError:R=>{m({type:"warning",message:{id:"notification.error"}}),pe.log(R),s()}})):(r(),dt.mutate({id:n,body:ge(M)},{onSuccess:()=>{E.invalidateQueries(["get-webhook",n]),m({type:"success",message:{id:"notification.form.success.fields"}}),s()},onError:R=>{m({type:"warning",message:{id:"notification.error"}}),pe.log(R),s()}}))}),ct=(0,e.useMemo)(()=>l.some(M=>M.options.draftAndPublish===!0),[l]);return u||b?e.createElement(i.LoadingIndicatorPage,null):e.createElement(P.Main,null,e.createElement(i.SettingsPageTitle,{name:"Webhooks"}),e.createElement(Xe,lt({},{handleSubmit:ut,data:h,triggerWebhook:G,isCreating:f,isTriggering:p,isTriggerIdle:C,triggerResponse:T==null?void 0:T.data.data,isDraftAndPublishEvents:ct})))}},12935:(B,A,a)=>{"use strict";a.r(A),a.d(A,{default:()=>v});var e=a(32735),i=a(10938),P=a.n(i),c=a(2805),o=a(26972);const v=()=>e.createElement(i.CheckPagePermissions,{permissions:c.Z.settings.webhooks.create},e.createElement(o.Z,null))},91849:(B,A,a)=>{"use strict";a.r(A),a.d(A,{default:()=>v});var e=a(32735),i=a(10938),P=a.n(i),c=a(2805),o=a(26972);const v=()=>e.createElement(i.CheckPagePermissions,{permissions:c.Z.settings.webhooks.update},e.createElement(o.Z,null))}}]);
@@ -0,0 +1,133 @@
1
+ (self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[4121],{55470:(F,K,d)=>{"use strict";F.exports=d(17173)},17173:function(F,K,d){(function(s,O){F.exports=O(d(32735),d(19615))})(this,function(s,O){return function(r){var h={};function n(i){if(h[i])return h[i].exports;var a=h[i]={i,l:!1,exports:{}};return r[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=r,n.c=h,n.d=function(i,a,c){n.o(i,a)||Object.defineProperty(i,a,{enumerable:!0,get:c})},n.r=function(i){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})},n.t=function(i,a){if(1&a&&(i=n(i)),8&a||4&a&&typeof i=="object"&&i&&i.__esModule)return i;var c=Object.create(null);if(n.r(c),Object.defineProperty(c,"default",{enumerable:!0,value:i}),2&a&&typeof i!="string")for(var l in i)n.d(c,l,function(o){return i[o]}.bind(null,l));return c},n.n=function(i){var a=i&&i.__esModule?function(){return i.default}:function(){return i};return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=121)}({0:function(r,h,n){r.exports=n(19)()},1:function(r,h){r.exports=s},10:function(r,h,n){var i=n(25),a=n(26),c=n(22),l=n(27);r.exports=function(o,b){return i(o)||a(o,b)||c(o,b)||l()},r.exports.default=r.exports,r.exports.__esModule=!0},121:function(r,h,n){"use strict";n.r(h),n.d(h,"Switch",function(){return j});var i,a,c=n(5),l=n.n(c),o=n(4),b=n.n(o),p=n(3),g=n.n(p),S=n(1),x=n.n(S),e=n(0),t=n.n(e),u=n(2),w=n.n(u),B=n(9),I=n(6),J=["label","onChange","onLabel","offLabel","selected","visibleLabels"],R=w.a.div(i||(i=g()([`
2
+ background: `,`;
3
+ border: none;
4
+ border-radius: 16px;
5
+ position: relative;
6
+ height: `,`rem;
7
+ width: `,`rem;
8
+
9
+ & span {
10
+ font-size: `,`;
11
+ }
12
+
13
+ &:before {
14
+ content: '';
15
+ background: `,`;
16
+ width: 1rem;
17
+ height: 1rem;
18
+ border-radius: 50%;
19
+ position: absolute;
20
+ transition: all 0.5s;
21
+ left: `,`;
22
+ top: `,`;
23
+ }
24
+
25
+ @media (prefers-reduced-motion: reduce) {
26
+ &:before {
27
+ transition: none;
28
+ }
29
+ }
30
+ `])),function(T){return T.theme.colors.danger500},1.5,2.5,function(T){return T.visibleLabels?"1rem":0},function(T){return T.theme.colors.neutral0},function(T){return T.theme.spaces[1]},function(T){return T.theme.spaces[1]}),q=w.a.button(a||(a=g()([`
31
+ background: transparent;
32
+ padding: 0;
33
+ border: none;
34
+
35
+ &[aria-checked='true'] `,` {
36
+ background: `,`;
37
+ }
38
+
39
+ &[aria-checked='true'] `,`:before {
40
+ transform: translateX(1rem);
41
+ }
42
+ `])),R,function(T){return T.theme.colors.success500},R),j=x.a.forwardRef(function(T,_){var ee=T.label,ne=T.onChange,V=T.onLabel,z=T.offLabel,G=T.selected,$=T.visibleLabels,te=b()(T,J);return x.a.createElement(q,l()({ref:_,role:"switch","aria-checked":G,"aria-label":ee,onClick:ne,visibleLabels:$,type:"button"},te),x.a.createElement(B.Flex,null,x.a.createElement(R,null,x.a.createElement("span",null,V),x.a.createElement("span",null,z)),$&&x.a.createElement(I.Box,{as:"span","aria-hidden":!0,paddingLeft:2,color:G?"success600":"danger600"},G?V:z)))});j.defaultProps={onLabel:"On",offLabel:"Off",visibleLabels:!1},j.propTypes={label:t.a.string.isRequired,offLabel:t.a.string,onChange:t.a.func.isRequired,onLabel:t.a.string,selected:t.a.bool.isRequired,visibleLabels:t.a.bool},j.displayName="Switch"},13:function(r,h){function n(i){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?(r.exports=n=function(a){return typeof a},r.exports.default=r.exports,r.exports.__esModule=!0):(r.exports=n=function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},r.exports.default=r.exports,r.exports.__esModule=!0),n(i)}r.exports=n,r.exports.default=r.exports,r.exports.__esModule=!0},19:function(r,h,n){"use strict";var i=n(20);function a(){}function c(){}c.resetWarningCache=a,r.exports=function(){function l(p,g,S,x,e,t){if(t!==i){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function o(){return l}l.isRequired=l;var b={array:l,bool:l,func:l,number:l,object:l,string:l,symbol:l,any:l,arrayOf:o,element:l,elementType:l,instanceOf:o,node:l,objectOf:o,oneOf:o,oneOfType:o,shape:o,exact:o,checkPropTypes:c,resetWarningCache:a};return b.PropTypes=b,b}},2:function(r,h){r.exports=O},20:function(r,h,n){"use strict";r.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},21:function(r,h){r.exports=function(n,i){(i==null||i>n.length)&&(i=n.length);for(var a=0,c=new Array(i);a<i;a++)c[a]=n[a];return c},r.exports.default=r.exports,r.exports.__esModule=!0},22:function(r,h,n){var i=n(21);r.exports=function(a,c){if(a){if(typeof a=="string")return i(a,c);var l=Object.prototype.toString.call(a).slice(8,-1);return l==="Object"&&a.constructor&&(l=a.constructor.name),l==="Map"||l==="Set"?Array.from(a):l==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l)?i(a,c):void 0}},r.exports.default=r.exports,r.exports.__esModule=!0},24:function(r,h){r.exports=function(n,i){if(n==null)return{};var a,c,l={},o=Object.keys(n);for(c=0;c<o.length;c++)a=o[c],i.indexOf(a)>=0||(l[a]=n[a]);return l},r.exports.default=r.exports,r.exports.__esModule=!0},25:function(r,h){r.exports=function(n){if(Array.isArray(n))return n},r.exports.default=r.exports,r.exports.__esModule=!0},26:function(r,h){r.exports=function(n,i){var a=n==null?null:typeof Symbol!="undefined"&&n[Symbol.iterator]||n["@@iterator"];if(a!=null){var c,l,o=[],b=!0,p=!1;try{for(a=a.call(n);!(b=(c=a.next()).done)&&(o.push(c.value),!i||o.length!==i);b=!0);}catch(g){p=!0,l=g}finally{try{b||a.return==null||a.return()}finally{if(p)throw l}}return o}},r.exports.default=r.exports,r.exports.__esModule=!0},27:function(r,h){r.exports=function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
43
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)},r.exports.default=r.exports,r.exports.__esModule=!0},3:function(r,h){r.exports=function(n,i){return i||(i=n.slice(0)),Object.freeze(Object.defineProperties(n,{raw:{value:Object.freeze(i)}}))},r.exports.default=r.exports,r.exports.__esModule=!0},4:function(r,h,n){var i=n(24);r.exports=function(a,c){if(a==null)return{};var l,o,b=i(a,c);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(a);for(o=0;o<p.length;o++)l=p[o],c.indexOf(l)>=0||Object.prototype.propertyIsEnumerable.call(a,l)&&(b[l]=a[l])}return b},r.exports.default=r.exports,r.exports.__esModule=!0},5:function(r,h){function n(){return r.exports=n=Object.assign||function(i){for(var a=1;a<arguments.length;a++){var c=arguments[a];for(var l in c)Object.prototype.hasOwnProperty.call(c,l)&&(i[l]=c[l])}return i},r.exports.default=r.exports,r.exports.__esModule=!0,n.apply(this,arguments)}r.exports=n,r.exports.default=r.exports,r.exports.__esModule=!0},6:function(r,h,n){"use strict";n.r(h),n.d(h,"Box",function(){return x});var i,a=n(3),c=n.n(a),l=n(0),o=n.n(l),b=n(2),p=n.n(b),g=n(7),S={color:!0},x=p.a.div.withConfig({shouldForwardProp:function(e,t){return!S[e]&&t(e)}})(i||(i=c()([`
44
+ // Font
45
+ font-size: `,`;
46
+
47
+ // Colors
48
+ background: `,`;
49
+ color: `,`;
50
+
51
+ // Spaces
52
+ `,`
53
+ `,`
54
+ `,`
55
+ `,`
56
+ `,`
57
+ `,`
58
+ `,`
59
+ `,`
60
+ `,`
61
+
62
+ // Responsive hiding
63
+ `,`
64
+ `,`
65
+
66
+
67
+ // Borders
68
+ border-radius: `,`;
69
+ border-style: `,`;
70
+ border-width: `,`;
71
+ border-color: `,`;
72
+ border: `,`;
73
+
74
+ // Shadows
75
+ box-shadow: `,`;
76
+
77
+ // Handlers
78
+ pointer-events: `,`;
79
+ &:hover {
80
+ `,`
81
+ }
82
+
83
+ // Display
84
+ display: `,`;
85
+
86
+ // Position
87
+ position: `,`;
88
+ left: `,`;
89
+ right: `,`;
90
+ top: `,`;
91
+ bottom: `,`;
92
+ z-index: `,`;
93
+ overflow: `,`;
94
+ cursor: `,`;
95
+
96
+ // Size
97
+ width: `,`;
98
+ max-width: `,`;
99
+ min-width: `,`;
100
+ height: `,`;
101
+ max-height: `,`;
102
+ min-height: `,`;
103
+
104
+ // Animation
105
+ transition: `,`;
106
+ transform: `,`;
107
+ animation: `,`;
108
+
109
+ //Flexbox children props
110
+ flex-shrink: `,`;
111
+ flex-grow: `,`;
112
+ flex-basis: `,`;
113
+ flex: `,`;
114
+
115
+ // Text
116
+ text-align: `,`;
117
+ text-transform: `,`;
118
+ line-height: `,`;
119
+
120
+ // Cursor
121
+ cursor: `,`;
122
+ `])),function(e){var t=e.fontSize;return e.theme.fontSizes[t]||t},function(e){var t=e.theme,u=e.background;return t.colors[u]},function(e){var t=e.theme,u=e.color;return t.colors[u]},function(e){var t=e.theme,u=e.padding;return Object(g.a)("padding",u,t)},function(e){var t=e.theme,u=e.paddingTop;return Object(g.a)("padding-top",u,t)},function(e){var t=e.theme,u=e.paddingRight;return Object(g.a)("padding-right",u,t)},function(e){var t=e.theme,u=e.paddingBottom;return Object(g.a)("padding-bottom",u,t)},function(e){var t=e.theme,u=e.paddingLeft;return Object(g.a)("padding-left",u,t)},function(e){var t=e.theme,u=e.marginLeft;return Object(g.a)("margin-left",u,t)},function(e){var t=e.theme,u=e.marginRight;return Object(g.a)("margin-right",u,t)},function(e){var t=e.theme,u=e.marginTop;return Object(g.a)("margin-top",u,t)},function(e){var t=e.theme,u=e.marginBottom;return Object(g.a)("margin-bottom",u,t)},function(e){var t=e.theme;return e.hiddenS?"".concat(t.mediaQueries.tablet," { display: none; }"):void 0},function(e){var t=e.theme;return e.hiddenXS?"".concat(t.mediaQueries.mobile," { display: none; }"):void 0},function(e){var t=e.theme,u=e.hasRadius,w=e.borderRadius;return u?t.borderRadius:w},function(e){return e.borderStyle},function(e){return e.borderWidth},function(e){var t=e.borderColor;return e.theme.colors[t]},function(e){var t=e.theme,u=e.borderColor,w=e.borderStyle,B=e.borderWidth;if(u&&!w&&!B)return"1px solid ".concat(t.colors[u])},function(e){var t=e.theme,u=e.shadow;return t.shadows[u]},function(e){return e.pointerEvents},function(e){var t=e._hover,u=e.theme;return t?t(u):void 0},function(e){return e.display},function(e){return e.position},function(e){var t=e.left;return e.theme.spaces[t]||t},function(e){var t=e.right;return e.theme.spaces[t]||t},function(e){var t=e.top;return e.theme.spaces[t]||t},function(e){var t=e.bottom;return e.theme.spaces[t]||t},function(e){return e.zIndex},function(e){return e.overflow},function(e){return e.cursor},function(e){var t=e.width;return e.theme.spaces[t]||t},function(e){var t=e.maxWidth;return e.theme.spaces[t]||t},function(e){var t=e.minWidth;return e.theme.spaces[t]||t},function(e){var t=e.height;return e.theme.spaces[t]||t},function(e){var t=e.maxHeight;return e.theme.spaces[t]||t},function(e){var t=e.minHeight;return e.theme.spaces[t]||t},function(e){return e.transition},function(e){return e.transform},function(e){return e.animation},function(e){return e.shrink},function(e){return e.grow},function(e){return e.basis},function(e){return e.flex},function(e){return e.textAlign},function(e){return e.textTransform},function(e){return e.lineHeight},function(e){return e.cursor});x.displayName="Box",x.defaultProps={background:void 0,borderColor:void 0,color:void 0,hiddenS:!1,hiddenXS:!1,padding:void 0,paddingTop:void 0,paddingRight:void 0,paddingBottom:void 0,paddingLeft:void 0,hasRadius:!1,shadow:void 0,children:null,shrink:void 0,grow:void 0,basis:void 0,flex:void 0,_hover:function(){}},x.propTypes={_hover:o.a.func,background:o.a.string,basis:o.a.oneOfType([o.a.string,o.a.string]),borderColor:o.a.string,children:o.a.oneOfType([o.a.node,o.a.string]),color:o.a.string,flex:o.a.oneOfType([o.a.string,o.a.string]),grow:o.a.oneOfType([o.a.string,o.a.string]),hasRadius:o.a.bool,hiddenS:o.a.bool,hiddenXS:o.a.bool,padding:o.a.oneOfType([o.a.number,o.a.arrayOf(o.a.number)]),paddingBottom:o.a.oneOfType([o.a.number,o.a.arrayOf(o.a.number)]),paddingLeft:o.a.oneOfType([o.a.number,o.a.arrayOf(o.a.number)]),paddingRight:o.a.oneOfType([o.a.number,o.a.arrayOf(o.a.number)]),paddingTop:o.a.oneOfType([o.a.number,o.a.arrayOf(o.a.number)]),shadow:o.a.string,shrink:o.a.oneOfType([o.a.string,o.a.string])}},7:function(r,h,n){"use strict";var i=n(10),a=n.n(i),c=n(13),l=n.n(c);h.a=function(o,b,p){var g=b;if(Array.isArray(b)||l()(b)!=="object"||(g=[b==null?void 0:b.desktop,b==null?void 0:b.tablet,b==null?void 0:b.mobile]),g!==void 0){if(Array.isArray(g)){var S=g,x=a()(S,3),e=x[0],t=x[1],u=x[2],w="".concat(o,": ").concat(p.spaces[e],";");return t!==void 0&&(w+="".concat(p.mediaQueries.tablet,`{
123
+ `).concat(o,": ").concat(p.spaces[t],`;
124
+ }`)),u!==void 0&&(w+="".concat(p.mediaQueries.mobile,`{
125
+ `).concat(o,": ").concat(p.spaces[u],`;
126
+ }`)),w}var B=p.spaces[g]||g;return"".concat(o,": ").concat(B,";")}}},9:function(r,h,n){"use strict";n.r(h),n.d(h,"Flex",function(){return e});var i,a=n(3),c=n.n(a),l=n(0),o=n.n(l),b=n(2),p=n.n(b),g=n(6),S=n(7),x={direction:!0},e=p()(g.Box).withConfig({shouldForwardProp:function(t,u){return!x[t]&&u(t)}})(i||(i=c()([`
127
+ align-items: `,`;
128
+ display: `,`;
129
+ flex-direction: `,`;
130
+ flex-wrap: `,`;
131
+ `,`};
132
+ justify-content: `,`;
133
+ `])),function(t){return t.alignItems},function(t){return t.inline?"inline-flex":"flex"},function(t){return t.direction},function(t){return t.wrap},function(t){var u=t.gap,w=t.theme;return Object(S.a)("gap",u,w)},function(t){return t.justifyContent});e.defaultProps={alignItems:"center",basis:void 0,direction:"row",gap:void 0,inline:!1,justifyContent:void 0,reverse:!1,wrap:void 0},e.propTypes={alignItems:o.a.string,basis:o.a.oneOfType([o.a.string,o.a.number]),direction:o.a.string,gap:o.a.oneOfType([o.a.shape({desktop:o.a.number,mobile:o.a.number,tablet:o.a.number}),o.a.number,o.a.arrayOf(o.a.number),o.a.string]),inline:o.a.bool,justifyContent:o.a.string,reverse:o.a.bool,wrap:o.a.string}}})})},54999:(F,K,d)=>{"use strict";d.r(K),d.d(K,{default:()=>Ee});var s=d(32735),O=d(10938),r=d(2805),h=d(5141),n=d(5636),i=d(11856),a=d(64354),c=d(19192),l=d(90662),o=d(20763),b=d(35980),p=d(53214),g=d(95602),S=d(44526),x=d(28004),e=d(55470),t=d(16540),u=d(29270),w=d(9808),B=d(59290),I=d.n(B),J=d(95717),R=d.n(J),q=d(76470),j=d.n(q),T=d(97042),_=d.n(T),ee=d(49415),ne=d(3040),V=d.n(ne);const z={webhooks:[],webhooksToDelete:[],webhookToDelete:null,loadingWebhooks:!0},$=(v,y)=>(0,ee.default)(v,m=>{switch(y.type){case"GET_DATA_SUCCEEDED":{m.webhooks=y.data,m.loadingWebhooks=!1;break}case"TOGGLE_LOADING":{m.loadingWebhooks=!v.loadingWebhooks;break}case"SET_WEBHOOK_ENABLED":{V()(m,["webhooks",...y.keys],y.value);break}case"SET_WEBHOOK_TO_DELETE":{m.webhookToDelete=y.id;break}case"SET_WEBHOOKS_TO_DELETE":{y.value?m.webhooksToDelete.push(y.id):m.webhooksToDelete=v.webhooksToDelete.filter(k=>k!==y.id);break}case"SET_ALL_WEBHOOKS_TO_DELETE":{v.webhooksToDelete.length===0?m.webhooksToDelete=v.webhooks.map(k=>k.id):m.webhooksToDelete=[];break}case"WEBHOOKS_DELETED":{m.webhooks=v.webhooks.filter(k=>!v.webhooksToDelete.includes(k.id)),m.webhooksToDelete=[];break}case"WEBHOOK_DELETED":{m.webhooks=v.webhooks.filter((k,W)=>W!==y.index),m.webhookToDelete=null;break}default:return m}});var te=d(98399),pe=Object.defineProperty,he=Object.defineProperties,me=Object.getOwnPropertyDescriptors,ae=Object.getOwnPropertySymbols,be=Object.prototype.hasOwnProperty,ge=Object.prototype.propertyIsEnumerable,ie=(v,y,m)=>y in v?pe(v,y,{enumerable:!0,configurable:!0,writable:!0,value:m}):v[y]=m,H=(v,y)=>{for(var m in y||(y={}))be.call(y,m)&&ie(v,m,y[m]);if(ae)for(var m of ae(y))ge.call(y,m)&&ie(v,m,y[m]);return v},ye=(v,y)=>he(v,me(y)),U=(v,y,m)=>new Promise((k,W)=>{var A=D=>{try{E(m.next(D))}catch(M){W(M)}},C=D=>{try{E(m.throw(D))}catch(M){W(M)}},E=D=>D.done?k(D.value):Promise.resolve(D.value).then(A,C);E((m=m.apply(v,y)).next())});const ve=()=>{const{isLoading:v,allowedActions:{canCreate:y,canRead:m,canUpdate:k,canDelete:W}}=(0,O.useRBAC)(r.Z.settings.webhooks),A=(0,O.useNotification)(),C=(0,s.useRef)(!0),{formatMessage:E}=(0,n.useIntl)(),[D,M]=(0,s.useState)(!1),[{webhooks:Q,webhooksToDelete:X,webhookToDelete:oe,loadingWebhooks:re},P]=(0,s.useReducer)($,z),{notifyStatus:xe}=(0,u.useNotifyAT)();(0,O.useFocusWhenNavigate)();const{push:Te}=(0,h.useHistory)(),{pathname:se}=(0,h.useLocation)(),Z=Q.length,N=X.length,le=f=>Q.findIndex(L=>L.id===f);(0,s.useEffect)(()=>(C.current=!0,()=>{C.current=!1}),[]),(0,s.useEffect)(()=>{m&&Oe()},[m]);const Oe=()=>U(void 0,null,function*(){try{const{data:f}=yield(0,O.request)("/admin/webhooks",{method:"GET"});C.current&&(P({type:"GET_DATA_SUCCEEDED",data:f}),xe("webhooks have been loaded"))}catch(f){te.log(f),C.current&&(f.code!==20&&A({type:"warning",message:{id:"notification.error"}}),P({type:"TOGGLE_LOADING"}))}}),we=()=>{M(f=>!f)},Se=()=>{oe?ke():Le()},ke=()=>U(void 0,null,function*(){try{yield(0,O.request)(`/admin/webhooks/${oe}`,{method:"DELETE"}),P({type:"WEBHOOK_DELETED",index:le(oe)})}catch(f){f.code!==20&&A({type:"warning",message:{id:"notification.error"}})}M(!1)}),Le=()=>U(void 0,null,function*(){const f={ids:X};try{yield(0,O.request)("/admin/webhooks/batch-delete",{method:"POST",body:f}),C.current&&P({type:"WEBHOOKS_DELETED"})}catch(L){C.current&&L.code!==20&&A({type:"warning",message:{id:"notification.error"}})}M(!1)}),ue=f=>{M(!0),f!=="all"&&P({type:"SET_WEBHOOK_TO_DELETE",id:f})},Ce=(f,L)=>U(void 0,null,function*(){const ce=le(L),Me=Q[ce],de=[ce,"isEnabled"],fe=ye(H({},Me),{isEnabled:f});delete fe.id;try{P({type:"SET_WEBHOOK_ENABLED",keys:de,value:f}),yield(0,O.request)(`/admin/webhooks/${L}`,{method:"PUT",body:fe})}catch(Be){C.current&&(P({type:"SET_WEBHOOK_ENABLED",keys:de,value:!f}),Be.code!==20&&A({type:"warning",message:{id:"notification.error"}}))}}),De=()=>{P({type:"SET_ALL_WEBHOOKS_TO_DELETE"})},Pe=(f,L)=>{P({type:"SET_WEBHOOKS_TO_DELETE",value:f,id:L})},Y=f=>{Te(`${se}/${f}`)};return s.createElement(i.Layout,null,s.createElement(O.SettingsPageTitle,{name:"Webhooks"}),s.createElement(t.Main,{"aria-busy":v||re},s.createElement(i.HeaderLayout,{title:E({id:"Settings.webhooks.title",defaultMessage:"Webhooks"}),subtitle:E({id:"Settings.webhooks.list.description",defaultMessage:"Get POST changes notifications"}),primaryAction:y&&!re&&s.createElement(O.LinkButton,{startIcon:s.createElement(I(),null),variant:"default",to:`${se}/create`,size:"L"},E({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))}),N>0&&W&&s.createElement(i.ActionLayout,{startActions:s.createElement(s.Fragment,null,s.createElement(g.Typography,{variant:"epsilon",textColor:"neutral600"},E({id:"Settings.webhooks.to.delete",defaultMessage:"{webhooksToDeleteLength, plural, one {# asset} other {# assets}} selected"},{webhooksToDeleteLength:N})),s.createElement(S.Button,{onClick:()=>ue("all"),startIcon:s.createElement(j(),null),size:"L",variant:"danger-light"},E({id:"global.delete",defaultMessage:"Delete"})))}),s.createElement(i.ContentLayout,null,v||re?s.createElement(w.Box,{background:"neutral0",padding:6,shadow:"filterShadow",hasRadius:!0},s.createElement(O.LoadingIndicatorPage,null)):s.createElement(s.Fragment,null,Z>0?s.createElement(p.Table,{colCount:5,rowCount:Z+1,footer:s.createElement(p.TFooter,{onClick:()=>y?Y("create"):{},icon:s.createElement(I(),null)},E({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))},s.createElement(p.Thead,null,s.createElement(p.Tr,null,s.createElement(p.Th,null,s.createElement(b.BaseCheckbox,{"aria-label":E({id:"global.select-all-entries",defaultMessage:"Select all entries"}),indeterminate:N>0&&N<Z,value:N===Z,onValueChange:De})),s.createElement(p.Th,{width:"20%"},s.createElement(g.Typography,{variant:"sigma",textColor:"neutral600"},E({id:"global.name",defaultMessage:"Name"}))),s.createElement(p.Th,{width:"60%"},s.createElement(g.Typography,{variant:"sigma",textColor:"neutral600"},E({id:"Settings.webhooks.form.url",defaultMessage:"URL"}))),s.createElement(p.Th,{width:"20%"},s.createElement(g.Typography,{variant:"sigma",textColor:"neutral600"},E({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"}))),s.createElement(p.Th,null,s.createElement(x.VisuallyHidden,null,E({id:"Settings.webhooks.list.th.actions",defaultMessage:"Actions"}))))),s.createElement(p.Tbody,null,Q.map(f=>s.createElement(p.Tr,H({key:f.id},(0,O.onRowClick)({fn:()=>Y(f.id),condition:k})),s.createElement(p.Td,H({},O.stopPropagation),s.createElement(b.BaseCheckbox,{"aria-label":`${E({id:"global.select",defaultMessage:"Select"})} ${f.name}`,value:X==null?void 0:X.includes(f.id),onValueChange:L=>Pe(L,f.id),id:"select",name:"select"})),s.createElement(p.Td,null,s.createElement(g.Typography,{fontWeight:"semiBold",textColor:"neutral800"},f.name)),s.createElement(p.Td,null,s.createElement(g.Typography,{textColor:"neutral800"},f.url)),s.createElement(p.Td,null,s.createElement(c.Flex,H({},O.stopPropagation),s.createElement(e.Switch,{onLabel:E({id:"global.enabled",defaultMessage:"Enabled"}),offLabel:E({id:"global.disabled",defaultMessage:"Disabled"}),label:`${f.name} ${E({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"})}`,selected:f.isEnabled,onChange:()=>Ce(!f.isEnabled,f.id),visibleLabels:!0}))),s.createElement(p.Td,null,s.createElement(l.Stack,H({horizontal:!0,spacing:1},O.stopPropagation),k&&s.createElement(o.IconButton,{onClick:()=>{Y(f.id)},label:E({id:"Settings.webhooks.events.update",defaultMessage:"Update"}),icon:s.createElement(R(),null),noBorder:!0}),W&&s.createElement(o.IconButton,{onClick:()=>ue(f.id),label:E({id:"global.delete",defaultMessage:"Delete"}),icon:s.createElement(j(),null),noBorder:!0,id:`delete-${f.id}`}))))))):s.createElement(a.EmptyStateLayout,{icon:s.createElement(_(),{width:"160px"}),content:E({id:"Settings.webhooks.list.empty.description",defaultMessage:"No webhooks found"}),action:s.createElement(S.Button,{variant:"secondary",startIcon:s.createElement(I(),null),onClick:()=>y?Y("create"):{}},E({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))})))),s.createElement(O.ConfirmDialog,{isOpen:D,onToggleDialog:we,onConfirm:Se}))},Ee=()=>s.createElement(O.CheckPagePermissions,{permissions:r.Z.settings.webhooks.main},s.createElement(ve,null))}}]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/admin",
3
- "version": "4.2.0-beta.3",
3
+ "version": "4.2.0-beta.4",
4
4
  "description": "Strapi Admin",
5
5
  "repository": {
6
6
  "type": "git",
@@ -50,12 +50,12 @@
50
50
  "@fortawesome/free-brands-svg-icons": "^5.15.3",
51
51
  "@fortawesome/free-solid-svg-icons": "^5.15.3",
52
52
  "@fortawesome/react-fontawesome": "^0.1.14",
53
- "@strapi/babel-plugin-switch-ee-ce": "4.2.0-beta.3",
53
+ "@strapi/babel-plugin-switch-ee-ce": "4.2.0-beta.4",
54
54
  "@strapi/design-system": "1.1.0",
55
- "@strapi/helper-plugin": "4.2.0-beta.3",
55
+ "@strapi/helper-plugin": "4.2.0-beta.4",
56
56
  "@strapi/icons": "1.1.0",
57
- "@strapi/typescript-utils": "4.2.0-beta.3",
58
- "@strapi/utils": "4.2.0-beta.3",
57
+ "@strapi/typescript-utils": "4.2.0-beta.4",
58
+ "@strapi/utils": "4.2.0-beta.4",
59
59
  "axios": "0.24.0",
60
60
  "babel-loader": "8.2.3",
61
61
  "babel-plugin-styled-components": "2.0.2",
@@ -141,8 +141,8 @@
141
141
  "webpack-bundle-analyzer": "4.4.1"
142
142
  },
143
143
  "engines": {
144
- "node": ">=12.22.0 <=16.x.x",
144
+ "node": ">=14.19.1 <=16.x.x",
145
145
  "npm": ">=6.0.0"
146
146
  },
147
- "gitHead": "c4addbad6ecbc8ef7633bbba3806f3b0a2ae5f49"
147
+ "gitHead": "5caff35a30e33b7a660eb946299f9e3d2d35b2b8"
148
148
  }
@@ -146,5 +146,19 @@ module.exports = {
146
146
  section: 'settings',
147
147
  category: 'api tokens',
148
148
  },
149
+ {
150
+ uid: 'project-settings.update',
151
+ displayName: 'Update the project level settings',
152
+ pluginName: 'admin',
153
+ section: 'settings',
154
+ category: 'project',
155
+ },
156
+ {
157
+ uid: 'project-settings.read',
158
+ displayName: 'Read the project level settings',
159
+ pluginName: 'admin',
160
+ section: 'settings',
161
+ category: 'project',
162
+ },
149
163
  ],
150
164
  };
@@ -9,6 +9,11 @@ const { isUsingTypeScript } = require('@strapi/typescript-utils');
9
9
  // eslint-disable-next-line node/no-extraneous-require
10
10
  const ee = require('@strapi/strapi/lib/utils/ee');
11
11
 
12
+ const {
13
+ validateUpdateProjectSettings,
14
+ validateUpdateProjectSettingsFiles,
15
+ validateUpdateProjectSettingsImagesDimensions,
16
+ } = require('../validation/project-settings');
12
17
  const { getService } = require('../utils');
13
18
 
14
19
  const PLUGIN_NAME_REGEX = /^[A-Za-z][A-Za-z0-9-_]+$/;
@@ -40,6 +45,7 @@ module.exports = {
40
45
  async init() {
41
46
  let uuid = strapi.config.get('uuid', false);
42
47
  const hasAdmin = await getService('user').exists();
48
+ const { menuLogo } = await getService('project-settings').getProjectSettings();
43
49
  // set to null if telemetryDisabled flag not avaialble in package.json
44
50
  const telemetryDisabled = strapi.config.get('packageJsonStrapi.telemetryDisabled', null);
45
51
 
@@ -47,7 +53,33 @@ module.exports = {
47
53
  uuid = false;
48
54
  }
49
55
 
50
- return { data: { uuid, hasAdmin } };
56
+ return {
57
+ data: {
58
+ uuid,
59
+ hasAdmin,
60
+ menuLogo: menuLogo ? menuLogo.url : null,
61
+ },
62
+ };
63
+ },
64
+
65
+ async getProjectSettings() {
66
+ return getService('project-settings').getProjectSettings();
67
+ },
68
+
69
+ async updateProjectSettings(ctx) {
70
+ const projectSettingsService = getService('project-settings');
71
+
72
+ const {
73
+ request: { files, body },
74
+ } = ctx;
75
+
76
+ await validateUpdateProjectSettings(body);
77
+ await validateUpdateProjectSettingsFiles(files);
78
+
79
+ const formatedFiles = await projectSettingsService.parseFilesData(files);
80
+ await validateUpdateProjectSettingsImagesDimensions(formatedFiles);
81
+
82
+ return projectSettingsService.updateProjectSettings({ ...body, ...formatedFiles });
51
83
  },
52
84
 
53
85
  async telemetryProperties() {
@@ -7,6 +7,34 @@ module.exports = [
7
7
  handler: 'admin.init',
8
8
  config: { auth: false },
9
9
  },
10
+ {
11
+ method: 'GET',
12
+ path: '/project-settings',
13
+ handler: 'admin.getProjectSettings',
14
+ config: {
15
+ policies: [
16
+ 'admin::isAuthenticatedAdmin',
17
+ {
18
+ name: 'admin::hasPermissions',
19
+ config: { actions: ['admin::project-settings.read'] },
20
+ },
21
+ ],
22
+ },
23
+ },
24
+ {
25
+ method: 'POST',
26
+ path: '/project-settings',
27
+ handler: 'admin.updateProjectSettings',
28
+ config: {
29
+ policies: [
30
+ 'admin::isAuthenticatedAdmin',
31
+ {
32
+ name: 'admin::hasPermissions',
33
+ config: { actions: ['admin::project-settings.update'] },
34
+ },
35
+ ],
36
+ },
37
+ },
10
38
  {
11
39
  method: 'GET',
12
40
  path: '/project-type',
@@ -13,4 +13,5 @@ module.exports = {
13
13
  auth: require('./auth'),
14
14
  action: require('./action'),
15
15
  'api-token': require('./api-token'),
16
+ 'project-settings': require('./project-settings'),
16
17
  };
@@ -0,0 +1,173 @@
1
+ 'use strict';
2
+
3
+ const fs = require('fs');
4
+ const { pick } = require('lodash');
5
+
6
+ const PROJECT_SETTINGS_FILE_INPUTS = ['menuLogo'];
7
+ const DEFAULT_PROJECT_SETTINGS = {
8
+ menuLogo: null,
9
+ };
10
+
11
+ const parseFilesData = async files => {
12
+ const formatedFilesData = {};
13
+
14
+ await Promise.all(
15
+ PROJECT_SETTINGS_FILE_INPUTS.map(async inputName => {
16
+ const file = files[inputName];
17
+
18
+ // Skip empty file inputs
19
+ if (!file) {
20
+ return;
21
+ }
22
+
23
+ const getStream = () => fs.createReadStream(file.path);
24
+
25
+ // Add formated data for the upload provider
26
+ formatedFilesData[inputName] = strapi
27
+ .plugin('upload')
28
+ .service('upload')
29
+ .formatFileInfo({
30
+ filename: file.name,
31
+ type: file.type,
32
+ size: file.size,
33
+ });
34
+
35
+ // Add image dimensions
36
+ Object.assign(
37
+ formatedFilesData[inputName],
38
+ await strapi
39
+ .plugin('upload')
40
+ .service('image-manipulation')
41
+ .getDimensions({ getStream })
42
+ );
43
+
44
+ // Add file path, and stream
45
+ Object.assign(formatedFilesData[inputName], {
46
+ stream: getStream(),
47
+ tmpPath: file.path,
48
+ provider: strapi.config.get('plugin.upload').provider,
49
+ });
50
+ })
51
+ );
52
+
53
+ return formatedFilesData;
54
+ };
55
+
56
+ const getProjectSettings = async () => {
57
+ const store = strapi.store({ type: 'core', name: 'admin' });
58
+ const projectSettings = {
59
+ ...DEFAULT_PROJECT_SETTINGS,
60
+ ...(await store.get({ key: 'project-settings' })),
61
+ };
62
+
63
+ // Filter file input fields
64
+ PROJECT_SETTINGS_FILE_INPUTS.forEach(inputName => {
65
+ if (!projectSettings[inputName]) {
66
+ return;
67
+ }
68
+
69
+ projectSettings[inputName] = pick(projectSettings[inputName], [
70
+ 'name',
71
+ 'url',
72
+ 'width',
73
+ 'height',
74
+ 'ext',
75
+ 'size',
76
+ ]);
77
+ });
78
+
79
+ return projectSettings;
80
+ };
81
+
82
+ const uploadFiles = async (files = {}) => {
83
+ // Call the provider upload function for each file
84
+ return Promise.all(
85
+ Object.values(files)
86
+ .filter(file => file.stream instanceof fs.ReadStream)
87
+ .map(file => strapi.plugin('upload').provider.uploadStream(file))
88
+ );
89
+ };
90
+
91
+ const deleteOldFiles = async ({ previousSettings, newSettings }) => {
92
+ return Promise.all(
93
+ PROJECT_SETTINGS_FILE_INPUTS.map(async inputName => {
94
+ // Skip if the store doesn't contain project settings
95
+ if (!previousSettings) {
96
+ return;
97
+ }
98
+
99
+ // Skip if there was no previous file
100
+ if (!previousSettings[inputName]) {
101
+ return;
102
+ }
103
+
104
+ // Skip if the file was not changed
105
+ if (
106
+ newSettings[inputName] &&
107
+ previousSettings[inputName].hash === newSettings[inputName].hash
108
+ ) {
109
+ return;
110
+ }
111
+
112
+ // Skip if the file was not uploaded with the current provider
113
+ if (strapi.config.get('plugin.upload').provider !== previousSettings[inputName].provider) {
114
+ return;
115
+ }
116
+
117
+ // There was a previous file and an new file was uploaded
118
+ // Remove the previous file
119
+ strapi.plugin('upload').provider.delete(previousSettings[inputName]);
120
+ })
121
+ );
122
+ };
123
+
124
+ const updateProjectSettings = async newSettings => {
125
+ const store = strapi.store({ type: 'core', name: 'admin' });
126
+ const previousSettings = await store.get({ key: 'project-settings' });
127
+ const files = pick(newSettings, PROJECT_SETTINGS_FILE_INPUTS);
128
+
129
+ await uploadFiles(files);
130
+
131
+ PROJECT_SETTINGS_FILE_INPUTS.forEach(inputName => {
132
+ // If the user input exists but is not a formdata "file" remove it
133
+ if (newSettings[inputName] !== undefined && !(typeof newSettings[inputName] === 'object')) {
134
+ newSettings[inputName] = null;
135
+ return;
136
+ }
137
+
138
+ // If the user input is undefined reuse previous setting (do not update field)
139
+ if (!newSettings[inputName]) {
140
+ newSettings[inputName] = previousSettings[inputName];
141
+ return;
142
+ }
143
+
144
+ // Update the file
145
+ newSettings[inputName] = pick(newSettings[inputName], [
146
+ 'name',
147
+ 'hash',
148
+ 'url',
149
+ 'width',
150
+ 'height',
151
+ 'ext',
152
+ 'size',
153
+ 'provider',
154
+ ]);
155
+ });
156
+
157
+ // No await to proceed asynchronously
158
+ deleteOldFiles({ previousSettings, newSettings });
159
+
160
+ await store.set({
161
+ key: 'project-settings',
162
+ value: { ...previousSettings, ...newSettings },
163
+ });
164
+
165
+ return getProjectSettings();
166
+ };
167
+
168
+ module.exports = {
169
+ deleteOldFiles,
170
+ parseFilesData,
171
+ getProjectSettings,
172
+ updateProjectSettings,
173
+ };
@@ -6,6 +6,7 @@ import * as metrics from '../services/metrics';
6
6
  import * as token from '../services/token';
7
7
  import * as auth from '../services/auth';
8
8
  import * as apiToken from '../services/api-token';
9
+ import * as projectSettings from '../services/project-settings';
9
10
 
10
11
  type S = {
11
12
  role: typeof role;
@@ -16,6 +17,7 @@ type S = {
16
17
  auth: typeof auth;
17
18
  metrics: typeof metrics;
18
19
  'api-token': typeof apiToken;
20
+ 'project-settings': typeof projectSettings;
19
21
  };
20
22
 
21
23
  export function getService<T extends keyof S>(name: T): S[T];