@cobaltcore-dev/aurora 0.11.0 → 0.12.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 (92) hide show
  1. package/dist/client/{ContentHeader-DsuZD8fa.mjs → ContentHeader-D2nIdJKJ.mjs} +22 -22
  2. package/dist/client/{ContentHeader-DsuZD8fa.mjs.map → ContentHeader-D2nIdJKJ.mjs.map} +1 -1
  3. package/dist/client/{DeleteFlavorModal-RnbspW_2.mjs → DeleteFlavorModal-Dwm0Hh84.mjs} +174 -174
  4. package/dist/client/{DeleteFlavorModal-RnbspW_2.mjs.map → DeleteFlavorModal-Dwm0Hh84.mjs.map} +1 -1
  5. package/dist/client/{DeleteVersionsModal-CsBJzXoW.mjs → DeleteVersionsModal-DQO8lGmS.mjs} +69 -69
  6. package/dist/client/{DeleteVersionsModal-CsBJzXoW.mjs.map → DeleteVersionsModal-DQO8lGmS.mjs.map} +1 -1
  7. package/dist/client/{EditSecurityGroupModal-BPv3d7am.mjs → EditSecurityGroupModal-BGPXglju.mjs} +17 -17
  8. package/dist/client/{EditSecurityGroupModal-BPv3d7am.mjs.map → EditSecurityGroupModal-BGPXglju.mjs.map} +1 -1
  9. package/dist/client/{FiltersInput-CViamP59.mjs → FiltersInput-cOaaRpcQ.mjs} +20 -20
  10. package/dist/client/{FiltersInput-CViamP59.mjs.map → FiltersInput-cOaaRpcQ.mjs.map} +1 -1
  11. package/dist/client/{FloatingIpActionModals-DTn3HFei.mjs → FloatingIpActionModals-RCvaamOg.mjs} +55 -55
  12. package/dist/client/{FloatingIpActionModals-DTn3HFei.mjs.map → FloatingIpActionModals-RCvaamOg.mjs.map} +1 -1
  13. package/dist/client/{ImageToastNotifications-CFKQZTgf.mjs → ImageToastNotifications-ClO-1yOH.mjs} +310 -310
  14. package/dist/client/{ImageToastNotifications-CFKQZTgf.mjs.map → ImageToastNotifications-ClO-1yOH.mjs.map} +1 -1
  15. package/dist/client/{RouteError-BebIhFpQ.mjs → RouteError-BmZRk_ss.mjs} +2 -2
  16. package/dist/client/{RouteError-BebIhFpQ.mjs.map → RouteError-BmZRk_ss.mjs.map} +1 -1
  17. package/dist/client/{SortInput-D0Vb864D.mjs → SortInput-DjaEHvcO.mjs} +6 -6
  18. package/dist/client/{SortInput-D0Vb864D.mjs.map → SortInput-DjaEHvcO.mjs.map} +1 -1
  19. package/dist/client/{_flavorId-C9SZd1jL.mjs → _flavorId-CtQEd28h.mjs} +8 -8
  20. package/dist/client/{_flavorId-C9SZd1jL.mjs.map → _flavorId-CtQEd28h.mjs.map} +1 -1
  21. package/dist/client/{_flavorId-DINgWoeV.mjs → _flavorId-DVsGdXUf.mjs} +46 -46
  22. package/dist/client/{_flavorId-DINgWoeV.mjs.map → _flavorId-DVsGdXUf.mjs.map} +1 -1
  23. package/dist/client/{_floatingIpId-BACLbMzi2.mjs → _floatingIpId-CKMq7-4p2.mjs} +36 -36
  24. package/dist/client/{_floatingIpId-BACLbMzi2.mjs.map → _floatingIpId-CKMq7-4p2.mjs.map} +1 -1
  25. package/dist/client/{_floatingIpId-BzVMOv97.mjs → _floatingIpId-DvTh6vdB.mjs} +2 -2
  26. package/dist/client/{_floatingIpId-BzVMOv97.mjs.map → _floatingIpId-DvTh6vdB.mjs.map} +1 -1
  27. package/dist/client/_imageId-xG8hC49j.mjs +534 -0
  28. package/dist/client/{_imageId-DCvaU7-S.mjs.map → _imageId-xG8hC49j.mjs.map} +1 -1
  29. package/dist/client/{_pcaId-B3PqECyO.mjs → _pcaId-Db_t0x6O.mjs} +147 -147
  30. package/dist/client/{_pcaId-B3PqECyO.mjs.map → _pcaId-Db_t0x6O.mjs.map} +1 -1
  31. package/dist/client/{_pcaId-DAJEt3ZI.mjs → _pcaId-WCJoukIk.mjs} +2 -2
  32. package/dist/client/{_pcaId-DAJEt3ZI.mjs.map → _pcaId-WCJoukIk.mjs.map} +1 -1
  33. package/dist/client/{_projectId-DU8qRiZk.mjs → _projectId-B2cvskLV.mjs} +2 -2
  34. package/dist/client/{_projectId-DU8qRiZk.mjs.map → _projectId-B2cvskLV.mjs.map} +1 -1
  35. package/dist/client/{_projectId-DRr9rLST.mjs → _projectId-BCMkaH_h.mjs} +35 -35
  36. package/dist/client/_projectId-BCMkaH_h.mjs.map +1 -0
  37. package/dist/client/{_projectId-B2hG5peP.mjs → _projectId-BdqRntcN.mjs} +15 -14
  38. package/dist/client/{_projectId-B2hG5peP.mjs.map → _projectId-BdqRntcN.mjs.map} +1 -1
  39. package/dist/client/{_projectId-BnWXWTBR.mjs → _projectId-C8RGOqZb.mjs} +3 -3
  40. package/dist/client/{_projectId-BnWXWTBR.mjs.map → _projectId-C8RGOqZb.mjs.map} +1 -1
  41. package/dist/client/{_securityGroupId-Cj9IotMJ.mjs → _securityGroupId-CyQ3XmpB.mjs} +2 -2
  42. package/dist/client/{_securityGroupId-Cj9IotMJ.mjs.map → _securityGroupId-CyQ3XmpB.mjs.map} +1 -1
  43. package/dist/client/{_securityGroupId-ClJiFh4R.mjs → _securityGroupId-DMi7YRux.mjs} +397 -397
  44. package/dist/client/{_securityGroupId-ClJiFh4R.mjs.map → _securityGroupId-DMi7YRux.mjs.map} +1 -1
  45. package/dist/client/{_storageType-BrHDa2bD.mjs → _storageType-Bb6YZgXf.mjs} +657 -660
  46. package/dist/client/{_storageType-BrHDa2bD.mjs.map → _storageType-Bb6YZgXf.mjs.map} +1 -1
  47. package/dist/client/{_storageType-CSLH93js.mjs → _storageType-g1zkFFRh.mjs} +2 -2
  48. package/dist/client/{_storageType-CSLH93js.mjs.map → _storageType-g1zkFFRh.mjs.map} +1 -1
  49. package/dist/client/{about-BnU297yB.mjs → about-B4sGnxeW.mjs} +8 -8
  50. package/dist/client/{about-BnU297yB.mjs.map → about-B4sGnxeW.mjs.map} +1 -1
  51. package/dist/client/{build-DF7MTyXG.mjs → build-DgeVmENN.mjs} +2395 -2390
  52. package/dist/client/{build-DF7MTyXG.mjs.map → build-DgeVmENN.mjs.map} +1 -1
  53. package/dist/client/{constants-BskfpGYY.mjs → constants-D6IO9bPs.mjs} +16 -16
  54. package/dist/client/{constants-BskfpGYY.mjs.map → constants-D6IO9bPs.mjs.map} +1 -1
  55. package/dist/client/{flavors-DAbtRoep.mjs → flavors-CO5l_6d0.mjs} +178 -178
  56. package/dist/client/{flavors-DAbtRoep.mjs.map → flavors-CO5l_6d0.mjs.map} +1 -1
  57. package/dist/client/{flavors-DODudzrA.mjs → flavors-D4nGSs0r.mjs} +2 -2
  58. package/dist/client/{flavors-DODudzrA.mjs.map → flavors-D4nGSs0r.mjs.map} +1 -1
  59. package/dist/client/{floatingips-DJW9ftN_.mjs → floatingips-ClkRV7a7.mjs} +108 -108
  60. package/dist/client/{floatingips-DJW9ftN_.mjs.map → floatingips-ClkRV7a7.mjs.map} +1 -1
  61. package/dist/client/{images-C3JyPwer.mjs → images-B5ktfqg6.mjs} +2 -2
  62. package/dist/client/{images-C3JyPwer.mjs.map → images-B5ktfqg6.mjs.map} +1 -1
  63. package/dist/client/{images-Cp6V1nF5.mjs → images-C_OYLPqv.mjs} +440 -440
  64. package/dist/client/{images-Cp6V1nF5.mjs.map → images-C_OYLPqv.mjs.map} +1 -1
  65. package/dist/client/{images-BbLnuYrL.mjs → images-CvPxoPC0.mjs} +2 -2
  66. package/dist/client/{images-BbLnuYrL.mjs.map → images-CvPxoPC0.mjs.map} +1 -1
  67. package/dist/client/index.js +275 -275
  68. package/dist/client/index.js.map +1 -1
  69. package/dist/client/{objects-DUmK3WgA.mjs → objects-D0grS6pk.mjs} +1361 -1361
  70. package/dist/client/{objects-DUmK3WgA.mjs.map → objects-D0grS6pk.mjs.map} +1 -1
  71. package/dist/client/{objects-Bw96WXOs.mjs → objects-UQyUQxBj.mjs} +2 -2
  72. package/dist/client/{objects-Bw96WXOs.mjs.map → objects-UQyUQxBj.mjs.map} +1 -1
  73. package/dist/client/{pca-Dc_tdh4-.mjs → pca-BJPxOIgq.mjs} +69 -69
  74. package/dist/client/{pca-Dc_tdh4-.mjs.map → pca-BJPxOIgq.mjs.map} +1 -1
  75. package/dist/client/{pca-DKeGzbww.mjs → pca-C9MKOi3Z.mjs} +2 -2
  76. package/dist/client/{pca-DKeGzbww.mjs.map → pca-C9MKOi3Z.mjs.map} +1 -1
  77. package/dist/client/{projects-CRL37ftA.mjs → projects-C3wR-lvM.mjs} +16 -19
  78. package/dist/client/projects-C3wR-lvM.mjs.map +1 -0
  79. package/dist/client/{projects-DUWOgB3m.mjs → projects-CGjBlG2w.mjs} +2 -2
  80. package/dist/client/{projects-DUWOgB3m.mjs.map → projects-CGjBlG2w.mjs.map} +1 -1
  81. package/dist/client/{projects-DpXQYfKc.mjs → projects-DvSiI5Vg.mjs} +2 -2
  82. package/dist/client/{projects-DpXQYfKc.mjs.map → projects-DvSiI5Vg.mjs.map} +1 -1
  83. package/dist/client/{securitygroups-CWWFSjjj.mjs → securitygroups-n8ujBpJP.mjs} +118 -118
  84. package/dist/client/{securitygroups-CWWFSjjj.mjs.map → securitygroups-n8ujBpJP.mjs.map} +1 -1
  85. package/dist/client/{useListWithFiltering-C9k7xWqz.mjs → useListWithFiltering-BuhE81I6.mjs} +10 -10
  86. package/dist/client/{useListWithFiltering-C9k7xWqz.mjs.map → useListWithFiltering-BuhE81I6.mjs.map} +1 -1
  87. package/dist/server/index.d.ts +6 -2
  88. package/dist/server/index.js +4 -17
  89. package/package.json +4 -4
  90. package/dist/client/_imageId-DCvaU7-S.mjs +0 -534
  91. package/dist/client/_projectId-DRr9rLST.mjs.map +0 -1
  92. package/dist/client/projects-CRL37ftA.mjs.map +0 -1
