@nocobase/plugin-multi-portal 2.2.0-alpha.11 → 2.2.0-alpha.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -6
- package/dist/client-v2/354.7be267ae5d61a878.js +10 -0
- package/dist/client-v2/556.5faf86d4f8faef40.js +10 -0
- package/dist/client-v2/778.c98e7ec542d931fe.js +10 -0
- package/dist/client-v2/RootLanding.d.ts +19 -0
- package/dist/client-v2/index.js +1 -1
- package/dist/client-v2/layoutRegistration.d.ts +2 -1
- package/dist/client-v2/models/MultiPortalMobilePageModels.d.ts +3 -11
- package/dist/client-v2/pages/MultiPortalsPage.d.ts +24 -0
- package/dist/client-v2/pages/PortalRoutesDrawer.d.ts +13 -0
- package/dist/client-v2/permissions/MultiPortalPermissionsTab.d.ts +1 -0
- package/dist/client-v2/routeRepositoryScope.d.ts +5 -2
- package/dist/constants.d.ts +11 -0
- package/dist/constants.js +48 -0
- package/dist/externalVersion.js +10 -9
- package/dist/locale/en-US.json +52 -1
- package/dist/locale/zh-CN.json +79 -28
- package/dist/node_modules/tar/package.json +1 -1
- package/dist/server/collections/desktopRoutes.js +1 -0
- package/dist/server/migrations/20260730120000-fix-fixed-layout-portal-type.d.ts +13 -0
- package/dist/server/migrations/20260730120000-fix-fixed-layout-portal-type.js +73 -0
- package/dist/server/plugin.d.ts +1 -1
- package/dist/server/plugin.js +1009 -271
- package/package.json +6 -7
- package/dist/client-v2/354.ead3e96143164cd5.js +0 -10
- package/dist/client-v2/778.23ba409a924ee34a.js +0 -10
- package/dist/client-v2/845.f2b0ce44ae4be707.js +0 -10
package/package.json
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/plugin-multi-portal",
|
|
3
|
-
"version": "2.2.0-alpha.
|
|
3
|
+
"version": "2.2.0-alpha.12",
|
|
4
4
|
"main": "dist/server/index.js",
|
|
5
5
|
"nocobase": {
|
|
6
6
|
"supportedVersions": [
|
|
7
7
|
"2.x"
|
|
8
|
-
]
|
|
9
|
-
"editionLevel": 3
|
|
8
|
+
]
|
|
10
9
|
},
|
|
11
10
|
"displayName": "Portal manager",
|
|
12
11
|
"displayName.zh-CN": "Portal 管理",
|
|
13
|
-
"description": "Provides
|
|
14
|
-
"description.zh-CN": "
|
|
12
|
+
"description": "Provides built-in Portal registration, entry access, and route permissions for Client V2.",
|
|
13
|
+
"description.zh-CN": "为 Client V2 提供内置 Portal 注册、入口访问与路由权限管理。",
|
|
15
14
|
"devDependencies": {
|
|
16
15
|
"@ant-design/icons": "5.x",
|
|
17
|
-
"@nocobase/plugin-ui-layout": "2.2.0-alpha.
|
|
16
|
+
"@nocobase/plugin-ui-layout": "2.2.0-alpha.12",
|
|
18
17
|
"ahooks": "3.x",
|
|
19
18
|
"antd": "5.x",
|
|
20
19
|
"react": "^18.2.0",
|
|
@@ -30,5 +29,5 @@
|
|
|
30
29
|
"@nocobase/server": "2.x",
|
|
31
30
|
"@nocobase/test": "2.x"
|
|
32
31
|
},
|
|
33
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "96ae69754a6398de63037ead3a4aad5e5d0ab918"
|
|
34
33
|
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file is part of the NocoBase (R) project.
|
|
3
|
-
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
-
* Authors: NocoBase Team.
|
|
5
|
-
*
|
|
6
|
-
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
-
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
"use strict";(self.webpackChunk_nocobase_plugin_multi_portal_client_v2=self.webpackChunk_nocobase_plugin_multi_portal_client_v2||[]).push([["354"],{833:function(t,e,r){r.r(e),r.d(e,{MultiPortalMobileChildPageModel:function(){return _},MultiPortalMobileChildPageTabModel:function(){return R},MultiPortalMobileLayoutModel:function(){return M},MultiPortalMobileRootPageModel:function(){return m},MultiPortalMobileRootPageTabModel:function(){return k}});var n=r(485),o=r(69),u=r(133);function i(t,e,r,n,o,u,i){try{var l=t[u](i),c=l.value}catch(t){r(t);return}l.done?e(c):Promise.resolve(c).then(n,o)}function l(t,e,r){return e=p(e),function(t,e){if(e&&("object"===v(e)||"function"==typeof e))return e;if(void 0===t)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t,d()?Reflect.construct(e,r||[],p(t).constructor):e.apply(t,r))}function c(t,e){if(!(t instanceof e))throw TypeError("Cannot call a class as a function")}function a(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function f(t,e,r){return e&&a(t.prototype,e),r&&a(t,r),t}function s(t,e,r){return(s="u">typeof Reflect&&Reflect.get?Reflect.get:function(t,e,r){var n=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=p(t)););return t}(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(r||t):o.value}})(t,e,r||t)}function p(t){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function b(t,e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&O(t,e)}function y(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),n.forEach(function(e){var n;n=r[e],e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n})}return t}function h(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):(function(t){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e.push.apply(e,r)}return e})(Object(e)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}),t}function O(t,e){return(O=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function v(t){return t&&"u">typeof Symbol&&t.constructor===Symbol?"symbol":typeof t}function d(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(d=function(){return!!t})()}function P(t){var e,r=null==(e=t.context)?void 0:e.layout,n=null==r?void 0:r.uid;if("string"==typeof n&&n.trim())return(0,u.Cp)(n)||n}function g(t,e){if(!(t&&(void 0===t?"undefined":v(t))==="object"&&!Array.isArray(t)))return t;t.uiLayouts,t.multiPortals;var r=function(t,e){if(null==t)return{};var r,n,o,u={};if("u">typeof Reflect&&Reflect.ownKeys){for(o=0,r=Reflect.ownKeys(Object(t));o<r.length;o++)n=r[o],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(u[n]=t[n]);return u}if(u=function(t,e){if(null==t)return{};var r,n,o={},u=Object.getOwnPropertyNames(t);for(n=0;n<u.length;n++)r=u[n],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r]);return o}(t,e),Object.getOwnPropertySymbols)for(o=0,r=Object.getOwnPropertySymbols(t);o<r.length;o++)n=r[o],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(u[n]=t[n]);return u}(t,["uiLayouts","multiPortals"]);return e?h(y({},r),{multiPortals:[e]}):r}function j(t,e,r){var n,o=null==(n=e.props)?void 0:n.route;return h(y({},e),{use:r,props:h(y({},e.props),{route:g(o,P(t))})})}function w(t){t.setProps("route",g(t.props.route,P(t)))}var M=function(t){function e(){return c(this,e),l(this,e,arguments)}return b(e,t),f(e,[{key:"layout",get:function(){var t=s(p(e.prototype),"layout",this);return h(y({},t),{uid:(0,u.wj)(t.uid)})}}]),e}(o.MobileLayoutModel),m=function(t){function e(t){c(this,e);var r=l(this,e,[t]),n=r.createPageTabModelOptions.bind(r);return r.createPageTabModelOptions=function(){return j(r,n(),"MultiPortalMobileRootPageTabModel")},r}return b(e,t),e}(o.MobileRootPageModel),_=function(t){function e(t){c(this,e);var r=l(this,e,[t]),n=r.createPageTabModelOptions.bind(r);return r.createPageTabModelOptions=function(){return j(r,n(),"MultiPortalMobileChildPageTabModel")},r}return b(e,t),e}(o.MobileChildPageModel),k=function(t){function e(){return c(this,e),l(this,e,arguments)}return b(e,t),f(e,[{key:"save",value:function(){var t,r=this,n=this;return(t=function(){return function(t,e){var r,n,o,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),l=Object.defineProperty;return l(i,"next",{value:c(0)}),l(i,"throw",{value:c(1)}),l(i,"return",{value:c(2)}),"function"==typeof Symbol&&l(i,Symbol.iterator,{value:function(){return this}}),i;function c(l){return function(c){var a=[l,c];if(r)throw TypeError("Generator is already executing.");for(;i&&(i=0,a[0]&&(u=0)),u;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return u.label++,{value:a[1],done:!1};case 5:u.label++,n=a[1],a=[0];continue;case 7:a=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){u=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){u.label=a[1];break}if(6===a[0]&&u.label<o[1]){u.label=o[1],o=a;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(a);break}o[2]&&u.ops.pop(),u.trys.pop();continue}a=e.call(t,u)}catch(t){a=[6,t],n=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}}}(this,function(t){switch(t.label){case 0:return w(this),[4,s(p(e.prototype),"save",r).call(n)];case 1:return t.sent(),w(this),[2]}})},function(){var e=this,r=arguments;return new Promise(function(n,o){var u=t.apply(e,r);function l(t){i(u,n,o,l,c,"next",t)}function c(t){i(u,n,o,l,c,"throw",t)}l(void 0)})}).call(this)}}]),e}(n.RootPageTabModel),R=function(t){function e(){return c(this,e),l(this,e,arguments)}return b(e,t),f(e,[{key:"onInit",value:function(t){s(p(e.prototype),"onInit",this).call(this,t),w(this)}}]),e}(n.ChildPageTabModel)}}]);
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file is part of the NocoBase (R) project.
|
|
3
|
-
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
-
* Authors: NocoBase Team.
|
|
5
|
-
*
|
|
6
|
-
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
-
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
"use strict";(self.webpackChunk_nocobase_plugin_multi_portal_client_v2=self.webpackChunk_nocobase_plugin_multi_portal_client_v2||[]).push([["778"],{177:function(e,t,r){r.r(t),r.d(t,{default:function(){return A}});var n=r(485),u=r(694),a=r(625),o=r(59),i=r(155),l=r.n(i),c=r(143);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function d(e,t,r,n,u,a,o){try{var i=e[a](o),l=i.value}catch(e){r(e);return}i.done?t(l):Promise.resolve(l).then(n,u)}function f(e){return function(){var t=this,r=arguments;return new Promise(function(n,u){var a=e.apply(t,r);function o(e){d(a,n,u,o,i,"next",e)}function i(e){d(a,n,u,o,i,"throw",e)}o(void 0)})}}function h(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function p(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function m(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,u=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=u){var a=[],o=!0,i=!1;try{for(u=u.call(e);!(o=(r=u.next()).done)&&(a.push(r.value),!t||a.length!==t);o=!0);}catch(e){i=!0,n=e}finally{try{o||null==u.return||u.return()}finally{if(i)throw n}}return a}}(e,t)||b(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||b(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function b(e,t){if(e){if("string"==typeof e)return s(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return s(e,t)}}function g(e,t){var r,n,u,a={label:0,sent:function(){if(1&u[0])throw u[1];return u[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(o,"next",{value:l(0)}),i(o,"throw",{value:l(1)}),i(o,"return",{value:l(2)}),"function"==typeof Symbol&&i(o,Symbol.iterator,{value:function(){return this}}),o;function l(i){return function(l){var c=[i,l];if(r)throw TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(a=0)),a;)try{if(r=1,n&&(u=2&c[0]?n.return:c[0]?n.throw||((u=n.return)&&u.call(n),0):n.next)&&!(u=u.call(n,c[1])).done)return u;switch(n=0,u&&(c=[2&c[0],u.value]),c[0]){case 0:case 1:u=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,n=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(u=(u=a.trys).length>0&&u[u.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!u||c[1]>u[0]&&c[1]<u[3])){a.label=c[1];break}if(6===c[0]&&a.label<u[1]){a.label=u[1],u=c;break}if(u&&a.label<u[2]){a.label=u[2],a.ops.push(c);break}u[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=u=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}function w(e){return e&&(void 0===e?"undefined":v(e))==="object"?{data:Array.isArray(e.data)?e.data:[]}:{}}function S(e){return Array.isArray(e)?e.flatMap(function(e){return[e.id].concat(y(S(e.children)))}):[]}function k(e){var t=new Set;return e.filter(function(e){return!t.has(e)&&(t.add(e),!0)})}function M(e,t){return"string"!=typeof e?t("Unnamed"):t(e)||t("Unnamed")}function A(e){var t,r=(0,u.useFlowContext)(),s=(0,c.kj)(),d=o.theme.useToken().token,b=e.activeRole,A="multi-portals"===e.activeKey,P=m((0,i.useState)([]),2),I=P[0],x=P[1],O=m((0,i.useState)(),2),j=O[0],C=O[1],E=m((0,i.useState)([]),2),R=E[0],N=E[1],T=m((0,i.useState)(),2),_=T[0],D=T[1],F=m((0,i.useState)(!1),2),z=F[0],U=F[1],q=m((0,i.useState)(""),2),K=q[0],L=q[1],B=(0,i.useMemo)(function(){return b?r.api.resource("roles.multiPortals",b.name):void 0},[r.api,b]),G=(0,i.useMemo)(function(){return r.api.resource("rolesMultiPortalDesktopRoutes")},[r.api]),$=(0,i.useMemo)(function(){return r.api.resource("rolesMultiPortalRoutePolicies")},[r.api]),H=(0,a.useRequest)(function(){return f(function(){var e,t;return g(this,function(n){switch(n.label){case 0:return[4,r.api.request({url:"multiPortals:listEnabled",method:"get",skipNotify:!0})];case 1:return[2,null!=(e=w(null==(t=n.sent())?void 0:t.data).data)?e:[]]}})})()},{ready:A,refreshDeps:[A]}),J=(0,a.useRequest)(function(){return f(function(){var e,t;return g(this,function(r){switch(r.label){case 0:if(!B)return[2,[]];return[4,B.list({paginate:!1})];case 1:return[2,(null!=(e=w(null==(t=r.sent())?void 0:t.data).data)?e:[]).map(function(e){return e.uid}).filter(function(e){return"string"==typeof e&&!!e})]}})})()},{ready:A&&!!B,refreshDeps:[A,null==b?void 0:b.name],onSuccess:function(e){x(e)}}),Q=(0,i.useMemo)(function(){var e;return null==(e=H.data)?void 0:e.find(function(e){return e.uid===j})},[H.data,j]),V=Q?M(Q.title,s):"",W=Q?s("Configure routes permissions for {{portal}}",{portal:V}):s("Routes permissions"),X=(0,a.useRequest)(function(){return f(function(){var e,t;return g(this,function(n){switch(n.label){case 0:if(!j)return[2,[]];return[4,r.api.request({url:"desktopRoutes:listRolePermissionTargets",method:"get",params:{portal:j},skipNotify:!0})];case 1:var u;return[2,null!=(e=(!(u=null==(t=n.sent())?void 0:t.data)||(void 0===u?"undefined":v(u))!=="object"?{}:{data:Array.isArray(u.data)?u.data:[]}).data)?e:[]]}})})()},{ready:A&&!!j,refreshDeps:[A,j]}),Y=(0,i.useMemo)(function(){return function e(t,r){return Array.isArray(t)?t.map(function(t){var n,u,a=e(t.children,t.id);return{id:t.id,title:t.title,hidden:t.hidden,routePath:"string"==typeof(u=null==(n=t.options)?void 0:n.path)&&u.trim()?u.trim():void 0,parentId:r,children:a.length?a:void 0}}):[]}(X.data)},[X.data]),Z=(0,i.useMemo)(function(){return S(Y)},[Y]),ee=(0,i.useMemo)(function(){return function e(t){return t.flatMap(function(t){var r;return[t].concat(y(e(null!=(r=t.children)?r:[])))})}(Y)},[Y]),et=(0,i.useMemo)(function(){return new Map(ee.map(function(e){return[e.id,e]}))},[ee]),er=(0,i.useMemo)(function(){return function e(t,r,n){var u=r.trim().toLowerCase();return u?t.reduce(function(t,r){var a,o,i,l=e(null!=(a=r.children)?a:[],u,n),c=M(r.title,n).toLowerCase(),s=null!=(o=null==(i=r.routePath)?void 0:i.toLowerCase())?o:"";return(c.includes(u)||s.includes(u)||l.length)&&t.push(p(h({},r),{children:l.length?l:void 0})),t},[]):t}(function e(t){return t.reduce(function(t,r){if(r.hidden)return t;var n,u=e(null!=(n=r.children)?n:[]);return t.push(p(h({},r),{children:u.length?u:void 0})),t},[])}(Y),K,s)},[Y,K,s]),en=(0,i.useMemo)(function(){return S(er)},[er]),eu=(0,i.useMemo)(function(){return function e(t,r){return Array.isArray(t)?k(t.flatMap(function(t){var n,u=null!=(n=r.get(t.id))?n:t;return[t.id].concat(y(S(u.children)),y(e(t.children,r)))})):[]}(er,et)},[et,er]),ea=(0,i.useMemo)(function(){var e=new Set(R);return en.filter(function(t){return e.has(t)}).length},[R,en]),eo=X.error?s("Failed to load routes"):K.trim()?s("No matching routes"):s("No routes"),ei=(0,a.useRequest)(function(){return f(function(){var e;return g(this,function(t){switch(t.label){case 0:if(!b||!j)return[2,[]];return[4,G.list({paginate:!1,filter:{roleName:b.name,multiPortalUid:j}})];case 1:var r;return[2,(!(r=null==(e=t.sent())?void 0:e.data)||(void 0===r?"undefined":v(r))!=="object"?[]:Array.isArray(r.data)?r.data:[]).map(function(e){return e.desktopRouteId}).filter(function(e){return"number"==typeof e})]}})})()},{ready:A&&!!b&&!!j,refreshDeps:[A,null==b?void 0:b.name,j],onSuccess:function(e){N(e)}}),el=(0,a.useRequest)(function(){return f(function(){var e;return g(this,function(t){switch(t.label){case 0:if(!b||!j)return[2,void 0];return[4,$.list({paginate:!1,filter:{roleName:b.name,multiPortalUid:j}})];case 1:return[2,function(e){if(e&&(void 0===e?"undefined":v(e))==="object")return Array.isArray(e.data)?e.data[0]:void 0}(null==(e=t.sent())?void 0:e.data)]}})})()},{ready:A&&!!b&&!!j,refreshDeps:[A,null==b?void 0:b.name,j],onSuccess:function(e){D(e),U(!!(null==e?void 0:e.allowNewMenu))}});(0,i.useEffect)(function(){C(void 0),N([]),D(void 0),U(!1),L("")},[null==b?void 0:b.name]),(0,i.useEffect)(function(){N([]),D(void 0),U(!1),L("")},[j]);var ec=(0,a.useMemoizedFn)(function(e){return f(function(){var t;return g(this,function(n){switch(n.label){case 0:var u,a;if(!B)return[2];u=new Set(I),a=new Set(e),t={add:e.filter(function(e){return!u.has(e)}),remove:I.filter(function(e){return!a.has(e)})},n.label=1;case 1:if(n.trys.push([1,7,,9]),!t.remove.length)return[3,3];return[4,B.remove({values:t.remove})];case 2:n.sent(),n.label=3;case 3:if(!t.add.length)return[3,5];return[4,B.add({values:t.add})];case 4:n.sent(),n.label=5;case 5:return[4,J.refreshAsync()];case 6:return n.sent(),x(e),r.message.success(s("Saved successfully")),[3,9];case 7:return n.sent(),[4,J.refreshAsync().catch(function(){})];case 8:return n.sent(),[3,9];case 9:return[2]}})})()}),es=(0,a.useMemoizedFn)(function(e){return f(function(){return g(this,function(t){switch(t.label){case 0:return[4,ec(I.includes(e.uid)?I.filter(function(t){return t!==e.uid}):y(I).concat([e.uid]))];case 1:return t.sent(),[2]}})})()}),ed=(0,a.useMemoizedFn)(function(t){return f(function(){var n;return g(this,function(u){switch(u.label){case 0:if(!b)return[2];u.label=1;case 1:return u.trys.push([1,3,,4]),[4,r.api.resource("roles").update({filterByTk:b.name,values:t})];case 2:return u.sent(),[3,4];case 3:return u.sent(),[2];case 4:return null==(n=e.onRoleChange)||n.call(e,h({},b,t)),r.message.success(s("Saved successfully")),[2]}})})()}),ef=(0,i.useMemo)(function(){return[{dataIndex:"title",title:s("Portal"),render:function(e){return M(e,s)}},{dataIndex:"accessible",title:s("Allow access"),render:function(e,t){var r=M(t.title,s);return l().createElement(o.Checkbox,{"aria-label":s("Allow access to {{portal}}",{portal:r}),checked:I.includes(t.uid),onChange:function(){return es(t)}})}},{dataIndex:"routePermissions",title:s("Routes permissions"),render:function(e,t){var r=M(t.title,s);return l().createElement(o.Button,{"aria-label":s("Configure routes permissions for {{portal}}",{portal:r}),type:"link",onClick:function(){return C(t.uid)}},s("Configure"))}}]},[I,s,es]),eh=(0,a.useMemoizedFn)(function(e){return f(function(){var t,n,u,a,o,i,l,c;return g(this,function(d){switch(d.label){case 0:var f,h,p,m,v;if(!b||!j)return[2];h=new Set((f={currentRouteIds:Z,nextSelectedIds:e,selectedIds:R}).currentRouteIds),p=new Set(f.selectedIds.filter(function(e){return h.has(e)})),m=new Set(f.nextSelectedIds.filter(function(e){return h.has(e)})),t={add:(v=k(y(f.currentRouteIds).concat(y(f.selectedIds),y(f.nextSelectedIds)))).filter(function(e){return h.has(e)&&m.has(e)&&!p.has(e)}),remove:v.filter(function(e){return h.has(e)&&p.has(e)&&!m.has(e)})},d.label=1;case 1:if(d.trys.push([1,13,,15]),!t.remove.length)return[3,3];return[4,G.destroy({filter:{roleName:b.name,multiPortalUid:j,desktopRouteId:t.remove}})];case 2:d.sent(),d.label=3;case 3:n=!0,u=!1,a=void 0,d.label=4;case 4:d.trys.push([4,9,10,11]),o=t.add[Symbol.iterator](),d.label=5;case 5:if(n=(i=o.next()).done)return[3,8];return l=i.value,[4,G.create({values:{roleName:b.name,multiPortalUid:j,desktopRouteId:l}})];case 6:d.sent(),d.label=7;case 7:return n=!0,[3,5];case 8:return[3,11];case 9:return c=d.sent(),u=!0,a=c,[3,11];case 10:try{n||null==o.return||o.return()}finally{if(u)throw a}return[7];case 11:return[4,ei.refreshAsync()];case 12:return d.sent(),N(e),r.message.success(s("Saved successfully")),[3,15];case 13:return d.sent(),[4,ei.refreshAsync().catch(function(){})];case 14:return d.sent(),[3,15];case 15:return[2]}})})()}),ep=(0,a.useMemoizedFn)(function(e){return f(function(){return g(this,function(t){switch(t.label){case 0:if(!b||!j)return[2];t.label=1;case 1:if(t.trys.push([1,7,,9]),!_)return[3,3];return[4,$.update({filter:{roleName:b.name,multiPortalUid:j},values:{allowNewMenu:e}})];case 2:return t.sent(),[3,5];case 3:return[4,$.create({values:{roleName:b.name,multiPortalUid:j,allowNewMenu:e}})];case 4:t.sent(),t.label=5;case 5:return[4,el.refreshAsync()];case 6:return t.sent(),U(e),r.message.success(s("Saved successfully")),[3,9];case 7:return t.sent(),[4,el.refreshAsync().catch(function(){})];case 8:return t.sent(),[3,9];case 9:return[2]}})})()}),em=(0,a.useMemoizedFn)(function(){return f(function(){var e,t;return g(this,function(r){switch(r.label){case 0:return e=new Set(R),t=new Set(en),[4,eh(en.length&&en.every(function(t){return e.has(t)})?R.filter(function(e){return!t.has(e)&&!eu.includes(e)}):k(y(R).concat(y(eu))))];case 1:return r.sent(),[2]}})})()}),ey=(0,a.useMemoizedFn)(function(e){return f(function(){var t,r,n,u,a,o,i;return g(this,function(l){switch(l.label){case 0:return r=R.includes(e.id),n=S((null!=(t=et.get(e.id))?t:e).children),u=r?R.filter(function(t){return t!==e.id&&!n.includes(t)}):k(y(R).concat([e.id],y(n))),e.parentId&&(i=null==(o=et.get(e.parentId))||null==(a=o.children)?void 0:a.some(function(e){return u.includes(e.id)}),r&&!i&&(u=u.filter(function(t){return t!==e.parentId})),r||u.includes(e.parentId)||u.push(e.parentId)),[4,eh(u)];case 1:return l.sent(),[2]}})})()}),ev=(0,i.useMemo)(function(){return[{dataIndex:"title",title:s("Route name"),render:function(e){return M(e,s)}},{dataIndex:"accessible",title:l().createElement(o.Checkbox,{checked:!!en.length&&ea===en.length,disabled:!en.length,indeterminate:ea>0&&ea<en.length,onChange:em},s("Allow access")),render:function(e,t){var r=M(t.title,s);return l().createElement(o.Checkbox,{"aria-label":s("Allow access to {{route}}",{route:r}),checked:R.includes(t.id),onChange:function(){return ey(t)}})}}]},[R,em,s,ey,en.length,ea]);return b?l().createElement(l().Fragment,null,l().createElement(o.Space,{direction:"vertical",size:d.marginSM,style:{width:"100%"}},l().createElement(o.Typography.Text,{strong:!0},s("Portals")),l().createElement(o.Checkbox,{checked:!!b.allowNewMultiPortal,onChange:function(e){ed({allowNewMultiPortal:e.target.checked})}},s("New portals are allowed to be accessed by default")),l().createElement(n.Table,{rowKey:"uid",loading:H.loading||J.loading,pagination:!1,columns:ef,dataSource:null!=(t=H.data)?t:[],locale:{emptyText:H.error?s("Failed to load portals"):s("No portals")}})),l().createElement(o.Drawer,{title:W,"aria-label":W,width:d.screenLG,open:A&&!!Q,onClose:function(){return C(void 0)}},Q?l().createElement(o.Space,{direction:"vertical",size:d.marginSM,style:{width:"100%"}},l().createElement(o.Checkbox,{checked:z,onChange:function(e){return ep(e.target.checked)}},s("New routes are allowed to be accessed by default")),l().createElement(o.Input.Search,{allowClear:!0,"aria-label":s("Search routes"),placeholder:s("Search routes"),value:K,onChange:function(e){return L(e.target.value)}}),l().createElement(n.Table,{rowKey:"id",loading:X.loading||ei.loading||el.loading,pagination:!1,expandable:{defaultExpandAllRows:!1,expandedRowKeys:K.trim()?en:void 0},columns:ev,dataSource:er,locale:{emptyText:eo}})):null)):l().createElement(o.Typography.Text,{type:"secondary"},s("Select a role to configure permissions"))}}}]);
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file is part of the NocoBase (R) project.
|
|
3
|
-
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
-
* Authors: NocoBase Team.
|
|
5
|
-
*
|
|
6
|
-
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
-
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
"use strict";(self.webpackChunk_nocobase_plugin_multi_portal_client_v2=self.webpackChunk_nocobase_plugin_multi_portal_client_v2||[]).push([["845"],{924:function(e,t,r){r.r(t),r.d(t,{createMultiPortal:function(){return P},deleteMultiPortals:function(){return I},updateMultiPortal:function(){return T}});var n=r(375),a=r(485),l=r(694),o=r(625),i=r(59),u=r(155),c=r.n(u),s=r(337),d=r(143),p=r(756);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function f(e,t,r,n,a,l,o){try{var i=e[l](o),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,a)}function y(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var l=e.apply(t,r);function o(e){f(l,n,a,o,i,"next",e)}function i(e){f(l,n,a,o,i,"throw",e)}o(void 0)})}}function b(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function h(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function g(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,a=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var l=[],o=!0,i=!1;try{for(a=a.call(e);!(o=(r=a.next()).done)&&(l.push(r.value),!t||l.length!==t);o=!0);}catch(e){i=!0,n=e}finally{try{o||null==a.return||a.return()}finally{if(i)throw n}}return l}}(e,t)||E(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function E(e,t){if(e){if("string"==typeof e)return m(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return m(e,t)}}function S(e,t){var r,n,a,l={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(o,"next",{value:u(0)}),i(o,"throw",{value:u(1)}),i(o,"return",{value:u(2)}),"function"==typeof Symbol&&i(o,Symbol.iterator,{value:function(){return this}}),o;function u(i){return function(u){var c=[i,u];if(r)throw TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(l=0)),l;)try{if(r=1,n&&(a=2&c[0]?n.return:c[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,c[1])).done)return a;switch(n=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return l.label++,{value:c[1],done:!1};case 5:l.label++,n=c[1],c=[0];continue;case 7:c=l.ops.pop(),l.trys.pop();continue;default:if(!(a=(a=l.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){l=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){l.label=c[1];break}if(6===c[0]&&l.label<a[1]){l.label=a[1],a=c;break}if(a&&l.label<a[2]){l.label=a[2],l.ops.push(c);break}a[2]&&l.ops.pop(),l.trys.pop();continue}c=t.call(e,l)}catch(e){c=[6,e],n=0}finally{r=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}function w(e,t){if(e&&(void 0===e?"undefined":v(e))==="object")return e[t]}function k(e){return"string"==typeof e&&e?e:void 0}function P(e){return y(function(){return S(this,function(t){switch(t.label){case 0:return[4,e.resource.create({values:e.values})];case 1:return t.sent(),e.onSubmitted(),[2]}})})()}function T(e){return y(function(){return S(this,function(t){switch(t.label){case 0:return[4,e.resource.update({filterByTk:e.filterByTk,values:e.values})];case 1:return t.sent(),e.onSubmitted(),[2]}})})()}function I(e){return y(function(){return S(this,function(t){switch(t.label){case 0:return[4,e.resource.destroy({filterByTk:e.filterByTk})];case 1:return t.sent(),e.onDeleted(),[2]}})})()}var F="no-code",O=["no-code","ai"],j="nocobase",A="main",x={portalType:F,enabled:!0},C={paddingInline:0},B={alignItems:"flex-start"},M="multi-portal-described-radio",D="\n.".concat(M," .ant-radio {\n align-self: flex-start;\n margin-top: 3px;\n}\n"),_=new Set(["__default_portal__"]),q=/^[a-z0-9_-]+$/,L=c().forwardRef(function(e,t){return c().createElement("div",{ref:t},c().createElement(a.IconPicker,e))});function N(e){var t=null==e?void 0:e.trim();if(t&&!q.test(t))return"Portal name can only contain lowercase letters, numbers, hyphens, and underscores"}function R(e){return"string"!=typeof e?null:e.trim()||null}function z(e){var t=R(e);return t&&O.some(function(e){return e===t})?t:F}function U(e){var t=R(e);return"nocobase"===t||"git"===t?t:j}function G(e){var t,r=e.portalName.trim(),n=N(r);if(n)throw Error(n);return h(b({},e),{title:e.title.trim(),uid:e.uid.trim(),portalType:z(e.portalType),portalName:r,routePath:"/".concat(r),icon:"string"!=typeof(t=e.icon)?null:t.trim()||null,options:function(e){if("ai"===z(e.portalType)){var t,r=U(e.sourceStorage);return"git"!==r?{sourceStorage:r}:{sourceStorage:r,git:{repo:(null!=(t=e.gitRepo)?t:"").trim(),branch:R(e.gitBranch)||A,path:R(e.gitPath)||""}}}}(e)})}function V(e){var t,r,n=function(e){if(e&&(void 0===e?"undefined":v(e))==="object"){var t,r,n,a=U(e.sourceStorage);return"git"!==a?h(b({},e),{sourceStorage:a}):h(b({},e),{sourceStorage:a,git:h(b({},e.git),{repo:R(null==(t=e.git)?void 0:t.repo)||"",branch:R(null==(r=e.git)?void 0:r.branch)||A,path:R(null==(n=e.git)?void 0:n.path)||""})})}}(e.options);return b({title:e.title,uid:e.uid,portalType:z(e.portalType),portalName:e.portalName,routePath:e.routePath,uiLayoutUid:e.uiLayoutUid||(null==(r=e.uiLayout)?void 0:r.uid)||"",icon:null!=(t=e.icon)?t:null,enabled:e.enabled},n?{options:n}:{})}function K(e){return h(b({},e),{defaultPortal:_.has(e.uid)})}function $(e){var t=e.record,r=e.onSubmitted,n=(0,d.kj)(),s=(0,l.useFlowContext)(),p=i.theme.useToken().token,m=i.App.useApp().notification,f=g(i.Form.useForm(),1)[0],v=g((0,u.useState)(!1),2),E=v[0],I=v[1],F=(0,u.useMemo)(function(){return s.api.resource("multiPortals")},[s.api]),O=(0,o.useRequest)(function(){return y(function(){var e,t;return S(this,function(r){switch(r.label){case 0:return[4,s.api.request({url:"uiLayouts:listEnabled",method:"get",params:{pageSize:200,sort:["uid"]},skipNotify:!0})];case 1:return[2,Array.isArray(null==(t=r.sent())||null==(e=t.data)?void 0:e.data)?t.data.data:[]]}})})()}),C=(0,u.useMemo)(function(){var e;return(null!=(e=O.data)?e:[]).map(function(e){return{value:e.uid,label:"desktop"===e.layoutType?n("Desktop"):"mobile"===e.layoutType?n("Mobile"):e.title||e.uid}})},[O.data,n]);(0,u.useEffect)(function(){if(!(t||f.getFieldValue("uiLayoutUid"))){var e,r,n=null==(e=O.data)||null==(r=e.find(function(e){return"desktop"===e.layoutType}))?void 0:r.uid;n&&f.setFieldValue("uiLayoutUid",n)}},[f,O.data,t]);var _=(0,u.useMemo)(function(){var e,r,n,a,o;return t?(o=(a=V(t)).options,h(b({},a),{sourceStorage:U(null==o?void 0:o.sourceStorage),gitRepo:(null==o||null==(e=o.git)?void 0:e.repo)||"",gitBranch:(null==o||null==(r=o.git)?void 0:r.branch)||A,gitPath:(null==o||null==(n=o.git)?void 0:n.path)||""})):h(b({},x),{uid:"portal-".concat((0,l.randomId)()),sourceStorage:j,gitBranch:A,gitPath:""})},[t]),q=(0,u.useCallback)(function(){return y(function(){var e,a;return S(this,function(l){switch(l.label){case 0:return[4,f.validateFields()];case 1:e=G.apply(void 0,[l.sent()]),I(!0),l.label=2;case 2:if(l.trys.push([2,7,8,9]),!t)return[3,4];return[4,T({resource:F,filterByTk:t.uid,values:e,onSubmitted:r})];case 3:return l.sent(),[3,6];case 4:return[4,P({resource:F,values:e,onSubmitted:r})];case 5:l.sent(),l.label=6;case 6:return[3,9];case 7:throw a=l.sent(),m.error({message:function(e){var t=w(e,"response"),r=w(t,"data"),n=w(r,"errors");if(Array.isArray(n)){var a=n.map(function(e){return k(w(e,"message"))}).filter(function(e){return!!e}).join("\n");if(a)return a}return k(w(w(r,"error"),"message"))||k(w(r,"message"))||k(w(e,"message"))}(a)||n("Failed to save portal"),role:"alert"}),a;case 8:return I(!1),[7];case 9:return[2]}})})()},[f,m,r,t,F,n]);return c().createElement(a.DrawerFormLayout,{title:t?n("Edit portal"):n("Add portal"),onSubmit:q,submitting:E,submitText:n("Submit"),cancelText:n("Cancel")},c().createElement("style",null,D),c().createElement(i.Form,{form:f,layout:"vertical",initialValues:_},c().createElement(i.Form.Item,{name:"title",label:n("Title"),rules:[{required:!0,whitespace:!0,message:n("Title field is required")}]},c().createElement(i.Input,null)),c().createElement(i.Form.Item,{name:"uid",hidden:!0,rules:[{required:!0,whitespace:!0,message:n("The field value is required")}]},c().createElement(i.Input,null)),c().createElement(i.Form.Item,{name:"portalName",label:n("Portal name"),rules:[{required:!0,whitespace:!0,message:n("The field value is required")},{validator:function(e,t){var r=N(t);return r?Promise.reject(Error(n(r))):Promise.resolve()}}]},c().createElement(i.Input,{disabled:null==t?void 0:t.defaultPortal})),c().createElement(i.Form.Item,{name:"portalType",label:n("Portal type"),htmlFor:"multi-portal-portal-type-no-code",rules:[{required:!0,message:n("The field value is required")}]},c().createElement(i.Radio.Group,{disabled:null==t?void 0:t.defaultPortal},c().createElement(i.Space,{direction:"vertical"},c().createElement(i.Radio,{className:M,id:"multi-portal-portal-type-no-code",style:B,value:"no-code"},c().createElement("span",null,n("No-code portal")),c().createElement("div",{style:{color:p.colorTextDescription,fontSize:p.fontSizeSM}},n("Create with visual configuration. AI can help adjust the configuration. Path: /v/<name>"))),c().createElement(i.Radio,{className:M,style:B,value:"ai"},c().createElement("span",null,n("AI portal")),c().createElement("div",{style:{color:p.colorTextDescription,fontSize:p.fontSizeSM}},n("Create with AI Agent and code. Users can request changes in natural language. Path: /x/<name>")))))),c().createElement(i.Form.Item,{noStyle:!0,shouldUpdate:function(e,t){return e.portalType!==t.portalType}},function(e){return"ai"===(0,e.getFieldValue)("portalType")?c().createElement(c().Fragment,null,c().createElement(i.Form.Item,{name:"sourceStorage",label:n("Source storage"),htmlFor:"multi-portal-source-storage-nocobase",rules:[{required:!0,message:n("The field value is required")}]},c().createElement(i.Radio.Group,null,c().createElement(i.Space,{direction:"vertical"},c().createElement(i.Radio,{className:M,id:"multi-portal-source-storage-nocobase",style:B,value:"nocobase"},c().createElement("span",null,n("NocoBase")),c().createElement("div",{style:{color:p.colorTextDescription,fontSize:p.fontSizeSM}},n("Manage portal source code in NocoBase."))),c().createElement(i.Radio,{className:M,style:B,value:"git"},c().createElement("span",null,n("Git")),c().createElement("div",{style:{color:p.colorTextDescription,fontSize:p.fontSizeSM}},n("Manage portal source code in a Git repository.")))))),c().createElement(i.Form.Item,{noStyle:!0,shouldUpdate:function(e,t){return e.sourceStorage!==t.sourceStorage}},function(e){return"git"===(0,e.getFieldValue)("sourceStorage")?c().createElement(c().Fragment,null,c().createElement(i.Form.Item,{name:"gitRepo",label:n("Git repository URL"),rules:[{required:!0,whitespace:!0,message:n("The field value is required")}]},c().createElement(i.Input,{placeholder:"git@github.com:nocobase/customer-portal.git"})),c().createElement(i.Form.Item,{name:"gitBranch",label:n("Git branch")},c().createElement(i.Input,{placeholder:A})),c().createElement(i.Form.Item,{name:"gitPath",label:n("Git path"),extra:n("Directory inside the Git repository for this portal. Leave empty for the root.")},c().createElement(i.Input,{placeholder:""}))):null})):null}),c().createElement(i.Form.Item,{name:"uiLayoutUid",label:n("Layout"),dependencies:["portalType"],rules:[{validator:function(e,t){return"ai"===f.getFieldValue("portalType")||t?Promise.resolve():Promise.reject(Error(n("The field value is required")))}}]},c().createElement(i.Select,{disabled:!!t||(null==t?void 0:t.defaultPortal),loading:O.loading,options:C,showSearch:!0,optionFilterProp:"label"})),c().createElement(i.Form.Item,{name:"icon",label:n("Icon")},c().createElement(L,null)),c().createElement(i.Form.Item,{name:"enabled",label:n("Enabled"),valuePropName:"checked",extra:n("When disabled, this portal will not be registered or accessible.")},c().createElement(i.Switch,null))))}L.displayName="IconPickerFormControl",t.default=function(){var e,t=(0,d.kj)(),r=(0,l.useFlowContext)(),f=i.theme.useToken().token,v=i.App.useApp(),w=v.message,k=v.modal,P=g((0,u.useState)([]),2),F=P[0],O=P[1],j=g((0,u.useState)([]),2),A=j[0],x=j[1],B=(0,u.useMemo)(function(){return r.api.resource("multiPortals")},[r.api]),M=(0,o.useRequest)(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return y(function(){var t,r;return S(this,function(n){switch(n.label){case 0:return[4,B.list({page:e,pageSize:20,sort:["createdAt"],appends:["uiLayout"]})];case 1:return[2,null!=(t=null==(r=n.sent())?void 0:r.data)?t:{data:[]}]}})})()}),D=M.data,_=M.loading,q=(0,u.useMemo)(function(){return Array.isArray(null==D?void 0:D.data)?D.data.map(K):[]},[null==D?void 0:D.data]),L=(0,u.useMemo)(function(){var e,t,r,n=null==D?void 0:D.meta;return!!n&&{total:null!=(e=n.count)?e:q.length,pageSize:null!=(t=n.pageSize)?t:20,current:null!=(r=n.page)?r:1}},[null==D?void 0:D.meta,q.length]),N=(0,u.useCallback)(function(){var e,t;O([]),M.run(null!=(e=null==D||null==(t=D.meta)?void 0:t.page)?e:1)},[M,null==D||null==(e=D.meta)?void 0:e.page]),R=(0,u.useCallback)(function(){(0,s.G)(r.app).reload(r.api).catch(function(e){console.error("[NocoBase] Failed to refresh portal entry actions.",e)})},[r.api,r.app]),z=(0,u.useCallback)(function(){N(),R()},[R,N]),U=(0,u.useCallback)(function(e){r.viewer.drawer({width:f.screenMD,closable:!0,content:function(){return c().createElement($,{record:e,onSubmitted:z})}})},[r.viewer,z,f.screenMD]),G=(0,u.useCallback)(function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};k.confirm({title:t("Delete portal"),content:c().createElement(c().Fragment,null,c().createElement("div",null,r.isBatch?t("Are you sure you want to delete the selected Multi-portal records?"):t("Are you sure you want to delete it?")),c().createElement("div",null,t("The corresponding portal directory will also be deleted."))),onOk:function(){return y(function(){return S(this,function(t){switch(t.label){case 0:return[4,I({resource:B,filterByTk:e,onDeleted:z})];case 1:return t.sent(),[2]}})})()}})},[k,z,B,t]),W=(0,u.useCallback)(function(e,r){return y(function(){return S(this,function(n){switch(n.label){case 0:x(function(t){return t.includes(e.uid)?t:((function(e){if(Array.isArray(e))return m(e)})(t)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||E(t)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).concat([e.uid])}),n.label=1;case 1:return n.trys.push([1,,3,4]),[4,T({resource:B,filterByTk:e.uid,values:h(b({},V(e)),{enabled:r}),onSubmitted:z})];case 2:return n.sent(),w.success(t("Updated successfully")),[3,4];case 3:return x(function(t){return t.filter(function(t){return t!==e.uid})}),[7];case 4:return[2]}})})()},[w,z,B,t]),H=(0,u.useMemo)(function(){return[{title:t("Title"),dataIndex:"title",ellipsis:!0},{title:t("Access path"),dataIndex:"routePath",ellipsis:!0,render:function(e,t){var n=(0,p.u)(r.app,t.routePath,t.portalType);return c().createElement(i.Button,{type:"link",href:n,target:"_blank",rel:"noopener noreferrer",style:C},n)}},{title:t("Portal name"),dataIndex:"portalName",ellipsis:!0},{title:t("Layout"),dataIndex:"uiLayoutUid",ellipsis:!0,render:function(e,t){var r,n,a,l=(null==(n=t.uiLayout)?void 0:n.title)||t.uiLayoutUid;return l?c().createElement(i.Tag,{color:"desktop"===(r=null==(a=t.uiLayout)?void 0:a.layoutType)?"blue":"mobile"===r?"purple":"default"},l):null}},{title:t("Enabled"),dataIndex:"enabled",render:function(e,r){return c().createElement(i.Switch,{"aria-label":t("Enabled"),checked:e,loading:A.includes(r.uid),size:"small",onChange:function(e){return y(function(){return S(this,function(t){switch(t.label){case 0:return[4,W(r,e)];case 1:return t.sent(),[2]}})})()}})}},{title:t("Actions"),render:function(e,n){return c().createElement(i.Space,{size:"small"},c().createElement(i.Button,{type:"link",href:(0,p.u)(r.app,n.routePath,n.portalType),target:"_blank",rel:"noopener noreferrer",style:C},t("View")),c().createElement(i.Button,{type:"link",style:C,onClick:function(){return U(n)}},t("Edit")),c().createElement(i.Button,{type:"link",style:C,onClick:function(){return G(n.uid)}},t("Delete")))}}]},[r.app,G,W,U,t,A]),J=(0,u.useCallback)(function(e){var t;M.run(null!=(t=e.current)?t:1)},[M]);return c().createElement(i.Card,null,c().createElement(i.Flex,{justify:"flex-end",style:{marginBottom:f.marginMD}},c().createElement(i.Space,null,c().createElement(i.Button,{icon:c().createElement(n.ReloadOutlined,null),onClick:z},t("Refresh")),c().createElement(i.Button,{icon:c().createElement(n.DeleteOutlined,null),disabled:0===F.length,onClick:function(){return G(F,{isBatch:!0})}},t("Delete")),c().createElement(i.Button,{type:"primary",icon:c().createElement(n.PlusOutlined,null),onClick:function(){return U()}},t("Add portal")))),c().createElement(a.Table,{rowKey:"uid",loading:_,dataSource:q,columns:H,pagination:L,rowSelection:{selectedRowKeys:F,onChange:function(e){return O(e)}},onChange:J}))}}}]);
|