@strapi/admin 4.2.0-beta.3 → 4.3.0-beta.1

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 (177) 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/content-manager/components/EditViewDataManagerProvider/index.js +3 -3
  7. package/admin/src/content-manager/components/SelectMany/index.js +2 -4
  8. package/admin/src/content-manager/components/SelectWrapper/index.js +1 -13
  9. package/admin/src/hooks/useFetchMarketplaceProviders/index.js +23 -0
  10. package/admin/src/hooks/useFetchMarketplaceProviders/utils/api.js +11 -0
  11. package/admin/src/pages/App/index.js +7 -2
  12. package/admin/src/pages/MarketplacePage/components/{EmptyPluginSearch/EmptyPluginGrid.js → EmptyNpmPackageSearch/EmptyNpmPackageGrid.js} +1 -1
  13. package/admin/src/pages/MarketplacePage/components/{EmptyPluginSearch → EmptyNpmPackageSearch}/index.js +6 -4
  14. package/admin/src/pages/MarketplacePage/components/{PluginCard → NpmPackageCard}/InstallPluginButton.js +0 -0
  15. package/admin/src/pages/MarketplacePage/components/{PluginCard → NpmPackageCard}/index.js +22 -10
  16. package/admin/src/pages/MarketplacePage/components/NpmPackagesGrid/index.js +42 -0
  17. package/admin/src/pages/MarketplacePage/components/PageHeader/index.js +12 -5
  18. package/admin/src/pages/MarketplacePage/index.js +99 -37
  19. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/Form/index.js +85 -0
  20. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/Form/init.js +13 -0
  21. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/Form/reducer.js +43 -0
  22. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoInput/index.js +118 -0
  23. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoInput/reducer.js +28 -0
  24. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoInput/stepper.js +25 -0
  25. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/AddLogoDialog.js +67 -0
  26. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/FromComputerForm.js +176 -0
  27. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/FromUrlForm.js +86 -0
  28. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/ImageCardAsset.js +51 -0
  29. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/PendingLogoDialog.js +97 -0
  30. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/index.js +85 -0
  31. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/reducer.js +28 -0
  32. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/index.js +153 -91
  33. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/api.js +16 -0
  34. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/constants.js +3 -0
  35. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/getFormData.js +17 -0
  36. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/parseFileMetadatas.js +76 -0
  37. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/prefixAllUrls.js +17 -0
  38. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/urlToFile.js +21 -0
  39. package/admin/src/translations/en.json +33 -3
  40. package/admin/src/translations/pl.json +264 -12
  41. package/admin/src/translations/vi.json +17 -17
  42. package/admin/src/tsconfig.json +1 -1
  43. package/build/1820.ca954075.chunk.js +503 -0
  44. package/build/1856.6a94980b.chunk.js +172 -0
  45. package/build/20.9e5a98b6.chunk.js +308 -0
  46. package/build/2077.5456ccd1.chunk.js +194 -0
  47. package/build/3531.231e0eb6.chunk.js +10 -0
  48. package/build/{4073.41ac1235.chunk.js → 4073.e144a91a.chunk.js} +1 -1
  49. package/build/413.d5986568.chunk.js +284 -0
  50. package/build/4715.4588fdf5.chunk.js +385 -0
  51. package/build/{210.014495c1.chunk.js → 472.d43be8bb.chunk.js} +58 -58
  52. package/build/4800.d3ebc81d.chunk.js +1 -0
  53. package/build/5250.24040688.chunk.js +11 -0
  54. package/build/6229.53b33cf0.chunk.js +194 -0
  55. package/build/7418.6db737ce.chunk.js +112 -0
  56. package/build/8773.54a26ded.chunk.js +327 -0
  57. package/build/9066.2847fdff.chunk.js +101 -0
  58. package/build/9262.25aa12a5.chunk.js +1 -0
  59. package/build/9420.ba035f29.chunk.js +508 -0
  60. package/build/Admin-authenticatedApp.52f3c150.chunk.js +80 -0
  61. package/build/{Admin_homePage.f157e33e.chunk.js → Admin_homePage.0ac648e8.chunk.js} +2 -2
  62. package/build/Admin_marketplace.71c66b49.chunk.js +11 -0
  63. package/build/{Admin_profilePage.62c203ad.chunk.js → Admin_profilePage.27191ed2.chunk.js} +1 -1
  64. package/build/Admin_settingsPage.021da806.chunk.js +178 -0
  65. package/build/{admin-edit-roles-page.94e1403b.chunk.js → admin-edit-roles-page.fb374555.chunk.js} +1 -1
  66. package/build/admin-edit-users.a360deaf.chunk.js +10 -0
  67. package/build/admin-users.47d06d24.chunk.js +11 -0
  68. package/build/api-tokens-create-page.698f132d.chunk.js +1 -0
  69. package/build/api-tokens-edit-page.afece2fe.chunk.js +1 -0
  70. package/build/{api-tokens-list-page.340750a6.chunk.js → api-tokens-list-page.46d96dee.chunk.js} +1 -1
  71. package/build/content-manager.afcc3624.chunk.js +1182 -0
  72. package/build/email-settings-page.8871dfe8.chunk.js +103 -0
  73. package/build/en-json.0a5ba154.chunk.js +1 -0
  74. package/build/i18n-settings-page.dfb4eb01.chunk.js +101 -0
  75. package/build/index.html +1 -1
  76. package/build/main.ca3856ed.js +8640 -0
  77. package/build/pl-json.f65302c2.chunk.js +1 -0
  78. package/build/{runtime~main.e7611418.js → runtime~main.48a46dd2.js} +1 -1
  79. package/build/{sso-settings-page.e9034e22.chunk.js → sso-settings-page.dfb0b917.chunk.js} +1 -1
  80. package/build/upload-settings.8d8c672a.chunk.js +101 -0
  81. package/build/upload-translation-de-json.745613c0.chunk.js +1 -0
  82. package/build/upload-translation-dk-json.cb25dcf0.chunk.js +1 -0
  83. package/build/upload-translation-en-json.e78688a0.chunk.js +1 -0
  84. package/build/upload-translation-es-json.1f344b53.chunk.js +1 -0
  85. package/build/upload-translation-fr-json.e21c0c7a.chunk.js +1 -0
  86. package/build/upload-translation-he-json.4ce77b7b.chunk.js +1 -0
  87. package/build/upload-translation-it-json.5ce11e0b.chunk.js +1 -0
  88. package/build/upload-translation-ja-json.22afae44.chunk.js +1 -0
  89. package/build/upload-translation-ko-json.9a2c21cb.chunk.js +1 -0
  90. package/build/upload-translation-ms-json.0605d6da.chunk.js +1 -0
  91. package/build/upload-translation-pl-json.e534b676.chunk.js +1 -0
  92. package/build/upload-translation-pt-BR-json.95686cfb.chunk.js +1 -0
  93. package/build/upload-translation-ru-json.37bd1546.chunk.js +1 -0
  94. package/build/upload-translation-sk-json.b03d4904.chunk.js +1 -0
  95. package/build/upload-translation-th-json.64dd70ce.chunk.js +1 -0
  96. package/build/upload-translation-uk-json.1328cb3e.chunk.js +1 -0
  97. package/build/{upload-translation-zh-Hans-json.c9622577.chunk.js → upload-translation-zh-Hans-json.6832ff81.chunk.js} +1 -1
  98. package/build/upload-translation-zh-json.ee8fba96.chunk.js +1 -0
  99. package/build/upload.5622b777.chunk.js +7 -0
  100. package/build/users-advanced-settings-page.4af9e241.chunk.js +101 -0
  101. package/build/users-email-settings-page.d69c0d87.chunk.js +101 -0
  102. package/build/users-providers-settings-page.fc1fda6d.chunk.js +101 -0
  103. package/build/vi-json.bf3424be.chunk.js +1 -0
  104. package/build/webhook-edit-page.a7ae6e3b.chunk.js +23 -0
  105. package/build/webhook-list-page.057f396c.chunk.js +133 -0
  106. package/index.js +2 -8
  107. package/package.json +10 -9
  108. package/scripts/build.js +3 -1
  109. package/server/config/admin-actions.js +14 -0
  110. package/server/controllers/admin.js +40 -2
  111. package/server/routes/admin.js +28 -1
  112. package/server/services/index.js +1 -0
  113. package/server/services/project-settings.js +173 -0
  114. package/server/utils/index.d.ts +2 -0
  115. package/server/validation/project-settings.js +39 -0
  116. package/utils/create-cache-dir.js +6 -36
  117. package/utils/get-custom-app-config-file.js +7 -2
  118. package/utils/get-plugins-path.js +1 -1
  119. package/admin/src/content-manager/components/SelectWrapper/ClearIndicator.js +0 -18
  120. package/admin/src/content-manager/components/SelectWrapper/DropdownIndicator.js +0 -24
  121. package/admin/src/content-manager/components/SelectWrapper/IconBox.js +0 -20
  122. package/admin/src/content-manager/components/SelectWrapper/IndicatorSeparator.js +0 -3
  123. package/admin/src/content-manager/components/SelectWrapper/utils/getSelectStyles.js +0 -92
  124. package/build/1709.ceed0e18.chunk.js +0 -503
  125. package/build/1856.521a99fd.chunk.js +0 -172
  126. package/build/20.cf744c35.chunk.js +0 -308
  127. package/build/2077.51485bfb.chunk.js +0 -194
  128. package/build/2135.95ee6de1.chunk.js +0 -162
  129. package/build/2524.688d0355.chunk.js +0 -1
  130. package/build/2912.79c2b3c8.chunk.js +0 -253
  131. package/build/4715.77e04177.chunk.js +0 -385
  132. package/build/4761.3eabdf46.chunk.js +0 -101
  133. package/build/6229.a5cca9f2.chunk.js +0 -194
  134. package/build/6281.f10a7e3a.chunk.js +0 -1
  135. package/build/7009.79fce86d.chunk.js +0 -164
  136. package/build/7191.3bde3cbf.chunk.js +0 -335
  137. package/build/7841.f0e7d629.chunk.js +0 -253
  138. package/build/7863.bc7a8f3a.chunk.js +0 -112
  139. package/build/9420.cb0b75e8.chunk.js +0 -508
  140. package/build/Admin-authenticatedApp.4ce8d292.chunk.js +0 -80
  141. package/build/Admin_marketplace.1e3393c9.chunk.js +0 -11
  142. package/build/Admin_settingsPage.924a7816.chunk.js +0 -170
  143. package/build/admin-edit-users.6c2bf718.chunk.js +0 -10
  144. package/build/admin-users.e03db115.chunk.js +0 -11
  145. package/build/api-tokens-create-page.787ab302.chunk.js +0 -1
  146. package/build/api-tokens-edit-page.e4010c0c.chunk.js +0 -1
  147. package/build/content-manager.6cdcfb6e.chunk.js +0 -1204
  148. package/build/email-settings-page.f67d13b2.chunk.js +0 -103
  149. package/build/en-json.3e1a222e.chunk.js +0 -1
  150. package/build/i18n-settings-page.6b67cb75.chunk.js +0 -101
  151. package/build/main.45472ea9.js +0 -8404
  152. package/build/pl-json.94f05d2c.chunk.js +0 -1
  153. package/build/upload-settings.3db55de0.chunk.js +0 -101
  154. package/build/upload-translation-de-json.b642da08.chunk.js +0 -1
  155. package/build/upload-translation-dk-json.fc61df13.chunk.js +0 -1
  156. package/build/upload-translation-en-json.59269508.chunk.js +0 -1
  157. package/build/upload-translation-es-json.8ec935ef.chunk.js +0 -1
  158. package/build/upload-translation-fr-json.eb9b4f84.chunk.js +0 -1
  159. package/build/upload-translation-he-json.c226f2dc.chunk.js +0 -1
  160. package/build/upload-translation-it-json.8e58456e.chunk.js +0 -1
  161. package/build/upload-translation-ja-json.1378a2e7.chunk.js +0 -1
  162. package/build/upload-translation-ko-json.5e06e112.chunk.js +0 -1
  163. package/build/upload-translation-ms-json.dc3bf0d7.chunk.js +0 -1
  164. package/build/upload-translation-pl-json.6071e38c.chunk.js +0 -1
  165. package/build/upload-translation-pt-BR-json.7e8d9550.chunk.js +0 -1
  166. package/build/upload-translation-ru-json.da2529f3.chunk.js +0 -1
  167. package/build/upload-translation-sk-json.bfdf4f09.chunk.js +0 -1
  168. package/build/upload-translation-th-json.6a48b826.chunk.js +0 -1
  169. package/build/upload-translation-uk-json.6fb09148.chunk.js +0 -1
  170. package/build/upload-translation-zh-json.711f804b.chunk.js +0 -1
  171. package/build/upload.070c189b.chunk.js +0 -105
  172. package/build/users-advanced-settings-page.a23cda17.chunk.js +0 -101
  173. package/build/users-email-settings-page.0a096388.chunk.js +0 -1
  174. package/build/users-providers-settings-page.bfe7755a.chunk.js +0 -1
  175. package/build/vi-json.3d14e91e.chunk.js +0 -1
  176. package/build/webhook-edit-page.2fa94db3.chunk.js +0 -23
  177. package/build/webhook-list-page.b594db49.chunk.js +0 -133
