@cobaltcore-dev/aurora 1.1.0 → 1.2.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 (183) hide show
  1. package/README.md +59 -9
  2. package/dist/client/App.d.ts +2 -2
  3. package/dist/client/AuroraApp.d.ts +33 -13
  4. package/dist/client/{AuthProvider-BS5OVv8n.mjs → AuthProvider-CVSAwW9f.mjs} +22 -8
  5. package/dist/client/AuthProvider-CVSAwW9f.mjs.map +1 -0
  6. package/dist/client/{ContentHeader-BHMUzd9H.mjs → ContentHeader-CPJbgYWn.mjs} +18 -18
  7. package/dist/client/{ContentHeader-BHMUzd9H.mjs.map → ContentHeader-CPJbgYWn.mjs.map} +1 -1
  8. package/dist/client/DeleteFlavorModal-V44QCJBd.mjs +773 -0
  9. package/dist/client/DeleteFlavorModal-V44QCJBd.mjs.map +1 -0
  10. package/dist/client/DynamicBreadcrumbContext-CVcUQFou.mjs +26 -0
  11. package/dist/client/DynamicBreadcrumbContext-CVcUQFou.mjs.map +1 -0
  12. package/dist/client/{FiltersInput-B8CNBg1L.mjs → FiltersInput-CKI6zWnm.mjs} +18 -18
  13. package/dist/client/{FiltersInput-B8CNBg1L.mjs.map → FiltersInput-CKI6zWnm.mjs.map} +1 -1
  14. package/dist/client/FloatingIpActionModals-CwEC5GR-.mjs +460 -0
  15. package/dist/client/FloatingIpActionModals-CwEC5GR-.mjs.map +1 -0
  16. package/dist/client/ImageToastNotifications-m6c3tVPb.mjs +1152 -0
  17. package/dist/client/ImageToastNotifications-m6c3tVPb.mjs.map +1 -0
  18. package/dist/client/SortInput-4g7nSTHW.mjs +34 -0
  19. package/dist/client/SortInput-4g7nSTHW.mjs.map +1 -0
  20. package/dist/client/{TwoColumnDescriptionList-DiDx3PnH.mjs → TwoColumnDescriptionList-NvgvErua.mjs} +2 -2
  21. package/dist/client/{TwoColumnDescriptionList-DiDx3PnH.mjs.map → TwoColumnDescriptionList-NvgvErua.mjs.map} +1 -1
  22. package/dist/client/_-CAsCx-Ay.mjs +6 -0
  23. package/dist/client/_-CAsCx-Ay.mjs.map +1 -0
  24. package/dist/client/_auth-SrDjHL6j.mjs +12 -0
  25. package/dist/client/_auth-SrDjHL6j.mjs.map +1 -0
  26. package/dist/client/_flavorId-9PcBBW52.mjs +231 -0
  27. package/dist/client/_flavorId-9PcBBW52.mjs.map +1 -0
  28. package/dist/client/{_flavorId-BN_qessZ.mjs → _flavorId-a9Gu66R1.mjs} +3 -9
  29. package/dist/client/_flavorId-a9Gu66R1.mjs.map +1 -0
  30. package/dist/client/_floatingIpId-AE9Fu8l6.mjs +210 -0
  31. package/dist/client/_floatingIpId-AE9Fu8l6.mjs.map +1 -0
  32. package/dist/client/{_floatingIpId-CwDGHkWm.mjs → _floatingIpId-AZ11Ksmu.mjs} +3 -9
  33. package/dist/client/_floatingIpId-AZ11Ksmu.mjs.map +1 -0
  34. package/dist/client/{_imageId-BtJ7GmYB.mjs → _imageId-BtAql2Kr.mjs} +104 -92
  35. package/dist/client/_imageId-BtAql2Kr.mjs.map +1 -0
  36. package/dist/client/_imageId-D76BxvFY.mjs +39 -0
  37. package/dist/client/_imageId-D76BxvFY.mjs.map +1 -0
  38. package/dist/client/{_projectId-Byt3GQDW.mjs → _projectId-7Nl1MQTJ.mjs} +5 -5
  39. package/dist/client/_projectId-7Nl1MQTJ.mjs.map +1 -0
  40. package/dist/client/_projectId-B3wmSala.mjs +281 -0
  41. package/dist/client/_projectId-B3wmSala.mjs.map +1 -0
  42. package/dist/client/_projectId-DPzv0CCp.mjs +77 -0
  43. package/dist/client/_projectId-DPzv0CCp.mjs.map +1 -0
  44. package/dist/client/_projectId-DfeVJy0G.mjs +30 -0
  45. package/dist/client/_projectId-DfeVJy0G.mjs.map +1 -0
  46. package/dist/client/_securityGroupId-C5huJNfO.mjs +1810 -0
  47. package/dist/client/_securityGroupId-C5huJNfO.mjs.map +1 -0
  48. package/dist/client/{_securityGroupId-BcbkRhsN.mjs → _securityGroupId-D85mSigA.mjs} +3 -9
  49. package/dist/client/_securityGroupId-D85mSigA.mjs.map +1 -0
  50. package/dist/client/_serviceType-DS8DxsrP.mjs +20 -0
  51. package/dist/client/_serviceType-DS8DxsrP.mjs.map +1 -0
  52. package/dist/client/_serviceType-M8d9rOT6.mjs +6 -0
  53. package/dist/client/_serviceType-M8d9rOT6.mjs.map +1 -0
  54. package/dist/client/_storageType-BRWWJtow.mjs +14 -0
  55. package/dist/client/_storageType-BRWWJtow.mjs.map +1 -0
  56. package/dist/client/_storageType-CzZ4u9x_.mjs +12 -0
  57. package/dist/client/_storageType-CzZ4u9x_.mjs.map +1 -0
  58. package/dist/client/_storageType-Dy9uCVXr.mjs +845 -0
  59. package/dist/client/_storageType-Dy9uCVXr.mjs.map +1 -0
  60. package/dist/client/_storageType-zeSZe--V.mjs.map +1 -1
  61. package/dist/client/{about-_73VmpTB.mjs → about-BmQTyLWc.mjs} +2 -2
  62. package/dist/client/{about-_73VmpTB.mjs.map → about-BmQTyLWc.mjs.map} +1 -1
  63. package/dist/client/{aurora-EbwGRLLf.mjs → aurora-CIml-f2f.mjs} +2 -2
  64. package/dist/client/{aurora-EbwGRLLf.mjs.map → aurora-CIml-f2f.mjs.map} +1 -1
  65. package/dist/client/{build-C_4vRMCq.mjs → build-WuxXRAqf.mjs} +121 -24
  66. package/dist/client/{build-C_4vRMCq.mjs.map → build-WuxXRAqf.mjs.map} +1 -1
  67. package/dist/client/components/Breadcrumbs.d.ts +1 -0
  68. package/dist/client/components/ListToolbar/SortInput.d.ts +3 -0
  69. package/dist/client/context/BreadcrumbExtensionContext.d.ts +9 -0
  70. package/dist/client/context/DynamicBreadcrumbContext.d.ts +9 -0
  71. package/dist/client/{flavors-CiHCYrtZ.mjs → flavors-B0rbqffG.mjs} +3 -5
  72. package/dist/client/flavors-B0rbqffG.mjs.map +1 -0
  73. package/dist/client/flavors-DWMZ6TuJ.mjs.map +1 -1
  74. package/dist/client/flavors-Rl20bxVU.mjs +628 -0
  75. package/dist/client/flavors-Rl20bxVU.mjs.map +1 -0
  76. package/dist/client/floatingips-Cz9k80cc.mjs +8 -0
  77. package/dist/client/floatingips-Cz9k80cc.mjs.map +1 -0
  78. package/dist/client/floatingips-xbO_mu4f.mjs +576 -0
  79. package/dist/client/floatingips-xbO_mu4f.mjs.map +1 -0
  80. package/dist/client/hooks/useBreadcrumbs.d.ts +16 -0
  81. package/dist/client/hooks/usePushBreadcrumbs.d.ts +10 -0
  82. package/dist/client/hooks/useSetBreadcrumb.d.ts +11 -0
  83. package/dist/client/{hooks-LutR2Yg3.mjs → hooks-D0yKIumu.mjs} +2 -2
  84. package/dist/client/{hooks-LutR2Yg3.mjs.map → hooks-D0yKIumu.mjs.map} +1 -1
  85. package/dist/client/images-BGQv9kKT.mjs +1983 -0
  86. package/dist/client/images-BGQv9kKT.mjs.map +1 -0
  87. package/dist/client/{images-CS4kZQyu.mjs → images-CPmMa4SQ.mjs} +3 -5
  88. package/dist/client/images-CPmMa4SQ.mjs.map +1 -0
  89. package/dist/client/images-NBf2bV43.mjs.map +1 -1
  90. package/dist/client/index.d.ts +7 -3
  91. package/dist/client/index.js +549 -535
  92. package/dist/client/index.js.map +1 -1
  93. package/dist/client/{objects-C3azvW8m.mjs → objects-BE_u5yRt.mjs} +7087 -4211
  94. package/dist/client/objects-BE_u5yRt.mjs.map +1 -0
  95. package/dist/client/objects-BN-59Th0.mjs +66 -0
  96. package/dist/client/objects-BN-59Th0.mjs.map +1 -0
  97. package/dist/client/objects-D9Luf9KB.mjs +66 -0
  98. package/dist/client/objects-D9Luf9KB.mjs.map +1 -0
  99. package/dist/client/projects-yiK0HGSA.mjs.map +1 -1
  100. package/dist/client/routeInfo-DP3v74Wg.mjs +19 -0
  101. package/dist/client/routeInfo-DP3v74Wg.mjs.map +1 -0
  102. package/dist/client/router.d.ts +2 -2
  103. package/dist/client/{routes-CdDm-hhO.mjs → routes-CJj7SR_K.mjs} +2 -2
  104. package/dist/client/routes-CJj7SR_K.mjs.map +1 -0
  105. package/dist/client/routes-xofA3ksU.mjs +110 -0
  106. package/dist/client/routes-xofA3ksU.mjs.map +1 -0
  107. package/dist/client/securitygroups-BjhgLBHm.mjs +620 -0
  108. package/dist/client/securitygroups-BjhgLBHm.mjs.map +1 -0
  109. package/dist/client/securitygroups-CtKne8UQ.mjs +8 -0
  110. package/dist/client/securitygroups-CtKne8UQ.mjs.map +1 -0
  111. package/dist/client/{securitygroups-Byte-iSp.mjs → securitygroups-DEJQBcxm.mjs} +3 -5
  112. package/dist/client/securitygroups-DEJQBcxm.mjs.map +1 -0
  113. package/dist/client/trpcClient.d.ts +135 -3
  114. package/dist/client/useBreadcrumbs-ha3IlaxX.mjs +54 -0
  115. package/dist/client/useBreadcrumbs-ha3IlaxX.mjs.map +1 -0
  116. package/dist/client/useModalTracking-BcOKTYRN.mjs +33 -0
  117. package/dist/client/useModalTracking-BcOKTYRN.mjs.map +1 -0
  118. package/dist/client/{useSecurityGroupPermissions-C29mzb3b.mjs → useSecurityGroupPermissions-BOyLQLdC.mjs} +85 -19
  119. package/dist/client/useSecurityGroupPermissions-BOyLQLdC.mjs.map +1 -0
  120. package/dist/client/useSetBreadcrumb-tn7lBaQV.mjs +19 -0
  121. package/dist/client/useSetBreadcrumb-tn7lBaQV.mjs.map +1 -0
  122. package/dist/client/utils/formatSwiftDate.d.ts +30 -0
  123. package/dist/server/index.d.ts +136 -4
  124. package/dist/server/index.js +845 -260
  125. package/package.json +37 -36
  126. package/dist/client/AuthProvider-BS5OVv8n.mjs.map +0 -1
  127. package/dist/client/DeleteFlavorModal-BP83t9zX.mjs +0 -721
  128. package/dist/client/DeleteFlavorModal-BP83t9zX.mjs.map +0 -1
  129. package/dist/client/FloatingIpActionModals-BraiJWBi.mjs +0 -417
  130. package/dist/client/FloatingIpActionModals-BraiJWBi.mjs.map +0 -1
  131. package/dist/client/ImageToastNotifications-BXMHJaIH.mjs +0 -1131
  132. package/dist/client/ImageToastNotifications-BXMHJaIH.mjs.map +0 -1
  133. package/dist/client/RouteError-hAF8_jbe.mjs +0 -25
  134. package/dist/client/RouteError-hAF8_jbe.mjs.map +0 -1
  135. package/dist/client/SortInput-Cqs2poV3.mjs +0 -34
  136. package/dist/client/SortInput-Cqs2poV3.mjs.map +0 -1
  137. package/dist/client/StatusError-C5KodQOq.mjs +0 -39
  138. package/dist/client/StatusError-C5KodQOq.mjs.map +0 -1
  139. package/dist/client/_auth-DJ9wHZaj.mjs +0 -11
  140. package/dist/client/_auth-DJ9wHZaj.mjs.map +0 -1
  141. package/dist/client/_flavorId-BN_qessZ.mjs.map +0 -1
  142. package/dist/client/_flavorId-CJjEB_Ao.mjs +0 -210
  143. package/dist/client/_flavorId-CJjEB_Ao.mjs.map +0 -1
  144. package/dist/client/_floatingIpId-CwDGHkWm.mjs.map +0 -1
  145. package/dist/client/_floatingIpId-foMIwbE4.mjs +0 -215
  146. package/dist/client/_floatingIpId-foMIwbE4.mjs.map +0 -1
  147. package/dist/client/_imageId-BtJ7GmYB.mjs.map +0 -1
  148. package/dist/client/_projectId-BmtCuzJu.mjs +0 -29
  149. package/dist/client/_projectId-BmtCuzJu.mjs.map +0 -1
  150. package/dist/client/_projectId-Byt3GQDW.mjs.map +0 -1
  151. package/dist/client/_projectId-NYk1IN_a.mjs +0 -291
  152. package/dist/client/_projectId-NYk1IN_a.mjs.map +0 -1
  153. package/dist/client/_projectId-QueiFczy.mjs +0 -46
  154. package/dist/client/_projectId-QueiFczy.mjs.map +0 -1
  155. package/dist/client/_securityGroupId-BcbkRhsN.mjs.map +0 -1
  156. package/dist/client/_securityGroupId-pPtJsCoe.mjs +0 -1797
  157. package/dist/client/_securityGroupId-pPtJsCoe.mjs.map +0 -1
  158. package/dist/client/_storageType-BmqrU06i.mjs +0 -2202
  159. package/dist/client/_storageType-BmqrU06i.mjs.map +0 -1
  160. package/dist/client/components/Error/StatusError.d.ts +0 -11
  161. package/dist/client/components/ProjectView/ProjectInfoBox.d.ts +0 -12
  162. package/dist/client/flavors-CiHCYrtZ.mjs.map +0 -1
  163. package/dist/client/flavors-DY-bDc8l.mjs +0 -650
  164. package/dist/client/flavors-DY-bDc8l.mjs.map +0 -1
  165. package/dist/client/floatingips-Ci4jHkaG.mjs +0 -591
  166. package/dist/client/floatingips-Ci4jHkaG.mjs.map +0 -1
  167. package/dist/client/images-91U7tr9Y2.mjs +0 -1976
  168. package/dist/client/images-91U7tr9Y2.mjs.map +0 -1
  169. package/dist/client/images-CS4kZQyu.mjs.map +0 -1
  170. package/dist/client/objects-C3azvW8m.mjs.map +0 -1
  171. package/dist/client/objects-CM265S6b.mjs +0 -56
  172. package/dist/client/objects-CM265S6b.mjs.map +0 -1
  173. package/dist/client/objects-EE9Cd1wI.mjs +0 -56
  174. package/dist/client/objects-EE9Cd1wI.mjs.map +0 -1
  175. package/dist/client/routeInfo-DXqB2HCf.mjs +0 -32
  176. package/dist/client/routeInfo-DXqB2HCf.mjs.map +0 -1
  177. package/dist/client/routes-CBd8CCuM.mjs +0 -115
  178. package/dist/client/routes-CBd8CCuM.mjs.map +0 -1
  179. package/dist/client/routes-CdDm-hhO.mjs.map +0 -1
  180. package/dist/client/securitygroups-Bd_uV4S9.mjs +0 -595
  181. package/dist/client/securitygroups-Bd_uV4S9.mjs.map +0 -1
  182. package/dist/client/securitygroups-Byte-iSp.mjs.map +0 -1
  183. package/dist/client/useSecurityGroupPermissions-C29mzb3b.mjs.map +0 -1
