@cobaltcore-dev/aurora 0.10.0 → 0.11.0

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 (120) hide show
  1. package/README.md +2 -1
  2. package/dist/client/AuroraApp.d.ts +2 -0
  3. package/dist/client/AuthProvider-DZqOvceF.mjs +64 -0
  4. package/dist/client/AuthProvider-DZqOvceF.mjs.map +1 -0
  5. package/dist/client/ContentHeader-DsuZD8fa.mjs +110 -0
  6. package/dist/client/ContentHeader-DsuZD8fa.mjs.map +1 -0
  7. package/dist/client/{DeleteFlavorModal-C3m7bQJu.mjs → DeleteFlavorModal-RnbspW_2.mjs} +135 -135
  8. package/dist/client/{DeleteFlavorModal-C3m7bQJu.mjs.map → DeleteFlavorModal-RnbspW_2.mjs.map} +1 -1
  9. package/dist/client/{DeleteVersionsModal-CyYZfB8d.mjs → DeleteVersionsModal-CsBJzXoW.mjs} +57 -57
  10. package/dist/client/{DeleteVersionsModal-CyYZfB8d.mjs.map → DeleteVersionsModal-CsBJzXoW.mjs.map} +1 -1
  11. package/dist/client/{EditSecurityGroupModal-DKusxfta.mjs → EditSecurityGroupModal-BPv3d7am.mjs} +15 -15
  12. package/dist/client/{EditSecurityGroupModal-DKusxfta.mjs.map → EditSecurityGroupModal-BPv3d7am.mjs.map} +1 -1
  13. package/dist/client/{FiltersInput-GzR4D0q6.mjs → FiltersInput-CViamP59.mjs} +2 -2
  14. package/dist/client/{FiltersInput-GzR4D0q6.mjs.map → FiltersInput-CViamP59.mjs.map} +1 -1
  15. package/dist/client/{FloatingIpActionModals-CRvROJ3H.mjs → FloatingIpActionModals-DTn3HFei.mjs} +45 -45
  16. package/dist/client/{FloatingIpActionModals-CRvROJ3H.mjs.map → FloatingIpActionModals-DTn3HFei.mjs.map} +1 -1
  17. package/dist/client/{ImageToastNotifications-BuDXpTkl.mjs → ImageToastNotifications-CFKQZTgf.mjs} +261 -261
  18. package/dist/client/{ImageToastNotifications-BuDXpTkl.mjs.map → ImageToastNotifications-CFKQZTgf.mjs.map} +1 -1
  19. package/dist/client/{RouteError-DVAiT0mT.mjs → RouteError-BebIhFpQ.mjs} +2 -2
  20. package/dist/client/{RouteError-DVAiT0mT.mjs.map → RouteError-BebIhFpQ.mjs.map} +1 -1
  21. package/dist/client/{SortInput-DLcusjGZ.mjs → SortInput-D0Vb864D.mjs} +2 -2
  22. package/dist/client/{SortInput-DLcusjGZ.mjs.map → SortInput-D0Vb864D.mjs.map} +1 -1
  23. package/dist/client/{_auth-DXJkv9QO.mjs → _auth-DnImOqR-.mjs} +2 -2
  24. package/dist/client/_auth-DnImOqR-.mjs.map +1 -0
  25. package/dist/client/{_flavorId-Dy7EYQum.mjs → _flavorId-C9SZd1jL.mjs} +8 -8
  26. package/dist/client/{_flavorId-Dy7EYQum.mjs.map → _flavorId-C9SZd1jL.mjs.map} +1 -1
  27. package/dist/client/{_flavorId-DsD2VTKA.mjs → _flavorId-DINgWoeV.mjs} +38 -38
  28. package/dist/client/{_flavorId-DsD2VTKA.mjs.map → _flavorId-DINgWoeV.mjs.map} +1 -1
  29. package/dist/client/{_floatingIpId-j17rCQqG2.mjs → _floatingIpId-BACLbMzi2.mjs} +32 -32
  30. package/dist/client/{_floatingIpId-j17rCQqG2.mjs.map → _floatingIpId-BACLbMzi2.mjs.map} +1 -1
  31. package/dist/client/{_floatingIpId-BjVbeNw_.mjs → _floatingIpId-BzVMOv97.mjs} +2 -2
  32. package/dist/client/{_floatingIpId-BjVbeNw_.mjs.map → _floatingIpId-BzVMOv97.mjs.map} +1 -1
  33. package/dist/client/_imageId-DCvaU7-S.mjs +534 -0
  34. package/dist/client/_imageId-DCvaU7-S.mjs.map +1 -0
  35. package/dist/client/{_pcaId-Bo7yHkNW.mjs → _pcaId-B3PqECyO.mjs} +115 -115
  36. package/dist/client/{_pcaId-Bo7yHkNW.mjs.map → _pcaId-B3PqECyO.mjs.map} +1 -1
  37. package/dist/client/{_pcaId-CKkCVC7b.mjs → _pcaId-DAJEt3ZI.mjs} +2 -2
  38. package/dist/client/{_pcaId-CKkCVC7b.mjs.map → _pcaId-DAJEt3ZI.mjs.map} +1 -1
  39. package/dist/client/{_projectId-CARHuZTU.mjs → _projectId-B2hG5peP.mjs} +3 -3
  40. package/dist/client/_projectId-B2hG5peP.mjs.map +1 -0
  41. package/dist/client/{_projectId-CY8W0IF6.mjs → _projectId-BnWXWTBR.mjs} +3 -3
  42. package/dist/client/{_projectId-CY8W0IF6.mjs.map → _projectId-BnWXWTBR.mjs.map} +1 -1
  43. package/dist/client/{_projectId-Dbck_MFa.mjs → _projectId-DRr9rLST.mjs} +66 -66
  44. package/dist/client/{_projectId-Dbck_MFa.mjs.map → _projectId-DRr9rLST.mjs.map} +1 -1
  45. package/dist/client/{_projectId-B_2sZKk-.mjs → _projectId-DU8qRiZk.mjs} +2 -2
  46. package/dist/client/_projectId-DU8qRiZk.mjs.map +1 -0
  47. package/dist/client/{_securityGroupId-gSEZbBII.mjs → _securityGroupId-Cj9IotMJ.mjs} +2 -2
  48. package/dist/client/{_securityGroupId-gSEZbBII.mjs.map → _securityGroupId-Cj9IotMJ.mjs.map} +1 -1
  49. package/dist/client/{_securityGroupId-CkN0CGVg.mjs → _securityGroupId-ClJiFh4R.mjs} +267 -267
  50. package/dist/client/{_securityGroupId-CkN0CGVg.mjs.map → _securityGroupId-ClJiFh4R.mjs.map} +1 -1
  51. package/dist/client/_storageType-BrHDa2bD.mjs +3005 -0
  52. package/dist/client/_storageType-BrHDa2bD.mjs.map +1 -0
  53. package/dist/client/{_storageType-6k8lUnQo.mjs → _storageType-CSLH93js.mjs} +2 -2
  54. package/dist/client/{_storageType-6k8lUnQo.mjs.map → _storageType-CSLH93js.mjs.map} +1 -1
  55. package/dist/client/_storageType-zeSZe--V.mjs.map +1 -1
  56. package/dist/client/{about-Nsxkyh9U.mjs → about-BnU297yB.mjs} +2 -2
  57. package/dist/client/about-BnU297yB.mjs.map +1 -0
  58. package/dist/client/{aurora-DDzsst74.mjs → aurora-6RsAZtnz.mjs} +2 -2
  59. package/dist/client/aurora-6RsAZtnz.mjs.map +1 -0
  60. package/dist/client/{build-BdRRmNf5.mjs → build-DF7MTyXG.mjs} +3582 -3114
  61. package/dist/client/{build-BdRRmNf5.mjs.map → build-DF7MTyXG.mjs.map} +1 -1
  62. package/dist/client/{constants-PMXUGI4Q.mjs → constants-BskfpGYY.mjs} +16 -16
  63. package/dist/client/{constants-PMXUGI4Q.mjs.map → constants-BskfpGYY.mjs.map} +1 -1
  64. package/dist/client/{flavors-p2TKcqP-.mjs → flavors-DAbtRoep.mjs} +151 -151
  65. package/dist/client/{flavors-p2TKcqP-.mjs.map → flavors-DAbtRoep.mjs.map} +1 -1
  66. package/dist/client/{flavors-BclEwobO.mjs → flavors-DODudzrA.mjs} +2 -2
  67. package/dist/client/{flavors-BclEwobO.mjs.map → flavors-DODudzrA.mjs.map} +1 -1
  68. package/dist/client/flavors-DWMZ6TuJ.mjs.map +1 -1
  69. package/dist/client/{floatingips-ph0ZxJw8.mjs → floatingips-DJW9ftN_.mjs} +83 -83
  70. package/dist/client/floatingips-DJW9ftN_.mjs.map +1 -0
  71. package/dist/client/{hooks-dSArr2Ca.mjs → hooks-CMgoYcDG.mjs} +1 -1
  72. package/dist/client/{images-CXdghaMW.mjs → images-BbLnuYrL.mjs} +2 -2
  73. package/dist/client/{images-CXdghaMW.mjs.map → images-BbLnuYrL.mjs.map} +1 -1
  74. package/dist/client/{images-Dbjo4yKn.mjs → images-C3JyPwer.mjs} +2 -2
  75. package/dist/client/images-C3JyPwer.mjs.map +1 -0
  76. package/dist/client/{images-BblnyWJq.mjs → images-Cp6V1nF5.mjs} +455 -455
  77. package/dist/client/{images-BblnyWJq.mjs.map → images-Cp6V1nF5.mjs.map} +1 -1
  78. package/dist/client/images-NBf2bV43.mjs.map +1 -1
  79. package/dist/client/index.js +257 -257
  80. package/dist/client/index.js.map +1 -1
  81. package/dist/client/network-DuZm76BZ.mjs.map +1 -1
  82. package/dist/client/{objects-B9Jh3SMG.mjs → objects-Bw96WXOs.mjs} +2 -2
  83. package/dist/client/{objects-B9Jh3SMG.mjs.map → objects-Bw96WXOs.mjs.map} +1 -1
  84. package/dist/client/{objects-Bw25cE1m.mjs → objects-DUmK3WgA.mjs} +1458 -1430
  85. package/dist/client/objects-DUmK3WgA.mjs.map +1 -0
  86. package/dist/client/objects-o2Cj_ndZ.mjs.map +1 -1
  87. package/dist/client/{pca-DUrQ_tIg.mjs → pca-DKeGzbww.mjs} +2 -2
  88. package/dist/client/{pca-DUrQ_tIg.mjs.map → pca-DKeGzbww.mjs.map} +1 -1
  89. package/dist/client/{pca-CiLPHmK7.mjs → pca-Dc_tdh4-.mjs} +47 -47
  90. package/dist/client/{pca-CiLPHmK7.mjs.map → pca-Dc_tdh4-.mjs.map} +1 -1
  91. package/dist/client/{projects-DNd3UTas.mjs → projects-CRL37ftA.mjs} +16 -16
  92. package/dist/client/{projects-DNd3UTas.mjs.map → projects-CRL37ftA.mjs.map} +1 -1
  93. package/dist/client/{projects-B5topuei.mjs → projects-DUWOgB3m.mjs} +2 -2
  94. package/dist/client/{projects-B5topuei.mjs.map → projects-DUWOgB3m.mjs.map} +1 -1
  95. package/dist/client/{projects-CHYn7L5e.mjs → projects-DpXQYfKc.mjs} +2 -2
  96. package/dist/client/projects-DpXQYfKc.mjs.map +1 -0
  97. package/dist/client/{securitygroups-CcA2TpAt.mjs → securitygroups-CWWFSjjj.mjs} +94 -94
  98. package/dist/client/securitygroups-CWWFSjjj.mjs.map +1 -0
  99. package/dist/client/{useListWithFiltering-CVzhMyEA.mjs → useListWithFiltering-C9k7xWqz.mjs} +7 -7
  100. package/dist/client/{useListWithFiltering-CVzhMyEA.mjs.map → useListWithFiltering-C9k7xWqz.mjs.map} +1 -1
  101. package/dist/server/index.js +697 -406
  102. package/package.json +3 -3
  103. package/dist/client/AuthProvider-Co4d0WzB.mjs +0 -100
  104. package/dist/client/AuthProvider-Co4d0WzB.mjs.map +0 -1
  105. package/dist/client/ContentHeader-D4jlOG-9.mjs +0 -96
  106. package/dist/client/ContentHeader-D4jlOG-9.mjs.map +0 -1
  107. package/dist/client/_auth-DXJkv9QO.mjs.map +0 -1
  108. package/dist/client/_imageId-BjfhqAje.mjs +0 -534
  109. package/dist/client/_imageId-BjfhqAje.mjs.map +0 -1
  110. package/dist/client/_projectId-B_2sZKk-.mjs.map +0 -1
  111. package/dist/client/_projectId-CARHuZTU.mjs.map +0 -1
  112. package/dist/client/_storageType-CLTxXjQZ.mjs +0 -3048
  113. package/dist/client/_storageType-CLTxXjQZ.mjs.map +0 -1
  114. package/dist/client/about-Nsxkyh9U.mjs.map +0 -1
  115. package/dist/client/aurora-DDzsst74.mjs.map +0 -1
  116. package/dist/client/floatingips-ph0ZxJw8.mjs.map +0 -1
  117. package/dist/client/images-Dbjo4yKn.mjs.map +0 -1
  118. package/dist/client/objects-Bw25cE1m.mjs.map +0 -1
  119. package/dist/client/projects-CHYn7L5e.mjs.map +0 -1
  120. package/dist/client/securitygroups-CcA2TpAt.mjs.map +0 -1