@@ -0,0 +1,101 @@
1
+ (self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[2282],{16540:(q,k,f)=>{"use strict";q.exports=f(67468)},67468:function(q,k,f){(function(i,F){q.exports=F(f(32735),f(19615))})(this,function(i,F){return function(t){var b={};function r(a){if(b[a])return b[a].exports;var n=b[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=b,r.d=function(a,n,c){r.o(a,n)||Object.defineProperty(a,n,{enumerable:!0,get:c})},r.r=function(a){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},r.t=function(a,n){if(1&n&&(a=r(a)),8&n||4&n&&typeof a=="object"&&a&&a.__esModule)return a;var c=Object.create(null);if(r.r(c),Object.defineProperty(c,"default",{enumerable:!0,value:a}),2&n&&typeof a!="string")for(var s in a)r.d(c,s,function(m){return a[m]}.bind(null,s));return c},r.n=function(a){var n=a&&a.__esModule?function(){return a.default}:function(){return a};return r.d(n,"a",n),n},r.o=function(a,n){return Object.prototype.hasOwnProperty.call(a,n)},r.p="",r(r.s=110)}({0:function(t,b,r){t.exports=r(19)()},1:function(t,b){t.exports=i},10:function(t,b,r){var a=r(25),n=r(26),c=r(22),s=r(27);t.exports=function(m,v){return a(m)||n(m,v)||c(m,v)||s()},t.exports.default=t.exports,t.exports.__esModule=!0},110:function(t,b,r){"use strict";r.r(b),r.d(b,"Main",function(){return e}),r.d(b,"SkipToContent",function(){return W});var a,n=r(5),c=r.n(n),s=r(4),m=r.n(s),v=r(3),h=r.n(v),E=r(1),R=r.n(E),l=r(0),S=r.n(l),B=r(2),L=r.n(B),y=["labelledBy"],O=L.a.main(a||(a=h()([`
2
+ // To prevent global outline on focus visible to force an outline when Main is focused
3
+ &:focus-visible {
4
+ outline: none;
5
+ }
6
+ `]))),e=function(U){var N=U.labelledBy,G=m()(U,y),ie=N||"main-content-title";return R.a.createElement(O,c()({"aria-labelledby":ie,id:"main-content",tabIndex:-1},G))};e.defaultProps={labelledBy:void 0},e.propTypes={labelledBy:S.a.string};var o,g=r(6),z=L()(g.Box)(o||(o=h()([`
7
+ text-decoration: none;
8
+ position: absolute;
9
+ z-index: 9999;
10
+ left: -100%;
11
+ top: -100%;
12
+
13
+ &:focus {
14
+ left: `,`;
15
+ top: `,`;
16
+ }
17
+ `])),function(U){return U.theme.spaces[3]},function(U){return U.theme.spaces[3]}),W=function(U){var N=U.children;return R.a.createElement(z,{as:"a",href:"#main-content",background:"primary600",color:"neutral0",padding:3,hasRadius:!0},N)};W.propTypes={children:S.a.node.isRequired}},13:function(t,b){function r(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?(t.exports=r=function(n){return typeof n},t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=r=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},t.exports.default=t.exports,t.exports.__esModule=!0),r(a)}t.exports=r,t.exports.default=t.exports,t.exports.__esModule=!0},19:function(t,b,r){"use strict";var a=r(20);function n(){}function c(){}c.resetWarningCache=n,t.exports=function(){function s(h,E,R,l,S,B){if(B!==a){var L=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 L.name="Invariant Violation",L}}function m(){return s}s.isRequired=s;var v={array:s,bool:s,func:s,number:s,object:s,string:s,symbol:s,any:s,arrayOf:m,element:s,elementType:s,instanceOf:m,node:s,objectOf:m,oneOf:m,oneOfType:m,shape:m,exact:m,checkPropTypes:c,resetWarningCache:n};return v.PropTypes=v,v}},2:function(t,b){t.exports=F},20:function(t,b,r){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},21:function(t,b){t.exports=function(r,a){(a==null||a>r.length)&&(a=r.length);for(var n=0,c=new Array(a);n<a;n++)c[n]=r[n];return c},t.exports.default=t.exports,t.exports.__esModule=!0},22:function(t,b,r){var a=r(21);t.exports=function(n,c){if(n){if(typeof n=="string")return a(n,c);var s=Object.prototype.toString.call(n).slice(8,-1);return s==="Object"&&n.constructor&&(s=n.constructor.name),s==="Map"||s==="Set"?Array.from(n):s==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?a(n,c):void 0}},t.exports.default=t.exports,t.exports.__esModule=!0},24:function(t,b){t.exports=function(r,a){if(r==null)return{};var n,c,s={},m=Object.keys(r);for(c=0;c<m.length;c++)n=m[c],a.indexOf(n)>=0||(s[n]=r[n]);return s},t.exports.default=t.exports,t.exports.__esModule=!0},25:function(t,b){t.exports=function(r){if(Array.isArray(r))return r},t.exports.default=t.exports,t.exports.__esModule=!0},26:function(t,b){t.exports=function(r,a){var n=r==null?null:typeof Symbol!="undefined"&&r[Symbol.iterator]||r["@@iterator"];if(n!=null){var c,s,m=[],v=!0,h=!1;try{for(n=n.call(r);!(v=(c=n.next()).done)&&(m.push(c.value),!a||m.length!==a);v=!0);}catch(E){h=!0,s=E}finally{try{v||n.return==null||n.return()}finally{if(h)throw s}}return m}},t.exports.default=t.exports,t.exports.__esModule=!0},27:function(t,b){t.exports=function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
18
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)},t.exports.default=t.exports,t.exports.__esModule=!0},3:function(t,b){t.exports=function(r,a){return a||(a=r.slice(0)),Object.freeze(Object.defineProperties(r,{raw:{value:Object.freeze(a)}}))},t.exports.default=t.exports,t.exports.__esModule=!0},4:function(t,b,r){var a=r(24);t.exports=function(n,c){if(n==null)return{};var s,m,v=a(n,c);if(Object.getOwnPropertySymbols){var h=Object.getOwnPropertySymbols(n);for(m=0;m<h.length;m++)s=h[m],c.indexOf(s)>=0||Object.prototype.propertyIsEnumerable.call(n,s)&&(v[s]=n[s])}return v},t.exports.default=t.exports,t.exports.__esModule=!0},5:function(t,b){function r(){return t.exports=r=Object.assign||function(a){for(var n=1;n<arguments.length;n++){var c=arguments[n];for(var s in c)Object.prototype.hasOwnProperty.call(c,s)&&(a[s]=c[s])}return a},t.exports.default=t.exports,t.exports.__esModule=!0,r.apply(this,arguments)}t.exports=r,t.exports.default=t.exports,t.exports.__esModule=!0},6:function(t,b,r){"use strict";r.r(b),r.d(b,"Box",function(){return O});var a,n=r(3),c=r.n(n),s=r(2),m=r.n(s),v=r(7),h=r(1),E=r.n(h),R=r(0),l=r.n(R),S=function(e){return E.a.createElement("div",e)},B={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(){}},L={_hover:l.a.func,background:l.a.string,basis:l.a.oneOfType([l.a.string,l.a.string]),borderColor:l.a.string,children:l.a.oneOfType([l.a.node,l.a.string]),color:l.a.string,flex:l.a.oneOfType([l.a.string,l.a.string]),grow:l.a.oneOfType([l.a.string,l.a.string]),hasRadius:l.a.bool,hiddenS:l.a.bool,hiddenXS:l.a.bool,padding:l.a.oneOfType([l.a.number,l.a.arrayOf(l.a.number)]),paddingBottom:l.a.oneOfType([l.a.number,l.a.arrayOf(l.a.number)]),paddingLeft:l.a.oneOfType([l.a.number,l.a.arrayOf(l.a.number)]),paddingRight:l.a.oneOfType([l.a.number,l.a.arrayOf(l.a.number)]),paddingTop:l.a.oneOfType([l.a.number,l.a.arrayOf(l.a.number)]),shadow:l.a.string,shrink:l.a.oneOfType([l.a.string,l.a.string])};S.defaultProps=B,S.propTypes=L;var y={color:!0},O=m.a.div.withConfig({shouldForwardProp:function(e,o){return!y[e]&&o(e)}})(a||(a=c()([`
19
+ // Font
20
+ font-size: `,`;
21
+
22
+ // Colors
23
+ background: `,`;
24
+ color: `,`;
25
+
26
+ // Spaces
27
+ `,`
28
+ `,`
29
+ `,`
30
+ `,`
31
+ `,`
32
+ `,`
33
+ `,`
34
+ `,`
35
+ `,`
36
+
37
+ // Responsive hiding
38
+ `,`
39
+ `,`
40
+
41
+
42
+ // Borders
43
+ border-radius: `,`;
44
+ border-style: `,`;
45
+ border-width: `,`;
46
+ border-color: `,`;
47
+ border: `,`;
48
+
49
+ // Shadows
50
+ box-shadow: `,`;
51
+
52
+ // Handlers
53
+ pointer-events: `,`;
54
+ &:hover {
55
+ `,`
56
+ }
57
+
58
+ // Display
59
+ display: `,`;
60
+
61
+ // Position
62
+ position: `,`;
63
+ left: `,`;
64
+ right: `,`;
65
+ top: `,`;
66
+ bottom: `,`;
67
+ z-index: `,`;
68
+ overflow: `,`;
69
+ cursor: `,`;
70
+
71
+ // Size
72
+ width: `,`;
73
+ max-width: `,`;
74
+ min-width: `,`;
75
+ height: `,`;
76
+ max-height: `,`;
77
+ min-height: `,`;
78
+
79
+ // Animation
80
+ transition: `,`;
81
+ transform: `,`;
82
+ animation: `,`;
83
+
84
+ //Flexbox children props
85
+ flex-shrink: `,`;
86
+ flex-grow: `,`;
87
+ flex-basis: `,`;
88
+ flex: `,`;
89
+
90
+ // Text
91
+ text-align: `,`;
92
+ text-transform: `,`;
93
+ line-height: `,`;
94
+
95
+ // Cursor
96
+ cursor: `,`;
97
+ `])),function(e){var o=e.fontSize;return e.theme.fontSizes[o]||o},function(e){var o=e.theme,g=e.background;return o.colors[g]},function(e){var o=e.theme,g=e.color;return o.colors[g]},function(e){var o=e.theme,g=e.padding;return Object(v.a)("padding",g,o)},function(e){var o=e.theme,g=e.paddingTop;return Object(v.a)("padding-top",g,o)},function(e){var o=e.theme,g=e.paddingRight;return Object(v.a)("padding-right",g,o)},function(e){var o=e.theme,g=e.paddingBottom;return Object(v.a)("padding-bottom",g,o)},function(e){var o=e.theme,g=e.paddingLeft;return Object(v.a)("padding-left",g,o)},function(e){var o=e.theme,g=e.marginLeft;return Object(v.a)("margin-left",g,o)},function(e){var o=e.theme,g=e.marginRight;return Object(v.a)("margin-right",g,o)},function(e){var o=e.theme,g=e.marginTop;return Object(v.a)("margin-top",g,o)},function(e){var o=e.theme,g=e.marginBottom;return Object(v.a)("margin-bottom",g,o)},function(e){var o=e.theme;return e.hiddenS?"".concat(o.mediaQueries.tablet," { display: none; }"):void 0},function(e){var o=e.theme;return e.hiddenXS?"".concat(o.mediaQueries.mobile," { display: none; }"):void 0},function(e){var o=e.theme,g=e.hasRadius,z=e.borderRadius;return g?o.borderRadius:z},function(e){return e.borderStyle},function(e){return e.borderWidth},function(e){var o=e.borderColor;return e.theme.colors[o]},function(e){var o=e.theme,g=e.borderColor,z=e.borderStyle,W=e.borderWidth;if(g&&!z&&!W)return"1px solid ".concat(o.colors[g])},function(e){var o=e.theme,g=e.shadow;return o.shadows[g]},function(e){return e.pointerEvents},function(e){var o=e._hover,g=e.theme;return o?o(g):void 0},function(e){return e.display},function(e){return e.position},function(e){var o=e.left;return e.theme.spaces[o]||o},function(e){var o=e.right;return e.theme.spaces[o]||o},function(e){var o=e.top;return e.theme.spaces[o]||o},function(e){var o=e.bottom;return e.theme.spaces[o]||o},function(e){return e.zIndex},function(e){return e.overflow},function(e){return e.cursor},function(e){var o=e.width;return e.theme.spaces[o]||o},function(e){var o=e.maxWidth;return e.theme.spaces[o]||o},function(e){var o=e.minWidth;return e.theme.spaces[o]||o},function(e){var o=e.height;return e.theme.spaces[o]||o},function(e){var o=e.maxHeight;return e.theme.spaces[o]||o},function(e){var o=e.minHeight;return e.theme.spaces[o]||o},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});O.defaultProps=B,O.propTypes=L},7:function(t,b,r){"use strict";var a=r(10),n=r.n(a),c=r(13),s=r.n(c);b.a=function(m,v,h){var E=v;if(Array.isArray(v)||s()(v)!=="object"||(E=[v==null?void 0:v.desktop,v==null?void 0:v.tablet,v==null?void 0:v.mobile]),E!==void 0){if(Array.isArray(E)){var R=E,l=n()(R,3),S=l[0],B=l[1],L=l[2],y="".concat(m,": ").concat(h.spaces[S],";");return B!==void 0&&(y+="".concat(h.mediaQueries.tablet,`{
98
+ `).concat(m,": ").concat(h.spaces[B],`;
99
+ }`)),L!==void 0&&(y+="".concat(h.mediaQueries.mobile,`{
100
+ `).concat(m,": ").concat(h.spaces[L],`;
101
+ }`)),y}var O=h.spaces[E]||E;return"".concat(m,": ").concat(O,";")}}}})})},20782:(q,k,f)=>{"use strict";f.r(k),f.d(k,{ProvidersPage:()=>ye,default:()=>$e});var i=f(32735),F=f(5636),t=f(10938),b=f(23973),r=f.n(b),a=f(23940),n=f.n(a),c=f(16925),s=f(11856),m=f(16540),v=f(29270),h=f(53214),E=f(95602),R=f(28004),l=f(20763),S=f(95717),B=f.n(S),L=f(84968),y=f(5173),O=f(33234);const e={id:(0,O.OB)("PopUpForm.Providers.redirectURL.front-end.label"),defaultMessage:"The redirect URL to your front-end app"},o={id:"http://www.client-app.com",defaultMessage:"http://www.client-app.com"},g={id:(0,O.OB)("PopUpForm.Providers.enabled.description"),defaultMessage:"If disabled, users won't be able to use this provider."},z={id:(0,O.OB)("PopUpForm.Providers.enabled.label"),defaultMessage:"Enable"},W={id:(0,O.OB)("PopUpForm.Providers.key.label"),defaultMessage:"Client ID"},U={id:(0,O.OB)("PopUpForm.Providers.redirectURL.label"),defaultMessage:"The redirect URL to add in your {provider} application configurations"},N={id:(0,O.OB)("PopUpForm.Providers.key.placeholder"),defaultMessage:"TEXT"},G={id:(0,O.OB)("PopUpForm.Providers.secret.label"),defaultMessage:"Client Secret"},Y={email:{form:[[{intlLabel:z,name:"enabled",type:"bool",description:g,size:6}]],schema:y.Ry().shape({enabled:y.Xg().required(t.translatedErrors.required)})},providers:{form:[[{intlLabel:z,name:"enabled",type:"bool",description:g,size:6,validations:{required:!0}}],[{intlLabel:W,name:"key",type:"text",placeholder:N,size:12,validations:{required:!0}}],[{intlLabel:G,name:"secret",type:"text",placeholder:N,size:12,validations:{required:!0}}],[{intlLabel:e,placeholder:o,name:"callback",type:"text",size:12,validations:{required:!0}}],[{intlLabel:U,name:"noName",type:"text",validations:{},size:12,disabled:!0}]],schema:y.Ry().shape({enabled:y.Xg().required(t.translatedErrors.required),key:y.Z_().when("enabled",{is:!0,then:y.Z_().required(t.translatedErrors.required),otherwise:y.Z_()}),secret:y.Z_().when("enabled",{is:!0,then:y.Z_().required(t.translatedErrors.required),otherwise:y.Z_()}),callback:y.Z_().when("enabled",{is:!0,then:y.Z_().required(t.translatedErrors.required),otherwise:y.Z_()})})},providersWithSubdomain:{form:[[{intlLabel:z,name:"enabled",type:"bool",description:g,size:6,validations:{required:!0}}],[{intlLabel:W,name:"key",type:"text",placeholder:N,size:12,validations:{required:!0}}],[{intlLabel:G,name:"secret",type:"text",placeholder:N,size:12,validations:{required:!0}}],[{intlLabel:{id:(0,O.OB)("PopUpForm.Providers.subdomain.label"),defaultMessage:"Host URI (Subdomain)"},name:"subdomain",type:"text",placeholder:{id:(0,O.OB)("PopUpForm.Providers.subdomain.placeholder"),defaultMessage:"my.subdomain.com"},size:12,validations:{required:!0}}],[{intlLabel:e,placeholder:o,name:"callback",type:"text",size:12,validations:{required:!0}}],[{intlLabel:U,name:"noName",type:"text",validations:{},size:12,disabled:!0}]],schema:y.Ry().shape({enabled:y.Xg().required(t.translatedErrors.required),key:y.Z_().when("enabled",{is:!0,then:y.Z_().required(t.translatedErrors.required),otherwise:y.Z_()}),secret:y.Z_().when("enabled",{is:!0,then:y.Z_().required(t.translatedErrors.required),otherwise:y.Z_()}),subdomain:y.Z_().when("enabled",{is:!0,then:y.Z_().required(t.translatedErrors.required),otherwise:y.Z_()}),callback:y.Z_().when("enabled",{is:!0,then:y.Z_().required(t.translatedErrors.required),otherwise:y.Z_()})})}};var Oe=(d,u,p)=>new Promise((C,T)=>{var A=M=>{try{I(p.next(M))}catch(x){T(x)}},w=M=>{try{I(p.throw(M))}catch(x){T(x)}},I=M=>M.done?C(M.value):Promise.resolve(M.value).then(A,w);I((p=p.apply(d,u)).next())});const xe=d=>Oe(void 0,null,function*(){try{const{data:u}=yield O.be.get((0,O.Gc)("providers"));return u}catch(u){throw d({type:"warning",message:{id:"notification.error"}}),new Error("error")}}),Ee=d=>O.be.put((0,O.Gc)("providers"),d);var Me=f(92891);const Te=d=>(0,Me.sortBy)(Object.keys(d).reduce((u,p)=>{const{icon:C,enabled:T,subdomain:A}=d[p],w=C==="envelope"?["fas","envelope"]:["fab",C];return A!==void 0?u.push({name:p,icon:w,enabled:T,subdomain:A}):u.push({name:p,icon:w,enabled:T}),u},[]),"name");var se=f(8091),le=f(44526),Se=f(90662),de=f(71657),ue=f(78330),Q=f(4122),Re=f(60216),P=f.n(Re),we=f(83281),je=f(63865),Be=f(37178),Le=Object.defineProperty,ce=Object.getOwnPropertySymbols,Ce=Object.prototype.hasOwnProperty,Ie=Object.prototype.propertyIsEnumerable,pe=(d,u,p)=>u in d?Le(d,u,{enumerable:!0,configurable:!0,writable:!0,value:p}):d[u]=p,J=(d,u)=>{for(var p in u||(u={}))Ce.call(u,p)&&pe(d,p,u[p]);if(ce)for(var p of ce(u))Ie.call(u,p)&&pe(d,p,u[p]);return d};const _=({description:d,disabled:u,intlLabel:p,error:C,name:T,onChange:A,placeholder:w,providerToEditName:I,type:M,value:x})=>{const{formatMessage:Z}=(0,F.useIntl)(),H=T==="noName"?`${strapi.backendURL}/api/connect/${I}/callback`:x,V=Z({id:p.id,defaultMessage:p.defaultMessage},J({provider:I},p.values)),D=d?Z({id:d.id,defaultMessage:d.defaultMessage},J({provider:I},d.values)):"";if(M==="bool")return i.createElement(je.ToggleInput,{"aria-label":T,checked:x,disabled:u,hint:D,label:V,name:T,offLabel:Z({id:"app.components.ToggleCheckbox.off-label",defaultMessage:"Off"}),onLabel:Z({id:"app.components.ToggleCheckbox.on-label",defaultMessage:"On"}),onChange:X=>{A({target:{name:T,value:X.target.checked}})}});const re=w?Z({id:w.id,defaultMessage:w.defaultMessage},J({},w.values)):"",ne=C?Z({id:C,defaultMessage:C}):"";return i.createElement(Be.TextInput,{"aria-label":T,disabled:u,error:ne,label:V,name:T,onChange:A,placeholder:re,type:M,value:H})};_.defaultProps={description:null,disabled:!1,error:"",placeholder:null,value:""},_.propTypes={description:P().shape({id:P().string.isRequired,defaultMessage:P().string.isRequired,values:P().object}),disabled:P().bool,error:P().string,intlLabel:P().shape({id:P().string.isRequired,defaultMessage:P().string.isRequired,values:P().object}).isRequired,name:P().string.isRequired,onChange:P().func.isRequired,placeholder:P().shape({id:P().string.isRequired,defaultMessage:P().string.isRequired,values:P().object}),providerToEditName:P().string.isRequired,type:P().string.isRequired,value:P().oneOfType([P().bool,P().string])};const Ae=_;var Fe=Object.defineProperty,Ue=Object.defineProperties,Ze=Object.getOwnPropertyDescriptors,fe=Object.getOwnPropertySymbols,De=Object.prototype.hasOwnProperty,ze=Object.prototype.propertyIsEnumerable,me=(d,u,p)=>u in d?Fe(d,u,{enumerable:!0,configurable:!0,writable:!0,value:p}):d[u]=p,ke=(d,u)=>{for(var p in u||(u={}))De.call(u,p)&&me(d,p,u[p]);if(fe)for(var p of fe(u))ze.call(u,p)&&me(d,p,u[p]);return d},Ne=(d,u)=>Ue(d,Ze(u));const ee=({headerBreadcrumbs:d,initialData:u,isSubmiting:p,layout:C,isOpen:T,onSubmit:A,onToggle:w,providerToEditName:I})=>{const{formatMessage:M}=(0,F.useIntl)();return T?i.createElement(Q.ModalLayout,{onClose:w,labelledBy:"title"},i.createElement(Q.ModalHeader,null,i.createElement(de.Breadcrumbs,{label:d.join(", ")},d.map(x=>i.createElement(de.Crumb,{key:x},x)))),i.createElement(we.Formik,{onSubmit:x=>A(x),initialValues:u,validationSchema:C.schema,validateOnChange:!1},({errors:x,handleChange:Z,values:H})=>i.createElement(t.Form,null,i.createElement(Q.ModalBody,null,i.createElement(Se.Stack,{spacing:1},i.createElement(ue.Grid,{gap:5},C.form.map(V=>V.map(D=>i.createElement(ue.GridItem,{key:D.name,col:D.size,xs:12},i.createElement(Ae,Ne(ke({},D),{error:x[D.name],onChange:Z,value:H[D.name],providerToEditName:I})))))))),i.createElement(Q.ModalFooter,{startActions:i.createElement(le.Button,{variant:"tertiary",onClick:w,type:"button"},M({id:"app.components.Button.cancel",defaultMessage:"Cancel"})),endActions:i.createElement(i.Fragment,null,i.createElement(le.Button,{type:"submit",loading:p},M({id:"global.save",defaultMessage:"Save"})))})))):null};ee.defaultProps={initialData:null,providerToEditName:null},ee.propTypes={headerBreadcrumbs:P().arrayOf(P().string).isRequired,initialData:P().object,layout:P().shape({form:P().arrayOf(P().array),schema:P().object}).isRequired,isOpen:P().bool.isRequired,isSubmiting:P().bool.isRequired,onSubmit:P().func.isRequired,onToggle:P().func.isRequired,providerToEditName:P().string};const We=ee;var He=Object.defineProperty,qe=Object.defineProperties,Ve=Object.getOwnPropertyDescriptors,ve=Object.getOwnPropertySymbols,Xe=Object.prototype.hasOwnProperty,Ge=Object.prototype.propertyIsEnumerable,he=(d,u,p)=>u in d?He(d,u,{enumerable:!0,configurable:!0,writable:!0,value:p}):d[u]=p,te=(d,u)=>{for(var p in u||(u={}))Xe.call(u,p)&&he(d,p,u[p]);if(ve)for(var p of ve(u))Ge.call(u,p)&&he(d,p,u[p]);return d},Qe=(d,u)=>qe(d,Ve(u)),ge=(d,u,p)=>new Promise((C,T)=>{var A=M=>{try{I(p.next(M))}catch(x){T(x)}},w=M=>{try{I(p.throw(M))}catch(x){T(x)}},I=M=>M.done?C(M.value):Promise.resolve(M.value).then(A,w);I((p=p.apply(d,u)).next())});const ye=()=>{const{formatMessage:d}=(0,F.useIntl)();(0,t.useFocusWhenNavigate)();const{notifyStatus:u}=(0,v.useNotifyAT)(),p=(0,L.useQueryClient)(),{trackUsage:C}=(0,t.useTracking)(),T=(0,i.useRef)(C),[A,w]=(0,i.useState)(!1),[I,M]=(0,i.useState)(!1),[x,Z]=(0,i.useState)(null),H=(0,t.useNotification)(),{lockApp:V,unlockApp:D}=(0,t.useOverlayBlocker)(),re=(0,i.useMemo)(()=>({update:se.Z.updateProviders}),[]),{isLoading:ne,allowedActions:{canUpdate:X}}=(0,t.useRBAC)(re),{isLoading:Ke,data:$,isFetching:Ye}=(0,L.useQuery)("get-providers",()=>xe(H),{onSuccess:()=>{u(d({id:(0,O.OB)("Providers.data.loaded"),defaultMessage:"Providers have been loaded"}))},initialData:{}}),Je=Ke||Ye,_e=(0,L.useMutation)(Ee,{onSuccess:()=>ge(void 0,null,function*(){yield p.invalidateQueries("get-providers"),H({type:"info",message:{id:(0,O.OB)("notification.success.submit")}}),T.current("didEditAuthenticationProvider"),M(!1),oe(),D()}),onError:()=>{H({type:"warning",message:{id:"notification.error"}}),D(),M(!1)},refetchActive:!1}),K=(0,i.useMemo)(()=>Te($),[$]),et=K.length,be=(0,i.useMemo)(()=>{if(!x)return!1;const j=K.find(ae=>ae.name===x);return r()(j,"subdomain")},[K,x]),tt=d({id:(0,O.OB)("HeaderNav.link.providers"),defaultMessage:"Providers"}),rt=(0,i.useMemo)(()=>x==="email"?Y.email:be?Y.providersWithSubdomain:Y.providers,[x,be]),oe=()=>{w(j=>!j)},Pe=j=>{X&&(Z(j.name),oe())},nt=j=>ge(void 0,null,function*(){M(!0),V(),T.current("willEditAuthenticationProvider");const ae=Qe(te({},$),{[x]:j});_e.mutate({providers:ae})});return i.createElement(s.Layout,null,i.createElement(t.SettingsPageTitle,{name:tt}),i.createElement(m.Main,null,i.createElement(s.HeaderLayout,{title:d({id:(0,O.OB)("HeaderNav.link.providers"),defaultMessage:"Providers"})}),Je||ne?i.createElement(t.LoadingIndicatorPage,null):i.createElement(s.ContentLayout,null,i.createElement(h.Table,{colCount:4,rowCount:et+1},i.createElement(h.Thead,null,i.createElement(h.Tr,null,i.createElement(h.Th,null,i.createElement(E.Typography,{variant:"sigma",textColor:"neutral600"},i.createElement(R.VisuallyHidden,null,d({id:(0,O.OB)("Providers.image"),defaultMessage:"Image"})))),i.createElement(h.Th,null,i.createElement(E.Typography,{variant:"sigma",textColor:"neutral600"},d({id:"global.name",defaultMessage:"Name"}))),i.createElement(h.Th,null,i.createElement(E.Typography,{variant:"sigma",textColor:"neutral600"},d({id:(0,O.OB)("Providers.status"),defaultMessage:"Status"}))),i.createElement(h.Th,null,i.createElement(E.Typography,{variant:"sigma"},i.createElement(R.VisuallyHidden,null,d({id:"global.settings",defaultMessage:"Settings"})))))),i.createElement(h.Tbody,null,K.map(j=>i.createElement(h.Tr,te({key:j.name},(0,t.onRowClick)({fn:()=>Pe(j),condition:X})),i.createElement(h.Td,{width:""},i.createElement(c.G,{icon:j.icon})),i.createElement(h.Td,{width:"45%"},i.createElement(E.Typography,{fontWeight:"semiBold",textColor:"neutral800"},j.name)),i.createElement(h.Td,{width:"65%"},i.createElement(E.Typography,{textColor:j.enabled?"success600":"danger600","data-testid":`enable-${j.name}`},j.enabled?d({id:"global.enabled",defaultMessage:"Enabled"}):d({id:"global.disabled",defaultMessage:"Disabled"}))),i.createElement(h.Td,te({},t.stopPropagation),X&&i.createElement(l.IconButton,{onClick:()=>Pe(j),noBorder:!0,icon:i.createElement(B(),null),label:"Edit"})))))))),i.createElement(We,{initialData:$[x],isOpen:A,isSubmiting:I,layout:rt,headerBreadcrumbs:[d({id:(0,O.OB)("PopUpForm.header.edit.providers"),defaultMessage:"Edit Provider"}),n()(x)],onToggle:oe,onSubmit:nt,providerToEditName:x}))},$e=()=>i.createElement(t.CheckPagePermissions,{permissions:se.Z.readProviders},i.createElement(ye,null))},15506:(q,k,f)=>{"use strict";f.d(k,{Z:()=>n});var i=f(43653),F=f.n(i),t=f(10938),b=f.n(t),r=(c,s,m)=>new Promise((v,h)=>{var E=S=>{try{l(m.next(S))}catch(B){h(B)}},R=S=>{try{l(m.throw(S))}catch(B){h(B)}},l=S=>S.done?v(S.value):Promise.resolve(S.value).then(E,R);l((m=m.apply(c,s)).next())});const a=F().create({baseURL:"http://localhost:1337"});a.interceptors.request.use(c=>r(void 0,null,function*(){return c.headers={Authorization:`Bearer ${t.auth.getToken()}`,Accept:"application/json","Content-Type":"application/json"},c}),c=>{Promise.reject(c)}),a.interceptors.response.use(c=>c,c=>{var s;throw((s=c.response)==null?void 0:s.status)===401&&(t.auth.clearAppStorage(),window.location.reload()),c});const n=a},33234:(q,k,f)=>{"use strict";f.d(k,{be:()=>i.Z,YX:()=>b,Gc:()=>n,OB:()=>c.Z});var i=f(15506),F=f(92891);const b=s=>Object.keys(s).reduce((m,v)=>{const h=s[v].controllers,E=Object.keys(h).reduce((R,l)=>((0,F.isEmpty)(h[l])||(R[l]=h[l]),R),{});return(0,F.isEmpty)(E)||(m[v]={controllers:E}),m},{});var r=f(42296);const n=s=>`/${r.Z}/${s}`;var c=f(71810)}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[3278],{50576:n=>{n.exports=JSON.parse('{"Analytics":"Ph\xE2n T\xEDch","Auth.components.Oops.text":"T\xE0i kho\u1EA3n c\u1EE7a b\u1EA1n \u0111\xE3 b\u1ECB kho\xE1","Auth.components.Oops.text.admin":"N\u1EBFu c\xF3 s\u1EF1 nh\u1EA7m l\u1EABn, h\xE3y li\xEAn h\u1EC7 ng\u01B0\u1EDDi qu\u1EA3n tr\u1ECB","Auth.form.button.forgot-password":"G\u1EEDi Email","Auth.form.button.go-home":"QUAY V\u1EC0 TRANG CH\u1EE6","Auth.form.button.login":"\u0110\u0103ng nh\u1EADp","Auth.form.button.login.providers.error":"Kh\xF4ng th\u1EC3 k\u1EBFt n\u1ED1i b\u1EA1n v\u1EDBi d\u1ECBch v\u1EE5 \u0111\xE3 ch\u1ECDn.","Auth.form.button.login.strapi":"\u0110\u0103ng nh\u1EADp v\u1EDBi Strapi","Auth.form.button.password-recovery":"Kh\xF4i ph\u1EE5c m\u1EADt kh\u1EA9u","Auth.form.button.register":"S\u1EB5n s\xE0ng \u0111\u1EC3 b\u1EAFt \u0111\u1EA7u","Auth.form.confirmPassword.label":"Nh\u1EADp l\u1EA1i m\u1EADt kh\u1EA9u","Auth.form.currentPassword.label":"M\u1EADt kh\u1EA9u hi\u1EC7n t\u1EA1i","Auth.form.email.label":"Email","Auth.form.email.placeholder":"kai@doe.com","Auth.form.error.blocked":"T\xE0i kho\u1EA3n c\u1EE7a b\u1EA1n b\u1ECB kh\xF3a b\u1EDFi ng\u01B0\u1EDDi qu\u1EA3n tr\u1ECB.","Auth.form.error.code.provide":"M\xE3 \u0111\u01B0\u1EE3c cung c\u1EA5p kh\xF4ng ch\xEDnh x\xE1c.","Auth.form.error.confirmed":"T\xE0i kho\u1EA3n Email c\u1EE7a b\u1EA1n ch\u01B0a \u0111\u01B0\u1EE3c x\xE1c nh\u1EADn.","Auth.form.error.email.invalid":"Email sai.","Auth.form.error.email.provide":"Vui l\xF2ng cung c\u1EA5p t\xEAn \u0111\u0103ng nh\u1EADp ho\u1EB7c email.","Auth.form.error.email.taken":"Email \u0111\xE3 t\u1ED3n t\u1EA1i.","Auth.form.error.invalid":"\u0110\u1ECBnh danh ho\u1EB7c m\u1EADt kh\u1EA9u sai.","Auth.form.error.params.provide":"Tham s\u1ED1 \u0111\u01B0\u1EE3c cung c\u1EA5p kh\xF4ng ch\xEDnh x\xE1c.","Auth.form.error.password.format":"M\u1EADt kh\u1EA9u c\u1EE7a b\u1EA1n kh\xF4ng th\u1EC3 ch\u1EE9a k\xFD t\u1EF1 `$` h\u01A1n ba l\u1EA7n","Auth.form.error.password.local":"Ng\u01B0\u1EDDi d\xF9ng n\xE0y ch\u01B0a t\u1EEBng \u0111\u1EB7t m\u1EADt kh\u1EA9u c\u1EE5c b\u1ED9, vui l\xF2ng \u0111\u0103ng nh\u1EADp th\xF4ng qua nh\xE0 cung c\u1EA5p \u0111\xE3 d\xF9ng trong l\xFAc t\u1EA1o t\xE0i kho\u1EA3n ban \u0111\u1EA7u","Auth.form.error.password.matching":"M\u1EADt kh\u1EA9u kh\xF4ng kh\u1EDBp.","Auth.form.error.password.provide":"Vui l\xF2ng cung c\u1EA5p m\u1EADt kh\u1EA9u c\u1EE7a b\u1EA1n.","Auth.form.error.ratelimit":"Th\u1EED qu\xE1 nhi\u1EC1u l\u1EA7n, vui l\xF2ng th\u1EED l\u1EA1i sau m\u1ED9t ph\xFAt","Auth.form.error.user.not-exist":"Email n\xE0y ch\u01B0a t\u1ED3n t\u1EA1i.","Auth.form.error.username.taken":"T\xEAn \u0111\u0103ng nh\u1EADp \u0111\xE3 t\u1ED3n t\u1EA1i.","Auth.form.firstname.label":"H\u1ECD","Auth.form.firstname.placeholder":"v.d. Kai","Auth.form.forgot-password.email.label":"Nh\u1EADp email c\u1EE7a b\u1EA1n","Auth.form.forgot-password.email.label.success":"Email \u0111\xE3 g\u1EEDi th\xE0nh c\xF4ng \u0111\u1EBFn","Auth.form.lastname.label":"T\xEAn","Auth.form.lastname.placeholder":"v.d. Doe","Auth.form.password.hide-password":"\u1EA8n m\u1EADt kh\u1EA9u","Auth.form.password.hint":"M\u1EADt kh\u1EA9u ph\u1EA3i ch\u1EE9a \xEDt nh\u1EA5t 8 k\xFD t\u1EF1, 1 vi\u1EBFt hoa, 1 vi\u1EBFt th\u01B0\u1EDDng v\xE0 1 s\u1ED1","Auth.form.password.show-password":"Hi\u1EC3n th\u1ECB password","Auth.form.register.news.label":"C\u1EADp nh\u1EADt cho t\xF4i v\u1EC1 ch\u1EE9c n\u0103ng m\u1EDBi v\xE0 nh\u1EEFng c\u1EA3i thi\u1EC7n s\u1EAFp t\u1EDBi (th\xF4ng qua vi\u1EC7c n\xE0y b\u1EA1n \u0111\xE3 ch\u1EA5p nh\u1EADn {terms} v\xE0 {policy}).","Auth.form.register.subtitle":"Th\xF4ng tin c\u1EE7a b\u1EA1n ch\u1EC9 \u0111\u01B0\u1EE3c s\u1EED d\u1EE5ng \u0111\u1EC3 \u0111\u0103ng nh\u1EADp v\xE0o trang qu\u1EA3n tr\u1ECB. T\u1EA5t c\u1EA3 c\xE1c d\u1EEF li\u1EC7u \u0111\u01B0\u1EE3c l\u01B0u \u1EDF c\u01A1 s\u1EDF d\u1EEF li\u1EC7u c\u1EE7a b\u1EA1n.","Auth.form.rememberMe.label":"Nh\u1EDB t\xF4i","Auth.form.username.label":"T\xEAn \u0111\u0103ng nh\u1EADp","Auth.form.username.placeholder":"Kai Doe","Auth.form.welcome.subtitle":"\u0110\u0103ng nh\u1EADp v\xE0o t\xE0i kho\u1EA3n Strapi c\u1EE7a b\u1EA1n","Auth.form.welcome.title":"Ch\xE0o m\u1EEBng!","Auth.link.forgot-password":"Qu\xEAn m\u1EADt kh\u1EA9u?","Auth.link.ready":"S\u1EB5n s\xE0ng \u0111\u0103ng nh\u1EADp?","Auth.link.signin":"\u0110\u0103ng nh\u1EADp","Auth.link.signin.account":"\u0110\xE3 c\xF3 t\xE0i kho\u1EA3n?","Auth.login.sso.divider":"Ho\u1EB7c \u0111\u0103ng nh\u1EADp v\u1EDBi","Auth.login.sso.loading":"\u0110ang t\u1EA3i c\xE1c d\u1ECBch v\u1EE5 cung c\u1EA5p...","Auth.login.sso.subtitle":"\u0110\u0103ng nh\u1EADp qua SSO","Auth.privacy-policy-agreement.policy":"ch\xEDnh s\xE1ch b\u1EA3o m\u1EADt","Auth.privacy-policy-agreement.terms":"c\xE1c \u0111i\u1EC1u kho\u1EA3n","Auth.reset-password.title":"\u0110\u1EB7t l\u1EA1i m\u1EADt kh\u1EA9u","Content Manager":"Qu\u1EA3n L\xFD N\u1ED9i Dung","Documentation":"T\xE0i li\u1EC7u","Email":"Email","Files Upload":"T\u1EA3i T\xE2p Tin L\xEAn","HomePage.helmet.title":"Trang ch\u1EE7","HomePage.roadmap":"Xem l\u1ED9 tr\xECnh c\u1EE7a ch\xFAng t\xF4i","HomePage.welcome.congrats":"Ch\xFAc m\u1EEBng!","HomePage.welcome.congrats.content":"B\u1EA1n \u0111\xE3 \u0111\u0103ng nh\u1EADp nh\u01B0 l\xE0 ng\u01B0\u1EDDi qu\u1EA3n tr\u1ECB \u0111\u1EA7u ti\xEAn. \u0110\u1EC3 kh\xE1m ph\xE1 nh\u1EEFng t\xEDnh n\u0103ng m\u1EA1nh m\u1EBD \u0111\u01B0\u1EE3c cung c\u1EA5p b\u1EDFi Strapi.","New entry":"B\u1EA3n ghi m\u1EDBi","Password":"M\u1EADt Kh\u1EA9u","Provider":"Nh\xE0 Cung C\u1EA5p","ResetPasswordToken":"C\xE0i L\u1EA1i Chu\u1ED7i Kh\xF3a M\u1EADt Kh\u1EA9u","Role":"Vai tr\xF2","Username":"T\xEAn \u0111\u0103ng nh\u1EADp","Users":"Ng\u01B0\u1EDDi d\xF9ng","Users & Permissions":"Ng\u01B0\u1EDDi d\xF9ng v\xE0 Ph\xE2n quy\u1EC1n","app.components.BlockLink.code":"Code v\xED d\u1EE5","app.components.Button.cancel":"H\u1EE7y b\u1ECF","app.components.ComingSoonPage.comingSoon":"S\u1EAFp c\xF3","app.components.DownloadInfo.download":"\u0110ang t\u1EA3i v\u1EC1","app.components.DownloadInfo.text":"Vi\u1EC7c n\xE0y c\xF3 th\u1EC3 t\u1ED1n m\u1ED9t ph\xFAt. C\u1EA3m \u01A1n b\u1EA1n v\xEC s\u1EF1 ki\xEAn nh\u1EABn.","app.components.EmptyAttributes.title":"Ch\u01B0a c\xF3 tr\u01B0\u1EDDng nh\u1EADp li\u1EC7u n\xE0o","app.components.HomePage.button.blog":"XEM TH\xCAM TR\xCAN BLOG","app.components.HomePage.community":"T\xECm c\u1ED9ng \u0111\u1ED3ng tr\xEAn web","app.components.HomePage.community.content":"Th\u1EA3o lu\u1EADn v\u1EDBi th\xE0nh vi\xEAn, ng\u01B0\u1EDDi \u0111\xF3ng g\xF3p v\xE0 l\u1EADp tr\xECnh vi\xEAn tr\xEAn nh\u1EEFng k\xEAnh kh\xE1c nhau.","app.components.HomePage.welcome":"Ch\xE0o m\u1EEBng b\u1EA1n \u0111\xE3 tham gia \u{1F44B}","app.components.HomePage.welcome.again":"Ch\xE0o m\u1EEBng \u{1F44B}","app.components.HomePage.welcomeBlock.content":"Ch\xFAng t\xF4i h\u1EA1nh ph\xFAc khi c\xF3 b\u1EA1n l\xE0 m\u1ED9t ph\u1EA7n c\u1EE7a c\u1ED9ng \u0111\u1ED3ng. Ch\xFAng t\xF4i li\xEAn t\u1EE5c t\xECm ki\u1EBFm s\u1EF1 ph\u1EA3n h\u1ED3i, do \u0111\xF3 b\u1EA1n c\xF3 th\u1EC3 Li\xEAn h\u1EC7 tr\u1EF1c ti\u1EBFp v\u1EDBi ch\xFAng t\xF4i tr\xEAn ","app.components.HomePage.welcomeBlock.content.again":"Ch\xFAng t\xF4i hi v\u1ECDng b\u1EA1n c\xF3 ti\u1EBFn tri\u1EC3n tr\xEAn d\u1EF1 \xE1n c\u1EE7a b\u1EA1n... B\u1EA1n t\u1EF1 do \u0111\u1ECDc tin t\u1EE9c m\u1EDBi nh\u1EA5t v\u1EC1 Strapi. Ch\xFAng t\xF4i \u0111ang c\u1ED1 g\u1EAFng h\u1EBFt m\u1EE9c \u0111\u1EC3 c\u1EA3i thi\u1EC7n s\u1EA3n ph\u1EA9m d\u1EF1a tr\xEAn ph\u1EA3n h\u1ED3i c\u1EE7a b\u1EA1n.","app.components.HomePage.welcomeBlock.content.issues":"v\u1EA5n \u0111\u1EC1.","app.components.HomePage.welcomeBlock.content.raise":" ho\u1EB7c n\xEAu l\xEAn ","app.components.ImgPreview.hint":"K\xE9o v\xE0 th\u1EA3 t\u1EADp tin c\u1EE7a b\u1EA1n v\xE0o khu v\u1EF1c n\xE0y ho\u1EB7c {browse} \u0111\u1EC3 t\xECm t\u1EADp tin t\u1EA3i l\xEAn","app.components.ImgPreview.hint.browse":"duy\u1EC7t","app.components.InputFile.newFile":"Th\xEAm t\u1EADp tin m\u1EDBi","app.components.InputFileDetails.open":"M\u1EDF ra \u1EDF th\u1EBB m\u1EDBi","app.components.InputFileDetails.originalName":"T\xEAn g\u1ED1c:","app.components.InputFileDetails.remove":"Xo\xE1 t\u1EADp tin n\xE0y","app.components.InputFileDetails.size":"K\xEDch th\u01B0\u1EDBc:","app.components.InstallPluginPage.Download.description":"N\xF3 s\u1EBD t\u1ED1n m\u1ED9t v\xE0i gi\xE2y \u0111\u1EC3 t\u1EA3i v\u1EC1 v\xE0 c\xE0i \u0111\u1EB7t plugin.","app.components.InstallPluginPage.Download.title":"\u0110ang t\u1EA3i v\u1EC1...","app.components.InstallPluginPage.description":"M\u1EDF r\u1ED9ng \u1EE9ng d\u1EE5ng c\u1EE7a b\u1EA1n d\u1EC5 d\xE0ng","app.components.LeftMenuFooter.help":"Gi\xFAp \u0111\u1EE1","app.components.LeftMenuFooter.poweredBy":"Cung c\u1EA5p b\u1EDFi ","app.components.LeftMenuLinkContainer.configuration":"C\xE1c c\u1EA5u h\xECnh","app.components.LeftMenuLinkContainer.general":"Chung","app.components.LeftMenuLinkContainer.noPluginsInstalled":"Ch\u01B0a c\xF3 plugins n\xE0o \u0111\u01B0\u1EE3c c\xE0i \u0111\u1EB7t","app.components.LeftMenuLinkContainer.plugins":"Plugins","app.components.ListPluginsPage.description":"Danh s\xE1ch plugins \u0111\xE3 c\xE0i trong d\u1EF1 \xE1n.","app.components.ListPluginsPage.helmet.title":"Danh s\xE1ch plugins","app.components.Logout.logout":"\u0110\u0103ng xu\u1EA5t","app.components.Logout.profile":"H\u1ED3 s\u01A1","app.components.NotFoundPage.back":"Tr\u1EDF v\u1EC1 trang ch\u1EE7","app.components.NotFoundPage.description":"Kh\xF4ng T\xECm Th\u1EA5y","app.components.Official":"Ch\xEDnh Th\u1EE9c","app.components.Onboarding.label.completed":"% \u0111\xE3 ho\xE0n th\xE0nh","app.components.Onboarding.title":"Videos B\u1EAFt \u0110\u1EA7u","app.components.PluginCard.Button.label.download":"T\u1EA3i v\u1EC1","app.components.PluginCard.Button.label.install":"\u0110\xE3 \u0111\u01B0\u1EE3c c\xE0i \u0111\u1EB7t","app.components.PluginCard.PopUpWarning.install.impossible.autoReload.needed":"Ch\u1EE9c n\u0103ng autoReload kh\xF4ng ho\u1EA1t \u0111\u1ED9ng. Vui l\xF2ng ch\u1EA1y \u1EE9ng d\u1EE5ng c\u1EE7a b\u1EA1n v\u1EDBi `yarn develop`.","app.components.PluginCard.PopUpWarning.install.impossible.confirm":"T\xF4i hi\u1EC3u!","app.components.PluginCard.PopUpWarning.install.impossible.environment":"V\xEC nh\u1EEFng l\xFD do b\u1EA3o m\u1EADt, ch\u1EC9 m\u1ED9t plugin c\xF3 th\u1EC3 \u0111\u01B0\u1EE3c t\u1EA3i v\u1EC1 trong m\xF4i tr\u01B0\u1EDDng ph\xE1t tri\u1EC3n.","app.components.PluginCard.PopUpWarning.install.impossible.title":"T\u1EA3i v\u1EC1 kh\xF4ng kh\u1EA3 thi","app.components.PluginCard.compatible":"T\u01B0\u01A1ng th\xEDch v\u1EDBi \u1EE9ng d\u1EE5ng c\u1EE7a b\u1EA1n","app.components.PluginCard.compatibleCommunity":"T\u01B0\u01A1ng th\xEDch v\u1EDBi c\u1ED9ng \u0111\u1ED3ng","app.components.PluginCard.more-details":"Th\xEAm chi ti\u1EBFt","app.components.listPlugins.button":"Th\xEAm m\u1EDBi Plugin","app.components.listPlugins.title.none":"Ch\u01B0a c\xF3 plugins n\xE0o \u0111\u01B0\u1EE3c c\xE0i \u0111\u1EB7t","app.components.listPluginsPage.deletePlugin.error":"M\u1ED9t l\u1ED7i x\u1EA3y ra trong khi g\u1EE1 b\u1ECF plugin","app.containers.App.notification.error.init":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi g\u1EEDi y\xEAu c\u1EA7u \u0111\u1EBFn API","app.utils.SelectOption.defaultMessage":" ","app.utils.defaultMessage":" ","app.utils.placeholder.defaultMessage":" ","components.AutoReloadBlocker.description":"Ch\u1EA1y Strapi v\u1EDBi m\u1ED9t trong c\xE1c l\u1EC7nh sau:","components.AutoReloadBlocker.header":"T\xEDnh n\u0103ng T\u1EA3i l\u1EA1i b\u1ECB b\u1EAFt bu\u1ED9c cho plugin n\xE0y.","components.ErrorBoundary.title":"\u0110i\u1EC1u g\xEC \u0111\xF3 kh\xF4ng \u1ED5n...","components.Input.error.attribute.key.taken":"Gi\xE1 tr\u1ECB n\xE0y \u0111\xE3 t\u1ED3n t\u1EA1i","components.Input.error.attribute.sameKeyAndName":"Kh\xF4ng th\u1EC3 b\u1EB1ng nhau","components.Input.error.attribute.taken":"Tr\u01B0\u1EDDng nh\u1EADp li\u1EC7u n\xE0y \u0111\xE3 t\u1ED3n t\u1EA1i","components.Input.error.contentTypeName.taken":"T\xEAn n\xE0y \u0111\xE3 t\u1ED3n t\u1EA1i","components.Input.error.custom-error":"{errorMessage} ","components.Input.error.password.noMatch":"M\u1EADt kh\u1EA9u kh\xF4ng kh\u1EDBp","components.Input.error.validation.email":"Email kh\xF4ng h\u1EE3p l\u1EC7","components.Input.error.validation.json":"\u0110\xE2y kh\xF4ng ph\u1EA3i l\xE0 \u0111\u1ECBnh d\u1EA1ng JSON","components.Input.error.validation.max":"Gi\xE1 tr\u1ECB qu\xE1 cao.","components.Input.error.validation.maxLength":"Gi\xE1 tr\u1ECB qu\xE1 d\xE0i.","components.Input.error.validation.min":"Gi\xE1 tr\u1ECB qu\xE1 th\u1EA5p.","components.Input.error.validation.minLength":"Gi\xE1 tr\u1ECB qu\xE1 ng\u1EAFn.","components.Input.error.validation.minSupMax":"Kh\xF4ng th\u1EC3 l\xE0 tr\xEAn m\u0169","components.Input.error.validation.regex":"Gi\xE1 tr\u1ECB kh\xF4ng kh\u1EDBi v\u1EDBi regex.","components.Input.error.validation.required":"Gi\xE1 tr\u1ECB n\xE0y b\u1EAFt bu\u1ED9c.","components.InputSelect.option.placeholder":"Ch\u1ECDn \u1EDF \u0111\xE2y","components.ListRow.empty":"Kh\xF4ng c\xF3 d\u1EEF li\u1EC7u \u0111\u1EC3 hi\u1EC3n th\u1ECB.","components.OverlayBlocker.description":"B\u1EA1n \u0111ang d\xF9ng m\u1ED9t t\xEDnh n\u0103ng m\xE0 n\xF3 c\u1EA7n ph\u1EA3i kh\u1EDFi \u0111\u1ED9ng l\u1EA1i m\xE1y ch\u1EE7. Vui l\xF2ng ch\u1EDD cho m\xE1y ch\u1EE7 kh\u1EDFi \u0111\u1ED9ng xong.","components.OverlayBlocker.description.serverError":"M\xE1y ch\u1EE7 n\xEAn \u0111\u01B0\u1EE3c kh\u1EDFi \u0111\u1ED9ng l\u1EA1i, vui l\xF2ng ki\u1EC3m tra nh\u1EADt k\xFD c\u1EE7a b\u1EA1n trong c\u1EEDa s\u1ED5 l\u1EC7nh","components.OverlayBlocker.title":"\u0110ang \u0111\u1EE3i kh\u1EDFi \u0111\u1ED9ng l\u1EA1i...","components.OverlayBlocker.title.serverError":"Vi\u1EC7c kh\u1EDFi \u0111\u1ED9ng l\u1EA1i t\u1ED1n nhi\u1EC1u th\u1EDDi gian h\u01A1n mong \u0111\u1EE3i","components.PageFooter.select":"b\u1EA3n ghi tr\xEAn trang","components.ProductionBlocker.description":"V\xEC l\xFD do an to\xE0n ch\xFAng t\xF4i ph\u1EA3i v\xF4 hi\u1EC7u ho\xE1 plugin trong c\xE1c m\xF4i tr\u01B0\u1EDDng kh\xE1c","components.ProductionBlocker.header":"Plugin n\xE0y ch\u1EC9 hi\u1EC7u l\u1EE9c trong m\xF4i tr\u01B0\u1EDDng ph\xE1t tri\u1EC3n","components.Wysiwyg.collapse":"Thu l\u1EA1i","components.Wysiwyg.selectOptions.H1":"Ti\xEAu \u0111\u1EC1 H1","components.Wysiwyg.selectOptions.H2":"Ti\xEAu \u0111\u1EC1 H2","components.Wysiwyg.selectOptions.H3":"Ti\xEAu \u0111\u1EC1 H3","components.Wysiwyg.selectOptions.H4":"Ti\xEAu \u0111\u1EC1 H4","components.Wysiwyg.selectOptions.H5":"Ti\xEAu \u0111\u1EC1 H5","components.Wysiwyg.selectOptions.H6":"Ti\xEAu \u0111\u1EC1 H6","components.Wysiwyg.selectOptions.title":"Th\xEAm m\u1ED9t ti\xEAu \u0111\u1EC1","components.WysiwygBottomControls.charactersIndicators":"k\xFD t\u1EF1","components.WysiwygBottomControls.fullscreen":"M\u1EDF r\u1ED9ng","components.WysiwygBottomControls.uploadFiles":"K\xE9o v\xE0 th\u1EA3 c\xE1c t\u1EADp tin, d\xE1n t\u1EEB b\u1ED9 nh\u1EDB t\u1EA1m hay {browse}.","components.WysiwygBottomControls.uploadFiles.browse":"ch\u1ECDn t\u1EC7p","components.popUpWarning.message":"B\u1EA1n c\xF3 ch\u1EAFc l\xE0 b\u1EA1n mu\u1ED1n xo\xE1 n\xF3?","components.popUpWarning.title":"Vui l\xF2ng x\xE1c nh\u1EADn","content-manager.EditRelations.title":"D\u1EEF Li\u1EC7u Quan H\u1EC7","content-manager.components.AddFilterCTA.add":"L\u1ECDc","content-manager.components.AddFilterCTA.hide":"L\u1ECDc","content-manager.components.DraggableAttr.edit":"Nh\u1EA5n \u0111\u1EC3 ch\u1EC9nh s\u1EEDa","content-manager.components.EmptyAttributesBlock.button":"\u0110\u1EBFn trang c\xE0i \u0111\u1EB7t","content-manager.components.EmptyAttributesBlock.description":"B\u1EA1n c\xF3 th\u1EC3 thay \u0111\u1ED5i c\xE0i \u0111\u1EB7t c\u1EE7a b\u1EA1n","content-manager.components.FilterOptions.button.apply":"\xC1p d\u1EE5ng","content-manager.components.FiltersPickWrapper.PluginHeader.actions.apply":"\xC1p d\u1EE5ng","content-manager.components.FiltersPickWrapper.PluginHeader.actions.clearAll":"X\xF3a t\u1EA5t c\u1EA3","content-manager.components.FiltersPickWrapper.PluginHeader.description":"C\xE0i \u0111\u1EB7t c\xE1c \u0111i\u1EC1u ki\u1EC7n \u0111\u1EC3 \xE1p d\u1EE5ng cho vi\u1EC7c l\u1ECDc c\xE1c b\u1EA3n ghi","content-manager.components.FiltersPickWrapper.PluginHeader.title.filter":"C\xE1c b\u1ED9 l\u1ECDc","content-manager.components.FiltersPickWrapper.hide":"\u1EA8n \u0111i","content-manager.components.LimitSelect.itemsPerPage":"S\u1ED1 l\u01B0\u1EE3ng b\u1EA3n ghi trong trang","content-manager.components.Search.placeholder":"T\xECm m\u1ED9t b\u1EA3n ghi...","content-manager.components.TableDelete.delete":"X\xF3a t\u1EA5t c\u1EA3","content-manager.components.TableDelete.deleteSelected":"X\xF3a \u0111\xE3 ch\u1ECDn","content-manager.components.TableEmpty.withFilters":"Kh\xF4ng c\xF3 {contentType} v\u1EDBi b\u1ED9 l\u1ECDc \u0111\u01B0\u1EE3c d\xF9ng","content-manager.components.TableEmpty.withSearch":"Kh\xF4ng c\xF3 {contentType} t\u01B0\u01A1ng \u1EE9ng v\u1EDBi t\xECm ki\u1EBFm ({search})...","content-manager.components.TableEmpty.withoutFilter":"Kh\xF4ng c\xF3 {contentType}...","content-manager.containers.Edit.Link.Layout":"C\u1EA5u h\xECnh b\u1ED1 c\u1EE5c","content-manager.containers.Edit.addAnItem":"Th\xEAm m\u1ED9t b\u1EA3n ghi...","content-manager.containers.Edit.clickToJump":"Nh\u1EA5n \u0111\u1EC3 nh\u1EA3y v\xE0o b\u1EA3n ghi","content-manager.containers.Edit.delete":"X\xF3a","content-manager.containers.Edit.editing":"\u0110\u0103ng s\u1EEDa...","content-manager.containers.Edit.pluginHeader.title.new":"T\u1EA1o m\u1ED9t B\u1EA3n ghi","content-manager.containers.Edit.reset":"L\xE0m l\u1EA1i","content-manager.containers.Edit.returnList":"Tr\u1EDF v\u1EC1 danh s\xE1ch","content-manager.containers.Edit.seeDetails":"Chi ti\u1EBFt","content-manager.containers.Edit.submit":"L\u01B0u","content-manager.containers.EditView.notification.errors":"B\u1EA3ng nh\u1EADp li\u1EC7u c\xF3 v\xE0i l\u1ED7i","content-manager.containers.Home.introduction":"\u0110\u1EC3 ch\u1EC9nh s\u1EEDa c\xE1c b\u1EA3n ghi c\u1EE7a b\u1EA1n, \u0111i \u0111\u1EBFn li\xEAn k\u1EBFt \u1EDF menu b\xEAn tr\xE1i. Plugin n\xE0y ch\u01B0a c\xF3 c\xE1ch th\xEDch h\u1EE3p \u0111\u1EC3 ch\u1EC9nh s\u1EEDa c\xE1c c\xE0i \u0111\u1EB7t v\xE0 n\xF3 v\u1EABn \u0111ang \u0111\u01B0\u1EE3c ph\xE1t tri\u1EC3n.","content-manager.containers.Home.pluginHeaderDescription":"Qu\u1EA3n l\xFD c\xE1c b\u1EA3n ghi th\xF4ng qua m\u1ED9t giao di\u1EC7n m\u1EA1nh v\xE0 \u0111\u1EB9p.","content-manager.containers.Home.pluginHeaderTitle":"Qu\u1EA3n L\xFD N\u1ED9i Dung","content-manager.containers.List.errorFetchRecords":"L\u1ED7i","content-manager.containers.ListPage.displayedFields":"C\xE1c tr\u01B0\u1EDDng \u0111\xE3 \u0111\u01B0\u1EE3c tr\xECnh b\xE0y","content-manager.containers.SettingPage.attributes":"C\xE1c tr\u01B0\u1EDDng thu\u1ED9c t\xEDnh","content-manager.containers.SettingPage.attributes.description":"\u0110\u1ECBnh ngh\u0129a th\u1EE9 t\u1EF1 c\xE1c thu\u1ED9c t\xEDnh","content-manager.containers.SettingPage.editSettings.description":"K\xE9o & th\u1EA3 c\xE1c tr\u01B0\u1EDDng \u0111\u1EC3 x\xE2y d\u1EF1ng b\u1ED1 c\u1EE5c","content-manager.containers.SettingPage.editSettings.entry.title":"T\xEAn b\u1EA3n ghi","content-manager.containers.SettingPage.editSettings.entry.title.description":"C\xE0i \u0111\u1EB7t tr\u01B0\u1EDDng \u0111\u01B0\u1EE3c tr\xECnh b\xE0y trong b\u1EA3n ghi c\u1EE7a b\u1EA1n","content-manager.containers.SettingPage.editSettings.title":"Ch\u1EC9nh s\u1EEDa hi\u1EC3n th\u1ECB (c\xE1c c\xE0i \u0111\u1EB7t)","content-manager.containers.SettingPage.layout":"B\u1ED1 c\u1EE5c","content-manager.containers.SettingPage.listSettings.title":"Hi\u1EC3n th\u1ECB danh s\xE1ch (c\xE1c c\xE0i \u0111\u1EB7t)","content-manager.containers.SettingPage.relations":"C\xE1c tr\u01B0\u1EDDng Quan H\u1EC7","content-manager.containers.SettingPage.settings":"C\xE1c c\xE0i \u0111\u1EB7t","content-manager.containers.SettingViewModel.pluginHeader.title":"Qu\u1EA3n L\xFD N\u1ED9i Dung - {name}","content-manager.containers.SettingsPage.Block.contentType.description":"C\u1EA5u h\xECnh c\xE1c c\xE0i \u0111\u1EB7t ri\xEAng","content-manager.containers.SettingsPage.Block.generalSettings.title":"Chung","content-manager.containers.SettingsView.list.title":"C\xE1c c\u1EA5u h\xECnh v\u1EC1 Tr\xECnh b\xE0y","content-manager.emptyAttributes.title":"Ch\u01B0a c\xF3 tr\u01B0\u1EDDng n\xE0o h\u1EBFt","content-manager.error.attribute.key.taken":"Gi\xE1 tr\u1ECB n\xE0y \u0111\xE3 t\u1ED3n t\u1EA1i","content-manager.error.attribute.sameKeyAndName":"Kh\xF4ng th\u1EC3 b\u1EB1ng nhau","content-manager.error.attribute.taken":"T\xEAn tr\u01B0\u1EDDng n\xE0y \u0111\xE3 t\u1ED3n t\u1EA1i","content-manager.error.contentTypeName.taken":"T\xEAn n\xE0y \u0111\xE3 t\u1ED3n t\u1EA1i","content-manager.error.model.fetch":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi l\u1EA5y v\u1EC1 c\u1EA5u h\xECnh n\u1ED9i dung.","content-manager.error.record.create":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi t\u1EA1o b\u1EA3n ghi.","content-manager.error.record.delete":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi xo\xE1 b\u1EA3n ghi.","content-manager.error.record.fetch":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi l\u1EA5y v\u1EC1 b\u1EA3n ghi.","content-manager.error.record.update":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi c\u1EADp nh\u1EADt b\u1EA3n ghi.","content-manager.error.records.count":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi l\u1EA5y v\u1EC1 s\u1ED1 l\u01B0\u1EE3ng b\u1EA3n ghi.","content-manager.error.records.fetch":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi l\u1EA5y v\u1EC1 c\xE1c b\u1EA3n ghi.","content-manager.error.schema.generation":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi qu\xE1 tr\xECnh t\u1EA1o ra l\u01B0\u1EE3c \u0111\u1ED3.","content-manager.error.validation.json":"\u0110\xE2y kh\xF4ng ph\u1EA3i l\xE0 \u0111\u1ECBnh d\u1EA1ng JSON","content-manager.error.validation.max":"Gi\xE1 tr\u1ECB qu\xE1 cao.","content-manager.error.validation.maxLength":"Gi\xE1 tr\u1ECB qu\xE1 d\xE0i.","content-manager.error.validation.min":"Gi\xE1 tr\u1ECB qu\xE1 th\u1EA5p.","content-manager.error.validation.minLength":"Gi\xE1 tr\u1ECB qu\xE1 ng\u1EAFn.","content-manager.error.validation.minSupMax":"Kh\xF4ng th\u1EC3 l\xE0 tr\xEAn m\u0169","content-manager.error.validation.regex":"Gi\xE1 tr\u1ECB kh\xF4ng kh\u1EDBi v\u1EDBi regex.","content-manager.error.validation.required":"Gi\xE1 tr\u1ECB n\xE0y b\u1EAFt bu\u1ED9c.","content-manager.form.Input.bulkActions":"K\xEDch ho\u1EA1t ho\u1EA1t \u0111\u1ED9ng g\u1ED9p","content-manager.form.Input.defaultSort":"Thu\u1ED9c t\xEDnh s\u1EAFp x\u1EBFp m\u1EB7c \u0111\u1ECBnh","content-manager.form.Input.description":"M\xF4 t\u1EA3","content-manager.form.Input.description.placeholder":"T\xEAn hi\u1EC3n th\u1ECB trong h\u1ED3 s\u01A1","content-manager.form.Input.editable":"Tr\u01B0\u1EDDng ch\u1EC9nh s\u1EEDa \u0111\u01B0\u1EE3c","content-manager.form.Input.filters":"K\xEDch ho\u1EA1t c\xE1c b\u1ED9 l\u1ECDc","content-manager.form.Input.label":"Nh\xE3n","content-manager.form.Input.label.inputDescription":"Gi\xE1 tr\u1ECB n\xE0y ghi \u0111\xE8 l\xEAn nh\xE3n \u0111\u01B0\u1EE3c tr\xECnh b\xE0y trong ph\u1EA7n \u0111\u1EA7u c\u1EE7a b\u1EA3ng","content-manager.form.Input.pageEntries":"B\u1EA3n ghi trong trang","content-manager.form.Input.placeholder":"Ch\u1ED7 ch\u1EDD gi\xE1 tr\u1ECB","content-manager.form.Input.placeholder.placeholder":"Gi\xE1 tr\u1ECB tuy\u1EC7t v\u1EDDi c\u1EE7a t\xF4i","content-manager.form.Input.search":"K\xEDch ho\u1EA1t t\xECm ki\u1EBFm","content-manager.form.Input.search.field":"K\xEDch ho\u1EA1t t\xECm ki\u1EBFm cho tr\u01B0\u1EDDng n\xE0y","content-manager.form.Input.sort.field":"K\xEDch ho\u1EA1t s\u1EAFp x\u1EBFp tr\xEAn tr\u01B0\u1EDDng n\xE0y","content-manager.form.Input.wysiwyg":"Tr\xECnh b\xE0y nh\u01B0 l\xE0 WYSIWYG","content-manager.global.displayedFields":"C\xE1c Tr\u01B0\u1EDDng \u0110\xE3 \u0110\u01B0\u1EE3c Tr\xECnh B\xE0y","content-manager.groups":"Nh\xF3m","content-manager.groups.numbered":"Nh\xF3m ({number})","content-manager.notification.error.displayedFields":"B\u1EA1n c\u1EA7n tr\xECnh b\xE0y \xEDt nh\u1EA5t m\u1ED9t tr\u01B0\u1EDDng","content-manager.notification.error.relationship.fetch":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi l\u1EA5y v\u1EC1 m\u1ED1i quan h\u1EC7.","content-manager.notification.info.SettingPage.disableSort":"B\u1EA1n c\u1EA7n c\xF3 m\u1ED9t thu\u1ED9c t\xEDnh \u0111\u01B0\u1EE3c ph\xE9p s\u1EAFp x\u1EBFp","content-manager.notification.info.minimumFields":"B\u1EA1n c\u1EA7n hi\u1EC3n th\u1ECB \xEDt nh\u1EA5t m\u1ED9t tr\u01B0\u1EDDng","content-manager.notification.upload.error":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra trong khi t\u1EA3i l\xEAn c\xE1c t\u1EADp tin c\u1EE7a b\u1EA1n","content-manager.pageNotFound":"Kh\xF4ng T\xECm Th\u1EA5y Trang","content-manager.plugin.description.long":"C\xE1ch nhanh \u0111\u1EC3 xem, s\u1EEDa v\xE0 xo\xE1 d\u1EEF li\u1EC7u trong c\u01A1 s\u1EDF d\u1EEF li\u1EC7u c\u1EE7a b\u1EA1n.","content-manager.plugin.description.short":"C\xE1ch nhanh \u0111\u1EC3 xem, s\u1EEDa v\xE0 xo\xE1 d\u1EEF li\u1EC7u trong c\u01A1 s\u1EDF d\u1EEF li\u1EC7u c\u1EE7a b\u1EA1n.","content-manager.popUpWarning.bodyMessage.contentType.delete":"B\u1EA1n c\xF3 ch\u1EAFc l\xE0 mu\u1ED1n xo\xE1 b\u1EA3n ghi n\xE0y kh\xF4ng?","content-manager.popUpWarning.bodyMessage.contentType.delete.all":"B\u1EA1n c\xF3 ch\u1EAFc l\xE0 mu\u1ED1n xo\xE1 c\xE1c b\u1EA3n ghi n\xE0y kh\xF4ng?","content-manager.popUpWarning.warning.cancelAllSettings":"B\u1EA1n c\xF3 ch\u1EAFc l\xE0 mu\u1ED1n h\u1EE7y b\u1ECF c\xE1c thay \u0111\u1ED5i c\u1EE7a b\u1EA1n?","content-manager.popUpWarning.warning.updateAllSettings":"N\xF3 s\u1EBD thay \u0111\u1ED5i t\u1EA5t c\u1EA3 c\xE0i \u0111\u1EB7t c\u1EE7a b\u1EA1n","content-manager.success.record.delete":"\u0110\xE3 xo\xE1","content-manager.success.record.save":"\u0110\xE3 l\u01B0u","form.button.done":"Ho\xE0n th\xE0nh","notification.error":"M\u1ED9t l\u1ED7i \u0111\xE3 x\u1EA3y ra","notification.error.layout":"Kh\xF4ng th\u1EC3 kh\xF4i ph\u1EE5c","notification.form.error.fields":"B\u1EA3ng nh\u1EADp li\u1EC7u c\xF3 v\xE0i l\u1ED7i","request.error.model.unknown":"C\u1EA5u tr\xFAc n\xE0y kh\xF4ng t\u1ED3n t\u1EA1i"}')}}]);
@@ -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:(V,z,p)=>{"use strict";V.exports=p(17173)},17173:function(V,z,p){(function(i,w){V.exports=w(p(32735),p(19615))})(this,function(i,w){return function(o){var b={};function n(a){if(b[a])return b[a].exports;var r=b[a]={i:a,l:!1,exports:{}};return o[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=o,n.c=b,n.d=function(a,r,u){n.o(a,r)||Object.defineProperty(a,r,{enumerable:!0,get:u})},n.r=function(a){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},n.t=function(a,r){if(1&r&&(a=n(a)),8&r||4&r&&typeof a=="object"&&a&&a.__esModule)return a;var u=Object.create(null);if(n.r(u),Object.defineProperty(u,"default",{enumerable:!0,value:a}),2&r&&typeof a!="string")for(var l in a)n.d(u,l,function(f){return a[f]}.bind(null,l));return u},n.n=function(a){var r=a&&a.__esModule?function(){return a.default}:function(){return a};return n.d(r,"a",r),r},n.o=function(a,r){return Object.prototype.hasOwnProperty.call(a,r)},n.p="",n(n.s=121)}({0:function(o,b,n){o.exports=n(19)()},1:function(o,b){o.exports=i},10:function(o,b,n){var a=n(25),r=n(26),u=n(22),l=n(27);o.exports=function(f,c){return a(f)||r(f,c)||u(f,c)||l()},o.exports.default=o.exports,o.exports.__esModule=!0},121:function(o,b,n){"use strict";n.r(b),n.d(b,"Switch",function(){return B});var a,r,u=n(5),l=n.n(u),f=n(4),c=n.n(f),m=n(3),E=n.n(m),C=n(1),s=n.n(C),y=n(0),S=n.n(y),k=n(2),L=n.n(k),D=n(9),e=n(6),t=["label","onChange","onLabel","offLabel","selected","visibleLabels"],d=L.a.div(a||(a=E()([`
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(O){return O.theme.colors.danger500},1.5,2.5,function(O){return O.visibleLabels?"1rem":0},function(O){return O.theme.colors.neutral0},function(O){return O.theme.spaces[1]},function(O){return O.theme.spaces[1]}),j=L.a.button(r||(r=E()([`
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
+ `])),d,function(O){return O.theme.colors.success500},d),B=s.a.forwardRef(function(O,_){var ee=O.label,ne=O.onChange,G=O.onLabel,$=O.offLabel,U=O.selected,Q=O.visibleLabels,te=c()(O,t);return s.a.createElement(j,l()({ref:_,role:"switch","aria-checked":U,"aria-label":ee,onClick:ne,visibleLabels:Q,type:"button"},te),s.a.createElement(D.Flex,null,s.a.createElement(d,null,s.a.createElement("span",null,G),s.a.createElement("span",null,$)),Q&&s.a.createElement(e.Box,{as:"span","aria-hidden":!0,paddingLeft:2,color:U?"success600":"danger600"},U?G:$)))});B.defaultProps={onLabel:"On",offLabel:"Off",visibleLabels:!1},B.propTypes={label:S.a.string.isRequired,offLabel:S.a.string,onChange:S.a.func.isRequired,onLabel:S.a.string,selected:S.a.bool.isRequired,visibleLabels:S.a.bool},B.displayName="Switch"},13:function(o,b){function n(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?(o.exports=n=function(r){return typeof r},o.exports.default=o.exports,o.exports.__esModule=!0):(o.exports=n=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},o.exports.default=o.exports,o.exports.__esModule=!0),n(a)}o.exports=n,o.exports.default=o.exports,o.exports.__esModule=!0},19:function(o,b,n){"use strict";var a=n(20);function r(){}function u(){}u.resetWarningCache=r,o.exports=function(){function l(m,E,C,s,y,S){if(S!==a){var k=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 k.name="Invariant Violation",k}}function f(){return l}l.isRequired=l;var c={array:l,bool:l,func:l,number:l,object:l,string:l,symbol:l,any:l,arrayOf:f,element:l,elementType:l,instanceOf:f,node:l,objectOf:f,oneOf:f,oneOfType:f,shape:f,exact:f,checkPropTypes:u,resetWarningCache:r};return c.PropTypes=c,c}},2:function(o,b){o.exports=w},20:function(o,b,n){"use strict";o.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},21:function(o,b){o.exports=function(n,a){(a==null||a>n.length)&&(a=n.length);for(var r=0,u=new Array(a);r<a;r++)u[r]=n[r];return u},o.exports.default=o.exports,o.exports.__esModule=!0},22:function(o,b,n){var a=n(21);o.exports=function(r,u){if(r){if(typeof r=="string")return a(r,u);var l=Object.prototype.toString.call(r).slice(8,-1);return l==="Object"&&r.constructor&&(l=r.constructor.name),l==="Map"||l==="Set"?Array.from(r):l==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l)?a(r,u):void 0}},o.exports.default=o.exports,o.exports.__esModule=!0},24:function(o,b){o.exports=function(n,a){if(n==null)return{};var r,u,l={},f=Object.keys(n);for(u=0;u<f.length;u++)r=f[u],a.indexOf(r)>=0||(l[r]=n[r]);return l},o.exports.default=o.exports,o.exports.__esModule=!0},25:function(o,b){o.exports=function(n){if(Array.isArray(n))return n},o.exports.default=o.exports,o.exports.__esModule=!0},26:function(o,b){o.exports=function(n,a){var r=n==null?null:typeof Symbol!="undefined"&&n[Symbol.iterator]||n["@@iterator"];if(r!=null){var u,l,f=[],c=!0,m=!1;try{for(r=r.call(n);!(c=(u=r.next()).done)&&(f.push(u.value),!a||f.length!==a);c=!0);}catch(E){m=!0,l=E}finally{try{c||r.return==null||r.return()}finally{if(m)throw l}}return f}},o.exports.default=o.exports,o.exports.__esModule=!0},27:function(o,b){o.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.`)},o.exports.default=o.exports,o.exports.__esModule=!0},3:function(o,b){o.exports=function(n,a){return a||(a=n.slice(0)),Object.freeze(Object.defineProperties(n,{raw:{value:Object.freeze(a)}}))},o.exports.default=o.exports,o.exports.__esModule=!0},4:function(o,b,n){var a=n(24);o.exports=function(r,u){if(r==null)return{};var l,f,c=a(r,u);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(r);for(f=0;f<m.length;f++)l=m[f],u.indexOf(l)>=0||Object.prototype.propertyIsEnumerable.call(r,l)&&(c[l]=r[l])}return c},o.exports.default=o.exports,o.exports.__esModule=!0},5:function(o,b){function n(){return o.exports=n=Object.assign||function(a){for(var r=1;r<arguments.length;r++){var u=arguments[r];for(var l in u)Object.prototype.hasOwnProperty.call(u,l)&&(a[l]=u[l])}return a},o.exports.default=o.exports,o.exports.__esModule=!0,n.apply(this,arguments)}o.exports=n,o.exports.default=o.exports,o.exports.__esModule=!0},6:function(o,b,n){"use strict";n.r(b),n.d(b,"Box",function(){return D});var a,r=n(3),u=n.n(r),l=n(2),f=n.n(l),c=n(7),m=n(1),E=n.n(m),C=n(0),s=n.n(C),y=function(e){return E.a.createElement("div",e)},S={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(){}},k={_hover:s.a.func,background:s.a.string,basis:s.a.oneOfType([s.a.string,s.a.string]),borderColor:s.a.string,children:s.a.oneOfType([s.a.node,s.a.string]),color:s.a.string,flex:s.a.oneOfType([s.a.string,s.a.string]),grow:s.a.oneOfType([s.a.string,s.a.string]),hasRadius:s.a.bool,hiddenS:s.a.bool,hiddenXS:s.a.bool,padding:s.a.oneOfType([s.a.number,s.a.arrayOf(s.a.number)]),paddingBottom:s.a.oneOfType([s.a.number,s.a.arrayOf(s.a.number)]),paddingLeft:s.a.oneOfType([s.a.number,s.a.arrayOf(s.a.number)]),paddingRight:s.a.oneOfType([s.a.number,s.a.arrayOf(s.a.number)]),paddingTop:s.a.oneOfType([s.a.number,s.a.arrayOf(s.a.number)]),shadow:s.a.string,shrink:s.a.oneOfType([s.a.string,s.a.string])};y.defaultProps=S,y.propTypes=k;var L={color:!0},D=f.a.div.withConfig({shouldForwardProp:function(e,t){return!L[e]&&t(e)}})(a||(a=u()([`
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,d=e.background;return t.colors[d]},function(e){var t=e.theme,d=e.color;return t.colors[d]},function(e){var t=e.theme,d=e.padding;return Object(c.a)("padding",d,t)},function(e){var t=e.theme,d=e.paddingTop;return Object(c.a)("padding-top",d,t)},function(e){var t=e.theme,d=e.paddingRight;return Object(c.a)("padding-right",d,t)},function(e){var t=e.theme,d=e.paddingBottom;return Object(c.a)("padding-bottom",d,t)},function(e){var t=e.theme,d=e.paddingLeft;return Object(c.a)("padding-left",d,t)},function(e){var t=e.theme,d=e.marginLeft;return Object(c.a)("margin-left",d,t)},function(e){var t=e.theme,d=e.marginRight;return Object(c.a)("margin-right",d,t)},function(e){var t=e.theme,d=e.marginTop;return Object(c.a)("margin-top",d,t)},function(e){var t=e.theme,d=e.marginBottom;return Object(c.a)("margin-bottom",d,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,d=e.hasRadius,j=e.borderRadius;return d?t.borderRadius:j},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,d=e.borderColor,j=e.borderStyle,B=e.borderWidth;if(d&&!j&&!B)return"1px solid ".concat(t.colors[d])},function(e){var t=e.theme,d=e.shadow;return t.shadows[d]},function(e){return e.pointerEvents},function(e){var t=e._hover,d=e.theme;return t?t(d):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});D.defaultProps=S,D.propTypes=k},7:function(o,b,n){"use strict";var a=n(10),r=n.n(a),u=n(13),l=n.n(u);b.a=function(f,c,m){var E=c;if(Array.isArray(c)||l()(c)!=="object"||(E=[c==null?void 0:c.desktop,c==null?void 0:c.tablet,c==null?void 0:c.mobile]),E!==void 0){if(Array.isArray(E)){var C=E,s=r()(C,3),y=s[0],S=s[1],k=s[2],L="".concat(f,": ").concat(m.spaces[y],";");return S!==void 0&&(L+="".concat(m.mediaQueries.tablet,`{
123
+ `).concat(f,": ").concat(m.spaces[S],`;
124
+ }`)),k!==void 0&&(L+="".concat(m.mediaQueries.mobile,`{
125
+ `).concat(f,": ").concat(m.spaces[k],`;
126
+ }`)),L}var D=m.spaces[E]||E;return"".concat(f,": ").concat(D,";")}}},9:function(o,b,n){"use strict";n.r(b),n.d(b,"Flex",function(){return e});var a,r=n(3),u=n.n(r),l=n(2),f=n.n(l),c=n(6),m=n(7),E=n(1),C=n.n(E),s=n(0),y=n.n(s),S=function(t){return C.a.createElement("div",t)},k={alignItems:"center",basis:void 0,direction:"row",gap:void 0,inline:!1,justifyContent:void 0,reverse:!1,wrap:void 0},L={alignItems:y.a.string,basis:y.a.oneOfType([y.a.string,y.a.number]),direction:y.a.string,gap:y.a.oneOfType([y.a.shape({desktop:y.a.number,mobile:y.a.number,tablet:y.a.number}),y.a.number,y.a.arrayOf(y.a.number),y.a.string]),inline:y.a.bool,justifyContent:y.a.string,reverse:y.a.bool,wrap:y.a.string};S.defaultProps=k,S.propTypes=L;var D={direction:!0},e=f()(c.Box).withConfig({shouldForwardProp:function(t,d){return!D[t]&&d(t)}})(a||(a=u()([`
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 d=t.gap,j=t.theme;return Object(m.a)("gap",d,j)},function(t){return t.justifyContent});e.defaultProps=k,e.propTypes=L}})})},54999:(V,z,p)=>{"use strict";p.r(z),p.d(z,{default:()=>Ee});var i=p(32735),w=p(10938),o=p(2805),b=p(5141),n=p(5636),a=p(11856),r=p(64354),u=p(19192),l=p(90662),f=p(20763),c=p(35980),m=p(53214),E=p(95602),C=p(44526),s=p(28004),y=p(55470),S=p(16540),k=p(29270),L=p(9808),D=p(59290),e=p.n(D),t=p(95717),d=p.n(t),j=p(76470),B=p.n(j),O=p(97042),_=p.n(O),ee=p(49415),ne=p(3040),G=p.n(ne);const $={webhooks:[],webhooksToDelete:[],webhookToDelete:null,loadingWebhooks:!0},Q=(x,v)=>(0,ee.default)(x,g=>{switch(v.type){case"GET_DATA_SUCCEEDED":{g.webhooks=v.data,g.loadingWebhooks=!1;break}case"TOGGLE_LOADING":{g.loadingWebhooks=!x.loadingWebhooks;break}case"SET_WEBHOOK_ENABLED":{G()(g,["webhooks",...v.keys],v.value);break}case"SET_WEBHOOK_TO_DELETE":{g.webhookToDelete=v.id;break}case"SET_WEBHOOKS_TO_DELETE":{v.value?g.webhooksToDelete.push(v.id):g.webhooksToDelete=x.webhooksToDelete.filter(P=>P!==v.id);break}case"SET_ALL_WEBHOOKS_TO_DELETE":{x.webhooksToDelete.length===0?g.webhooksToDelete=x.webhooks.map(P=>P.id):g.webhooksToDelete=[];break}case"WEBHOOKS_DELETED":{g.webhooks=x.webhooks.filter(P=>!x.webhooksToDelete.includes(P.id)),g.webhooksToDelete=[];break}case"WEBHOOK_DELETED":{g.webhooks=x.webhooks.filter((P,H)=>H!==v.index),g.webhookToDelete=null;break}default:return g}});var te=p(98399),pe=Object.defineProperty,he=Object.defineProperties,me=Object.getOwnPropertyDescriptors,ae=Object.getOwnPropertySymbols,be=Object.prototype.hasOwnProperty,ge=Object.prototype.propertyIsEnumerable,ie=(x,v,g)=>v in x?pe(x,v,{enumerable:!0,configurable:!0,writable:!0,value:g}):x[v]=g,F=(x,v)=>{for(var g in v||(v={}))be.call(v,g)&&ie(x,g,v[g]);if(ae)for(var g of ae(v))ge.call(v,g)&&ie(x,g,v[g]);return x},ve=(x,v)=>he(x,me(v)),X=(x,v,g)=>new Promise((P,H)=>{var N=A=>{try{T(g.next(A))}catch(R){H(R)}},W=A=>{try{T(g.throw(A))}catch(R){H(R)}},T=A=>A.done?P(A.value):Promise.resolve(A.value).then(N,W);T((g=g.apply(x,v)).next())});const ye=()=>{const{isLoading:x,allowedActions:{canCreate:v,canRead:g,canUpdate:P,canDelete:H}}=(0,w.useRBAC)(o.Z.settings.webhooks),N=(0,w.useNotification)(),W=(0,i.useRef)(!0),{formatMessage:T}=(0,n.useIntl)(),[A,R]=(0,i.useState)(!1),[{webhooks:Z,webhooksToDelete:Y,webhookToDelete:oe,loadingWebhooks:re},I]=(0,i.useReducer)(Q,$),{notifyStatus:xe}=(0,k.useNotifyAT)();(0,w.useFocusWhenNavigate)();const{push:Te}=(0,b.useHistory)(),{pathname:se}=(0,b.useLocation)(),J=Z.length,K=Y.length,le=h=>Z.findIndex(M=>M.id===h);(0,i.useEffect)(()=>(W.current=!0,()=>{W.current=!1}),[]),(0,i.useEffect)(()=>{g&&Oe()},[g]);const Oe=()=>X(void 0,null,function*(){try{const{data:h}=yield(0,w.request)("/admin/webhooks",{method:"GET"});W.current&&(I({type:"GET_DATA_SUCCEEDED",data:h}),xe("webhooks have been loaded"))}catch(h){te.log(h),W.current&&(h.code!==20&&N({type:"warning",message:{id:"notification.error"}}),I({type:"TOGGLE_LOADING"}))}}),we=()=>{R(h=>!h)},Se=()=>{oe?ke():Le()},ke=()=>X(void 0,null,function*(){try{yield(0,w.request)(`/admin/webhooks/${oe}`,{method:"DELETE"}),I({type:"WEBHOOK_DELETED",index:le(oe)})}catch(h){h.code!==20&&N({type:"warning",message:{id:"notification.error"}})}R(!1)}),Le=()=>X(void 0,null,function*(){const h={ids:Y};try{yield(0,w.request)("/admin/webhooks/batch-delete",{method:"POST",body:h}),W.current&&I({type:"WEBHOOKS_DELETED"})}catch(M){W.current&&M.code!==20&&N({type:"warning",message:{id:"notification.error"}})}R(!1)}),ue=h=>{R(!0),h!=="all"&&I({type:"SET_WEBHOOK_TO_DELETE",id:h})},Ce=(h,M)=>X(void 0,null,function*(){const ce=le(M),Me=Z[ce],de=[ce,"isEnabled"],fe=ve(F({},Me),{isEnabled:h});delete fe.id;try{I({type:"SET_WEBHOOK_ENABLED",keys:de,value:h}),yield(0,w.request)(`/admin/webhooks/${M}`,{method:"PUT",body:fe})}catch(je){W.current&&(I({type:"SET_WEBHOOK_ENABLED",keys:de,value:!h}),je.code!==20&&N({type:"warning",message:{id:"notification.error"}}))}}),De=()=>{I({type:"SET_ALL_WEBHOOKS_TO_DELETE"})},Pe=(h,M)=>{I({type:"SET_WEBHOOKS_TO_DELETE",value:h,id:M})},q=h=>{Te(`${se}/${h}`)};return i.createElement(a.Layout,null,i.createElement(w.SettingsPageTitle,{name:"Webhooks"}),i.createElement(S.Main,{"aria-busy":x||re},i.createElement(a.HeaderLayout,{title:T({id:"Settings.webhooks.title",defaultMessage:"Webhooks"}),subtitle:T({id:"Settings.webhooks.list.description",defaultMessage:"Get POST changes notifications"}),primaryAction:v&&!re&&i.createElement(w.LinkButton,{startIcon:i.createElement(e(),null),variant:"default",to:`${se}/create`,size:"L"},T({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))}),K>0&&H&&i.createElement(a.ActionLayout,{startActions:i.createElement(i.Fragment,null,i.createElement(E.Typography,{variant:"epsilon",textColor:"neutral600"},T({id:"Settings.webhooks.to.delete",defaultMessage:"{webhooksToDeleteLength, plural, one {# asset} other {# assets}} selected"},{webhooksToDeleteLength:K})),i.createElement(C.Button,{onClick:()=>ue("all"),startIcon:i.createElement(B(),null),size:"L",variant:"danger-light"},T({id:"global.delete",defaultMessage:"Delete"})))}),i.createElement(a.ContentLayout,null,x||re?i.createElement(L.Box,{background:"neutral0",padding:6,shadow:"filterShadow",hasRadius:!0},i.createElement(w.LoadingIndicatorPage,null)):i.createElement(i.Fragment,null,J>0?i.createElement(m.Table,{colCount:5,rowCount:J+1,footer:i.createElement(m.TFooter,{onClick:()=>v?q("create"):{},icon:i.createElement(e(),null)},T({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))},i.createElement(m.Thead,null,i.createElement(m.Tr,null,i.createElement(m.Th,null,i.createElement(c.BaseCheckbox,{"aria-label":T({id:"global.select-all-entries",defaultMessage:"Select all entries"}),indeterminate:K>0&&K<J,value:K===J,onValueChange:De})),i.createElement(m.Th,{width:"20%"},i.createElement(E.Typography,{variant:"sigma",textColor:"neutral600"},T({id:"global.name",defaultMessage:"Name"}))),i.createElement(m.Th,{width:"60%"},i.createElement(E.Typography,{variant:"sigma",textColor:"neutral600"},T({id:"Settings.webhooks.form.url",defaultMessage:"URL"}))),i.createElement(m.Th,{width:"20%"},i.createElement(E.Typography,{variant:"sigma",textColor:"neutral600"},T({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"}))),i.createElement(m.Th,null,i.createElement(s.VisuallyHidden,null,T({id:"Settings.webhooks.list.th.actions",defaultMessage:"Actions"}))))),i.createElement(m.Tbody,null,Z.map(h=>i.createElement(m.Tr,F({key:h.id},(0,w.onRowClick)({fn:()=>q(h.id),condition:P})),i.createElement(m.Td,F({},w.stopPropagation),i.createElement(c.BaseCheckbox,{"aria-label":`${T({id:"global.select",defaultMessage:"Select"})} ${h.name}`,value:Y==null?void 0:Y.includes(h.id),onValueChange:M=>Pe(M,h.id),id:"select",name:"select"})),i.createElement(m.Td,null,i.createElement(E.Typography,{fontWeight:"semiBold",textColor:"neutral800"},h.name)),i.createElement(m.Td,null,i.createElement(E.Typography,{textColor:"neutral800"},h.url)),i.createElement(m.Td,null,i.createElement(u.Flex,F({},w.stopPropagation),i.createElement(y.Switch,{onLabel:T({id:"global.enabled",defaultMessage:"Enabled"}),offLabel:T({id:"global.disabled",defaultMessage:"Disabled"}),label:`${h.name} ${T({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"})}`,selected:h.isEnabled,onChange:()=>Ce(!h.isEnabled,h.id),visibleLabels:!0}))),i.createElement(m.Td,null,i.createElement(l.Stack,F({horizontal:!0,spacing:1},w.stopPropagation),P&&i.createElement(f.IconButton,{onClick:()=>{q(h.id)},label:T({id:"Settings.webhooks.events.update",defaultMessage:"Update"}),icon:i.createElement(d(),null),noBorder:!0}),H&&i.createElement(f.IconButton,{onClick:()=>ue(h.id),label:T({id:"global.delete",defaultMessage:"Delete"}),icon:i.createElement(B(),null),noBorder:!0,id:`delete-${h.id}`}))))))):i.createElement(r.EmptyStateLayout,{icon:i.createElement(_(),{width:"160px"}),content:T({id:"Settings.webhooks.list.empty.description",defaultMessage:"No webhooks found"}),action:i.createElement(C.Button,{variant:"secondary",startIcon:i.createElement(e(),null),onClick:()=>v?q("create"):{}},T({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))})))),i.createElement(w.ConfirmDialog,{isOpen:A,onToggleDialog:we,onConfirm:Se}))},Ee=()=>i.createElement(w.CheckPagePermissions,{permissions:o.Z.settings.webhooks.main},i.createElement(ye,null))}}]);
package/index.js CHANGED
@@ -17,10 +17,7 @@ const {
17
17
  async function build({ appDir, buildDestDir, env, forceBuild, optimize, options, plugins }) {
18
18
  const buildAdmin = await shouldBuildAdmin({ appDir, plugins });
19
19
 
20
- const useTypeScript = await isUsingTypeScript(
21
- path.join(appDir, 'src', 'admin'),
22
- 'tsconfig.json'
23
- );
20
+ const useTypeScript = await isUsingTypeScript(path.join(appDir, 'src', 'admin'), 'tsconfig.json');
24
21
 
25
22
  if (!buildAdmin && !forceBuild) {
26
23
  return;
@@ -99,10 +96,7 @@ async function clean({ appDir, buildDestDir }) {
99
96
  }
100
97
 
101
98
  async function watchAdmin({ appDir, browser, buildDestDir, host, options, plugins, port }) {
102
- const useTypeScript = await isUsingTypeScript(
103
- path.join(appDir, 'src', 'admin'),
104
- 'tsconfig.json'
105
- );
99
+ const useTypeScript = await isUsingTypeScript(path.join(appDir, 'src', 'admin'), 'tsconfig.json');
106
100
  // Create the cache dir containing the front-end files.
107
101
  const cacheDir = path.join(appDir, '.cache');
108
102
  await createCacheDir({ appDir, plugins });
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.3.0-beta.1",
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",
54
- "@strapi/design-system": "1.1.0",
55
- "@strapi/helper-plugin": "4.2.0-beta.3",
56
- "@strapi/icons": "1.1.0",
57
- "@strapi/typescript-utils": "4.2.0-beta.3",
58
- "@strapi/utils": "4.2.0-beta.3",
53
+ "@strapi/babel-plugin-switch-ee-ce": "4.3.0-beta.1",
54
+ "@strapi/design-system": "1.1.1",
55
+ "@strapi/helper-plugin": "4.3.0-beta.1",
56
+ "@strapi/icons": "1.1.1",
57
+ "@strapi/typescript-utils": "4.3.0-beta.1",
58
+ "@strapi/utils": "4.3.0-beta.1",
59
59
  "axios": "0.24.0",
60
60
  "babel-loader": "8.2.3",
61
61
  "babel-plugin-styled-components": "2.0.2",
@@ -137,12 +137,13 @@
137
137
  },
138
138
  "devDependencies": {
139
139
  "duplicate-dependencies-webpack-plugin": "0.2.0",
140
+ "glob": "8.0.3",
140
141
  "speed-measure-webpack-plugin": "1.5.0",
141
142
  "webpack-bundle-analyzer": "4.4.1"
142
143
  },
143
144
  "engines": {
144
- "node": ">=12.22.0 <=16.x.x",
145
+ "node": ">=14.19.1 <=16.x.x",
145
146
  "npm": ">=6.0.0"
146
147
  },
147
- "gitHead": "c4addbad6ecbc8ef7633bbba3806f3b0a2ae5f49"
148
+ "gitHead": "9d6555398960c39159d66bb4eea3bcb0362e37e3"
148
149
  }
package/scripts/build.js CHANGED
@@ -46,7 +46,9 @@ const buildAdmin = async () => {
46
46
  };
47
47
 
48
48
  const config =
49
- process.env.MESURE_BUILD_SPEED === 'true' ? smp.wrap(webpackConfig(args)) : webpackConfig(args);
49
+ process.env.MEASURE_BUILD_SPEED === 'true'
50
+ ? smp.wrap(webpackConfig(args))
51
+ : webpackConfig(args);
50
52
 
51
53
  const compiler = webpack(config);
52
54
 
@@ -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,10 +53,42 @@ 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
- async telemetryProperties() {
85
+ async telemetryProperties(ctx) {
86
+ // If the telemetry is disabled, ignore the request and return early
87
+ if (strapi.telemetry.isDisabled) {
88
+ ctx.status = 204;
89
+ return;
90
+ }
91
+
54
92
  const useTypescriptOnServer = await isUsingTypeScript(strapi.dirs.app.root);
55
93
  const useTypescriptOnAdmin = await isUsingTypeScript(
56
94
  path.join(strapi.dirs.app.root, 'src', 'admin')