@@ -1,650 +0,0 @@
1
- import { C as e, F as t, J as n, O as r, S as i, T as a, W as o, X as s, a as c, at as l, g as u, h as d, l as f, m as p, nt as m, o as h, p as g, t as _, ut as v, x as y, z as b } from "./build-C_4vRMCq.mjs";
2
- import { t as x } from "./flavors-CiHCYrtZ.mjs";
3
- import { t as S } from "./SortInput-Cqs2poV3.mjs";
4
- import { t as C } from "./ContentHeader-BHMUzd9H.mjs";
5
- import { i as w, n as T, r as E, t as D } from "./DeleteFlavorModal-BP83t9zX.mjs";
6
- import { Fragment as O, jsx as k, jsxs as A } from "react/jsx-runtime";
7
- import { Suspense as j, startTransition as M, use as N, useCallback as P, useEffect as F, useRef as I, useState as L } from "react";
8
- import { useNavigate as R, useParams as ee, useSearch as z } from "@tanstack/react-router";
9
- import { TRPCClientError as B } from "@trpc/client";
10
- import { Trans as V, useLingui as H } from "@lingui/react";
11
- import { ErrorBoundary as U } from "react-error-boundary";
12
- //#region src/client/routes/_auth/projects/$projectId/compute/-components/Flavors/-components/FlavorListContainer.tsx
13
- var W = ({ flavors: e, isLoading: t, client: n, project: c, onFlavorDeleted: l, canDeleteFlavor: d, canMangageAccess: f, canManageSpecs: p, canListSpecs: g, currentPage: v = 1, totalPages: x = 1, onPageChange: S }) => {
14
- let { i18n: C, _: w } = H(), j = R(), [M, N] = L(!1), [P, I] = L(!1), [z, B] = L(!1), [U, W] = L(null), [G, K] = L(v.toString());
15
- F(() => {
16
- K(v.toString());
17
- }, [v]);
18
- let { projectId: q } = ee({ from: "/_auth/projects/$projectId/compute/flavors/" }), J = (e) => {
19
- W(e), N(!0);
20
- }, Y = (e) => {
21
- W(e), I(!0);
22
- }, X = (e) => {
23
- W(e), B(!0);
24
- }, Z = () => {
25
- N(!1), W(null);
26
- }, Q = () => {
27
- U && l && l(U.name || ""), Z();
28
- }, $ = (e) => {
29
- e >= 1 && e <= x && (S?.(e), K(e.toString()));
30
- };
31
- return t ? /*#__PURE__*/ k("div", {
32
- "data-testid": "loading",
33
- children: /*#__PURE__*/ k("div", {
34
- "data-testid": "loading",
35
- children: /*#__PURE__*/ k(a, { children: /*#__PURE__*/ k(_, {
36
- colSpan: 3,
37
- children: /*#__PURE__*/ A(s, {
38
- distribution: "center",
39
- alignment: "center",
40
- children: [/*#__PURE__*/ k(o, { variant: "primary" }), /*#__PURE__*/ k(V, { id: "Z3FXyt" })]
41
- })
42
- }) })
43
- })
44
- }) : !e || e.length === 0 ? /*#__PURE__*/ k(h, {
45
- columns: 7,
46
- className: "flavors",
47
- "data-testid": "no-flavors",
48
- children: /*#__PURE__*/ k(a, { children: /*#__PURE__*/ A(_, {
49
- colSpan: 7,
50
- children: [/*#__PURE__*/ k(m, { children: /*#__PURE__*/ k(V, { id: "PiyQJ/" }) }), /*#__PURE__*/ k("p", { children: /*#__PURE__*/ k(V, { id: "KSW/GC" }) })]
51
- }) })
52
- }) : /*#__PURE__*/ A(O, { children: [
53
- /*#__PURE__*/ A(h, {
54
- columns: 7,
55
- minContentColumns: [6],
56
- className: "flavors",
57
- "data-testid": "flavors-table",
58
- children: [/*#__PURE__*/ A(a, { children: [
59
- /*#__PURE__*/ k(i, { children: /*#__PURE__*/ k(V, { id: "6YtxFj" }) }),
60
- /*#__PURE__*/ k(i, { children: /*#__PURE__*/ k(V, { id: "k5nYwm" }) }),
61
- /*#__PURE__*/ k(i, { children: /*#__PURE__*/ k(V, { id: "K+e/0e" }) }),
62
- /*#__PURE__*/ k(i, { children: /*#__PURE__*/ k(V, { id: "n0ZttO" }) }),
63
- /*#__PURE__*/ k(i, { children: /*#__PURE__*/ k(V, { id: "p4nMut" }) }),
64
- /*#__PURE__*/ k(i, { children: /*#__PURE__*/ k(V, { id: "HyyJ83" }) }),
65
- /*#__PURE__*/ k(i, {})
66
- ] }), e.map((e) => /*#__PURE__*/ A(a, {
67
- "data-testid": `flavor-row-${e.id}`,
68
- onClick: () => j({
69
- to: "/projects/$projectId/compute/flavors/$flavorId",
70
- params: {
71
- projectId: q,
72
- flavorId: e.id
73
- }
74
- }),
75
- children: [
76
- /*#__PURE__*/ k(_, { children: e.name || e.id }),
77
- /*#__PURE__*/ k(_, { children: e.vcpus || "–" }),
78
- /*#__PURE__*/ k(_, { children: e.ram || "–" }),
79
- /*#__PURE__*/ k(_, { children: e.disk || "–" }),
80
- /*#__PURE__*/ k(_, { children: e.swap || "–" }),
81
- /*#__PURE__*/ k(_, { children: e["os-flavor-access:is_public"] === !1 ? C._({ id: "zwBp5t" }) : C._({ id: "7d1a0d" }) }),
82
- /*#__PURE__*/ k(_, {
83
- onClick: (e) => e.stopPropagation(),
84
- children: /*#__PURE__*/ k(r, { children: /*#__PURE__*/ A(u, { children: [
85
- /*#__PURE__*/ k(y, {
86
- label: C._({ id: "URmyfc" }),
87
- onClick: () => j({
88
- to: "/projects/$projectId/compute/flavors/$flavorId",
89
- params: {
90
- projectId: q,
91
- flavorId: e.id
92
- }
93
- })
94
- }),
95
- (p || g) && /*#__PURE__*/ k(y, {
96
- label: p ? C._({ id: "SIfYq6" }) : C._({ id: "6GBt0m" }),
97
- onClick: () => Y(e)
98
- }),
99
- f && /*#__PURE__*/ k(y, {
100
- label: C._({ id: "cWbW6w" }),
101
- onClick: () => X(e),
102
- disabled: e["os-flavor-access:is_public"] !== !1
103
- }),
104
- d && /*#__PURE__*/ k(y, {
105
- label: C._({ id: "JT3I1g" }),
106
- onClick: () => J(e)
107
- })
108
- ] }) })
109
- })
110
- ]
111
- }, e.id))]
112
- }),
113
- x > 1 && /*#__PURE__*/ k("div", {
114
- className: "flex justify-center py-4",
115
- children: /*#__PURE__*/ k(b, {
116
- variant: "input",
117
- currentPage: v,
118
- pages: x,
119
- onPressPrevious: () => $(Math.max(v - 1, 1)),
120
- onPressNext: () => $(Math.min(v + 1, x)),
121
- onSelectChange: (e) => {
122
- $(e);
123
- },
124
- onInputChange: (e) => {
125
- K(e === void 0 ? "" : String(e));
126
- },
127
- onKeyDown: (e) => {
128
- if (e.key === "Enter" && G !== "") {
129
- let e = parseInt(G, 10);
130
- !isNaN(e) && e >= 1 && e <= x && $(e);
131
- }
132
- }
133
- })
134
- }),
135
- /*#__PURE__*/ k(D, {
136
- client: n,
137
- isOpen: M,
138
- onClose: Z,
139
- project: c,
140
- flavor: U,
141
- onSuccess: Q
142
- }),
143
- /*#__PURE__*/ k(E, {
144
- client: n,
145
- isOpen: P,
146
- onClose: () => I(!1),
147
- project: c,
148
- flavor: U,
149
- canEdit: p
150
- }),
151
- /*#__PURE__*/ k(T, {
152
- client: n,
153
- isOpen: z,
154
- onClose: () => B(!1),
155
- project: c,
156
- flavor: U
157
- })
158
- ] });
159
- }, G = (e, t, n) => {
160
- switch (e) {
161
- case "id":
162
- if (!t) return;
163
- {
164
- let e = String(t).trim();
165
- return /^[a-zA-Z0-9.\-_]*$/.test(e) ? void 0 : n({ id: "AX9Juz" });
166
- }
167
- case "name": {
168
- let e = String(t || "").trim();
169
- return e.length >= 2 && e.length <= 50 ? void 0 : n({ id: "zDS0JC" });
170
- }
171
- case "vcpus": {
172
- let e = Number(t);
173
- return !isNaN(e) && e >= 1 ? void 0 : n({ id: "uSdnuQ" });
174
- }
175
- case "ram": {
176
- let e = Number(t);
177
- return !isNaN(e) && e >= 128 ? void 0 : n({ id: "g1IxCo" });
178
- }
179
- case "disk": {
180
- let e = Number(t);
181
- return !isNaN(e) && e >= 0 ? void 0 : n({ id: "AJRhSM" });
182
- }
183
- case "swap":
184
- if (t === "" || t == null) return;
185
- {
186
- let e = Number(t);
187
- return !isNaN(e) && e >= 0 ? void 0 : n({ id: "g3BSCe" });
188
- }
189
- case "rxtx_factor": {
190
- let e = Number(t);
191
- return !isNaN(e) && e >= 1 ? void 0 : n({ id: "PIbPRX" });
192
- }
193
- case "description": return t ? String(t).length < 65535 ? void 0 : n({ id: "uuKb0T" }) : void 0;
194
- case "OS-FLV-EXT-DATA:ephemeral": {
195
- let e = Number(t);
196
- return !isNaN(e) && e >= 0 ? void 0 : n({ id: "tLerHy" });
197
- }
198
- case "os-flavor-access:is_public": return t == null || typeof t == "boolean" || typeof t == "string" && (t === "true" || t === "false") ? void 0 : n({ id: "MmtQVF" });
199
- default: return;
200
- }
201
- }, K = (e) => {
202
- let t = {
203
- name: String(e.name),
204
- vcpus: Number(e.vcpus),
205
- ram: Number(e.ram),
206
- disk: Number(e.disk)
207
- }, n = (e) => e != null && e !== "" && String(e).trim() !== "", r = (e) => e != null && e !== "" && String(e).trim() !== "" && !isNaN(Number(e));
208
- return n(e.id) && (t.id = String(e.id).trim()), n(e.description) && (t.description = String(e.description).trim()), r(e.swap) && (t.swap = Number(e.swap)), r(e.rxtx_factor) && (t.rxtx_factor = Number(e.rxtx_factor)), r(e["OS-FLV-EXT-DATA:ephemeral"]) && (t["OS-FLV-EXT-DATA:ephemeral"] = Number(e["OS-FLV-EXT-DATA:ephemeral"])), e["os-flavor-access:is_public"] !== void 0 && (t["os-flavor-access:is_public"] = !!e["os-flavor-access:is_public"]), t;
209
- }, q = ({ client: e, isOpen: r, onClose: i, project: a, onSuccess: c }) => {
210
- let { i18n: u, _: f } = H(), { translateError: m } = w(), [h, _] = L({ "os-flavor-access:is_public": !0 }), [y, b] = L({}), [x, S] = L(!1), [C, T] = L(null), E = (e) => {
211
- let { name: t, value: n, type: r, checked: i } = e.target;
212
- _((e) => ({
213
- ...e,
214
- [t]: r === "checkbox" ? i : n
215
- })), C && T(null);
216
- }, D = (e, t) => {
217
- _((n) => ({
218
- ...n,
219
- [e]: t
220
- })), C && T(null);
221
- }, O = (e) => {
222
- let { name: t, value: n } = e.target, r = G(t, n, f);
223
- b((e) => ({
224
- ...e,
225
- [t]: r
226
- }));
227
- }, j = async (t) => {
228
- t.preventDefault(), T(null);
229
- let n = {};
230
- if ([
231
- "name",
232
- "vcpus",
233
- "ram",
234
- "disk"
235
- ].forEach((e) => {
236
- let t = G(e, h[e], f);
237
- t && (n[e] = t);
238
- }), [
239
- "id",
240
- "swap",
241
- "OS-FLV-EXT-DATA:ephemeral",
242
- "rxtx_factor",
243
- "description",
244
- "os-flavor-access:is_public"
245
- ].forEach((e) => {
246
- let t = h[e];
247
- if (t !== void 0 && t !== "" && t !== null) {
248
- let r = G(e, t, f);
249
- r && (n[e] = r);
250
- }
251
- }), Object.keys(n).length > 0) {
252
- b(n), T(u._({ id: "CBFSfX" }));
253
- return;
254
- }
255
- try {
256
- S(!0);
257
- let t = K(h);
258
- await e.compute.createFlavor.mutate({
259
- project_id: a,
260
- flavor: t
261
- }), c(t.name), M();
262
- } catch (e) {
263
- let t = e?.message ? m(e.message) : u._({ id: "OxDN2m" });
264
- T(t);
265
- } finally {
266
- S(!1);
267
- }
268
- }, M = () => {
269
- _({ "os-flavor-access:is_public": !0 }), b({}), T(null), i();
270
- };
271
- return /*#__PURE__*/ A(n, {
272
- onCancel: M,
273
- size: "large",
274
- title: u._({ id: "Rlp5zj" }),
275
- open: r,
276
- onConfirm: j,
277
- cancelButtonLabel: u._({ id: "dEgA5A" }),
278
- confirmButtonLabel: u._({ id: "wEfZld" }),
279
- children: [x && /*#__PURE__*/ k(s, {
280
- distribution: "center",
281
- alignment: "center",
282
- children: /*#__PURE__*/ k(o, { variant: "primary" })
283
- }), !x && /*#__PURE__*/ A(v, { children: [C && /*#__PURE__*/ k(d, { children: /*#__PURE__*/ k(t, {
284
- onDismiss: () => {
285
- T(null);
286
- },
287
- text: C,
288
- variant: "error"
289
- }) }), /*#__PURE__*/ A(g, { children: [
290
- /*#__PURE__*/ k(d, { children: /*#__PURE__*/ k(p, {
291
- id: "id",
292
- name: "id",
293
- label: u._({ id: "s2ubkU" }),
294
- value: h.id || "",
295
- onChange: E,
296
- onBlur: O,
297
- errortext: y.id
298
- }) }),
299
- /*#__PURE__*/ k(d, { children: /*#__PURE__*/ k(p, {
300
- id: "name",
301
- name: "name",
302
- label: u._({ id: "lWxDDh" }),
303
- value: h.name || "",
304
- onChange: E,
305
- onBlur: O,
306
- errortext: y.name,
307
- required: !0
308
- }) }),
309
- /*#__PURE__*/ k(d, { children: /*#__PURE__*/ k(p, {
310
- id: "description",
311
- name: "description",
312
- label: u._({ id: "Nu4oKW" }),
313
- value: h.description || "",
314
- onChange: E,
315
- onBlur: O,
316
- errortext: y.description
317
- }) }),
318
- /*#__PURE__*/ k(d, { children: /*#__PURE__*/ k(p, {
319
- id: "vcpus",
320
- name: "vcpus",
321
- label: u._({ id: "MZGbkp" }),
322
- value: String(h.vcpus || ""),
323
- onChange: (e) => D("vcpus", Number(e.target.value)),
324
- onBlur: O,
325
- errortext: y.vcpus,
326
- type: "number",
327
- required: !0
328
- }) }),
329
- /*#__PURE__*/ k(d, { children: /*#__PURE__*/ k(p, {
330
- id: "ram",
331
- name: "ram",
332
- label: u._({ id: "K+e/0e" }),
333
- value: String(h.ram || ""),
334
- onChange: (e) => D("ram", Number(e.target.value)),
335
- onBlur: O,
336
- errortext: y.ram,
337
- type: "number",
338
- required: !0
339
- }) }),
340
- /*#__PURE__*/ k(d, { children: /*#__PURE__*/ k(p, {
341
- id: "disk",
342
- name: "disk",
343
- label: u._({ id: "AxZkIr" }),
344
- value: String(h.disk || ""),
345
- onChange: (e) => D("disk", Number(e.target.value)),
346
- onBlur: O,
347
- errortext: y.disk,
348
- type: "number",
349
- required: !0
350
- }) }),
351
- /*#__PURE__*/ k(d, { children: /*#__PURE__*/ k(p, {
352
- id: "OS-FLV-EXT-DATA:ephemeral",
353
- name: "OS-FLV-EXT-DATA:ephemeral",
354
- label: u._({ id: "X2OnDx" }),
355
- value: String(h["OS-FLV-EXT-DATA:ephemeral"] || ""),
356
- onChange: (e) => D("OS-FLV-EXT-DATA:ephemeral", Number(e.target.value)),
357
- onBlur: O,
358
- errortext: y["OS-FLV-EXT-DATA:ephemeral"],
359
- type: "number"
360
- }) }),
361
- /*#__PURE__*/ k(d, { children: /*#__PURE__*/ k(p, {
362
- id: "swap",
363
- name: "swap",
364
- label: u._({ id: "p4nMut" }),
365
- value: String(h.swap || ""),
366
- onChange: (e) => D("swap", e.target.value ? Number(e.target.value) : void 0),
367
- onBlur: O,
368
- errortext: y.swap,
369
- type: "number"
370
- }) }),
371
- /*#__PURE__*/ k(d, { children: /*#__PURE__*/ k(p, {
372
- id: "rxtx_factor",
373
- name: "rxtx_factor",
374
- label: u._({ id: "u5HztT" }),
375
- defaultValue: 1,
376
- value: String(h.rxtx_factor || ""),
377
- onChange: (e) => D("rxtx_factor", Number(e.target.value)),
378
- onBlur: O,
379
- errortext: y.rxtx_factor,
380
- type: "number"
381
- }) }),
382
- /*#__PURE__*/ k(d, { children: /*#__PURE__*/ k(l, {
383
- name: "os-flavor-access:is_public",
384
- label: u._({ id: "vbajgL" }),
385
- helptext: u._({ id: "3nh/7E" }),
386
- checked: !!h["os-flavor-access:is_public"],
387
- onChange: E
388
- }) })
389
- ] })] })]
390
- });
391
- }, J = 50, Y = (e, t, n, r, i) => e.compute.getFlavorsByProjectId.query({
392
- project_id: t,
393
- sortBy: n,
394
- sortDirection: r,
395
- searchTerm: i
396
- }).then((e) => ({
397
- ...e,
398
- listError: void 0
399
- })).catch((e) => {
400
- if (e instanceof B && e.data?.code === "FORBIDDEN") return {
401
- flavors: [],
402
- privateFlavorError: void 0,
403
- listError: e.message
404
- };
405
- throw e;
406
- }), X = (e, t) => e.compute.canUser.query({
407
- project_id: t,
408
- permission: [
409
- "flavors:create",
410
- "flavors:delete",
411
- "flavors:list_projects",
412
- "flavor_specs:create",
413
- "flavor_specs:delete",
414
- "flavor_specs:list"
415
- ]
416
- }).then(([e, t, n, r, i, a]) => ({
417
- canCreate: e,
418
- canDelete: t,
419
- canManageAccess: n,
420
- canManageSpecs: r || i,
421
- canListSpecs: a
422
- }));
423
- function Z({ flavorsPromise: n, permissionsPromise: r, client: i, project: a, onFlavorDeleted: o, onFlavorCreated: l, searchTerm: u, setSearchTerm: d, sortSettings: p, handleSortChange: m, createModalOpen: h, setCreateModalOpen: g, currentPage: _, onPageChange: v }) {
424
- let { i18n: y, _: b } = H(), { flavors: x, privateFlavorError: C, listError: w } = N(n), T = N(r), [E, D] = L(u), j = I(void 0);
425
- if (F(() => () => clearTimeout(j.current), []), w) return /*#__PURE__*/ k("p", { children: w });
426
- let M = Math.max(1, Math.ceil(x.length / J)), P = Math.min(_, M), R = x.slice((P - 1) * J, P * J);
427
- return F(() => {
428
- _ > M && v(1);
429
- }, [
430
- M,
431
- _,
432
- v
433
- ]), /*#__PURE__*/ A(O, { children: [
434
- /*#__PURE__*/ k(q, {
435
- client: i,
436
- isOpen: h,
437
- project: a,
438
- onClose: () => g(!1),
439
- onSuccess: l
440
- }),
441
- C && /*#__PURE__*/ k(t, {
442
- className: "mb-4",
443
- text: y._({ id: "3oc18/" }),
444
- variant: "warning"
445
- }),
446
- /*#__PURE__*/ A(s, {
447
- distribution: "end",
448
- alignment: "center",
449
- gap: "2",
450
- className: "pb-2",
451
- children: [/*#__PURE__*/ k(s, {
452
- gap: "0.5",
453
- children: /*#__PURE__*/ k(S, {
454
- options: p.options,
455
- sortBy: p.sortBy,
456
- sortDirection: p.sortDirection ?? "asc",
457
- selectClassName: "min-w-40",
458
- onSortByChange: (e) => m({
459
- ...p,
460
- sortBy: e,
461
- sortDirection: p.sortDirection
462
- }),
463
- onSortDirectionChange: (e) => m({
464
- ...p,
465
- sortDirection: e
466
- })
467
- })
468
- }), T.canCreate && /*#__PURE__*/ k(c, {
469
- variant: "primary",
470
- label: y._({ id: "Rlp5zj" }),
471
- onClick: () => g(!0)
472
- })]
473
- }),
474
- /*#__PURE__*/ k(f, { children: /*#__PURE__*/ k(s, {
475
- distribution: "end",
476
- alignment: "center",
477
- children: /*#__PURE__*/ k(e, {
478
- placeholder: y._({ id: "U0sPCo" }),
479
- "data-testid": "searchbar",
480
- value: E,
481
- onInput: (e) => {
482
- let t = e.currentTarget.value;
483
- D(t), clearTimeout(j.current), j.current = window.setTimeout(() => d(t), 500);
484
- },
485
- onSearch: (e) => {
486
- clearTimeout(j.current), d(typeof e == "string" ? e : "");
487
- },
488
- onClear: () => {
489
- clearTimeout(j.current), D(""), d("");
490
- }
491
- })
492
- }) }),
493
- /*#__PURE__*/ k(W, {
494
- flavors: R,
495
- isLoading: !1,
496
- client: i,
497
- project: a,
498
- onFlavorDeleted: o,
499
- canDeleteFlavor: T.canDelete,
500
- canMangageAccess: T.canManageAccess,
501
- canManageSpecs: T.canManageSpecs,
502
- canListSpecs: T.canListSpecs,
503
- currentPage: P,
504
- totalPages: M,
505
- onPageChange: v
506
- })
507
- ] });
508
- }
509
- var Q = ({ client: e, project: n }) => {
510
- let { i18n: r, _: i } = H(), a = R(), c = z({ strict: !1 }), [l, u] = L({
511
- options: [
512
- {
513
- label: r._({ id: "6YtxFj" }),
514
- value: "name"
515
- },
516
- {
517
- label: r._({ id: "MZGbkp" }),
518
- value: "vcpus"
519
- },
520
- {
521
- label: r._({ id: "RGhYAo" }),
522
- value: "ram"
523
- },
524
- {
525
- label: r._({ id: "cJDQIO" }),
526
- value: "disk"
527
- },
528
- {
529
- label: r._({ id: "vH2C/2" }),
530
- value: "swap"
531
- }
532
- ],
533
- sortBy: c.sortBy || "name",
534
- sortDirection: c.sortDirection || "asc"
535
- }), [d, f] = L(c.search || ""), p = c.page ?? 1, [m, h] = L(), [g, _] = L(!1), [v, y] = L(() => Y(e, n, l.sortBy, l.sortDirection, d)), [b] = L(() => X(e, n)), x = () => {
536
- M(() => {
537
- y(Y(e, n, l.sortBy, l.sortDirection, d));
538
- });
539
- }, S = (e) => {
540
- h({
541
- message: r._({
542
- id: "20Kpaw",
543
- values: { flavorName: e }
544
- }),
545
- timestamp: Date.now()
546
- }), setTimeout(() => h(void 0), 5e3), x();
547
- }, C = (e) => {
548
- h({
549
- message: r._({
550
- id: "eChIh7",
551
- values: { flavorName: e }
552
- }),
553
- timestamp: Date.now()
554
- }), setTimeout(() => h(void 0), 5e3), x();
555
- }, w = (t) => {
556
- let r = {
557
- options: t.options,
558
- sortBy: t.sortBy?.toString() || "name",
559
- sortDirection: t.sortDirection || "asc"
560
- };
561
- u(r), a({
562
- search: (e) => ({
563
- ...e,
564
- sortBy: r.sortBy,
565
- sortDirection: r.sortDirection,
566
- page: void 0
567
- }),
568
- replace: !0
569
- }), M(() => {
570
- y(Y(e, n, r.sortBy, r.sortDirection, d));
571
- });
572
- }, T = (t) => {
573
- let r = typeof t == "string" ? t : "";
574
- f(r), a({
575
- search: (e) => ({
576
- ...e,
577
- search: r || void 0,
578
- page: void 0
579
- }),
580
- replace: !0
581
- }), M(() => {
582
- y(Y(e, n, l.sortBy, l.sortDirection, r));
583
- });
584
- }, E = P((e) => {
585
- a({ search: (t) => ({
586
- ...t,
587
- page: e === 1 ? void 0 : e
588
- }) });
589
- }, [a]);
590
- return /*#__PURE__*/ A("div", {
591
- className: "relative",
592
- children: [m && /*#__PURE__*/ k(t, {
593
- className: "absolute -top-14 right-0 left-0 z-50",
594
- text: m.message,
595
- variant: "info",
596
- onDismiss: () => h(void 0),
597
- dismissible: !0
598
- }), /*#__PURE__*/ k(U, {
599
- fallbackRender: ({ error: e }) => /*#__PURE__*/ k(t, {
600
- variant: "error",
601
- text: e instanceof Error ? e.message : r._({ id: "W5A0Ly" })
602
- }),
603
- children: /*#__PURE__*/ k(j, {
604
- fallback: /*#__PURE__*/ A(s, {
605
- className: "fixed inset-0",
606
- distribution: "center",
607
- alignment: "center",
608
- direction: "vertical",
609
- children: [/*#__PURE__*/ k(o, {
610
- variant: "primary",
611
- size: "large",
612
- className: "mb-2"
613
- }), /*#__PURE__*/ k(V, { id: "EqSPkP" })]
614
- }),
615
- children: /*#__PURE__*/ k(Z, {
616
- flavorsPromise: v,
617
- permissionsPromise: b,
618
- client: e,
619
- project: n,
620
- onFlavorDeleted: S,
621
- onFlavorCreated: C,
622
- searchTerm: d,
623
- setSearchTerm: T,
624
- sortSettings: l,
625
- handleSortChange: w,
626
- createModalOpen: g,
627
- setCreateModalOpen: _,
628
- currentPage: p,
629
- onPageChange: E
630
- })
631
- })
632
- })]
633
- });
634
- };
635
- //#endregion
636
- //#region src/client/routes/_auth/projects/$projectId/compute/flavors/index.tsx?tsr-split=component
637
- function $() {
638
- let { i18n: e, _: t } = H(), { projectId: n } = x.useParams(), { trpcClient: r } = x.useRouteContext();
639
- return /*#__PURE__*/ A(O, { children: [/*#__PURE__*/ k(C, {
640
- title: e._({ id: "neiJm0" }),
641
- projectId: n
642
- }), /*#__PURE__*/ k(Q, {
643
- project: n,
644
- client: r
645
- })] });
646
- }
647
- //#endregion
648
- export { $ as component };
649
-
650
- //# sourceMappingURL=flavors-DY-bDc8l.mjs.map