@@ -1,50 +1,50 @@
1
- import { D as e, G as t, H as n, J as r, L as i, N as a, Q as o, S as s, U as c, Y as l, _ as u, ct as d, et as f, f as p, it as m, k as h, lt as g, m as _, ot as v, p as y, x as b } from "./build-BdRRmNf5.mjs";
1
+ import { D as e, K as t, L as n, N as r, S as i, U as a, W as o, X as s, Y as c, _ as l, ct as u, dt as d, et as f, f as p, k as m, m as h, nt as g, ot as _, p as v, ut as y, x as b } from "./build-DF7MTyXG.mjs";
2
2
  import { r as x } from "./trpcClient-BzPUgiM2.mjs";
3
3
  import { t as S } from "./useProjectId-DBc5lpoU.mjs";
4
- import "./hooks-dSArr2Ca.mjs";
5
- import { n as C, t as w } from "./useListWithFiltering-CVzhMyEA.mjs";
4
+ import "./hooks-CMgoYcDG.mjs";
5
+ import { n as C, t as w } from "./useListWithFiltering-C9k7xWqz.mjs";
6
6
  import { t as T } from "./buildFilterParams-DoZzMKX9.mjs";
7
- import { t as E } from "./EditSecurityGroupModal-DKusxfta.mjs";
7
+ import { t as E } from "./EditSecurityGroupModal-BPv3d7am.mjs";
8
8
  import { Fragment as D, jsx as O, jsxs as k } from "react/jsx-runtime";
9
9
  import { useEffect as A, useRef as j, useState as M } from "react";
10
10
  import { useNavigate as N } from "@tanstack/react-router";
11
11
  import { Trans as P, useLingui as F } from "@lingui/react";
12
12
  //#region src/client/routes/_auth/projects/$projectId/network/securitygroups/-components/-modals/DeleteSecurityGroupDialog.tsx