@@ -1,41 +1,41 @@
1
- import { U as e, X as t, Y as n, _ as r, dt as i, f as a, m as o, ot as s, ut as c } from "./build-DF7MTyXG.mjs";
1
+ import { B as e, K as t, U as n, g as r, lt as i, r as a, tt as o, ut as s, y as c } from "./build-DgeVmENN.mjs";
2
2
  import { r as l } from "./trpcClient-BzPUgiM2.mjs";
3
3
  import { t as u } from "./useProjectId-DBc5lpoU.mjs";
4
4
  import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
5
5
  import { useEffect as m, useState as h } from "react";
6
6
  import { Trans as g, useLingui as _ } from "@lingui/react";
7
7
  //#region src/client/routes/_auth/projects/$projectId/storage/-components/Ceph/Buckets/DeleteBucketPolicyModal.tsx
8
- var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) => {
8
+ var v = ({ isOpen: n, bucketName: r, onClose: i, onSuccess: s, onError: c }) => {
9
9
  let { i18n: h, _: v } = _(), y = u(), b = l.useUtils(), { data: x, isLoading: S, error: C } = l.storage.ceph.bucketPolicy.get.useQuery({
10
10
  project_id: y,
11
- bucketName: i
11
+ bucketName: r
12
12
  }, {
13
- enabled: r && !!y,
13
+ enabled: n && !!y,
14
14
  retry: !1
15
15
  }), w = l.storage.ceph.bucketPolicy.delete.useMutation({
16
16
  onSuccess: () => {
17
- b.storage.ceph.bucketPolicy.get.invalidate(), o?.(i), T();
17
+ b.storage.ceph.bucketPolicy.get.invalidate(), s?.(r), T();
18
18
  },
19
19
  onError: (e) => {
20
- s?.(i, e.message);
20
+ c?.(r, e.message);
21
21
  }
22
22
  });
23
23
  m(() => {
24
- r || w.reset();
25
- }, [r, i]);
24
+ n || w.reset();
25
+ }, [n, r]);
26
26
  let T = () => {
27
- w.reset(), a();
27
+ w.reset(), i();
28
28
  }, E = () => {
29
29
  w.mutate({
30
30
  project_id: y,
31
- bucketName: i
31
+ bucketName: r
32
32
  });
33
33
  };
34
- if (!r) return null;
34
+ if (!n) return null;
35
35
  let D = !!x?.policy, O = w.isPending;