13
- var I = ({ isOpen: e, onClose: t, securityGroup: n, onDelete: i, isDeleting: a = !1, error: o = null }) => {
14
- let { i18n: s, _: c } = F(), [l, f] = M(""), m = s._({ id: "HNlEFZ" }), h = l.toLowerCase() === m.toLowerCase(), v = n.name || n.id, y = (e) => {
15
- e.preventDefault(), h && !a && i(n.id);
13
+ var I = ({ isOpen: e, onClose: t, securityGroup: n, onDelete: r, isDeleting: i = !1, error: a = null }) => {
14
+ let { i18n: o, _: s } = F(), [u, f] = M(""), m = o._({ id: "HNlEFZ" }), g = u.toLowerCase() === m.toLowerCase(), _ = n.name || n.id, v = (e) => {
15
+ e.preventDefault(), g && !i && r(n.id);
16
16
  }, b = () => {
17
17
  f(""), t();
18
18
  };
19
- return /*#__PURE__*/ O(d, {
19
+ return /*#__PURE__*/ O(y, {
20
20
  open: e,
21
21
  onCancel: b,
22
22
  size: "small",
23
- title: s._({
23
+ title: o._({
24
24
  id: "Y+2SDm",
25
- values: { securityGroupName: v }
25
+ values: { securityGroupName: _ }
26
26
  }),
27
27
  modalFooter: /*#__PURE__*/ O(p, {
28
28
  className: "flex justify-end",
29
- children: /*#__PURE__*/ k(g, { children: [/*#__PURE__*/ O(u, {
29
+ children: /*#__PURE__*/ k(d, { children: [/*#__PURE__*/ O(l, {
30
30
  variant: "default",
31
31
  onClick: b,
32
- disabled: a,
32
+ disabled: i,
33
33
  children: /*#__PURE__*/ O(P, { id: "dEgA5A" })
34
- }), /*#__PURE__*/ O(u, {
34
+ }), /*#__PURE__*/ O(l, {
35
35
  variant: "primary-danger",
36
- onClick: y,
37
- disabled: !h || a,
36
+ onClick: v,
37
+ disabled: !g || i,
38
38
  "data-testid": "confirm-delete-button",
39
- children: a ? /*#__PURE__*/ O(P, { id: "EF2EU9" }) : /*#__PURE__*/ O(P, { id: "cnGeoo" })
39
+ children: i ? /*#__PURE__*/ O(P, { id: "EF2EU9" }) : /*#__PURE__*/ O(P, { id: "cnGeoo" })
40
40
  })] })
41
41
  }),
42
42
  children: /*#__PURE__*/ k("div", { children: [
43
- o && /*#__PURE__*/ O(r, {
43
+ a && /*#__PURE__*/ O(c, {
44
44
  dismissible: !1,
45
45
  variant: "error",
46
46
  className: "mt-4",
47
- children: o
47
+ children: a
48
48
  }),
49
49
  /*#__PURE__*/ O(P, { id: "Qb+14I" }),
50
50
  /*#__PURE__*/ k("div", {
@@ -56,13 +56,13 @@ var I = ({ isOpen: e, onClose: t, securityGroup: n, onDelete: i, isDeleting: a =
56
56
  values: { deleteWord: m },
57
57
  components: { 0: /*#__PURE__*/ O("strong", {}) }
58
58
  })
59
- }), /*#__PURE__*/ O(_, {
59
+ }), /*#__PURE__*/ O(h, {
60
60
  id: "confirmation",
61
61
  name: "confirmation",
62
- value: l,
62
+ value: u,
63
63
  onChange: (e) => f(e.target.value),
64
64
  placeholder: m,
65
- disabled: a,
65
+ disabled: i,
66
66
  autoComplete: "off",
67
67
  "data-testid": "delete-confirmation-input"
68
68
  })]
@@ -72,13 +72,13 @@ var I = ({ isOpen: e, onClose: t, securityGroup: n, onDelete: i, isDeleting: a =
72
72
  };
73
73
  //#endregion
74
74
  //#region src/client/routes/_auth/projects/$projectId/network/securitygroups/-components/SecurityGroupTableRow.tsx
75
- function L({ securityGroup: n, permissions: r, onEdit: i, onDelete: o, onViewDetails: s, isReadOnly: c = !1 }) {
76
- let { i18n: l, _: u } = F(), d = ({ value: e }) => /*#__PURE__*/ O("span", { children: e ? l._({ id: "l75CjT" }) : l._({ id: "1UzENP" }) }), f = () => {
75
+ function L({ securityGroup: n, permissions: i, onEdit: a, onDelete: o, onViewDetails: s, isReadOnly: c = !1 }) {
76
+ let { i18n: l, _: d } = F(), f = ({ value: e }) => /*#__PURE__*/ O("span", { children: e ? l._({ id: "l75CjT" }) : l._({ id: "1UzENP" }) }), p = () => {
77
77
  s && s(n);
78
78
  };
79
- return /*#__PURE__*/ k(a, {
79
+ return /*#__PURE__*/ k(r, {
80
80
  "data-testid": `security-group-row-${n.id}`,
81
- onClick: f,
81
+ onClick: p,
82
82
  className: "hover:bg-theme-background-lvl-2 cursor-pointer",
83
83
  children: [
84
84
  /*#__PURE__*/ O(t, { children: /*#__PURE__*/ k("div", { children: [/*#__PURE__*/ O("p", {
@@ -89,7 +89,7 @@ function L({ securityGroup: n, permissions: r, onEdit: i, onDelete: o, onViewDet
89
89
  children: n.id
90
90
  })] }) }),
91
91
  /*#__PURE__*/ O(t, { children: n.description || l._({ id: "h47p9L" }) }),
92
- /*#__PURE__*/ k(t, { children: [/*#__PURE__*/ O(d, { value: n.shared }), n.shared && /*#__PURE__*/ k("p", { children: [
92
+ /*#__PURE__*/ k(t, { children: [/*#__PURE__*/ O(f, { value: n.shared }), n.shared && /*#__PURE__*/ k("p", { children: [
93
93
  /*#__PURE__*/ O(P, { id: "LtI9AS" }),
94
94
  ": ",
95
95
  /*#__PURE__*/ O("span", {
@@ -97,20 +97,20 @@ function L({ securityGroup: n, permissions: r, onEdit: i, onDelete: o, onViewDet
97
97
  children: n.project_id
98
98
  })
99
99
  ] })] }),
100
- /*#__PURE__*/ O(t, { children: /*#__PURE__*/ O(d, { value: n.stateful }) }),
100
+ /*#__PURE__*/ O(t, { children: /*#__PURE__*/ O(f, { value: n.stateful }) }),
101
101
  /*#__PURE__*/ O(t, {
102
102
  onClick: (e) => e.stopPropagation(),
103
103
  className: "items-end justify-end pr-0",
104
- children: /*#__PURE__*/ O(e, { children: /*#__PURE__*/ k(v, { children: [
105
- /*#__PURE__*/ O(h, {
104
+ children: /*#__PURE__*/ O(e, { children: /*#__PURE__*/ k(u, { children: [
105
+ /*#__PURE__*/ O(m, {
106
106
  label: l._({ id: "v0hPHE" }),
107
- onClick: () => f()
107
+ onClick: () => p()
108
108
  }),
109
- r.canUpdate && !c && /*#__PURE__*/ O(h, {
109
+ i.canUpdate && !c && /*#__PURE__*/ O(m, {
110
110
  label: l._({ id: "ePK91l" }),
111
- onClick: () => i(n)
111
+ onClick: () => a(n)
112
112
  }),
113
- r.canDelete && !c && /*#__PURE__*/ O(h, {
113
+ i.canDelete && !c && /*#__PURE__*/ O(m, {
114
114
  label: l._({ id: "cnGeoo" }),
115
115
  onClick: () => o(n)
116
116
  })
@@ -121,7 +121,7 @@ function L({ securityGroup: n, permissions: r, onEdit: i, onDelete: o, onViewDet
121
121
  }
122
122
  //#endregion
123
123
  //#region src/client/routes/_auth/projects/$projectId/network/securitygroups/-components/SecurityGroupListContainer.tsx
124
- var R = ({ securityGroups: e, isLoading: t, isError: r, error: o, permissions: s, onDeleteSecurityGroup: c, isDeletingSecurityGroup: u = !1, deleteError: d = null, onUpdateSecurityGroup: p, isUpdatingSecurityGroup: m = !1, updateError: h = null, currentProjectId: g }) => {
124
+ var R = ({ securityGroups: e, isLoading: t, isError: i, error: o, permissions: c, onDeleteSecurityGroup: l, isDeletingSecurityGroup: u = !1, deleteError: d = null, onUpdateSecurityGroup: f, isUpdatingSecurityGroup: p = !1, updateError: m = null, currentProjectId: h }) => {
125
125
  let { i18n: _, _: v } = F(), y = N(), b = S(), [x, C] = M(null), [w, T] = M(!1), [R, z] = M(!1), B = j(!1), V = j(!1), H = (e) => {
126
126
  C(e), T(!0);
127
127
  }, U = (e) => {
@@ -146,58 +146,58 @@ var R = ({ securityGroups: e, isLoading: t, isError: r, error: o, permissions: s
146
146
  d,
147
147
  R
148
148
  ]), A(() => {
149
- V.current && !m && w && !h && G(), V.current = m;
149
+ V.current && !p && w && !m && G(), V.current = p;
150
150
  }, [
151
+ p,
151
152
  m,
152
- h,
153
153
  w
154
- ]), t ? /*#__PURE__*/ k(l, {
154
+ ]), t ? /*#__PURE__*/ k(s, {
155
155
  className: "py-8",
156
156
  distribution: "center",
157
157
  alignment: "center",
158
158
  direction: "vertical",
159
- children: [/*#__PURE__*/ O(n, {
159
+ children: [/*#__PURE__*/ O(a, {
160
160
  variant: "primary",
161
161
  size: "large",
162
162
  className: "mb-2"
163
163
  }), /*#__PURE__*/ O(P, { id: "Z3FXyt" })]
164
- }) : r ? /*#__PURE__*/ O(l, {
164
+ }) : i ? /*#__PURE__*/ O(s, {
165
165
  className: "py-8",
166
166
  distribution: "center",
167
167
  alignment: "center",
168
168
  direction: "vertical",
169
169
  children: o?.message ?? _._({ id: "Wca9WC" })
170
- }) : e.length === 0 ? /*#__PURE__*/ O(P, { id: "SfW/3r" }) : /*#__PURE__*/ k(D, { children: [/*#__PURE__*/ k(f, {
170
+ }) : e.length === 0 ? /*#__PURE__*/ O(P, { id: "SfW/3r" }) : /*#__PURE__*/ k(D, { children: [/*#__PURE__*/ k(g, {
171
171
  columns: 5,
172
- children: [/*#__PURE__*/ O(a, { children: [
172
+ children: [/*#__PURE__*/ O(r, { children: [
173
173
  _._({ id: "6YtxFj" }),
174
174
  _._({ id: "Nu4oKW" }),
175
175
  _._({ id: "0Gd0NU" }),
176
176
  _._({ id: "Jim5X9" }),
177
177
  ""
178
- ].map((e) => /*#__PURE__*/ O(i, { children: e }, e)) }), e.map((e) => /*#__PURE__*/ O(L, {
178
+ ].map((e) => /*#__PURE__*/ O(n, { children: e }, e)) }), e.map((e) => /*#__PURE__*/ O(L, {
179
179
  securityGroup: e,
180
- permissions: s,
180
+ permissions: c,
181
181
  onEdit: H,
182
182
  onDelete: U,
183
183
  onViewDetails: W,
184
- isReadOnly: !!(g && e.project_id && e.project_id !== g)
184
+ isReadOnly: !!(h && e.project_id && e.project_id !== h)
185
185
  }, e.id))]
186
186
  }), x && /*#__PURE__*/ k(D, { children: [/*#__PURE__*/ O(E, {
187
187
  securityGroup: x,
188
188
  open: w,
189
189
  onClose: G,
190
190
  onUpdate: async (e, t) => {
191
- p && await p(e, t);
191
+ f && await f(e, t);
192
192
  },
193
- isLoading: m,
194
- error: h
193
+ isLoading: p,
194
+ error: m
195
195
  }), /*#__PURE__*/ O(I, {
196
196
  securityGroup: x,
197
197
  isOpen: R,
198
198
  onClose: K,
199
199
  onDelete: (e) => {
200
- c && c(e);
200
+ l && l(e);
201
201
  },
202
202
  isDeleting: u,
203
203
  error: d
@@ -206,10 +206,10 @@ var R = ({ securityGroups: e, isLoading: t, isError: r, error: o, permissions: s
206
206
  name: "",
207
207
  description: "",
208
208
  stateful: !0
209
- }, B = ({ isOpen: e, onClose: t, onCreate: i, isLoading: a = !1, error: o = null }) => {
210
- let { i18n: l, _: f } = F(), [h, v] = M({ ...z }), [x, S] = M({}), C = (e) => {
209
+ }, B = ({ isOpen: e, onClose: t, onCreate: n, isLoading: r = !1, error: s = null }) => {
210
+ let { i18n: u, _: f } = F(), [m, g] = M({ ...z }), [x, S] = M({}), C = (e) => {
211
211
  let { name: t, value: n, type: r } = e.target, i = e.target.checked;
212
- v((e) => ({
212
+ g((e) => ({
213
213
  ...e,
214
214
  [t]: r === "checkbox" ? i : n
215
215
  })), x[t] && S((e) => {
@@ -218,93 +218,93 @@ var R = ({ securityGroups: e, isLoading: t, isError: r, error: o, permissions: s
218
218
  });
219
219
  }, w = () => {
220
220
  let e = {};
221
- return (!h.name || h.name.trim() === "") && (e.name = l._({ id: "lN/Z9n" })), S(e), Object.keys(e).length === 0;
221
+ return (!m.name || m.name.trim() === "") && (e.name = u._({ id: "lN/Z9n" })), S(e), Object.keys(e).length === 0;
222
222
  }, T = async (e) => {
223
- e.preventDefault(), w() && (await i({
224
- name: h.name.trim(),
225
- description: h.description.trim() || void 0,
226
- stateful: h.stateful
223
+ e.preventDefault(), w() && (await n({
224
+ name: m.name.trim(),
225
+ description: m.description.trim() || void 0,
226
+ stateful: m.stateful
227
227
  }), E());
228
228
  }, E = () => {
229
- v({ ...z }), S({}), t();
229
+ g({ ...z }), S({}), t();
230
230
  };
231
- return /*#__PURE__*/ k(d, {
231
+ return /*#__PURE__*/ k(y, {
232
232
  open: e,
233
233
  onCancel: E,
234
234
  size: "large",
235
- title: l._({ id: "YjAOtb" }),
235
+ title: u._({ id: "YjAOtb" }),
236
236
  modalFooter: /*#__PURE__*/ O(p, {
237
237
  className: "flex justify-end",
238
- children: /*#__PURE__*/ k(g, { children: [/*#__PURE__*/ O(u, {
238
+ children: /*#__PURE__*/ k(d, { children: [/*#__PURE__*/ O(l, {
239
239
  variant: "default",
240
240
  onClick: E,
241
- disabled: a,
241
+ disabled: r,
242
242
  children: /*#__PURE__*/ O(P, { id: "dEgA5A" })
243
- }), /*#__PURE__*/ O(u, {
243
+ }), /*#__PURE__*/ O(l, {
244
244
  variant: "primary",
245
245
  onClick: (e) => {
246
246
  T(e);
247
247
  },
248
- disabled: a,
248
+ disabled: r,
249
249
  "data-testid": "create-security-group-button",
250
- children: a ? /*#__PURE__*/ O(n, { size: "small" }) : /*#__PURE__*/ O(P, { id: "YjAOtb" })
250
+ children: r ? /*#__PURE__*/ O(a, { size: "small" }) : /*#__PURE__*/ O(P, { id: "YjAOtb" })
251
251
  })] })
252
252
  }),
253
253
  children: [
254
- o && /*#__PURE__*/ O(r, {
254
+ s && /*#__PURE__*/ O(c, {
255
255
  dismissible: !1,
256
256
  variant: "error",
257
257
  className: "mb-4",
258
- children: o
258
+ children: s
259
259
  }),
260
- a && /*#__PURE__*/ k("div", {
260
+ r && /*#__PURE__*/ k("div", {
261
261
  className: "mb-4 flex items-center justify-center gap-2",
262
- children: [/*#__PURE__*/ O(n, { variant: "primary" }), /*#__PURE__*/ O("span", {
262
+ children: [/*#__PURE__*/ O(a, { variant: "primary" }), /*#__PURE__*/ O("span", {
263
263
  className: "text-theme-high text-sm",
264
264
  children: /*#__PURE__*/ O(P, { id: "Km4AGG" })
265
265
  })]
266
266
  }),
267
- !a && /*#__PURE__*/ O(b, {
267
+ !r && /*#__PURE__*/ O(b, {
268
268
  className: "mb-6",
269
- children: /*#__PURE__*/ k(y, {
269
+ children: /*#__PURE__*/ k(v, {
270
270
  className: "mb-6",
271
271
  children: [
272
- /*#__PURE__*/ O(s, {
272
+ /*#__PURE__*/ O(i, {
273
273
  className: "mb-6",
274
- children: /*#__PURE__*/ O(_, {
274
+ children: /*#__PURE__*/ O(h, {
275
275
  id: "name",
276
276
  name: "name",
277
- label: l._({ id: "6YtxFj" }),
278
- value: h.name,
277
+ label: u._({ id: "6YtxFj" }),
278
+ value: m.name,
279
279
  onChange: C,
280
280
  required: !0,
281
281
  errortext: x.name,
282
- placeholder: l._({ id: "Ac6dy9" }),
283
- disabled: a
282
+ placeholder: u._({ id: "Ac6dy9" }),
283
+ disabled: r
284
284
  })
285
285
  }),
286
- /*#__PURE__*/ O(s, {
286
+ /*#__PURE__*/ O(i, {
287
287
  className: "mb-6",
288
- children: /*#__PURE__*/ O(c, {
288
+ children: /*#__PURE__*/ O(o, {
289
289
  id: "description",
290
290
  name: "description",
291
- label: l._({ id: "Nu4oKW" }),
292
- value: h.description,
291
+ label: u._({ id: "Nu4oKW" }),
292
+ value: m.description,
293
293
  onChange: C,
294
- placeholder: l._({ id: "Nu4oKW" }),
295
- disabled: a,
294
+ placeholder: u._({ id: "Nu4oKW" }),
295
+ disabled: r,
296
296
  rows: 3
297
297
  })
298
298
  }),
299
- /*#__PURE__*/ O(s, {
299
+ /*#__PURE__*/ O(i, {
300
300
  className: "mb-0",
301
- children: /*#__PURE__*/ O(m, {
301
+ children: /*#__PURE__*/ O(_, {
302
302
  id: "stateful",
303
303
  name: "stateful",
304
- label: l._({ id: "Jim5X9" }),
305
- checked: h.stateful,
304
+ label: u._({ id: "Jim5X9" }),
305
+ checked: m.stateful,
306
306
  onChange: C,
307
- disabled: a
307
+ disabled: r
308
308
  })
309
309
  })
310
310
  ]
@@ -316,7 +316,7 @@ var R = ({ securityGroups: e, isLoading: t, isError: r, error: o, permissions: s
316
316
  TRUE: "true",
317
317
  FALSE: "false"
318
318
  }, H = () => {
319
- let { i18n: e, _: t } = F(), n = N(), r = S(), [i, a] = M(!1), [o, s] = M(null), [c, l] = M(null), [d, f] = M(null), { searchTerm: p, sortSettings: m, filterSettings: h, handleSearchChange: g, handleSortChange: _, handleFilterChange: v } = w({
319
+ let { i18n: e, _: t } = F(), n = N(), r = S(), [i, a] = M(!1), [o, s] = M(null), [c, u] = M(null), [d, f] = M(null), { searchTerm: p, sortSettings: m, filterSettings: h, handleSearchChange: g, handleSortChange: _, handleFilterChange: v } = w({
320
320
  defaultSortKey: "name",
321
321
  defaultSortDir: "asc",
322
322
  sortOptions: [{
@@ -345,7 +345,7 @@ var R = ({ securityGroups: e, isLoading: t, isError: r, error: o, permissions: s
345
345
  ...p ? { searchTerm: p } : {}
346
346
  }, { enabled: !!r }), I = x.network.securityGroup.create.useMutation({
347
347
  onSuccess: (e) => {
348
- y.network.securityGroup.list.invalidate(), l(null), n({
348
+ y.network.securityGroup.list.invalidate(), u(null), n({
349
349
  to: "/projects/$projectId/network/securitygroups/$securityGroupId",
350
350
  params: {
351
351
  projectId: r,
@@ -354,7 +354,7 @@ var R = ({ securityGroups: e, isLoading: t, isError: r, error: o, permissions: s
354
354
  });
355
355
  },
356
356
  onError: (t) => {
357
- l(t.message || e._({ id: "o6M6l0" }));
357
+ u(t.message || e._({ id: "o6M6l0" }));
358
358
  }
359
359
  }), L = x.network.securityGroup.deleteById.useMutation({
360
360
  onSuccess: () => {
@@ -381,7 +381,7 @@ var R = ({ securityGroups: e, isLoading: t, isError: r, error: o, permissions: s
381
381
  onSort: _,
382
382
  onFilter: v,
383
383
  onSearch: g,
384
- actions: b.canCreate && /*#__PURE__*/ O(u, {
384
+ actions: b.canCreate && /*#__PURE__*/ O(l, {
385
385
  onClick: () => a(!0),
386
386
  variant: "primary",
387
387
  children: /*#__PURE__*/ O(P, { id: "YjAOtb" })
@@ -417,7 +417,7 @@ var R = ({ securityGroups: e, isLoading: t, isError: r, error: o, permissions: s
417
417
  isOpen: i,
418
418
  onClose: () => a(!1),
419
419
  onCreate: async (e) => {
420
- l(null), await I.mutateAsync({
420
+ u(null), await I.mutateAsync({
421
421
  project_id: r,
422
422
  ...e
423
423
  });
@@ -432,9 +432,9 @@ var R = ({ securityGroups: e, isLoading: t, isError: r, error: o, permissions: s
432
432
  //#region src/client/routes/_auth/projects/$projectId/network/securitygroups/index.tsx?tsr-split=component
433
433
  function U() {
434
434
  let { i18n: e, _: t } = F();
435
- return /*#__PURE__*/ k(D, { children: [/*#__PURE__*/ O(o, { children: e._({ id: "4opp4r" }) }), /*#__PURE__*/ O(H, {})] });
435
+ return /*#__PURE__*/ k(D, { children: [/*#__PURE__*/ O(f, { children: e._({ id: "4opp4r" }) }), /*#__PURE__*/ O(H, {})] });
436
436
  }
437
437
  //#endregion
438
438
  export { U as component };
439
439
 
440
- //# sourceMappingURL=securitygroups-CcA2TpAt.mjs.map
440
+ //# sourceMappingURL=securitygroups-CWWFSjjj.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"securitygroups-CWWFSjjj.mjs","names":["React","useState","Modal","Button","ModalFooter","ButtonRow","Message","TextInput","DeleteSecurityGroupDialog","isOpen","onClose","securityGroup","onDelete","isDeleting","error","useLingui","confirmationText","setConfirmationText","deleteWord","t","isDeleteEnabled","toLowerCase","securityGroupName","name","id","handleDelete","e","preventDefault","handleClose","open","onCancel","size","title","modalFooter","className","variant","onClick","disabled","data-testid","div","dismissible","p","strong","value","onChange","target","placeholder","autoComplete","DataGridCell","DataGridRow","PopupMenu","PopupMenuItem","PopupMenuOptions","SecurityGroupTableRow","securityGroup","sg","permissions","onEdit","onDelete","onViewDetails","isReadOnly","useLingui","BooleanValue","value","span","t","handleShowDetails","data-testid","id","onClick","className","div","p","name","description","shared","project_id","stateful","e","stopPropagation","label","canUpdate","canDelete","useState","useEffect","useRef","DataGrid","DataGridHeadCell","DataGridRow","Stack","Spinner","useNavigate","useProjectId","EditSecurityGroupModal","DeleteSecurityGroupDialog","SecurityGroupTableRow","SecurityGroupListContainer","securityGroups","isLoading","isError","error","permissions","onDeleteSecurityGroup","isDeletingSecurityGroup","deleteError","onUpdateSecurityGroup","isUpdatingSecurityGroup","updateError","currentProjectId","useLingui","navigate","projectId","selectedSecurityGroup","setSelectedSecurityGroup","editModalOpen","setEditModalOpen","deleteDialogOpen","setDeleteDialogOpen","prevIsDeletingRef","prevIsUpdatingRef","handleEdit","sg","handleDelete","handleViewDetails","to","params","securityGroupId","id","closeEditModal","closeDeleteDialog","deletionJustFinished","current","updateJustFinished","className","distribution","alignment","direction","variant","size","message","t","length","columns","map","label","isReadOnly","Boolean","project_id","securityGroup","onEdit","onDelete","onViewDetails","open","onClose","onUpdate","data","isOpen","isDeleting","React","useState","Modal","Form","FormRow","FormSection","TextInput","Checkbox","Button","ButtonRow","Spinner","ModalFooter","Textarea","Message","defaultSecurityGroupValues","name","description","stateful","CreateSecurityGroupModal","isOpen","onClose","onCreate","isLoading","error","useLingui","properties","setProperties","errors","setErrors","handleInputChange","e","value","type","target","checked","prev","newErrors","validateForm","trim","t","Object","keys","length","handleSubmit","preventDefault","securityGroupData","undefined","handleClose","open","onCancel","size","title","modalFooter","className","variant","onClick","disabled","data-testid","dismissible","div","span","id","label","onChange","required","errortext","placeholder","rows","useState","useNavigate","Button","trpcReact","ListToolbar","buildFilterParams","useListWithFiltering","useProjectId","SecurityGroupListContainer","CreateSecurityGroupModal","SECURITY_GROUP_SHARED","TRUE","FALSE","SecurityGroups","useLingui","navigate","projectId","createModalOpen","setCreateModalOpen","deleteError","setDeleteError","createError","setCreateError","updateError","setUpdateError","searchTerm","sortSettings","filterSettings","handleSearchChange","handleSortChange","handleFilterChange","defaultSortKey","defaultSortDir","sortOptions","label","t","value","filters","displayName","filterName","values","Object","supportsMultiValue","utils","useUtils","permissions","canCreate","canUpdate","canDelete","canManageAccess","data","securityGroups","isLoading","isError","error","network","securityGroup","list","useQuery","project_id","sort_key","sortBy","sort_dir","sortDirection","enabled","createSecurityGroupMutation","create","useMutation","onSuccess","createdSecurityGroup","invalidate","to","params","securityGroupId","id","onError","message","deleteSecurityGroupMutation","deleteById","updateSecurityGroupMutation","update","handleCreateSecurityGroup","securityGroupData","mutateAsync","handleDeleteSecurityGroup","mutate","handleUpdateSecurityGroup","div","className","onSort","onFilter","onSearch","actions","onClick","variant","onCreateClick","onDeleteSecurityGroup","isDeletingSecurityGroup","isPending","onUpdateSecurityGroup","isUpdatingSecurityGroup","currentProjectId","isOpen","onClose","onCreate","useLingui","SecurityGroups","ContentHeading","Route","RouteComponent","t","component"],"sources":["../../src/client/routes/_auth/projects/$projectId/network/securitygroups/-components/-modals/DeleteSecurityGroupDialog.tsx","../../src/client/routes/_auth/projects/$projectId/network/securitygroups/-components/SecurityGroupTableRow.tsx","../../src/client/routes/_auth/projects/$projectId/network/securitygroups/-components/SecurityGroupListContainer.tsx","../../src/client/routes/_auth/projects/$projectId/network/securitygroups/-components/-modals/CreateSecurityGroupModal.tsx","../../src/client/routes/_auth/projects/$projectId/network/securitygroups/-components/SecurityGroupsList.tsx","../../src/client/routes/_auth/projects/$projectId/network/securitygroups/index.tsx?tsr-split=component"],"sourcesContent":["import React, { useState } from \"react\"\nimport { Modal, Button, ModalFooter, ButtonRow, Message, TextInput } from \"@cloudoperators/juno-ui-components\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport type { SecurityGroup } from \"@/server/Network/types/securityGroup\"\n\ninterface DeleteSecurityGroupDialogProps {\n isOpen: boolean\n securityGroup: SecurityGroup\n onClose: () => void\n onDelete: (securityGroupId: string) => void\n isDeleting?: boolean\n error?: string | null\n}\n\nexport const DeleteSecurityGroupDialog: React.FC<DeleteSecurityGroupDialogProps> = ({\n isOpen,\n onClose,\n securityGroup,\n onDelete,\n isDeleting = false,\n error = null,\n}) => {\n const { t } = useLingui()\n const [confirmationText, setConfirmationText] = useState(\"\")\n\n const deleteWord = t`delete`\n const isDeleteEnabled = confirmationText.toLowerCase() === deleteWord.toLowerCase()\n const securityGroupName = securityGroup.name || securityGroup.id\n\n const handleDelete = (e: React.MouseEvent<HTMLElement>) => {\n e.preventDefault()\n if (isDeleteEnabled && !isDeleting) {\n onDelete(securityGroup.id)\n }\n }\n\n const handleClose = () => {\n setConfirmationText(\"\")\n onClose()\n }\n\n return (\n <Modal\n open={isOpen}\n onCancel={handleClose}\n size=\"small\"\n title={t`Delete Security Group \"${securityGroupName}\"`}\n modalFooter={\n <ModalFooter className=\"flex justify-end\">\n <ButtonRow>\n <Button variant=\"default\" onClick={handleClose} disabled={isDeleting}>\n <Trans>Cancel</Trans>\n </Button>\n <Button\n variant=\"primary-danger\"\n onClick={handleDelete}\n disabled={!isDeleteEnabled || isDeleting}\n data-testid=\"confirm-delete-button\"\n >\n {isDeleting ? <Trans>Deleting...</Trans> : <Trans>Delete</Trans>}\n </Button>\n </ButtonRow>\n </ModalFooter>\n }\n >\n <div>\n {/* Error Message */}\n {error && (\n <Message dismissible={false} variant=\"error\" className=\"mt-4\">\n {error}\n </Message>\n )}\n\n {/* Warning */}\n <Trans>This action cannot be undone. The security group will be permanently deleted.</Trans>\n\n {/* Confirmation Input */}\n <div className=\"mt-4\">\n <p className=\"mb-2 text-sm\">\n <Trans>\n Type <strong>{deleteWord}</strong> to confirm:\n </Trans>\n </p>\n <TextInput\n id=\"confirmation\"\n name=\"confirmation\"\n value={confirmationText}\n onChange={(e) => setConfirmationText(e.target.value)}\n placeholder={deleteWord}\n disabled={isDeleting}\n autoComplete=\"off\"\n data-testid=\"delete-confirmation-input\"\n />\n </div>\n </div>\n </Modal>\n )\n}\n","import {\n DataGridCell,\n DataGridRow,\n PopupMenu,\n PopupMenuItem,\n PopupMenuOptions,\n} from \"@cloudoperators/juno-ui-components\"\nimport { useLingui, Trans } from \"@lingui/react/macro\"\nimport type { SecurityGroup } from \"@/server/Network/types/securityGroup\"\n\nexport interface SecurityGroupPermissions {\n canCreate: boolean\n canUpdate: boolean\n canDelete: boolean\n canManageAccess: boolean\n}\n\ninterface SecurityGroupTableRowProps {\n securityGroup: SecurityGroup\n permissions: SecurityGroupPermissions\n onEdit: (sg: SecurityGroup) => void\n onDelete: (sg: SecurityGroup) => void\n onViewDetails?: (sg: SecurityGroup) => void\n isReadOnly?: boolean\n}\n\nexport function SecurityGroupTableRow({\n securityGroup: sg,\n permissions,\n onEdit,\n onDelete,\n onViewDetails,\n isReadOnly = false,\n}: SecurityGroupTableRowProps) {\n const { t } = useLingui()\n\n const BooleanValue = ({ value }: { value: boolean | undefined }) => <span>{value ? t`Yes` : t`No`}</span>\n\n const handleShowDetails = () => {\n if (onViewDetails) {\n onViewDetails(sg)\n }\n }\n\n return (\n <DataGridRow\n key={sg.id}\n data-testid={`security-group-row-${sg.id}`}\n onClick={handleShowDetails}\n className=\"hover:bg-theme-background-lvl-2 cursor-pointer\"\n >\n <DataGridCell>\n <div>\n <p className=\"text-md\">{sg.name}</p>\n <p className=\"text-theme-light text-xs\">{sg.id}</p>\n </div>\n </DataGridCell>\n <DataGridCell>{sg.description || t`—`}</DataGridCell>\n <DataGridCell>\n <BooleanValue value={sg.shared} />\n {sg.shared && (\n <p>\n <Trans>Owner</Trans>: <span className=\"text-theme-light text-xs\">{sg.project_id}</span>\n </p>\n )}\n </DataGridCell>\n <DataGridCell>\n <BooleanValue value={sg.stateful} />\n </DataGridCell>\n <DataGridCell onClick={(e) => e.stopPropagation()} className=\"items-end justify-end pr-0\">\n <PopupMenu>\n <PopupMenuOptions>\n <PopupMenuItem label={t`Show Details`} onClick={() => handleShowDetails()} />\n {permissions.canUpdate && !isReadOnly && <PopupMenuItem label={t`Edit`} onClick={() => onEdit(sg)} />}\n {permissions.canDelete && !isReadOnly && <PopupMenuItem label={t`Delete`} onClick={() => onDelete(sg)} />}\n </PopupMenuOptions>\n </PopupMenu>\n </DataGridCell>\n </DataGridRow>\n )\n}\n","import { useState, useEffect, useRef } from \"react\"\nimport { DataGrid, DataGridHeadCell, DataGridRow, Stack, Spinner } from \"@cloudoperators/juno-ui-components\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { useNavigate } from \"@tanstack/react-router\"\nimport { useProjectId } from \"@/client/hooks\"\nimport type { SecurityGroup } from \"@/server/Network/types/securityGroup\"\nimport type { UpdateSecurityGroupInput } from \"@/server/Network/types/securityGroup\"\nimport { EditSecurityGroupModal } from \"./-modals/EditSecurityGroupModal\"\nimport { DeleteSecurityGroupDialog } from \"./-modals/DeleteSecurityGroupDialog\"\nimport { SecurityGroupTableRow, type SecurityGroupPermissions } from \"./SecurityGroupTableRow\"\n\ninterface SecurityGroupListContainerProps {\n securityGroups: SecurityGroup[]\n isLoading: boolean\n isError: boolean\n error: { message?: string } | null\n permissions: SecurityGroupPermissions\n onCreateClick?: () => void\n onDeleteSecurityGroup?: (securityGroupId: string) => void\n isDeletingSecurityGroup?: boolean\n deleteError?: string | null\n onUpdateSecurityGroup?: (\n securityGroupId: string,\n data: Omit<UpdateSecurityGroupInput, \"securityGroupId\" | \"project_id\">\n ) => void\n isUpdatingSecurityGroup?: boolean\n updateError?: string | null\n currentProjectId?: string\n}\n\nexport const SecurityGroupListContainer = ({\n securityGroups,\n isLoading,\n isError,\n error,\n permissions,\n onDeleteSecurityGroup,\n isDeletingSecurityGroup = false,\n deleteError = null,\n onUpdateSecurityGroup,\n isUpdatingSecurityGroup = false,\n updateError = null,\n currentProjectId,\n}: SecurityGroupListContainerProps) => {\n const { t } = useLingui()\n const navigate = useNavigate()\n const projectId = useProjectId()\n const [selectedSecurityGroup, setSelectedSecurityGroup] = useState<SecurityGroup | null>(null)\n const [editModalOpen, setEditModalOpen] = useState(false)\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false)\n const prevIsDeletingRef = useRef<boolean>(false)\n const prevIsUpdatingRef = useRef<boolean>(false)\n\n const handleEdit = (sg: SecurityGroup) => {\n setSelectedSecurityGroup(sg)\n setEditModalOpen(true)\n }\n\n const handleDelete = (sg: SecurityGroup) => {\n setSelectedSecurityGroup(sg)\n setDeleteDialogOpen(true)\n }\n\n const handleViewDetails = (sg: SecurityGroup) => {\n navigate({\n to: \"/projects/$projectId/network/securitygroups/$securityGroupId\",\n params: { projectId, securityGroupId: sg.id },\n })\n }\n\n const closeEditModal = () => {\n setSelectedSecurityGroup(null)\n setEditModalOpen(false)\n }\n\n const closeDeleteDialog = () => {\n setSelectedSecurityGroup(null)\n setDeleteDialogOpen(false)\n }\n\n // Close delete dialog when deletion completes successfully\n useEffect(() => {\n // Check if deletion just finished (was deleting before, now not deleting)\n const deletionJustFinished = prevIsDeletingRef.current && !isDeletingSecurityGroup\n\n // Close dialog if deletion just finished and there's no error\n if (deletionJustFinished && deleteDialogOpen && !deleteError) {\n closeDeleteDialog()\n }\n\n // Update the ref for next render\n prevIsDeletingRef.current = isDeletingSecurityGroup\n }, [isDeletingSecurityGroup, deleteError, deleteDialogOpen])\n\n // Close edit modal when update completes successfully\n useEffect(() => {\n // Check if update just finished (was updating before, now not updating)\n const updateJustFinished = prevIsUpdatingRef.current && !isUpdatingSecurityGroup\n\n // Close modal if update just finished and there's no error\n if (updateJustFinished && editModalOpen && !updateError) {\n closeEditModal()\n }\n\n // Update the ref for next render\n prevIsUpdatingRef.current = isUpdatingSecurityGroup\n }, [isUpdatingSecurityGroup, updateError, editModalOpen])\n\n // Loading state\n if (isLoading) {\n return (\n <Stack className=\"py-8\" distribution=\"center\" alignment=\"center\" direction=\"vertical\">\n <Spinner variant=\"primary\" size=\"large\" className=\"mb-2\" />\n <Trans>Loading...</Trans>\n </Stack>\n )\n }\n\n // Error state\n if (isError) {\n return (\n <Stack className=\"py-8\" distribution=\"center\" alignment=\"center\" direction=\"vertical\">\n {error?.message ?? t`Failed to load security groups`}\n </Stack>\n )\n }\n\n // Empty state\n if (securityGroups.length === 0) {\n return <Trans>There are no groups</Trans>\n }\n\n return (\n <>\n <DataGrid columns={5}>\n <DataGridRow>\n {[t`Name`, t`Description`, t`Shared`, t`Stateful`, \"\"].map((label) => (\n <DataGridHeadCell key={label}>{label}</DataGridHeadCell>\n ))}\n </DataGridRow>\n {securityGroups.map((sg) => {\n // Compute isReadOnly only when the security group has an explicit project owner\n const isReadOnly = Boolean(currentProjectId && sg.project_id && sg.project_id !== currentProjectId)\n\n return (\n <SecurityGroupTableRow\n key={sg.id}\n securityGroup={sg}\n permissions={permissions}\n onEdit={handleEdit}\n onDelete={handleDelete}\n onViewDetails={handleViewDetails}\n isReadOnly={isReadOnly}\n />\n )\n })}\n </DataGrid>\n\n {selectedSecurityGroup && (\n <>\n <EditSecurityGroupModal\n securityGroup={selectedSecurityGroup}\n open={editModalOpen}\n onClose={closeEditModal}\n onUpdate={async (id, data) => {\n if (onUpdateSecurityGroup) {\n await onUpdateSecurityGroup(id, data)\n }\n }}\n isLoading={isUpdatingSecurityGroup}\n error={updateError}\n />\n <DeleteSecurityGroupDialog\n securityGroup={selectedSecurityGroup}\n isOpen={deleteDialogOpen}\n onClose={closeDeleteDialog}\n onDelete={(id) => {\n if (onDeleteSecurityGroup) {\n onDeleteSecurityGroup(id)\n }\n }}\n isDeleting={isDeletingSecurityGroup}\n error={deleteError}\n />\n </>\n )}\n </>\n )\n}\n","import React, { useState } from \"react\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport {\n Modal,\n Form,\n FormRow,\n FormSection,\n TextInput,\n Checkbox,\n Button,\n ButtonRow,\n Spinner,\n ModalFooter,\n Textarea,\n Message,\n} from \"@cloudoperators/juno-ui-components\"\nimport { CreateSecurityGroupInput } from \"@/server/Network/types/securityGroup\"\n\ninterface CreateSecurityGroupModalProps {\n isOpen: boolean\n onClose: () => void\n onCreate: (securityGroupData: Omit<CreateSecurityGroupInput, \"project_id\">) => Promise<void>\n isLoading?: boolean\n error?: string | null\n}\n\ninterface SecurityGroupProperties {\n name: string\n description: string\n stateful: boolean\n}\n\nconst defaultSecurityGroupValues: SecurityGroupProperties = {\n name: \"\",\n description: \"\",\n stateful: true,\n}\n\nexport const CreateSecurityGroupModal: React.FC<CreateSecurityGroupModalProps> = ({\n isOpen,\n onClose,\n onCreate,\n isLoading = false,\n error = null,\n}) => {\n const { t } = useLingui()\n\n const [properties, setProperties] = useState<SecurityGroupProperties>({ ...defaultSecurityGroupValues })\n const [errors, setErrors] = useState<{ [key: string]: string }>({})\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const { name, value, type } = e.target\n const checked = (e.target as HTMLInputElement).checked\n\n setProperties((prev) => ({\n ...prev,\n [name]: type === \"checkbox\" ? checked : value,\n }))\n\n if (errors[name]) {\n setErrors((prev) => {\n const newErrors = { ...prev }\n delete newErrors[name]\n return newErrors\n })\n }\n }\n\n const validateForm = (): boolean => {\n const newErrors: { [key: string]: string } = {}\n\n if (!properties.name || properties.name.trim() === \"\") {\n newErrors.name = t`Security group name is required`\n }\n\n setErrors(newErrors)\n return Object.keys(newErrors).length === 0\n }\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault()\n\n if (!validateForm()) {\n return\n }\n\n const securityGroupData: Omit<CreateSecurityGroupInput, \"project_id\"> = {\n name: properties.name.trim(),\n description: properties.description.trim() || undefined,\n stateful: properties.stateful,\n }\n\n await onCreate(securityGroupData)\n handleClose()\n }\n\n const handleClose = () => {\n setProperties({ ...defaultSecurityGroupValues })\n setErrors({})\n onClose()\n }\n\n return (\n <Modal\n open={isOpen}\n onCancel={handleClose}\n size=\"large\"\n title={t`Create Security Group`}\n modalFooter={\n <ModalFooter className=\"flex justify-end\">\n <ButtonRow>\n <Button variant=\"default\" onClick={handleClose} disabled={isLoading}>\n <Trans>Cancel</Trans>\n </Button>\n <Button\n variant=\"primary\"\n onClick={(e) => {\n handleSubmit(e)\n }}\n disabled={isLoading}\n data-testid=\"create-security-group-button\"\n >\n {isLoading ? <Spinner size=\"small\" /> : <Trans>Create Security Group</Trans>}\n </Button>\n </ButtonRow>\n </ModalFooter>\n }\n >\n {/* Error Message */}\n {error && (\n <Message dismissible={false} variant=\"error\" className=\"mb-4\">\n {error}\n </Message>\n )}\n\n {isLoading && (\n <div className=\"mb-4 flex items-center justify-center gap-2\">\n <Spinner variant=\"primary\" />\n <span className=\"text-theme-high text-sm\">\n <Trans>Creating security group...</Trans>\n </span>\n </div>\n )}\n\n {!isLoading && (\n <Form className=\"mb-6\">\n <FormSection className=\"mb-6\">\n <FormRow className=\"mb-6\">\n <TextInput\n id=\"name\"\n name=\"name\"\n label={t`Name`}\n value={properties.name}\n onChange={handleInputChange}\n required\n errortext={errors.name}\n placeholder={t`Type name`}\n disabled={isLoading}\n />\n </FormRow>\n\n <FormRow className=\"mb-6\">\n <Textarea\n id=\"description\"\n name=\"description\"\n label={t`Description`}\n value={properties.description}\n onChange={handleInputChange}\n placeholder={t`Description`}\n disabled={isLoading}\n rows={3}\n />\n </FormRow>\n\n <FormRow className=\"mb-0\">\n <Checkbox\n id=\"stateful\"\n name=\"stateful\"\n label={t`Stateful`}\n checked={properties.stateful}\n onChange={handleInputChange}\n disabled={isLoading}\n />\n </FormRow>\n </FormSection>\n </Form>\n )}\n </Modal>\n )\n}\n","import { useState } from \"react\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { useNavigate } from \"@tanstack/react-router\"\nimport { Button } from \"@cloudoperators/juno-ui-components\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { ListToolbar } from \"@/client/components/ListToolbar\"\nimport { buildFilterParams } from \"@/client/utils/buildFilterParams\"\nimport { useListWithFiltering } from \"@/client/utils/useListWithFiltering\"\nimport { useProjectId } from \"@/client/hooks\"\nimport { SecurityGroupListContainer } from \"./SecurityGroupListContainer\"\nimport { CreateSecurityGroupModal } from \"./-modals/CreateSecurityGroupModal\"\nimport { CreateSecurityGroupInput, UpdateSecurityGroupInput } from \"@/server/Network/types/securityGroup\"\n\n// Security group shared filter constants\nconst SECURITY_GROUP_SHARED = {\n TRUE: \"true\",\n FALSE: \"false\",\n} as const\n\ntype SecurityGroupSortKey = \"name\" | \"project_id\"\n\nexport const SecurityGroups = () => {\n const { t } = useLingui()\n const navigate = useNavigate()\n const projectId = useProjectId()\n\n const [createModalOpen, setCreateModalOpen] = useState(false)\n const [deleteError, setDeleteError] = useState<string | null>(null)\n const [createError, setCreateError] = useState<string | null>(null)\n const [updateError, setUpdateError] = useState<string | null>(null)\n\n const { searchTerm, sortSettings, filterSettings, handleSearchChange, handleSortChange, handleFilterChange } =\n useListWithFiltering<SecurityGroupSortKey>({\n defaultSortKey: \"name\",\n defaultSortDir: \"asc\",\n sortOptions: [\n { label: t`Name`, value: \"name\" },\n { label: t`Project id`, value: \"project_id\" },\n ],\n filterSettings: {\n filters: [\n {\n displayName: t`Shared`,\n filterName: \"shared\",\n values: Object.values(SECURITY_GROUP_SHARED),\n supportsMultiValue: false,\n },\n ],\n },\n })\n\n const utils = trpcReact.useUtils()\n\n // TODO: replace with trpc.network.canUser when security group permissions are available\n const permissions = {\n canCreate: true,\n canUpdate: true,\n canDelete: true,\n canManageAccess: true,\n }\n\n const {\n data: securityGroups = [],\n isLoading,\n isError,\n error,\n } = trpcReact.network.securityGroup.list.useQuery(\n {\n project_id: projectId || \"\",\n sort_key: sortSettings.sortBy,\n sort_dir: sortSettings.sortDirection,\n ...buildFilterParams(filterSettings),\n ...(searchTerm ? { searchTerm } : {}),\n },\n {\n enabled: !!projectId,\n }\n )\n\n const createSecurityGroupMutation = trpcReact.network.securityGroup.create.useMutation({\n onSuccess: (createdSecurityGroup) => {\n // Invalidate and refetch the security groups list\n utils.network.securityGroup.list.invalidate()\n setCreateError(null)\n\n // Navigate to the details page of the newly created security group\n navigate({\n to: \"/projects/$projectId/network/securitygroups/$securityGroupId\",\n params: {\n projectId,\n securityGroupId: createdSecurityGroup.id,\n },\n })\n },\n onError: (error) => {\n // Backend handles error parsing, just display the message\n setCreateError(error.message || t`Failed to create security group`)\n },\n })\n\n const deleteSecurityGroupMutation = trpcReact.network.securityGroup.deleteById.useMutation({\n onSuccess: () => {\n // Invalidate and refetch the security groups list\n utils.network.securityGroup.list.invalidate()\n setDeleteError(null)\n },\n onError: (error) => {\n // Backend handles error parsing, just display the message\n setDeleteError(error.message || t`Failed to delete security group`)\n },\n })\n\n const updateSecurityGroupMutation = trpcReact.network.securityGroup.update.useMutation({\n onSuccess: () => {\n // Invalidate and refetch the security groups list\n utils.network.securityGroup.list.invalidate()\n setUpdateError(null)\n },\n onError: (error) => {\n // Backend handles error parsing, just display the message\n setUpdateError(error.message || t`Failed to update security group`)\n },\n })\n\n const handleCreateSecurityGroup = async (securityGroupData: Omit<CreateSecurityGroupInput, \"project_id\">) => {\n setCreateError(null)\n await createSecurityGroupMutation.mutateAsync({ project_id: projectId, ...securityGroupData })\n }\n\n const handleDeleteSecurityGroup = (securityGroupId: string) => {\n setDeleteError(null)\n deleteSecurityGroupMutation.mutate({ project_id: projectId, securityGroupId })\n }\n\n const handleUpdateSecurityGroup = async (\n securityGroupId: string,\n data: Omit<UpdateSecurityGroupInput, \"securityGroupId\" | \"project_id\">\n ) => {\n setUpdateError(null)\n await updateSecurityGroupMutation.mutateAsync({ project_id: projectId, securityGroupId, ...data })\n }\n\n return (\n <div className=\"relative\">\n <ListToolbar\n sortSettings={sortSettings}\n filterSettings={filterSettings}\n searchTerm={searchTerm}\n onSort={handleSortChange}\n onFilter={handleFilterChange}\n onSearch={handleSearchChange}\n actions={\n permissions.canCreate && (\n <Button onClick={() => setCreateModalOpen(true)} variant=\"primary\">\n <Trans>Create Security Group</Trans>\n </Button>\n )\n }\n />\n\n <SecurityGroupListContainer\n securityGroups={securityGroups}\n isLoading={isLoading}\n isError={isError}\n error={error}\n permissions={permissions}\n onCreateClick={() => setCreateModalOpen(true)}\n onDeleteSecurityGroup={handleDeleteSecurityGroup}\n isDeletingSecurityGroup={deleteSecurityGroupMutation.isPending}\n deleteError={deleteError}\n onUpdateSecurityGroup={handleUpdateSecurityGroup}\n isUpdatingSecurityGroup={updateSecurityGroupMutation.isPending}\n updateError={updateError}\n currentProjectId={projectId}\n />\n\n <CreateSecurityGroupModal\n isOpen={createModalOpen}\n onClose={() => setCreateModalOpen(false)}\n onCreate={handleCreateSecurityGroup}\n isLoading={createSecurityGroupMutation.isPending}\n error={createError}\n />\n </div>\n )\n}\n","import { createFileRoute } from \"@tanstack/react-router\"\nimport { t } from \"@lingui/core/macro\"\nimport { useLingui } from \"@lingui/react/macro\"\nimport { SecurityGroups } from \"./-components/SecurityGroupsList\"\nimport type { RouteInfo } from \"@/client/routes/routeInfo\"\nimport { ContentHeading } from \"@cloudoperators/juno-ui-components\"\n\nexport const Route = createFileRoute(\"/_auth/projects/$projectId/network/securitygroups/\")({\n staticData: {\n section: \"network\",\n service: \"securitygroups\",\n sectionCrumb: { labelKey: \"Network\" },\n crumb: { labelKey: \"Security Groups\" },\n } satisfies RouteInfo,\n head: () => ({ meta: [{ title: t`Security Groups` }] }),\n component: RouteComponent,\n})\n\nfunction RouteComponent() {\n const { t } = useLingui()\n return (\n <>\n <ContentHeading>{t`Security Groups`}</ContentHeading>\n <SecurityGroups />\n </>\n )\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { V as e, Y as t, Z as n, q as r } from "./build-BdRRmNf5.mjs";
2
- import { t as i } from "./SortInput-DLcusjGZ.mjs";
3
- import { n as a, t as o } from "./FiltersInput-GzR4D0q6.mjs";
1
+ import { H as e, J as t, Q as n, X as r } from "./build-DF7MTyXG.mjs";
2
+ import { t as i } from "./SortInput-D0Vb864D.mjs";
3
+ import { n as a, t as o } from "./FiltersInput-CViamP59.mjs";
4
4
  import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
5
5
  import { startTransition as u, useCallback as d, useEffect as f, useRef as p, useState as m } from "react";
6
6
  import { Trans as h, useLingui as g } from "@lingui/react";
@@ -60,17 +60,17 @@ var _ = ({ filterSettings: u, onFilter: m, sortSettings: _, onSort: v, searchTer
60
60
  children: /*#__PURE__*/ c(n, {
61
61
  activeItem: C.activeItem,
62
62
  onActiveItemChange: C.onActiveItemChange,
63
- children: C.items.map((e) => /*#__PURE__*/ c(r, {
63
+ children: C.items.map((e) => /*#__PURE__*/ c(t, {
64
64
  label: e.label,
65
65
  value: e.value
66
66
  }, e.value))
67
67
  })
68
- }), /*#__PURE__*/ l(t, {
68
+ }), /*#__PURE__*/ l(r, {
69
69
  alignment: "center",
70
70
  gap: "6",
71
71
  className: "bg-theme-background-lvl-1 flex w-full flex-col p-4",
72
72
  children: [
73
- S && /*#__PURE__*/ c(t, {
73
+ S && /*#__PURE__*/ c(r, {
74
74
  direction: "horizontal",
75
75
  className: "w-full justify-end",
76
76
  children: S
@@ -154,4 +154,4 @@ function v({ defaultSortKey: e, defaultSortDir: t, sortOptions: n, filterSetting
154
154
  //#endregion
155
155
  export { _ as n, v as t };
156
156
 
157
- //# sourceMappingURL=useListWithFiltering-CVzhMyEA.mjs.map
157
+ //# sourceMappingURL=useListWithFiltering-C9k7xWqz.mjs.map