36
- return /*#__PURE__*/ f(c, {
36
+ return /*#__PURE__*/ f(a, {
37
37
  title: h._({ id: "On9AgT" }),
38
- open: r,
38
+ open: n,
39
39
  onCancel: T,
40
40
  confirmButtonLabel: h._({ id: "VMoZmg" }),
41
41
  confirmButtonVariant: "primary-danger",
@@ -43,23 +43,23 @@ var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) =>
43
43
  cancelButtonLabel: h._({ id: "dEgA5A" }),
44
44
  size: "small",
45
45
  disableConfirmButton: O || S || !D || !!C,
46
- children: /*#__PURE__*/ p(t, {
46
+ children: /*#__PURE__*/ p(o, {
47
47
  direction: "vertical",
48
48
  gap: "4",
49
49
  children: [
50
50
  S && /*#__PURE__*/ f("div", {
51
51
  className: "flex items-center justify-center py-4",
52
- children: /*#__PURE__*/ f(e, {
52
+ children: /*#__PURE__*/ f(t, {
53
53
  variant: "primary",
54
54
  size: "large"
55
55
  })
56
56
  }),
57
- C && /*#__PURE__*/ f(n, {
57
+ C && /*#__PURE__*/ f(e, {
58
58
  variant: "error",
59
59
  title: h._({ id: "XicAqm" }),
60
60
  children: C.message
61
61
  }),
62
- !S && !C && !D && /*#__PURE__*/ f(n, {
62
+ !S && !C && !D && /*#__PURE__*/ f(e, {
63
63
  variant: "warning",
64
64
  title: h._({ id: "GZjazt" }),
65
65
  children: /*#__PURE__*/ f(g, { id: "/HejCc" })
@@ -68,14 +68,14 @@ var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) =>
68
68
  className: "text-theme-default",
69
69
  children: /*#__PURE__*/ f(g, {
70
70
  id: "QDUXIq",
71
- values: { bucketName: i },
71
+ values: { bucketName: r },
72
72
  components: { 0: /*#__PURE__*/ f("strong", {}) }
73
73
  })
74
74
  }), /*#__PURE__*/ f("p", {
75
75
  className: "text-theme-default",
76
76
  children: /*#__PURE__*/ f(g, { id: "Rsh494" })
77
77
  })] }),
78
- w.isError && /*#__PURE__*/ f(n, {
78
+ w.isError && /*#__PURE__*/ f(e, {
79
79
  variant: "error",
80
80
  title: h._({ id: "+Pe7SS" }),
81
81
  children: w.error?.message
@@ -83,7 +83,7 @@ var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) =>
83
83
  ]
84
84
  })
85
85
  });
86
- }, y = ({ isOpen: e, bucket: n, onClose: r, onSuccess: i, onError: a }) => {
86
+ }, y = ({ isOpen: e, bucket: t, onClose: r, onSuccess: s, onError: c }) => {
87
87
  let { i18n: d, _: m } = _(), v = u(), [y, b] = h(""), [x, S] = h(null), [C, w] = h(!1), T = l.useUtils(), E = l.storage.ceph.objects.deleteAll.useMutation({ onSettled: () => {
88
88
  T.storage.ceph.containers.list.invalidate(), T.storage.ceph.objects.list.invalidate(), D();
89
89
  } }), D = () => {
@@ -92,30 +92,30 @@ var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) =>
92
92
  let t = e.target.value;
93
93
  b(t), x && S(null);
94
94
  }, k = () => {
95
- if (!n) return;
96
- if (y.trim() !== n.name) {
95
+ if (!t) return;
96
+ if (y.trim() !== t.name) {
97
97
  S(d._({ id: "wxVsr5" }));
98
98
  return;
99
99
  }
100
- let e = n.name;
100
+ let e = t.name;
101
101
  E.mutate({
102
102
  project_id: v,
103
103
  containerName: e,
104
104
  includeVersionsAndDeleteMarkers: C
105
105
  }, {
106
106
  onSuccess: (t) => {
107
- i?.(e, t);
107
+ s?.(e, t);
108
108
  },
109
109
  onError: (t) => {
110
- a?.(e, t.message);
110
+ c?.(e, t.message);
111
111
  }
112
112
  });
113
113
  }, A = (e) => {
114
114
  e.key === "Enter" && k();
115
115
  };
116
- if (!e || !n) return null;
117
- let j = n.name;
118
- return /*#__PURE__*/ f(c, {
116
+ if (!e || !t) return null;
117
+ let j = t.name;
118
+ return /*#__PURE__*/ f(a, {
119
119
  title: d._({ id: "CfKRC1" }),
120
120
  open: e,
121
121
  onCancel: D,
@@ -124,8 +124,8 @@ var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) =>
124
124
  onConfirm: k,
125
125
  cancelButtonLabel: d._({ id: "dEgA5A" }),
126
126
  size: "small",
127
- disableConfirmButton: E.isPending || y.trim() !== n.name,
128
- children: /*#__PURE__*/ p(t, {
127
+ disableConfirmButton: E.isPending || y.trim() !== t.name,
128
+ children: /*#__PURE__*/ p(o, {
129
129
  direction: "vertical",
130
130
  gap: "6",
131
131
  children: [
@@ -136,13 +136,13 @@ var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) =>
136
136
  values: { bucketName: j }
137
137
  })
138
138
  }),
139
- /*#__PURE__*/ f(s, {
139
+ /*#__PURE__*/ f(i, {
140
140
  checked: C,
141
141
  onChange: (e) => w(e.target.checked),
142
142
  label: d._({ id: "mbmb/h" }),
143
143
  disabled: E.isPending
144
144
  }),
145
- /*#__PURE__*/ f(o, {
145
+ /*#__PURE__*/ f(n, {
146
146
  label: d._({ id: "dEHa3L" }),
147
147
  required: !0,
148
148
  value: y,
@@ -151,37 +151,37 @@ var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) =>
151
151
  invalid: !!x,
152
152
  errortext: x || void 0,
153
153
  disabled: E.isPending,
154
- placeholder: n.name,
154
+ placeholder: t.name,
155
155
  autoFocus: !0
156
156
  })
157
157
  ]
158
158
  })
159
159
  });
160
- }, b = ({ isOpen: n, bucket: s, onClose: v, onSuccess: y, onError: b }) => {
160
+ }, b = ({ isOpen: e, bucket: i, onClose: v, onSuccess: y, onError: b }) => {
161
161
  let { i18n: x, _: S } = _(), C = u(), [w, T] = h(""), [E, D] = h(null), O = l.useUtils(), { data: k, isLoading: A, error: j } = l.storage.ceph.objects.list.useQuery({
162
162
  project_id: C ?? "",
163
- containerName: s?.name ?? "",
163
+ containerName: i?.name ?? "",
164
164
  maxKeys: 1,
165
165
  delimiter: "",
166
166
  showVersions: !0
167
- }, { enabled: n && s !== null }), M = l.storage.ceph.containers.delete.useMutation({ onSettled: () => {
167
+ }, { enabled: e && i !== null }), M = l.storage.ceph.containers.delete.useMutation({ onSettled: () => {
168
168
  O.storage.ceph.containers.list.invalidate();
169
169
  } });
170
170
  m(() => {
171
- n || (T(""), D(null), M.reset());
172
- }, [n, s?.name]);
171
+ e || (T(""), D(null), M.reset());
172
+ }, [e, i?.name]);
173
173
  let N = () => {
174
174
  T(""), D(null), M.reset(), v();
175
175
  }, P = (e) => {
176
176
  let t = e.target.value;
177
177
  T(t), E && D(null);
178
178
  }, F = () => {
179
- if (!s || j) return;
180
- if (w.trim() !== s.name) {
179
+ if (!i || j) return;
180
+ if (w.trim() !== i.name) {
181
181
  D(x._({ id: "wxVsr5" }));
182
182
  return;
183
183
  }
184
- let e = s.name;
184
+ let e = i.name;
185
185
  M.mutate({
186
186
  project_id: C,
187
187
  bucketName: e
@@ -196,19 +196,19 @@ var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) =>
196
196
  }, I = (e) => {
197
197
  e.key === "Enter" && F();
198
198
  };
199
- if (!n || !s) return null;
199
+ if (!e || !i) return null;
200
200
  let L = k?.objects?.length ?? 0, R = k?.versions?.length ?? 0, z = L > 0, B = L === 0 && R > 0, V = j?.message;
201
- return /*#__PURE__*/ f(c, {
201
+ return /*#__PURE__*/ f(a, {
202
202
  title: x._({ id: "IwlPLb" }),
203
- open: n,
203
+ open: e,
204
204
  onCancel: N,
205
205
  confirmButtonLabel: z || B ? void 0 : x._({ id: "IwlPLb" }),
206
206
  confirmButtonVariant: z || B ? void 0 : "primary-danger",
207
207
  onConfirm: z || B ? void 0 : F,
208
208
  cancelButtonLabel: z || B ? void 0 : x._({ id: "dEgA5A" }),
209
- modalFooter: z || B ? /*#__PURE__*/ f(a, {
209
+ modalFooter: z || B ? /*#__PURE__*/ f(r, {
210
210
  className: "flex justify-end",
211
- children: /*#__PURE__*/ f(i, { children: /*#__PURE__*/ f(r, {
211
+ children: /*#__PURE__*/ f(s, { children: /*#__PURE__*/ f(c, {
212
212
  variant: "primary",
213
213
  onClick: N,
214
214
  "data-testid": "delete-has-objects-close-button",
@@ -216,8 +216,8 @@ var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) =>
216
216
  }) })
217
217
  }) : void 0,
218
218
  size: "small",
219
- disableConfirmButton: M.isPending || A || !!j || w.trim() !== s.name,
220
- children: /*#__PURE__*/ p(t, {
219
+ disableConfirmButton: M.isPending || A || !!j || w.trim() !== i.name,
220
+ children: /*#__PURE__*/ p(o, {
221
221
  direction: "vertical",
222
222
  gap: "6",
223
223
  children: [j && /*#__PURE__*/ f("p", {
@@ -228,11 +228,11 @@ var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) =>
228
228
  id: "MJLqeY",
229
229
  values: { errorMessage: V }
230
230
  })
231
- }), A ? /*#__PURE__*/ p(t, {
231
+ }), A ? /*#__PURE__*/ p(o, {
232
232
  direction: "horizontal",
233
233
  gap: "2",
234
234
  alignment: "center",
235
- children: [/*#__PURE__*/ f(e, {}), /*#__PURE__*/ f("span", {
235
+ children: [/*#__PURE__*/ f(t, {}), /*#__PURE__*/ f("span", {
236
236
  className: "text-juno-grey-light-1 text-sm",
237
237
  children: /*#__PURE__*/ f(g, { id: "rPuPb+" })
238
238
  })]
@@ -251,7 +251,7 @@ var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) =>
251
251
  }) : /*#__PURE__*/ p(d, { children: [/*#__PURE__*/ f("p", {
252
252
  className: "text-theme-default",
253
253
  children: /*#__PURE__*/ f(g, { id: "/pOQrn" })
254
- }), /*#__PURE__*/ f(o, {
254
+ }), /*#__PURE__*/ f(n, {
255
255
  label: x._({ id: "dEHa3L" }),
256
256
  required: !0,
257
257
  value: w,
@@ -260,12 +260,12 @@ var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) =>
260
260
  invalid: !!E,
261
261
  errortext: E || void 0,
262
262
  disabled: M.isPending,
263
- placeholder: s.name
263
+ placeholder: i.name
264
264
  })] })]
265
265
  })
266
266
  });
267
- }, x = ({ isOpen: e, bucket: n, onClose: r, onSuccess: i, onError: a }) => {
268
- let { i18n: s, _: d } = _(), m = u(), [v, y] = h(""), [b, x] = h(null), S = l.useUtils(), C = l.storage.ceph.objects.deleteAll.useMutation({ onSettled: () => {
267
+ }, x = ({ isOpen: e, bucket: t, onClose: r, onSuccess: i, onError: s }) => {
268
+ let { i18n: c, _: d } = _(), m = u(), [v, y] = h(""), [b, x] = h(null), S = l.useUtils(), C = l.storage.ceph.objects.deleteAll.useMutation({ onSettled: () => {
269
269
  S.storage.ceph.containers.list.invalidate(), S.storage.ceph.objects.list.invalidate(), w();
270
270
  } }), w = () => {
271
271
  y(""), x(null), C.reset(), r();
@@ -273,12 +273,12 @@ var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) =>
273
273
  let t = e.target.value;
274
274
  y(t), b && x(null);
275
275
  }, E = () => {
276
- if (!n) return;
277
- if (v.trim() !== n.name) {
278
- x(s._({ id: "wxVsr5" }));
276
+ if (!t) return;
277
+ if (v.trim() !== t.name) {
278
+ x(c._({ id: "wxVsr5" }));
279
279
  return;
280
280
  }
281
- let e = n.name;
281
+ let e = t.name;
282
282
  C.mutate({
283
283
  project_id: m,
284
284
  containerName: e,
@@ -288,28 +288,28 @@ var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) =>
288
288
  i?.(e, t);
289
289
  },
290
290
  onError: (t) => {
291
- a?.(e, t.message);
291
+ s?.(e, t.message);
292
292
  }
293
293
  });
294
294
  };
295
- return !e || !n ? null : /*#__PURE__*/ f(c, {
296
- title: s._({ id: "1mFMeP" }),
295
+ return !e || !t ? null : /*#__PURE__*/ f(a, {
296
+ title: c._({ id: "1mFMeP" }),
297
297
  open: e,
298
298
  onCancel: w,
299
- confirmButtonLabel: s._({ id: "1mFMeP" }),
299
+ confirmButtonLabel: c._({ id: "1mFMeP" }),
300
300
  confirmButtonVariant: "primary-danger",
301
301
  onConfirm: E,
302
- cancelButtonLabel: s._({ id: "dEgA5A" }),
302
+ cancelButtonLabel: c._({ id: "dEgA5A" }),
303
303
  size: "small",
304
- disableConfirmButton: C.isPending || v.trim() !== n.name,
305
- children: /*#__PURE__*/ p(t, {
304
+ disableConfirmButton: C.isPending || v.trim() !== t.name,
305
+ children: /*#__PURE__*/ p(o, {
306
306
  direction: "vertical",
307
307
  gap: "6",
308
308
  children: [/*#__PURE__*/ f("p", {
309
309
  className: "text-theme-default m-0",
310
310
  children: /*#__PURE__*/ f(g, { id: "T3+VKR" })
311
- }), /*#__PURE__*/ f(o, {
312
- label: s._({ id: "dEHa3L" }),
311
+ }), /*#__PURE__*/ f(n, {
312
+ label: c._({ id: "dEHa3L" }),
313
313
  required: !0,
314
314
  value: v,
315
315
  onChange: T,
@@ -319,7 +319,7 @@ var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) =>
319
319
  invalid: !!b,
320
320
  errortext: b || void 0,
321
321
  disabled: C.isPending,
322
- placeholder: n.name,
322
+ placeholder: t.name,
323
323
  autoFocus: !0
324
324
  })]
325
325
  })
@@ -328,4 +328,4 @@ var v = ({ isOpen: r, bucketName: i, onClose: a, onSuccess: o, onError: s }) =>
328
328
  //#endregion
329
329
  export { v as i, b as n, y as r, x as t };
330
330
 
331
- //# sourceMappingURL=DeleteVersionsModal-CsBJzXoW.mjs.map
331
+ //# sourceMappingURL=DeleteVersionsModal-DQO8lGmS.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteVersionsModal-CsBJzXoW.mjs","names":["useEffect","trpcReact","Modal","Stack","Spinner","Message","useProjectId","DeleteBucketPolicyModal","isOpen","bucketName","onClose","onSuccess","onError","useLingui","projectId","utils","useUtils","data","policyData","isLoading","isPolicyLoading","error","policyError","storage","ceph","bucketPolicy","get","useQuery","project_id","enabled","retry","deleteMutation","delete","useMutation","invalidate","name","handleClose","message","reset","handleDelete","mutate","hasPolicy","policy","isDeleting","isPending","title","t","open","onCancel","confirmButtonLabel","confirmButtonVariant","onConfirm","cancelButtonLabel","size","disableConfirmButton","direction","gap","div","className","variant","p","strong","isError","useState","trpcReact","Modal","TextInput","Stack","Checkbox","useProjectId","EmptyBucketModal","isOpen","bucket","onClose","onSuccess","onError","useLingui","projectId","confirmName","setConfirmName","nameError","setNameError","deleteVersionsAndMarkers","setDeleteVersionsAndMarkers","utils","useUtils","emptyBucketMutation","storage","ceph","objects","deleteAll","useMutation","onSettled","containers","list","invalidate","handleClose","reset","handleConfirmNameChange","e","value","target","handleSubmit","trim","name","t","bucketName","mutate","project_id","containerName","includeVersionsAndDeleteMarkers","deletedCount","error","message","handleKeyDown","key","title","open","onCancel","confirmButtonLabel","confirmButtonVariant","onConfirm","cancelButtonLabel","size","disableConfirmButton","isPending","direction","gap","p","className","checked","onChange","label","disabled","required","onKeyDown","invalid","errortext","undefined","placeholder","autoFocus","useState","useEffect","trpcReact","Modal","ModalFooter","ButtonRow","TextInput","Stack","Spinner","Button","useProjectId","DeleteBucketModal","isOpen","bucket","onClose","onSuccess","onError","useLingui","projectId","confirmName","setConfirmName","nameError","setNameError","utils","useUtils","data","objects","isLoading","isLoadingObjects","error","objectsError","storage","ceph","list","useQuery","project_id","containerName","name","maxKeys","delimiter","showVersions","enabled","deleteBucketMutation","containers","delete","useMutation","onSettled","invalidate","reset","handleClose","handleConfirmNameChange","e","value","target","handleSubmit","trim","t","bucketName","mutate","message","handleKeyDown","key","currentObjectCount","length","versionCount","versions","isNonEmpty","hasOnlyVersions","errorMessage","title","open","onCancel","confirmButtonLabel","undefined","confirmButtonVariant","onConfirm","cancelButtonLabel","modalFooter","className","variant","onClick","data-testid","size","disableConfirmButton","isPending","direction","gap","p","role","aria-live","alignment","span","strong","label","required","onChange","onKeyDown","invalid","errortext","disabled","placeholder","useState","trpcReact","Modal","TextInput","Stack","useProjectId","DeleteVersionsModal","isOpen","bucket","onClose","onSuccess","onError","useLingui","projectId","confirmName","setConfirmName","nameError","setNameError","utils","useUtils","deleteVersionsMutation","storage","ceph","objects","deleteAll","useMutation","onSettled","containers","list","invalidate","handleClose","reset","handleConfirmNameChange","e","value","target","handleSubmit","trim","name","t","bucketName","mutate","project_id","containerName","includeVersionsAndDeleteMarkers","deletedCount","error","message","handleKeyDown","key","title","open","onCancel","confirmButtonLabel","confirmButtonVariant","onConfirm","cancelButtonLabel","size","disableConfirmButton","isPending","direction","gap","p","className","label","required","onChange","onKeyDown","invalid","errortext","undefined","disabled","placeholder","autoFocus"],"sources":["../../src/client/routes/_auth/projects/$projectId/storage/-components/Ceph/Buckets/DeleteBucketPolicyModal.tsx","../../src/client/routes/_auth/projects/$projectId/storage/-components/Ceph/Buckets/EmptyBucketModal.tsx","../../src/client/routes/_auth/projects/$projectId/storage/-components/Ceph/Buckets/DeleteBucketModal.tsx","../../src/client/routes/_auth/projects/$projectId/storage/-components/Ceph/Buckets/DeleteVersionsModal.tsx"],"sourcesContent":["import { useEffect } from \"react\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { Modal, Stack, Spinner, Message } from \"@cloudoperators/juno-ui-components\"\nimport { useProjectId } from \"@/client/hooks/useProjectId\"\n\ninterface DeleteBucketPolicyModalProps {\n isOpen: boolean\n bucketName: string\n onClose: () => void\n onSuccess?: (bucketName: string) => void\n onError?: (bucketName: string, errorMessage: string) => void\n}\n\nexport const DeleteBucketPolicyModal = ({\n isOpen,\n bucketName,\n onClose,\n onSuccess,\n onError,\n}: DeleteBucketPolicyModalProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const utils = trpcReact.useUtils()\n\n // Query to verify policy exists\n const {\n data: policyData,\n isLoading: isPolicyLoading,\n error: policyError,\n } = trpcReact.storage.ceph.bucketPolicy.get.useQuery(\n {\n project_id: projectId,\n bucketName,\n },\n {\n enabled: isOpen && !!projectId,\n retry: false,\n }\n )\n\n // Delete mutation\n const deleteMutation = trpcReact.storage.ceph.bucketPolicy.delete.useMutation({\n onSuccess: () => {\n utils.storage.ceph.bucketPolicy.get.invalidate()\n const name = bucketName\n onSuccess?.(name)\n handleClose()\n },\n onError: (error) => {\n const name = bucketName\n onError?.(name, error.message)\n },\n })\n\n useEffect(() => {\n if (!isOpen) {\n deleteMutation.reset()\n }\n }, [isOpen, bucketName])\n\n const handleClose = () => {\n deleteMutation.reset()\n onClose()\n }\n\n const handleDelete = () => {\n deleteMutation.mutate({\n project_id: projectId,\n bucketName,\n })\n }\n\n if (!isOpen) return null\n\n const hasPolicy = !!policyData?.policy\n const isDeleting = deleteMutation.isPending\n\n return (\n <Modal\n title={t`Delete Bucket Policy`}\n open={isOpen}\n onCancel={handleClose}\n confirmButtonLabel={t`Delete Policy`}\n confirmButtonVariant=\"primary-danger\"\n onConfirm={handleDelete}\n cancelButtonLabel={t`Cancel`}\n size=\"small\"\n disableConfirmButton={isDeleting || isPolicyLoading || !hasPolicy || !!policyError}\n >\n <Stack direction=\"vertical\" gap=\"4\">\n {isPolicyLoading && (\n <div className=\"flex items-center justify-center py-4\">\n <Spinner variant=\"primary\" size=\"large\" />\n </div>\n )}\n\n {policyError && (\n <Message variant=\"error\" title={t`Failed to load policy`}>\n {policyError.message}\n </Message>\n )}\n\n {!isPolicyLoading && !policyError && !hasPolicy && (\n <Message variant=\"warning\" title={t`No policy found`}>\n <Trans>This bucket does not have a policy attached.</Trans>\n </Message>\n )}\n\n {!isPolicyLoading && !policyError && hasPolicy && (\n <>\n <p className=\"text-theme-default\">\n <Trans>\n Are you sure you want to delete the policy for bucket <strong>{bucketName}</strong>?\n </Trans>\n </p>\n <p className=\"text-theme-default\">\n <Trans>\n Deleting the policy will remove all access restrictions defined by it. This action cannot be undone.\n </Trans>\n </p>\n </>\n )}\n\n {deleteMutation.isError && (\n <Message variant=\"error\" title={t`Failed to delete policy`}>\n {deleteMutation.error?.message}\n </Message>\n )}\n </Stack>\n </Modal>\n )\n}\n","import { useState } from \"react\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { Modal, TextInput, Stack, Checkbox } from \"@cloudoperators/juno-ui-components\"\nimport { Bucket } from \"@/server/Storage/types/ceph\"\nimport { useProjectId } from \"@/client/hooks/useProjectId\"\n\ninterface EmptyBucketModalProps {\n isOpen: boolean\n bucket: Bucket | null\n onClose: () => void\n onSuccess?: (bucketName: string, deletedCount: number) => void\n onError?: (bucketName: string, errorMessage: string) => void\n}\n\nexport const EmptyBucketModal = ({ isOpen, bucket, onClose, onSuccess, onError }: EmptyBucketModalProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const [confirmName, setConfirmName] = useState(\"\")\n const [nameError, setNameError] = useState<string | null>(null)\n const [deleteVersionsAndMarkers, setDeleteVersionsAndMarkers] = useState(false)\n\n const utils = trpcReact.useUtils()\n\n const emptyBucketMutation = trpcReact.storage.ceph.objects.deleteAll.useMutation({\n onSettled: () => {\n // Invalidate both containers.list (to update bucket metadata) and objects.list (to refresh empty state)\n utils.storage.ceph.containers.list.invalidate()\n utils.storage.ceph.objects.list.invalidate()\n handleClose()\n },\n })\n\n const handleClose = () => {\n setConfirmName(\"\")\n setNameError(null)\n setDeleteVersionsAndMarkers(false)\n emptyBucketMutation.reset()\n onClose()\n }\n\n const handleConfirmNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n setConfirmName(value)\n if (nameError) setNameError(null)\n }\n\n const handleSubmit = () => {\n if (!bucket) return\n if (confirmName.trim() !== bucket.name) {\n setNameError(t`Bucket name does not match`)\n return\n }\n\n // Capture bucket name before async operation to avoid dereferencing null bucket in callbacks\n const bucketName = bucket.name\n\n emptyBucketMutation.mutate(\n {\n project_id: projectId,\n containerName: bucketName,\n includeVersionsAndDeleteMarkers: deleteVersionsAndMarkers,\n },\n {\n onSuccess: (deletedCount) => {\n onSuccess?.(bucketName, deletedCount)\n },\n onError: (error) => {\n onError?.(bucketName, error.message)\n },\n }\n )\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") handleSubmit()\n }\n\n if (!isOpen || !bucket) return null\n\n const bucketName = bucket.name\n\n return (\n <Modal\n title={t`Empty Bucket`}\n open={isOpen}\n onCancel={handleClose}\n confirmButtonLabel={t`Empty Bucket`}\n confirmButtonVariant=\"primary-danger\"\n onConfirm={handleSubmit}\n cancelButtonLabel={t`Cancel`}\n size=\"small\"\n disableConfirmButton={emptyBucketMutation.isPending || confirmName.trim() !== bucket.name}\n >\n <Stack direction=\"vertical\" gap=\"6\">\n <p className=\"text-theme-default m-0\">\n <Trans>\n This action will permanently delete all objects from {bucketName}. You may choose to also delete all\n versions and delete markers. This will enable you to delete the bucket. This action cannot be undone.\n </Trans>\n </p>\n\n <Checkbox\n checked={deleteVersionsAndMarkers}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => setDeleteVersionsAndMarkers(e.target.checked)}\n label={t`Also delete all versions and all delete markers`}\n disabled={emptyBucketMutation.isPending}\n />\n\n <TextInput\n label={t`Type the bucket name to confirm`}\n required\n value={confirmName}\n onChange={handleConfirmNameChange}\n onKeyDown={handleKeyDown}\n invalid={!!nameError}\n errortext={nameError || undefined}\n disabled={emptyBucketMutation.isPending}\n placeholder={bucket.name}\n autoFocus\n />\n </Stack>\n </Modal>\n )\n}\n","import { useState, useEffect } from \"react\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { Modal, ModalFooter, ButtonRow, TextInput, Stack, Spinner, Button } from \"@cloudoperators/juno-ui-components\"\nimport type { Bucket } from \"@/server/Storage/types/ceph\"\nimport { useProjectId } from \"@/client/hooks/useProjectId\"\n\ninterface DeleteBucketModalProps {\n isOpen: boolean\n bucket: Bucket | null\n onClose: () => void\n onSuccess?: (bucketName: string) => void\n onError?: (bucketName: string, errorMessage: string) => void\n}\n\nexport const DeleteBucketModal = ({ isOpen, bucket, onClose, onSuccess, onError }: DeleteBucketModalProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const [confirmName, setConfirmName] = useState(\"\")\n const [nameError, setNameError] = useState<string | null>(null)\n\n const utils = trpcReact.useUtils()\n\n // Fetch actual objects and versions to get accurate real-time state\n // Use showVersions=true to also detect delete markers in versioned buckets\n // Use delimiter=\"\" to get ALL objects including folder markers (zero-byte objects ending in \"/\")\n // Without this, folders are returned as CommonPrefixes and we can't accurately check if bucket is empty\n const {\n data: objects,\n isLoading: isLoadingObjects,\n error: objectsError,\n } = trpcReact.storage.ceph.objects.list.useQuery(\n { project_id: projectId ?? \"\", containerName: bucket?.name ?? \"\", maxKeys: 1, delimiter: \"\", showVersions: true },\n { enabled: isOpen && bucket !== null }\n )\n\n const deleteBucketMutation = trpcReact.storage.ceph.containers.delete.useMutation({\n onSettled: () => {\n utils.storage.ceph.containers.list.invalidate()\n },\n })\n\n useEffect(() => {\n if (!isOpen) {\n setConfirmName(\"\")\n setNameError(null)\n deleteBucketMutation.reset()\n }\n }, [isOpen, bucket?.name])\n\n const handleClose = () => {\n setConfirmName(\"\")\n setNameError(null)\n deleteBucketMutation.reset()\n onClose()\n }\n\n const handleConfirmNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n setConfirmName(value)\n if (nameError) setNameError(null)\n }\n\n const handleSubmit = () => {\n if (!bucket) return\n if (objectsError) return\n if (confirmName.trim() !== bucket.name) {\n setNameError(t`Bucket name does not match`)\n return\n }\n\n // Capture bucket name before async operation to avoid dereferencing null bucket in callbacks\n const bucketName = bucket.name\n\n deleteBucketMutation.mutate(\n { project_id: projectId, bucketName },\n {\n onSuccess: () => {\n handleClose()\n onSuccess?.(bucketName)\n },\n onError: (error) => {\n handleClose()\n onError?.(bucketName, error.message)\n },\n }\n )\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") handleSubmit()\n }\n\n if (!isOpen || !bucket) return null\n\n // Check if bucket has current objects (not just versions/delete markers)\n // When delimiter=\"\", folders are returned as objects (keys ending in \"/\")\n const currentObjectCount = objects?.objects?.length ?? 0\n const versionCount = objects?.versions?.length ?? 0\n\n // Bucket is non-empty if it has current objects\n // If it only has versions/delete markers (no current objects), it's considered \"empty\" for deletion purposes\n const isNonEmpty = currentObjectCount > 0\n const hasOnlyVersions = currentObjectCount === 0 && versionCount > 0\n const errorMessage = objectsError?.message\n\n return (\n <Modal\n title={t`Delete Bucket`}\n open={isOpen}\n onCancel={handleClose}\n confirmButtonLabel={isNonEmpty || hasOnlyVersions ? undefined : t`Delete Bucket`}\n confirmButtonVariant={isNonEmpty || hasOnlyVersions ? undefined : \"primary-danger\"}\n onConfirm={isNonEmpty || hasOnlyVersions ? undefined : handleSubmit}\n cancelButtonLabel={isNonEmpty || hasOnlyVersions ? undefined : t`Cancel`}\n modalFooter={\n isNonEmpty || hasOnlyVersions ? (\n <ModalFooter className=\"flex justify-end\">\n <ButtonRow>\n <Button variant=\"primary\" onClick={handleClose} data-testid=\"delete-has-objects-close-button\">\n <Trans>Close</Trans>\n </Button>\n </ButtonRow>\n </ModalFooter>\n ) : undefined\n }\n size=\"small\"\n disableConfirmButton={\n deleteBucketMutation.isPending || isLoadingObjects || !!objectsError || confirmName.trim() !== bucket.name\n }\n >\n <Stack direction=\"vertical\" gap=\"6\">\n {objectsError && (\n <p className=\"text-theme-error\" role=\"alert\" aria-live=\"assertive\">\n <Trans>Failed to check bucket contents: {errorMessage}</Trans>\n </p>\n )}\n\n {isLoadingObjects ? (\n <Stack direction=\"horizontal\" gap=\"2\" alignment=\"center\">\n <Spinner />\n <span className=\"text-juno-grey-light-1 text-sm\">\n <Trans>Checking bucket contents...</Trans>\n </span>\n </Stack>\n ) : isNonEmpty ? (\n <p className=\"text-theme-default\">\n <Trans>\n This bucket contains objects and cannot be deleted. Use <strong>Empty Bucket</strong> action to remove all\n content first.\n </Trans>\n </p>\n ) : hasOnlyVersions ? (\n <p className=\"text-theme-default\">\n <Trans>\n This bucket contains old versions and delete markers. Use <strong>Delete Versions</strong> action to\n remove them before deleting the bucket.\n </Trans>\n </p>\n ) : (\n <>\n <p className=\"text-theme-default\">\n <Trans>\n This action is irreversible. Deleting a bucket permanently removes it and cannot be undone. The bucket\n must be empty before deletion.\n </Trans>\n </p>\n\n <TextInput\n label={t`Type the bucket name to confirm`}\n required\n value={confirmName}\n onChange={handleConfirmNameChange}\n onKeyDown={handleKeyDown}\n invalid={!!nameError}\n errortext={nameError || undefined}\n disabled={deleteBucketMutation.isPending}\n placeholder={bucket.name}\n />\n </>\n )}\n </Stack>\n </Modal>\n )\n}\n","import { useState } from \"react\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { Modal, TextInput, Stack } from \"@cloudoperators/juno-ui-components\"\nimport { Bucket } from \"@/server/Storage/types/ceph\"\nimport { useProjectId } from \"@/client/hooks/useProjectId\"\n\ninterface DeleteVersionsModalProps {\n isOpen: boolean\n bucket: Bucket | null\n onClose: () => void\n onSuccess?: (bucketName: string, deletedCount: number) => void\n onError?: (bucketName: string, errorMessage: string) => void\n}\n\nexport const DeleteVersionsModal = ({ isOpen, bucket, onClose, onSuccess, onError }: DeleteVersionsModalProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const [confirmName, setConfirmName] = useState(\"\")\n const [nameError, setNameError] = useState<string | null>(null)\n\n const utils = trpcReact.useUtils()\n\n const deleteVersionsMutation = trpcReact.storage.ceph.objects.deleteAll.useMutation({\n onSettled: () => {\n // Invalidate both containers.list (to update bucket metadata) and objects.list (to refresh empty state)\n utils.storage.ceph.containers.list.invalidate()\n utils.storage.ceph.objects.list.invalidate()\n handleClose()\n },\n })\n\n const handleClose = () => {\n setConfirmName(\"\")\n setNameError(null)\n deleteVersionsMutation.reset()\n onClose()\n }\n\n const handleConfirmNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n setConfirmName(value)\n if (nameError) setNameError(null)\n }\n\n const handleSubmit = () => {\n if (!bucket) return\n if (confirmName.trim() !== bucket.name) {\n setNameError(t`Bucket name does not match`)\n return\n }\n\n // Capture bucket name before async operation to avoid dereferencing null bucket in callbacks\n const bucketName = bucket.name\n\n // Always delete all versions and delete markers (includeVersionsAndDeleteMarkers: true)\n deleteVersionsMutation.mutate(\n {\n project_id: projectId,\n containerName: bucketName,\n includeVersionsAndDeleteMarkers: true,\n },\n {\n onSuccess: (deletedCount) => {\n onSuccess?.(bucketName, deletedCount)\n },\n onError: (error) => {\n onError?.(bucketName, error.message)\n },\n }\n )\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") handleSubmit()\n }\n\n if (!isOpen || !bucket) return null\n\n return (\n <Modal\n title={t`Delete Versions`}\n open={isOpen}\n onCancel={handleClose}\n confirmButtonLabel={t`Delete Versions`}\n confirmButtonVariant=\"primary-danger\"\n onConfirm={handleSubmit}\n cancelButtonLabel={t`Cancel`}\n size=\"small\"\n disableConfirmButton={deleteVersionsMutation.isPending || confirmName.trim() !== bucket.name}\n >\n <Stack direction=\"vertical\" gap=\"6\">\n <p className=\"text-theme-default m-0\">\n <Trans>\n This action will permanently delete all versions and delete markers. This will enable you to delete the\n bucket. This action cannot be undone.\n </Trans>\n </p>\n\n <TextInput\n label={t`Type the bucket name to confirm`}\n required\n value={confirmName}\n onChange={handleConfirmNameChange}\n onKeyDown={handleKeyDown}\n invalid={!!nameError}\n errortext={nameError || undefined}\n disabled={deleteVersionsMutation.isPending}\n placeholder={bucket.name}\n autoFocus\n />\n </Stack>\n </Modal>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DeleteVersionsModal-DQO8lGmS.mjs","names":["useEffect","trpcReact","Modal","Stack","Spinner","Message","useProjectId","DeleteBucketPolicyModal","isOpen","bucketName","onClose","onSuccess","onError","useLingui","projectId","utils","useUtils","data","policyData","isLoading","isPolicyLoading","error","policyError","storage","ceph","bucketPolicy","get","useQuery","project_id","enabled","retry","deleteMutation","delete","useMutation","invalidate","name","handleClose","message","reset","handleDelete","mutate","hasPolicy","policy","isDeleting","isPending","title","t","open","onCancel","confirmButtonLabel","confirmButtonVariant","onConfirm","cancelButtonLabel","size","disableConfirmButton","direction","gap","div","className","variant","p","strong","isError","useState","trpcReact","Modal","TextInput","Stack","Checkbox","useProjectId","EmptyBucketModal","isOpen","bucket","onClose","onSuccess","onError","useLingui","projectId","confirmName","setConfirmName","nameError","setNameError","deleteVersionsAndMarkers","setDeleteVersionsAndMarkers","utils","useUtils","emptyBucketMutation","storage","ceph","objects","deleteAll","useMutation","onSettled","containers","list","invalidate","handleClose","reset","handleConfirmNameChange","e","value","target","handleSubmit","trim","name","t","bucketName","mutate","project_id","containerName","includeVersionsAndDeleteMarkers","deletedCount","error","message","handleKeyDown","key","title","open","onCancel","confirmButtonLabel","confirmButtonVariant","onConfirm","cancelButtonLabel","size","disableConfirmButton","isPending","direction","gap","p","className","checked","onChange","label","disabled","required","onKeyDown","invalid","errortext","undefined","placeholder","autoFocus","useState","useEffect","trpcReact","Modal","ModalFooter","ButtonRow","TextInput","Stack","Spinner","Button","useProjectId","DeleteBucketModal","isOpen","bucket","onClose","onSuccess","onError","useLingui","projectId","confirmName","setConfirmName","nameError","setNameError","utils","useUtils","data","objects","isLoading","isLoadingObjects","error","objectsError","storage","ceph","list","useQuery","project_id","containerName","name","maxKeys","delimiter","showVersions","enabled","deleteBucketMutation","containers","delete","useMutation","onSettled","invalidate","reset","handleClose","handleConfirmNameChange","e","value","target","handleSubmit","trim","t","bucketName","mutate","message","handleKeyDown","key","currentObjectCount","length","versionCount","versions","isNonEmpty","hasOnlyVersions","errorMessage","title","open","onCancel","confirmButtonLabel","undefined","confirmButtonVariant","onConfirm","cancelButtonLabel","modalFooter","className","variant","onClick","data-testid","size","disableConfirmButton","isPending","direction","gap","p","role","aria-live","alignment","span","strong","label","required","onChange","onKeyDown","invalid","errortext","disabled","placeholder","useState","trpcReact","Modal","TextInput","Stack","useProjectId","DeleteVersionsModal","isOpen","bucket","onClose","onSuccess","onError","useLingui","projectId","confirmName","setConfirmName","nameError","setNameError","utils","useUtils","deleteVersionsMutation","storage","ceph","objects","deleteAll","useMutation","onSettled","containers","list","invalidate","handleClose","reset","handleConfirmNameChange","e","value","target","handleSubmit","trim","name","t","bucketName","mutate","project_id","containerName","includeVersionsAndDeleteMarkers","deletedCount","error","message","handleKeyDown","key","title","open","onCancel","confirmButtonLabel","confirmButtonVariant","onConfirm","cancelButtonLabel","size","disableConfirmButton","isPending","direction","gap","p","className","label","required","onChange","onKeyDown","invalid","errortext","undefined","disabled","placeholder","autoFocus"],"sources":["../../src/client/routes/_auth/projects/$projectId/storage/-components/Ceph/Buckets/DeleteBucketPolicyModal.tsx","../../src/client/routes/_auth/projects/$projectId/storage/-components/Ceph/Buckets/EmptyBucketModal.tsx","../../src/client/routes/_auth/projects/$projectId/storage/-components/Ceph/Buckets/DeleteBucketModal.tsx","../../src/client/routes/_auth/projects/$projectId/storage/-components/Ceph/Buckets/DeleteVersionsModal.tsx"],"sourcesContent":["import { useEffect } from \"react\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { Modal, Stack, Spinner, Message } from \"@cloudoperators/juno-ui-components\"\nimport { useProjectId } from \"@/client/hooks/useProjectId\"\n\ninterface DeleteBucketPolicyModalProps {\n isOpen: boolean\n bucketName: string\n onClose: () => void\n onSuccess?: (bucketName: string) => void\n onError?: (bucketName: string, errorMessage: string) => void\n}\n\nexport const DeleteBucketPolicyModal = ({\n isOpen,\n bucketName,\n onClose,\n onSuccess,\n onError,\n}: DeleteBucketPolicyModalProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const utils = trpcReact.useUtils()\n\n // Query to verify policy exists\n const {\n data: policyData,\n isLoading: isPolicyLoading,\n error: policyError,\n } = trpcReact.storage.ceph.bucketPolicy.get.useQuery(\n {\n project_id: projectId,\n bucketName,\n },\n {\n enabled: isOpen && !!projectId,\n retry: false,\n }\n )\n\n // Delete mutation\n const deleteMutation = trpcReact.storage.ceph.bucketPolicy.delete.useMutation({\n onSuccess: () => {\n utils.storage.ceph.bucketPolicy.get.invalidate()\n const name = bucketName\n onSuccess?.(name)\n handleClose()\n },\n onError: (error) => {\n const name = bucketName\n onError?.(name, error.message)\n },\n })\n\n useEffect(() => {\n if (!isOpen) {\n deleteMutation.reset()\n }\n }, [isOpen, bucketName])\n\n const handleClose = () => {\n deleteMutation.reset()\n onClose()\n }\n\n const handleDelete = () => {\n deleteMutation.mutate({\n project_id: projectId,\n bucketName,\n })\n }\n\n if (!isOpen) return null\n\n const hasPolicy = !!policyData?.policy\n const isDeleting = deleteMutation.isPending\n\n return (\n <Modal\n title={t`Delete Bucket Policy`}\n open={isOpen}\n onCancel={handleClose}\n confirmButtonLabel={t`Delete Policy`}\n confirmButtonVariant=\"primary-danger\"\n onConfirm={handleDelete}\n cancelButtonLabel={t`Cancel`}\n size=\"small\"\n disableConfirmButton={isDeleting || isPolicyLoading || !hasPolicy || !!policyError}\n >\n <Stack direction=\"vertical\" gap=\"4\">\n {isPolicyLoading && (\n <div className=\"flex items-center justify-center py-4\">\n <Spinner variant=\"primary\" size=\"large\" />\n </div>\n )}\n\n {policyError && (\n <Message variant=\"error\" title={t`Failed to load policy`}>\n {policyError.message}\n </Message>\n )}\n\n {!isPolicyLoading && !policyError && !hasPolicy && (\n <Message variant=\"warning\" title={t`No policy found`}>\n <Trans>This bucket does not have a policy attached.</Trans>\n </Message>\n )}\n\n {!isPolicyLoading && !policyError && hasPolicy && (\n <>\n <p className=\"text-theme-default\">\n <Trans>\n Are you sure you want to delete the policy for bucket <strong>{bucketName}</strong>?\n </Trans>\n </p>\n <p className=\"text-theme-default\">\n <Trans>\n Deleting the policy will remove all access restrictions defined by it. This action cannot be undone.\n </Trans>\n </p>\n </>\n )}\n\n {deleteMutation.isError && (\n <Message variant=\"error\" title={t`Failed to delete policy`}>\n {deleteMutation.error?.message}\n </Message>\n )}\n </Stack>\n </Modal>\n )\n}\n","import { useState } from \"react\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { Modal, TextInput, Stack, Checkbox } from \"@cloudoperators/juno-ui-components\"\nimport { Bucket } from \"@/server/Storage/types/ceph\"\nimport { useProjectId } from \"@/client/hooks/useProjectId\"\n\ninterface EmptyBucketModalProps {\n isOpen: boolean\n bucket: Bucket | null\n onClose: () => void\n onSuccess?: (bucketName: string, deletedCount: number) => void\n onError?: (bucketName: string, errorMessage: string) => void\n}\n\nexport const EmptyBucketModal = ({ isOpen, bucket, onClose, onSuccess, onError }: EmptyBucketModalProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const [confirmName, setConfirmName] = useState(\"\")\n const [nameError, setNameError] = useState<string | null>(null)\n const [deleteVersionsAndMarkers, setDeleteVersionsAndMarkers] = useState(false)\n\n const utils = trpcReact.useUtils()\n\n const emptyBucketMutation = trpcReact.storage.ceph.objects.deleteAll.useMutation({\n onSettled: () => {\n // Invalidate both containers.list (to update bucket metadata) and objects.list (to refresh empty state)\n utils.storage.ceph.containers.list.invalidate()\n utils.storage.ceph.objects.list.invalidate()\n handleClose()\n },\n })\n\n const handleClose = () => {\n setConfirmName(\"\")\n setNameError(null)\n setDeleteVersionsAndMarkers(false)\n emptyBucketMutation.reset()\n onClose()\n }\n\n const handleConfirmNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n setConfirmName(value)\n if (nameError) setNameError(null)\n }\n\n const handleSubmit = () => {\n if (!bucket) return\n if (confirmName.trim() !== bucket.name) {\n setNameError(t`Bucket name does not match`)\n return\n }\n\n // Capture bucket name before async operation to avoid dereferencing null bucket in callbacks\n const bucketName = bucket.name\n\n emptyBucketMutation.mutate(\n {\n project_id: projectId,\n containerName: bucketName,\n includeVersionsAndDeleteMarkers: deleteVersionsAndMarkers,\n },\n {\n onSuccess: (deletedCount) => {\n onSuccess?.(bucketName, deletedCount)\n },\n onError: (error) => {\n onError?.(bucketName, error.message)\n },\n }\n )\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") handleSubmit()\n }\n\n if (!isOpen || !bucket) return null\n\n const bucketName = bucket.name\n\n return (\n <Modal\n title={t`Empty Bucket`}\n open={isOpen}\n onCancel={handleClose}\n confirmButtonLabel={t`Empty Bucket`}\n confirmButtonVariant=\"primary-danger\"\n onConfirm={handleSubmit}\n cancelButtonLabel={t`Cancel`}\n size=\"small\"\n disableConfirmButton={emptyBucketMutation.isPending || confirmName.trim() !== bucket.name}\n >\n <Stack direction=\"vertical\" gap=\"6\">\n <p className=\"text-theme-default m-0\">\n <Trans>\n This action will permanently delete all objects from {bucketName}. You may choose to also delete all\n versions and delete markers. This will enable you to delete the bucket. This action cannot be undone.\n </Trans>\n </p>\n\n <Checkbox\n checked={deleteVersionsAndMarkers}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => setDeleteVersionsAndMarkers(e.target.checked)}\n label={t`Also delete all versions and all delete markers`}\n disabled={emptyBucketMutation.isPending}\n />\n\n <TextInput\n label={t`Type the bucket name to confirm`}\n required\n value={confirmName}\n onChange={handleConfirmNameChange}\n onKeyDown={handleKeyDown}\n invalid={!!nameError}\n errortext={nameError || undefined}\n disabled={emptyBucketMutation.isPending}\n placeholder={bucket.name}\n autoFocus\n />\n </Stack>\n </Modal>\n )\n}\n","import { useState, useEffect } from \"react\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { Modal, ModalFooter, ButtonRow, TextInput, Stack, Spinner, Button } from \"@cloudoperators/juno-ui-components\"\nimport type { Bucket } from \"@/server/Storage/types/ceph\"\nimport { useProjectId } from \"@/client/hooks/useProjectId\"\n\ninterface DeleteBucketModalProps {\n isOpen: boolean\n bucket: Bucket | null\n onClose: () => void\n onSuccess?: (bucketName: string) => void\n onError?: (bucketName: string, errorMessage: string) => void\n}\n\nexport const DeleteBucketModal = ({ isOpen, bucket, onClose, onSuccess, onError }: DeleteBucketModalProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const [confirmName, setConfirmName] = useState(\"\")\n const [nameError, setNameError] = useState<string | null>(null)\n\n const utils = trpcReact.useUtils()\n\n // Fetch actual objects and versions to get accurate real-time state\n // Use showVersions=true to also detect delete markers in versioned buckets\n // Use delimiter=\"\" to get ALL objects including folder markers (zero-byte objects ending in \"/\")\n // Without this, folders are returned as CommonPrefixes and we can't accurately check if bucket is empty\n const {\n data: objects,\n isLoading: isLoadingObjects,\n error: objectsError,\n } = trpcReact.storage.ceph.objects.list.useQuery(\n { project_id: projectId ?? \"\", containerName: bucket?.name ?? \"\", maxKeys: 1, delimiter: \"\", showVersions: true },\n { enabled: isOpen && bucket !== null }\n )\n\n const deleteBucketMutation = trpcReact.storage.ceph.containers.delete.useMutation({\n onSettled: () => {\n utils.storage.ceph.containers.list.invalidate()\n },\n })\n\n useEffect(() => {\n if (!isOpen) {\n setConfirmName(\"\")\n setNameError(null)\n deleteBucketMutation.reset()\n }\n }, [isOpen, bucket?.name])\n\n const handleClose = () => {\n setConfirmName(\"\")\n setNameError(null)\n deleteBucketMutation.reset()\n onClose()\n }\n\n const handleConfirmNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n setConfirmName(value)\n if (nameError) setNameError(null)\n }\n\n const handleSubmit = () => {\n if (!bucket) return\n if (objectsError) return\n if (confirmName.trim() !== bucket.name) {\n setNameError(t`Bucket name does not match`)\n return\n }\n\n // Capture bucket name before async operation to avoid dereferencing null bucket in callbacks\n const bucketName = bucket.name\n\n deleteBucketMutation.mutate(\n { project_id: projectId, bucketName },\n {\n onSuccess: () => {\n handleClose()\n onSuccess?.(bucketName)\n },\n onError: (error) => {\n handleClose()\n onError?.(bucketName, error.message)\n },\n }\n )\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") handleSubmit()\n }\n\n if (!isOpen || !bucket) return null\n\n // Check if bucket has current objects (not just versions/delete markers)\n // When delimiter=\"\", folders are returned as objects (keys ending in \"/\")\n const currentObjectCount = objects?.objects?.length ?? 0\n const versionCount = objects?.versions?.length ?? 0\n\n // Bucket is non-empty if it has current objects\n // If it only has versions/delete markers (no current objects), it's considered \"empty\" for deletion purposes\n const isNonEmpty = currentObjectCount > 0\n const hasOnlyVersions = currentObjectCount === 0 && versionCount > 0\n const errorMessage = objectsError?.message\n\n return (\n <Modal\n title={t`Delete Bucket`}\n open={isOpen}\n onCancel={handleClose}\n confirmButtonLabel={isNonEmpty || hasOnlyVersions ? undefined : t`Delete Bucket`}\n confirmButtonVariant={isNonEmpty || hasOnlyVersions ? undefined : \"primary-danger\"}\n onConfirm={isNonEmpty || hasOnlyVersions ? undefined : handleSubmit}\n cancelButtonLabel={isNonEmpty || hasOnlyVersions ? undefined : t`Cancel`}\n modalFooter={\n isNonEmpty || hasOnlyVersions ? (\n <ModalFooter className=\"flex justify-end\">\n <ButtonRow>\n <Button variant=\"primary\" onClick={handleClose} data-testid=\"delete-has-objects-close-button\">\n <Trans>Close</Trans>\n </Button>\n </ButtonRow>\n </ModalFooter>\n ) : undefined\n }\n size=\"small\"\n disableConfirmButton={\n deleteBucketMutation.isPending || isLoadingObjects || !!objectsError || confirmName.trim() !== bucket.name\n }\n >\n <Stack direction=\"vertical\" gap=\"6\">\n {objectsError && (\n <p className=\"text-theme-error\" role=\"alert\" aria-live=\"assertive\">\n <Trans>Failed to check bucket contents: {errorMessage}</Trans>\n </p>\n )}\n\n {isLoadingObjects ? (\n <Stack direction=\"horizontal\" gap=\"2\" alignment=\"center\">\n <Spinner />\n <span className=\"text-juno-grey-light-1 text-sm\">\n <Trans>Checking bucket contents...</Trans>\n </span>\n </Stack>\n ) : isNonEmpty ? (\n <p className=\"text-theme-default\">\n <Trans>\n This bucket contains objects and cannot be deleted. Use <strong>Empty Bucket</strong> action to remove all\n content first.\n </Trans>\n </p>\n ) : hasOnlyVersions ? (\n <p className=\"text-theme-default\">\n <Trans>\n This bucket contains old versions and delete markers. Use <strong>Delete Versions</strong> action to\n remove them before deleting the bucket.\n </Trans>\n </p>\n ) : (\n <>\n <p className=\"text-theme-default\">\n <Trans>\n This action is irreversible. Deleting a bucket permanently removes it and cannot be undone. The bucket\n must be empty before deletion.\n </Trans>\n </p>\n\n <TextInput\n label={t`Type the bucket name to confirm`}\n required\n value={confirmName}\n onChange={handleConfirmNameChange}\n onKeyDown={handleKeyDown}\n invalid={!!nameError}\n errortext={nameError || undefined}\n disabled={deleteBucketMutation.isPending}\n placeholder={bucket.name}\n />\n </>\n )}\n </Stack>\n </Modal>\n )\n}\n","import { useState } from \"react\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { trpcReact } from \"@/client/trpcClient\"\nimport { Modal, TextInput, Stack } from \"@cloudoperators/juno-ui-components\"\nimport { Bucket } from \"@/server/Storage/types/ceph\"\nimport { useProjectId } from \"@/client/hooks/useProjectId\"\n\ninterface DeleteVersionsModalProps {\n isOpen: boolean\n bucket: Bucket | null\n onClose: () => void\n onSuccess?: (bucketName: string, deletedCount: number) => void\n onError?: (bucketName: string, errorMessage: string) => void\n}\n\nexport const DeleteVersionsModal = ({ isOpen, bucket, onClose, onSuccess, onError }: DeleteVersionsModalProps) => {\n const { t } = useLingui()\n const projectId = useProjectId()\n const [confirmName, setConfirmName] = useState(\"\")\n const [nameError, setNameError] = useState<string | null>(null)\n\n const utils = trpcReact.useUtils()\n\n const deleteVersionsMutation = trpcReact.storage.ceph.objects.deleteAll.useMutation({\n onSettled: () => {\n // Invalidate both containers.list (to update bucket metadata) and objects.list (to refresh empty state)\n utils.storage.ceph.containers.list.invalidate()\n utils.storage.ceph.objects.list.invalidate()\n handleClose()\n },\n })\n\n const handleClose = () => {\n setConfirmName(\"\")\n setNameError(null)\n deleteVersionsMutation.reset()\n onClose()\n }\n\n const handleConfirmNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n setConfirmName(value)\n if (nameError) setNameError(null)\n }\n\n const handleSubmit = () => {\n if (!bucket) return\n if (confirmName.trim() !== bucket.name) {\n setNameError(t`Bucket name does not match`)\n return\n }\n\n // Capture bucket name before async operation to avoid dereferencing null bucket in callbacks\n const bucketName = bucket.name\n\n // Always delete all versions and delete markers (includeVersionsAndDeleteMarkers: true)\n deleteVersionsMutation.mutate(\n {\n project_id: projectId,\n containerName: bucketName,\n includeVersionsAndDeleteMarkers: true,\n },\n {\n onSuccess: (deletedCount) => {\n onSuccess?.(bucketName, deletedCount)\n },\n onError: (error) => {\n onError?.(bucketName, error.message)\n },\n }\n )\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") handleSubmit()\n }\n\n if (!isOpen || !bucket) return null\n\n return (\n <Modal\n title={t`Delete Versions`}\n open={isOpen}\n onCancel={handleClose}\n confirmButtonLabel={t`Delete Versions`}\n confirmButtonVariant=\"primary-danger\"\n onConfirm={handleSubmit}\n cancelButtonLabel={t`Cancel`}\n size=\"small\"\n disableConfirmButton={deleteVersionsMutation.isPending || confirmName.trim() !== bucket.name}\n >\n <Stack direction=\"vertical\" gap=\"6\">\n <p className=\"text-theme-default m-0\">\n <Trans>\n This action will permanently delete all versions and delete markers. This will enable you to delete the\n bucket. This action cannot be undone.\n </Trans>\n </p>\n\n <TextInput\n label={t`Type the bucket name to confirm`}\n required\n value={confirmName}\n onChange={handleConfirmNameChange}\n onKeyDown={handleKeyDown}\n invalid={!!nameError}\n errortext={nameError || undefined}\n disabled={deleteVersionsMutation.isPending}\n placeholder={bucket.name}\n autoFocus\n />\n </Stack>\n </Modal>\n )\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { S as e, U as t, W as n, Y as r, _ as i, dt as a, f as o, m as s, ot as c, p as l, ut as u, x as d } from "./build-DF7MTyXG.mjs";
1
+ import { B as e, H as t, K as n, U as r, c as i, et as a, g as o, lt as s, o as c, r as l, ut as u, y as d } from "./build-DgeVmENN.mjs";
2
2
  import { jsx as f, jsxs as p } from "react/jsx-runtime";
3
3
  import { useEffect as m, useState as h } from "react";
4
4
  import { Trans as g, useLingui as _ } from "@lingui/react";
@@ -40,36 +40,36 @@ var v = ({ securityGroup: v, open: y, onClose: b, onUpdate: x, isLoading: S = !1
40
40
  }, N = () => {
41
41
  k({}), b();
42
42
  };
43
- return /*#__PURE__*/ p(u, {
43
+ return /*#__PURE__*/ p(l, {
44
44
  open: y,
45
45
  onCancel: N,
46
46
  size: "large",
47
47
  title: w._({ id: "yu9G3x" }),
48
48
  modalFooter: /*#__PURE__*/ f(o, {
49
49
  className: "flex justify-end",
50
- children: /*#__PURE__*/ p(a, { children: [/*#__PURE__*/ f(i, {
50
+ children: /*#__PURE__*/ p(u, { children: [/*#__PURE__*/ f(d, {
51
51
  variant: "default",
52
52
  onClick: N,
53
53
  disabled: S,
54
54
  children: /*#__PURE__*/ f(g, { id: "dEgA5A" })
55
- }), /*#__PURE__*/ f(i, {
55
+ }), /*#__PURE__*/ f(d, {
56
56
  variant: "primary",
57
57
  onClick: (e) => {
58
58
  M(e);
59
59
  },
60
60
  disabled: S,
61
61
  "data-testid": "update-security-group-button",
62
- children: S ? /*#__PURE__*/ f(t, { size: "small" }) : /*#__PURE__*/ f(g, { id: "Df0YHr" })
62
+ children: S ? /*#__PURE__*/ f(n, { size: "small" }) : /*#__PURE__*/ f(g, { id: "Df0YHr" })
63
63
  })] })
64
64
  }),
65
65
  children: [
66
- C && /*#__PURE__*/ f(r, {
66
+ C && /*#__PURE__*/ f(e, {
67
67
  dismissible: !1,
68
68
  variant: "error",
69
69
  className: "mb-4",
70
70
  children: C
71
71
  }),
72
- /*#__PURE__*/ f(r, {
72
+ /*#__PURE__*/ f(e, {
73
73
  dismissible: !1,
74
74
  variant: "info",
75
75
  className: "mb-4",
@@ -77,19 +77,19 @@ var v = ({ securityGroup: v, open: y, onClose: b, onUpdate: x, isLoading: S = !1
77
77
  }),
78
78
  S && /*#__PURE__*/ p("div", {
79
79
  className: "mb-4 flex items-center justify-center gap-2",
80
- children: [/*#__PURE__*/ f(t, { variant: "primary" }), /*#__PURE__*/ f("span", {
80
+ children: [/*#__PURE__*/ f(n, { variant: "primary" }), /*#__PURE__*/ f("span", {
81
81
  className: "text-theme-high text-sm",
82
82
  children: /*#__PURE__*/ f(g, { id: "V804LY" })
83
83
  })]
84
84
  }),
85
- !S && /*#__PURE__*/ f(d, {
85
+ !S && /*#__PURE__*/ f(c, {
86
86
  className: "mb-6",
87
- children: /*#__PURE__*/ p(l, {
87
+ children: /*#__PURE__*/ p(t, {
88
88
  className: "mb-6",
89
89
  children: [
90
- /*#__PURE__*/ f(e, {
90
+ /*#__PURE__*/ f(i, {
91
91
  className: "mb-6",
92
- children: /*#__PURE__*/ f(s, {
92
+ children: /*#__PURE__*/ f(r, {
93
93
  id: "name",
94
94
  name: "name",
95
95
  label: w._({ id: "6YtxFj" }),
@@ -101,9 +101,9 @@ var v = ({ securityGroup: v, open: y, onClose: b, onUpdate: x, isLoading: S = !1
101
101
  disabled: S
102
102
  })
103
103
  }),
104
- /*#__PURE__*/ f(e, {
104
+ /*#__PURE__*/ f(i, {
105
105
  className: "mb-6",
106
- children: /*#__PURE__*/ f(n, {
106
+ children: /*#__PURE__*/ f(a, {
107
107
  id: "description",
108
108
  name: "description",
109
109
  label: w._({ id: "Nu4oKW" }),
@@ -114,9 +114,9 @@ var v = ({ securityGroup: v, open: y, onClose: b, onUpdate: x, isLoading: S = !1
114
114
  rows: 3
115
115
  })
116
116
  }),
117
- /*#__PURE__*/ f(e, {
117
+ /*#__PURE__*/ f(i, {
118
118
  className: "mb-0",
119
- children: /*#__PURE__*/ f(c, {
119
+ children: /*#__PURE__*/ f(s, {
120
120
  id: "stateful",
121
121
  name: "stateful",
122
122
  label: w._({ id: "Jim5X9" }),
@@ -134,4 +134,4 @@ var v = ({ securityGroup: v, open: y, onClose: b, onUpdate: x, isLoading: S = !1
134
134
  //#endregion
135
135
  export { v as t };
136
136
 
137
- //# sourceMappingURL=EditSecurityGroupModal-BPv3d7am.mjs.map
137
+ //# sourceMappingURL=EditSecurityGroupModal-BGPXglju.mjs.map