@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 +1 @@
1
- {"version":3,"file":"EditSecurityGroupModal-BPv3d7am.mjs","names":["React","useState","useEffect","Modal","Form","FormRow","FormSection","TextInput","Checkbox","Button","ButtonRow","Spinner","ModalFooter","Textarea","Message","EditSecurityGroupModal","securityGroup","open","onClose","onUpdate","isLoading","error","useLingui","properties","setProperties","name","description","stateful","errors","setErrors","handleInputChange","e","value","type","target","checked","prev","newErrors","validateForm","trim","t","Object","keys","length","handleSubmit","preventDefault","updateData","undefined","id","handleClose","onCancel","size","title","modalFooter","className","variant","onClick","disabled","data-testid","dismissible","div","span","label","onChange","required","errortext","placeholder","rows"],"sources":["../../src/client/routes/_auth/projects/$projectId/network/securitygroups/-components/-modals/EditSecurityGroupModal.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport {\n Modal,\n Form,\n FormRow,\n FormSection,\n TextInput,\n Checkbox,\n Button,\n ButtonRow,\n Spinner,\n ModalFooter,\n Textarea,\n Message,\n} from \"@cloudoperators/juno-ui-components\"\nimport type { SecurityGroup } from \"@/server/Network/types/securityGroup\"\nimport { UpdateSecurityGroupInput } from \"@/server/Network/types/securityGroup\"\n\ninterface EditSecurityGroupModalProps {\n securityGroup: SecurityGroup\n open: boolean\n onClose: () => void\n onUpdate?: (\n securityGroupId: string,\n data: Omit<UpdateSecurityGroupInput, \"securityGroupId\" | \"project_id\">\n ) => Promise<void>\n isLoading?: boolean\n error?: string | null\n}\n\ninterface SecurityGroupProperties {\n name: string\n description: string\n stateful: boolean\n}\n\nexport const EditSecurityGroupModal: React.FC<EditSecurityGroupModalProps> = ({\n securityGroup,\n open,\n onClose,\n onUpdate,\n isLoading = false,\n error = null,\n}) => {\n const { t } = useLingui()\n\n const [properties, setProperties] = useState<SecurityGroupProperties>({\n name: securityGroup.name || \"\",\n description: securityGroup.description || \"\",\n stateful: securityGroup.stateful ?? true,\n })\n const [errors, setErrors] = useState<{ [key: string]: string }>({})\n\n // Update properties when securityGroup changes\n useEffect(() => {\n setProperties({\n name: securityGroup.name || \"\",\n description: securityGroup.description || \"\",\n stateful: securityGroup.stateful ?? true,\n })\n }, [securityGroup])\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const { name, value, type } = e.target\n const checked = (e.target as HTMLInputElement).checked\n\n setProperties((prev) => ({\n ...prev,\n [name]: type === \"checkbox\" ? checked : value,\n }))\n\n if (errors[name]) {\n setErrors((prev) => {\n const newErrors = { ...prev }\n delete newErrors[name]\n return newErrors\n })\n }\n }\n\n const validateForm = (): boolean => {\n const newErrors: { [key: string]: string } = {}\n\n if (!properties.name || properties.name.trim() === \"\") {\n newErrors.name = t`Security group name is required`\n }\n\n setErrors(newErrors)\n return Object.keys(newErrors).length === 0\n }\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault()\n\n if (!validateForm()) {\n return\n }\n\n if (onUpdate) {\n const updateData: Omit<UpdateSecurityGroupInput, \"securityGroupId\" | \"project_id\"> = {\n name: properties.name.trim(),\n description: properties.description.trim() || undefined,\n stateful: properties.stateful,\n }\n\n await onUpdate(securityGroup.id, updateData)\n }\n }\n\n const handleClose = () => {\n setErrors({})\n onClose()\n }\n\n return (\n <Modal\n open={open}\n onCancel={handleClose}\n size=\"large\"\n title={t`Edit Security Group`}\n modalFooter={\n <ModalFooter className=\"flex justify-end\">\n <ButtonRow>\n <Button variant=\"default\" onClick={handleClose} disabled={isLoading}>\n <Trans>Cancel</Trans>\n </Button>\n <Button\n variant=\"primary\"\n onClick={(e) => {\n handleSubmit(e)\n }}\n disabled={isLoading}\n data-testid=\"update-security-group-button\"\n >\n {isLoading ? <Spinner size=\"small\" /> : <Trans>Update Security Group</Trans>}\n </Button>\n </ButtonRow>\n </ModalFooter>\n }\n >\n {/* Error Message */}\n {error && (\n <Message dismissible={false} variant=\"error\" className=\"mb-4\">\n {error}\n </Message>\n )}\n\n {/* Info message about stateful changes */}\n <Message dismissible={false} variant=\"info\" className=\"mb-4\">\n <Trans>\n Note: The 'stateful' attribute cannot be changed if this security group is currently in use by one or more\n ports.\n </Trans>\n </Message>\n\n {isLoading && (\n <div className=\"mb-4 flex items-center justify-center gap-2\">\n <Spinner variant=\"primary\" />\n <span className=\"text-theme-high text-sm\">\n <Trans>Updating security group...</Trans>\n </span>\n </div>\n )}\n\n {!isLoading && (\n <Form className=\"mb-6\">\n <FormSection className=\"mb-6\">\n <FormRow className=\"mb-6\">\n <TextInput\n id=\"name\"\n name=\"name\"\n label={t`Name`}\n value={properties.name}\n onChange={handleInputChange}\n required\n errortext={errors.name}\n placeholder={t`Type name`}\n disabled={isLoading}\n />\n </FormRow>\n\n <FormRow className=\"mb-6\">\n <Textarea\n id=\"description\"\n name=\"description\"\n label={t`Description`}\n value={properties.description}\n onChange={handleInputChange}\n placeholder={t`Description`}\n disabled={isLoading}\n rows={3}\n />\n </FormRow>\n\n <FormRow className=\"mb-0\">\n <Checkbox\n id=\"stateful\"\n name=\"stateful\"\n label={t`Stateful`}\n checked={properties.stateful}\n onChange={handleInputChange}\n disabled={isLoading}\n />\n </FormRow>\n </FormSection>\n </Form>\n )}\n </Modal>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"EditSecurityGroupModal-BGPXglju.mjs","names":["React","useState","useEffect","Modal","Form","FormRow","FormSection","TextInput","Checkbox","Button","ButtonRow","Spinner","ModalFooter","Textarea","Message","EditSecurityGroupModal","securityGroup","open","onClose","onUpdate","isLoading","error","useLingui","properties","setProperties","name","description","stateful","errors","setErrors","handleInputChange","e","value","type","target","checked","prev","newErrors","validateForm","trim","t","Object","keys","length","handleSubmit","preventDefault","updateData","undefined","id","handleClose","onCancel","size","title","modalFooter","className","variant","onClick","disabled","data-testid","dismissible","div","span","label","onChange","required","errortext","placeholder","rows"],"sources":["../../src/client/routes/_auth/projects/$projectId/network/securitygroups/-components/-modals/EditSecurityGroupModal.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport {\n Modal,\n Form,\n FormRow,\n FormSection,\n TextInput,\n Checkbox,\n Button,\n ButtonRow,\n Spinner,\n ModalFooter,\n Textarea,\n Message,\n} from \"@cloudoperators/juno-ui-components\"\nimport type { SecurityGroup } from \"@/server/Network/types/securityGroup\"\nimport { UpdateSecurityGroupInput } from \"@/server/Network/types/securityGroup\"\n\ninterface EditSecurityGroupModalProps {\n securityGroup: SecurityGroup\n open: boolean\n onClose: () => void\n onUpdate?: (\n securityGroupId: string,\n data: Omit<UpdateSecurityGroupInput, \"securityGroupId\" | \"project_id\">\n ) => Promise<void>\n isLoading?: boolean\n error?: string | null\n}\n\ninterface SecurityGroupProperties {\n name: string\n description: string\n stateful: boolean\n}\n\nexport const EditSecurityGroupModal: React.FC<EditSecurityGroupModalProps> = ({\n securityGroup,\n open,\n onClose,\n onUpdate,\n isLoading = false,\n error = null,\n}) => {\n const { t } = useLingui()\n\n const [properties, setProperties] = useState<SecurityGroupProperties>({\n name: securityGroup.name || \"\",\n description: securityGroup.description || \"\",\n stateful: securityGroup.stateful ?? true,\n })\n const [errors, setErrors] = useState<{ [key: string]: string }>({})\n\n // Update properties when securityGroup changes\n useEffect(() => {\n setProperties({\n name: securityGroup.name || \"\",\n description: securityGroup.description || \"\",\n stateful: securityGroup.stateful ?? true,\n })\n }, [securityGroup])\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const { name, value, type } = e.target\n const checked = (e.target as HTMLInputElement).checked\n\n setProperties((prev) => ({\n ...prev,\n [name]: type === \"checkbox\" ? checked : value,\n }))\n\n if (errors[name]) {\n setErrors((prev) => {\n const newErrors = { ...prev }\n delete newErrors[name]\n return newErrors\n })\n }\n }\n\n const validateForm = (): boolean => {\n const newErrors: { [key: string]: string } = {}\n\n if (!properties.name || properties.name.trim() === \"\") {\n newErrors.name = t`Security group name is required`\n }\n\n setErrors(newErrors)\n return Object.keys(newErrors).length === 0\n }\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault()\n\n if (!validateForm()) {\n return\n }\n\n if (onUpdate) {\n const updateData: Omit<UpdateSecurityGroupInput, \"securityGroupId\" | \"project_id\"> = {\n name: properties.name.trim(),\n description: properties.description.trim() || undefined,\n stateful: properties.stateful,\n }\n\n await onUpdate(securityGroup.id, updateData)\n }\n }\n\n const handleClose = () => {\n setErrors({})\n onClose()\n }\n\n return (\n <Modal\n open={open}\n onCancel={handleClose}\n size=\"large\"\n title={t`Edit Security Group`}\n modalFooter={\n <ModalFooter className=\"flex justify-end\">\n <ButtonRow>\n <Button variant=\"default\" onClick={handleClose} disabled={isLoading}>\n <Trans>Cancel</Trans>\n </Button>\n <Button\n variant=\"primary\"\n onClick={(e) => {\n handleSubmit(e)\n }}\n disabled={isLoading}\n data-testid=\"update-security-group-button\"\n >\n {isLoading ? <Spinner size=\"small\" /> : <Trans>Update Security Group</Trans>}\n </Button>\n </ButtonRow>\n </ModalFooter>\n }\n >\n {/* Error Message */}\n {error && (\n <Message dismissible={false} variant=\"error\" className=\"mb-4\">\n {error}\n </Message>\n )}\n\n {/* Info message about stateful changes */}\n <Message dismissible={false} variant=\"info\" className=\"mb-4\">\n <Trans>\n Note: The 'stateful' attribute cannot be changed if this security group is currently in use by one or more\n ports.\n </Trans>\n </Message>\n\n {isLoading && (\n <div className=\"mb-4 flex items-center justify-center gap-2\">\n <Spinner variant=\"primary\" />\n <span className=\"text-theme-high text-sm\">\n <Trans>Updating security group...</Trans>\n </span>\n </div>\n )}\n\n {!isLoading && (\n <Form className=\"mb-6\">\n <FormSection className=\"mb-6\">\n <FormRow className=\"mb-6\">\n <TextInput\n id=\"name\"\n name=\"name\"\n label={t`Name`}\n value={properties.name}\n onChange={handleInputChange}\n required\n errortext={errors.name}\n placeholder={t`Type name`}\n disabled={isLoading}\n />\n </FormRow>\n\n <FormRow className=\"mb-6\">\n <Textarea\n id=\"description\"\n name=\"description\"\n label={t`Description`}\n value={properties.description}\n onChange={handleInputChange}\n placeholder={t`Description`}\n disabled={isLoading}\n rows={3}\n />\n </FormRow>\n\n <FormRow className=\"mb-0\">\n <Checkbox\n id=\"stateful\"\n name=\"stateful\"\n label={t`Stateful`}\n checked={properties.stateful}\n onChange={handleInputChange}\n disabled={isLoading}\n />\n </FormRow>\n </FormSection>\n </Form>\n )}\n </Modal>\n )\n}\n"],"mappings":"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"}
@@ -1,24 +1,24 @@
1
- import { X as e, _ as t, d as n, l as r, n as i, r as a, t as o, v as s } from "./build-DF7MTyXG.mjs";
1
+ import { $ as e, I as t, L as n, S as r, dt as i, m as a, tt as o, y as s } from "./build-DgeVmENN.mjs";
2
2
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
3
3
  import { useCallback as u, useState as d } from "react";
4
4
  import { useLingui as f } from "@lingui/react";
5
5
  //#region src/client/components/ListToolbar/SelectedFilters.tsx
6
- var p = ({ selectedFilters: n, onDelete: r, onClear: a }) => {
7
- let { i18n: o, _: s } = f();
8
- return /*#__PURE__*/ l(e, {
6
+ var p = ({ selectedFilters: e, onDelete: n, onClear: r }) => {
7
+ let { i18n: i, _: a } = f();
8
+ return /*#__PURE__*/ l(o, {
9
9
  gap: "2",
10
10
  wrap: !0,
11
11
  alignment: "start",
12
12
  distribution: "start",
13
- children: [n.map((e) => /*#__PURE__*/ c(i, {
13
+ children: [e.map((e) => /*#__PURE__*/ c(t, {
14
14
  closeable: !0,
15
15
  pillKey: e.name,
16
16
  pillValue: e.value,
17
- onClose: () => r(e)
18
- }, `${e.name}:${e.value}`)), n.length > 1 && /*#__PURE__*/ c(t, {
17
+ onClose: () => n(e)
18
+ }, `${e.name}:${e.value}`)), e.length > 1 && /*#__PURE__*/ c(s, {
19
19
  size: "small",
20
- label: o._({ id: "yYxB17" }),
21
- onClick: a
20
+ label: i._({ id: "yYxB17" }),
21
+ onClick: r
22
22
  })]
23
23
  });
24
24
  };
@@ -27,9 +27,9 @@ var p = ({ selectedFilters: n, onDelete: r, onClear: a }) => {
27
27
  function m(e) {
28
28
  return e == null ? !0 : typeof e == "string" || Array.isArray(e) ? e.length === 0 : e instanceof Map || e instanceof Set ? e.size === 0 : typeof e == "object" ? Object.keys(e).length === 0 : !1;
29
29
  }
30
- var h = ({ filters: e, onChange: t }) => {
31
- let { i18n: i, _: p } = f(), [h, g] = d(""), [_, v] = d(""), y = e.find((e) => e.filterName === h)?.values?.filter((e) => e), b = u((e) => {
32
- v(e), !m(h) && !m(e) && t({
30
+ var h = ({ filters: t, onChange: o }) => {
31
+ let { i18n: s, _: p } = f(), [h, g] = d(""), [_, v] = d(""), y = t.find((e) => e.filterName === h)?.values?.filter((e) => e), b = u((e) => {
32
+ v(e), !m(h) && !m(e) && o({
33
33
  name: h,
34
34
  value: e
35
35
  }), setTimeout(() => {
@@ -38,12 +38,12 @@ var h = ({ filters: e, onChange: t }) => {
38
38
  }, [
39
39
  h,
40
40
  v,
41
- t
41
+ o
42
42
  ]), x = () => ({
43
43
  className: "w-full sm:flex-1 sm:min-w-0",
44
44
  name: "filter",
45
45
  "data-testid": "select-filterValue",
46
- label: i._({ id: "0cVgUw" }),
46
+ label: s._({ id: "0cVgUw" }),
47
47
  value: h,
48
48
  onChange: (e) => {
49
49
  g(String(e));
@@ -56,18 +56,18 @@ var h = ({ filters: e, onChange: t }) => {
56
56
  disabled: !h,
57
57
  onChange: b
58
58
  });
59
- return /*#__PURE__*/ l(a, {
59
+ return /*#__PURE__*/ l(r, {
60
60
  className: "flex w-full flex-col sm:w-auto sm:flex-row sm:items-end",
61
- children: [/*#__PURE__*/ c(s, {
61
+ children: [/*#__PURE__*/ c(i, {
62
62
  ...x(),
63
- children: e?.map(({ displayName: e, filterName: t }) => /*#__PURE__*/ c(r, {
63
+ children: t?.map(({ displayName: e, filterName: t }) => /*#__PURE__*/ c(a, {
64
64
  value: t,
65
65
  label: e,
66
66
  "data-testid": t
67
67
  }, t))
68
- }), /*#__PURE__*/ c(n, {
68
+ }), /*#__PURE__*/ c(e, {
69
69
  ...S(),
70
- children: y?.map((e) => /*#__PURE__*/ c(o, {
70
+ children: y?.map((e) => /*#__PURE__*/ c(n, {
71
71
  value: e,
72
72
  label: e,
73
73
  "data-testid": e
@@ -78,4 +78,4 @@ var h = ({ filters: e, onChange: t }) => {
78
78
  //#endregion
79
79
  export { p as n, h as t };
80
80
 
81
- //# sourceMappingURL=FiltersInput-CViamP59.mjs.map
81
+ //# sourceMappingURL=FiltersInput-cOaaRpcQ.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"FiltersInput-CViamP59.mjs","names":["Button","Pill","Stack","SelectedFilters","selectedFilters","onDelete","onClear","useLingui","gap","wrap","alignment","distribution","map","filter","closeable","pillKey","name","pillValue","value","onClose","length","size","label","t","onClick","useCallback","useState","InputGroup","ComboBox","ComboBoxOption","SelectOption","Select","isEmpty","value","Array","isArray","length","Map","Set","size","Object","keys","FiltersInput","filters","onChange","useLingui","selectedFilterName","setSelectedFilterName","selectedFilterValue","setSelectedFilterValue","filterValues","find","filter","filterName","values","handleValueChange","name","setTimeout","getSelectProps","className","label","t","String","getComboBoxProps","disabled","map","displayName","data-testid"],"sources":["../../src/client/components/ListToolbar/SelectedFilters.tsx","../../src/client/components/ListToolbar/FiltersInput.tsx"],"sourcesContent":["import { useLingui } from \"@lingui/react/macro\"\nimport { Button, Pill, Stack } from \"@cloudoperators/juno-ui-components\"\nimport { SelectedFilter } from \"./types\"\n\nexport type SelectedFiltersProps = {\n /**\n * Array of currently active filters to be displayed as closeable pills.\n */\n selectedFilters: SelectedFilter[]\n\n /**\n * Callback function invoked when a user removes an individual filter pill.\n */\n onDelete: (filter: SelectedFilter) => void\n\n /**\n * Callback function invoked when the \"Clear all\" button is clicked.\n */\n onClear: () => void\n}\n\n/**\n * SelectedFilters Component\n *\n * Displays currently active filters as closeable pill components with individual\n * remove buttons and an optional \"Clear all\" button (shown when 2+ filters are active).\n *\n * The pills are arranged in a flexible, wrapping layout that adapts to available space.\n */\nexport const SelectedFilters = ({ selectedFilters, onDelete, onClear }: SelectedFiltersProps) => {\n const { t } = useLingui()\n\n return (\n <Stack gap=\"2\" wrap={true} alignment=\"start\" distribution=\"start\">\n {/* Render a closeable pill for each selected filter */}\n {selectedFilters.map((filter) => (\n <Pill\n key={`${filter.name}:${filter.value}`}\n closeable\n pillKey={filter.name}\n pillValue={filter.value}\n onClose={() => onDelete(filter)}\n />\n ))}\n {selectedFilters.length > 1 && <Button size=\"small\" label={t`Clear all`} onClick={onClear} />}\n </Stack>\n )\n}\n","import { useCallback, useState } from \"react\"\nimport { useLingui } from \"@lingui/react/macro\"\nimport {\n InputGroup,\n ComboBox,\n ComboBoxProps,\n ComboBoxOption,\n SelectOption,\n Select,\n SelectProps,\n} from \"@cloudoperators/juno-ui-components\"\nimport { Filter, SelectedFilter } from \"./types\"\n\nexport type FiltersInputProps = {\n filters: Filter[]\n onChange: (filter: SelectedFilter) => void\n}\n\nfunction isEmpty(value: unknown) {\n if (value == null) return true\n if (typeof value === \"string\" || Array.isArray(value)) return value.length === 0\n if (value instanceof Map || value instanceof Set) return value.size === 0\n if (typeof value === \"object\") return Object.keys(value).length === 0\n return false\n}\n\nexport const FiltersInput = ({ filters, onChange }: FiltersInputProps) => {\n const { t } = useLingui()\n\n const [selectedFilterName, setSelectedFilterName] = useState<string>(\"\")\n const [selectedFilterValue, setSelectedFilterValue] = useState<string>(\"\")\n\n const filterValues: string[] | undefined = filters\n .find((filter) => filter.filterName === selectedFilterName)\n ?.values?.filter((value) => value)\n\n const handleValueChange = useCallback(\n (value: string) => {\n setSelectedFilterValue(value)\n if (!isEmpty(selectedFilterName) && !isEmpty(value)) {\n onChange({\n name: selectedFilterName,\n value: value,\n })\n }\n setTimeout(() => {\n setSelectedFilterValue(\"\")\n }, 0)\n },\n [selectedFilterName, setSelectedFilterValue, onChange]\n )\n\n const getSelectProps = (): SelectProps & { \"data-testid\"?: string } => ({\n className: \"w-full sm:flex-1 sm:min-w-0\",\n name: \"filter\",\n \"data-testid\": \"select-filterValue\",\n label: t`Filter by`,\n value: selectedFilterName,\n onChange: (value: string | number | string[] | undefined) => {\n setSelectedFilterName(String(value))\n },\n })\n\n const getComboBoxProps = (): ComboBoxProps & { \"data-testid\"?: string } => ({\n className: \"w-full sm:flex-1 sm:min-w-0\",\n name: \"filterValue\",\n \"data-testid\": \"combobox-filterValue\",\n value: selectedFilterValue,\n disabled: !selectedFilterName,\n onChange: handleValueChange,\n })\n\n return (\n <InputGroup className=\"flex w-full flex-col sm:w-auto sm:flex-row sm:items-end\">\n <Select {...getSelectProps()}>\n {filters?.map(({ displayName, filterName }) => (\n <SelectOption value={filterName} label={displayName} key={filterName} data-testid={filterName} />\n ))}\n </Select>\n <ComboBox {...getComboBoxProps()}>\n {filterValues?.map((value) => (\n <ComboBoxOption value={value} key={value} label={value} data-testid={value} />\n ))}\n </ComboBox>\n </InputGroup>\n )\n}\n"],"mappings":";;;;;AA6BA,IAAaG,KAAmB,EAAEC,oBAAiBC,aAAUC,iBAA+B;CAC1F,IAAM,EAAA,MAAA,GAAA,GAAA,MAAQC,EAAAA;CAEd,OACE,gBAACL,GAAAA;EAAMM,KAAI;EAAIC,MAAM;EAAMC,WAAU;EAAQC,cAAa;aAEvDP,EAAgBQ,KAAKC,MACpB,gBAACZ,GAAAA;GAECa,WAAS;GACTC,SAASF,EAAOG;GAChBC,WAAWJ,EAAOK;GAClBC,eAAed,EAASQ,CAAAA;KAJnB,GAAGA,EAAOG,KAAK,GAAGH,EAAOK,OAAO,CAAA,GAOxCd,EAAgBgB,SAAS,KAAK,gBAACpB,GAAAA;GAAOqB,MAAK;GAAQC,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAU,CAAA;GAAGC,SAASlB;;;AAGxF;;;AC7BA,SAAS0B,EAAQC,GAAc;CAK7B,OAJIA,KAAS,OAAa,KACtB,OAAOA,KAAU,YAAYC,MAAMC,QAAQF,CAAAA,IAAeA,EAAMG,WAAW,IAC3EH,aAAiBI,OAAOJ,aAAiBK,MAAYL,EAAMM,SAAS,IACpE,OAAON,KAAU,WAAiBO,OAAOC,KAAKR,CAAAA,EAAOG,WAAW,IAC7D;AACT;AAEA,IAAaM,KAAgB,EAAEC,YAASC,kBAA6B;CACnE,IAAM,EAAA,MAAA,GAAA,GAAA,MAAQC,EAAAA,GAER,CAACC,GAAoBC,KAAyBrB,EAAiB,EAAA,GAC/D,CAACsB,GAAqBC,KAA0BvB,EAAiB,EAAA,GAEjEwB,IAAqCP,EACxCQ,MAAMC,MAAWA,EAAOC,eAAeP,CAAAA,GACtCQ,QAAQF,QAAQnB,MAAUA,CAAAA,GAExBsB,IAAoB9B,GACvBQ,MAAAA;EAQCwB,AAPAR,EAAuBhB,CAAAA,GACnB,CAACD,EAAQc,CAAAA,KAAuB,CAACd,EAAQC,CAAAA,KAC3CW,EAAS;GACPY,MAAMV;GACCb;EACT,CAAA,GAEFwB,iBAAW;GACTR,EAAuB,EAAA;EACzB,GAAG,CAAA;CACL,GACA;EAACH;EAAoBG;EAAwBL;EAAS,GAGlDc,WAAkE;EACtEC,WAAW;EACXH,MAAM;EACN,eAAe;EACfI,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAU,CAAA;EAClB5B,OAAOa;EACPF,WAAWX,MAAAA;GACTc,EAAsBe,OAAO7B,CAAAA,CAAAA;EAC/B;CACF,IAEM8B,WAAsE;EAC1EJ,WAAW;EACXH,MAAM;EACN,eAAe;EACfvB,OAAOe;EACPgB,UAAU,CAAClB;EACXF,UAAUW;CACZ;CAEA,OACE,gBAAC5B,GAAAA;EAAWgC,WAAU;aACpB,gBAAC5B,GAAAA;GAAQ,GAAG2B,EAAAA;aACTf,GAASsB,KAAK,EAAEC,gBAAab,oBAC5B,gBAACvB,GAAAA;IAAaG,OAAOoB;IAAYO,OAAOM;IAA8BC,eAAad;MAAzBA,CAAAA,CAAAA;MAG9D,gBAACzB,GAAAA;GAAU,GAAGmC,EAAAA;aACXb,GAAce,KAAKhC,MAClB,gBAACJ,GAAAA;IAAsBI;IAAmB2B,OAAO3B;IAAOkC,eAAalC;MAAlCA,CAAAA,CAAAA;;;AAK7C"}
1
+ {"version":3,"file":"FiltersInput-cOaaRpcQ.mjs","names":["Button","Pill","Stack","SelectedFilters","selectedFilters","onDelete","onClear","useLingui","gap","wrap","alignment","distribution","map","filter","closeable","pillKey","name","pillValue","value","onClose","length","size","label","t","onClick","useCallback","useState","InputGroup","ComboBox","ComboBoxOption","SelectOption","Select","isEmpty","value","Array","isArray","length","Map","Set","size","Object","keys","FiltersInput","filters","onChange","useLingui","selectedFilterName","setSelectedFilterName","selectedFilterValue","setSelectedFilterValue","filterValues","find","filter","filterName","values","handleValueChange","name","setTimeout","getSelectProps","className","label","t","String","getComboBoxProps","disabled","map","displayName","data-testid"],"sources":["../../src/client/components/ListToolbar/SelectedFilters.tsx","../../src/client/components/ListToolbar/FiltersInput.tsx"],"sourcesContent":["import { useLingui } from \"@lingui/react/macro\"\nimport { Button, Pill, Stack } from \"@cloudoperators/juno-ui-components\"\nimport { SelectedFilter } from \"./types\"\n\nexport type SelectedFiltersProps = {\n /**\n * Array of currently active filters to be displayed as closeable pills.\n */\n selectedFilters: SelectedFilter[]\n\n /**\n * Callback function invoked when a user removes an individual filter pill.\n */\n onDelete: (filter: SelectedFilter) => void\n\n /**\n * Callback function invoked when the \"Clear all\" button is clicked.\n */\n onClear: () => void\n}\n\n/**\n * SelectedFilters Component\n *\n * Displays currently active filters as closeable pill components with individual\n * remove buttons and an optional \"Clear all\" button (shown when 2+ filters are active).\n *\n * The pills are arranged in a flexible, wrapping layout that adapts to available space.\n */\nexport const SelectedFilters = ({ selectedFilters, onDelete, onClear }: SelectedFiltersProps) => {\n const { t } = useLingui()\n\n return (\n <Stack gap=\"2\" wrap={true} alignment=\"start\" distribution=\"start\">\n {/* Render a closeable pill for each selected filter */}\n {selectedFilters.map((filter) => (\n <Pill\n key={`${filter.name}:${filter.value}`}\n closeable\n pillKey={filter.name}\n pillValue={filter.value}\n onClose={() => onDelete(filter)}\n />\n ))}\n {selectedFilters.length > 1 && <Button size=\"small\" label={t`Clear all`} onClick={onClear} />}\n </Stack>\n )\n}\n","import { useCallback, useState } from \"react\"\nimport { useLingui } from \"@lingui/react/macro\"\nimport {\n InputGroup,\n ComboBox,\n ComboBoxProps,\n ComboBoxOption,\n SelectOption,\n Select,\n SelectProps,\n} from \"@cloudoperators/juno-ui-components\"\nimport { Filter, SelectedFilter } from \"./types\"\n\nexport type FiltersInputProps = {\n filters: Filter[]\n onChange: (filter: SelectedFilter) => void\n}\n\nfunction isEmpty(value: unknown) {\n if (value == null) return true\n if (typeof value === \"string\" || Array.isArray(value)) return value.length === 0\n if (value instanceof Map || value instanceof Set) return value.size === 0\n if (typeof value === \"object\") return Object.keys(value).length === 0\n return false\n}\n\nexport const FiltersInput = ({ filters, onChange }: FiltersInputProps) => {\n const { t } = useLingui()\n\n const [selectedFilterName, setSelectedFilterName] = useState<string>(\"\")\n const [selectedFilterValue, setSelectedFilterValue] = useState<string>(\"\")\n\n const filterValues: string[] | undefined = filters\n .find((filter) => filter.filterName === selectedFilterName)\n ?.values?.filter((value) => value)\n\n const handleValueChange = useCallback(\n (value: string) => {\n setSelectedFilterValue(value)\n if (!isEmpty(selectedFilterName) && !isEmpty(value)) {\n onChange({\n name: selectedFilterName,\n value: value,\n })\n }\n setTimeout(() => {\n setSelectedFilterValue(\"\")\n }, 0)\n },\n [selectedFilterName, setSelectedFilterValue, onChange]\n )\n\n const getSelectProps = (): SelectProps & { \"data-testid\"?: string } => ({\n className: \"w-full sm:flex-1 sm:min-w-0\",\n name: \"filter\",\n \"data-testid\": \"select-filterValue\",\n label: t`Filter by`,\n value: selectedFilterName,\n onChange: (value: string | number | string[] | undefined) => {\n setSelectedFilterName(String(value))\n },\n })\n\n const getComboBoxProps = (): ComboBoxProps & { \"data-testid\"?: string } => ({\n className: \"w-full sm:flex-1 sm:min-w-0\",\n name: \"filterValue\",\n \"data-testid\": \"combobox-filterValue\",\n value: selectedFilterValue,\n disabled: !selectedFilterName,\n onChange: handleValueChange,\n })\n\n return (\n <InputGroup className=\"flex w-full flex-col sm:w-auto sm:flex-row sm:items-end\">\n <Select {...getSelectProps()}>\n {filters?.map(({ displayName, filterName }) => (\n <SelectOption value={filterName} label={displayName} key={filterName} data-testid={filterName} />\n ))}\n </Select>\n <ComboBox {...getComboBoxProps()}>\n {filterValues?.map((value) => (\n <ComboBoxOption value={value} key={value} label={value} data-testid={value} />\n ))}\n </ComboBox>\n </InputGroup>\n )\n}\n"],"mappings":";;;;;AA6BA,IAAaG,KAAmB,EAAEC,oBAAiBC,aAAUC,iBAA+B;CAC1F,IAAM,EAAA,MAAA,GAAA,GAAA,MAAQC,EAAAA;CAEd,OACE,gBAACL,GAAAA;EAAMM,KAAI;EAAIC,MAAM;EAAMC,WAAU;EAAQC,cAAa;aAEvDP,EAAgBQ,KAAKC,MACpB,gBAACZ,GAAAA;GAECa,WAAS;GACTC,SAASF,EAAOG;GAChBC,WAAWJ,EAAOK;GAClBC,eAAed,EAASQ,CAAAA;KAJnB,GAAGA,EAAOG,KAAK,GAAGH,EAAOK,OAAO,CAAA,GAOxCd,EAAgBgB,SAAS,KAAK,gBAACpB,GAAAA;GAAOqB,MAAK;GAAQC,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAU,CAAA;GAAGC,SAASlB;;;AAGxF;;;AC7BA,SAAS0B,EAAQC,GAAc;CAK7B,OAJIA,KAAS,OAAa,KACtB,OAAOA,KAAU,YAAYC,MAAMC,QAAQF,CAAAA,IAAeA,EAAMG,WAAW,IAC3EH,aAAiBI,OAAOJ,aAAiBK,MAAYL,EAAMM,SAAS,IACpE,OAAON,KAAU,WAAiBO,OAAOC,KAAKR,CAAAA,EAAOG,WAAW,IAC7D;AACT;AAEA,IAAaM,KAAgB,EAAEC,YAASC,kBAA6B;CACnE,IAAM,EAAA,MAAA,GAAA,GAAA,MAAQC,EAAAA,GAER,CAACC,GAAoBC,KAAyBrB,EAAiB,EAAA,GAC/D,CAACsB,GAAqBC,KAA0BvB,EAAiB,EAAA,GAEjEwB,IAAqCP,EACxCQ,MAAMC,MAAWA,EAAOC,eAAeP,CAAAA,GACtCQ,QAAQF,QAAQnB,MAAUA,CAAAA,GAExBsB,IAAoB9B,GACvBQ,MAAAA;EAQCwB,AAPAR,EAAuBhB,CAAAA,GACnB,CAACD,EAAQc,CAAAA,KAAuB,CAACd,EAAQC,CAAAA,KAC3CW,EAAS;GACPY,MAAMV;GACCb;EACT,CAAA,GAEFwB,iBAAW;GACTR,EAAuB,EAAA;EACzB,GAAG,CAAA;CACL,GACA;EAACH;EAAoBG;EAAwBL;EAAS,GAGlDc,WAAkE;EACtEC,WAAW;EACXH,MAAM;EACN,eAAe;EACfI,OAAOC,EAAAA,EAAC,EAAA,IAAA,SAAU,CAAA;EAClB5B,OAAOa;EACPF,WAAWX,MAAAA;GACTc,EAAsBe,OAAO7B,CAAAA,CAAAA;EAC/B;CACF,IAEM8B,WAAsE;EAC1EJ,WAAW;EACXH,MAAM;EACN,eAAe;EACfvB,OAAOe;EACPgB,UAAU,CAAClB;EACXF,UAAUW;CACZ;CAEA,OACE,gBAAC5B,GAAAA;EAAWgC,WAAU;aACpB,gBAAC5B,GAAAA;GAAQ,GAAG2B,EAAAA;aACTf,GAASsB,KAAK,EAAEC,gBAAab,oBAC5B,gBAACvB,GAAAA;IAAaG,OAAOoB;IAAYO,OAAOM;IAA8BC,eAAad;MAAzBA,CAAAA,CAAAA;MAG9D,gBAACzB,GAAAA;GAAU,GAAGmC,EAAAA;aACXb,GAAce,KAAKhC,MAClB,gBAACJ,GAAAA;IAAsBI;IAAmB2B,OAAO3B;IAAOkC,eAAalC;MAAlCA,CAAAA,CAAAA;;;AAK7C"}
@@ -1,4 +1,4 @@
1
- import { U as e, W as t, X as n, Y as r, l as i, m as a, p as o, ut as s, v as c, x as l } from "./build-DF7MTyXG.mjs";
1
+ import { B as e, H as t, K as n, U as r, dt as i, et as a, m as o, o as s, r as c, tt as l } from "./build-DgeVmENN.mjs";
2
2
  import { r as u } from "./trpcClient-BzPUgiM2.mjs";
3
3
  import { t as d } from "./useModal-DCs1OJh7.mjs";
4
4
  import { t as f } from "./useProjectId-DBc5lpoU.mjs";
@@ -68,29 +68,29 @@ var x = () => {
68
68
  isDeletePending: r.isPending,
69
69
  deleteError: r.error?.message ?? null
70
70
  };
71
- }, S = ({ floatingIp: t, open: n, onClose: a, onUpdate: d, isLoading: p = !1, error: x = null }) => {
72
- let { i18n: S, _: C } = _(), w = f(), { floating_ip_address: T } = t, E = v.object({
71
+ }, S = ({ floatingIp: r, open: a, onClose: l, onUpdate: d, isLoading: p = !1, error: x = null }) => {
72
+ let { i18n: S, _: C } = _(), w = f(), { floating_ip_address: T } = r, E = v.object({
73
73
  port_id: v.string(),
74
74
  fixed_ip_address: v.string()
75
75
  }), { data: D = [] } = u.network.floatingIp.listAvailablePorts.useQuery({ project_id: w }), O = y({
76
76
  defaultValues: {
77
- port_id: t.port_id ?? "",
77
+ port_id: r.port_id ?? "",
78
78
  fixed_ip_address: ""
79
79
  },
80
80
  validators: { onSubmit: E },
81
81
  onSubmit: async ({ value: e }) => {
82
- p || (await d(t.id, {
82
+ p || (await d(r.id, {
83
83
  project_id: w,
84
84
  port_id: e.port_id,
85
85
  ...e.fixed_ip_address && { fixed_ip_address: e.fixed_ip_address }
86
86
  }), k());
87
87
  }
88
88
  }), k = () => {
89
- O.reset(), a();
89
+ O.reset(), l();
90
90
  }, A = b(O.store, (e) => e.values.port_id), j = D.find((e) => e.id === A)?.fixed_ips ?? [];
91
- return /*#__PURE__*/ h(s, {
92
- id: t.id,
93
- open: n,
91
+ return /*#__PURE__*/ h(c, {
92
+ id: r.id,
93
+ open: a,
94
94
  size: "large",
95
95
  title: S._({
96
96
  id: "slWh5C",
@@ -102,7 +102,7 @@ var x = () => {
102
102
  onConfirm: O.handleSubmit,
103
103
  disableConfirmButton: p || !A,
104
104
  children: [
105
- x && /*#__PURE__*/ m(r, {
105
+ x && /*#__PURE__*/ m(e, {
106
106
  dismissible: !1,
107
107
  variant: "error",
108
108
  className: "mb-4",
@@ -110,22 +110,22 @@ var x = () => {
110
110
  }),
111
111
  p && /*#__PURE__*/ h("div", {
112
112
  className: "mb-4 flex items-center justify-center gap-2",
113
- children: [/*#__PURE__*/ m(e, { variant: "primary" }), /*#__PURE__*/ m("span", {
113
+ children: [/*#__PURE__*/ m(n, { variant: "primary" }), /*#__PURE__*/ m("span", {
114
114
  className: "text-theme-high text-sm",
115
115
  children: /*#__PURE__*/ m(g, { id: "tejJLY" })
116
116
  })]
117
117
  }),
118
- !p && /*#__PURE__*/ h(l, {
118
+ !p && /*#__PURE__*/ h(s, {
119
119
  className: "mb-0",
120
120
  id: "associate-floating-ip-form",
121
121
  onSubmit: (e) => {
122
122
  e.preventDefault(), O.handleSubmit();
123
123
  },
124
- children: [/*#__PURE__*/ m(o, {
124
+ children: [/*#__PURE__*/ m(t, {
125
125
  className: "mb-4",
126
126
  children: /*#__PURE__*/ m(O.Field, {
127
127
  name: "port_id",
128
- children: (e) => /*#__PURE__*/ m(c, {
128
+ children: (e) => /*#__PURE__*/ m(i, {
129
129
  id: e.name,
130
130
  name: e.name,
131
131
  value: e.state.value,
@@ -139,15 +139,15 @@ var x = () => {
139
139
  placeholder: S._({ id: "UztfYZ" }),
140
140
  errortext: e.state.meta.errors.map((e) => e?.message).join(", "),
141
141
  disabled: p,
142
- children: D.map((e) => /*#__PURE__*/ m(i, {
142
+ children: D.map((e) => /*#__PURE__*/ m(o, {
143
143
  value: e.id,
144
144
  label: e.name ? `${e.name} (${e.id})` : e.id
145
145
  }, e.id))
146
146
  })
147
147
  })
148
- }), /*#__PURE__*/ m(o, { children: /*#__PURE__*/ m(O.Field, {
148
+ }), /*#__PURE__*/ m(t, { children: /*#__PURE__*/ m(O.Field, {
149
149
  name: "fixed_ip_address",
150
- children: (e) => /*#__PURE__*/ m(c, {
150
+ children: (e) => /*#__PURE__*/ m(i, {
151
151
  id: e.name,
152
152
  name: e.name,
153
153
  value: e.state.value,
@@ -157,7 +157,7 @@ var x = () => {
157
157
  helptext: S._({ id: "PtjzS+" }),
158
158
  errortext: e.state.meta.errors.map((e) => e?.message).join(", "),
159
159
  disabled: p || j.length === 0,
160
- children: j.map(({ ip_address: e }) => /*#__PURE__*/ m(i, {
160
+ children: j.map(({ ip_address: e }) => /*#__PURE__*/ m(o, {
161
161
  value: e,
162
162
  label: e
163
163
  }, e))
@@ -166,21 +166,21 @@ var x = () => {
166
166
  })
167
167
  ]
168
168
  });
169
- }, C = ({ floatingIp: t, open: i, onClose: c, onUpdate: u, isLoading: d = !1, error: p = null }) => {
170
- let { i18n: x, _: S } = _(), C = f(), { floating_ip_address: w } = t, T = y({
169
+ }, C = ({ floatingIp: i, open: a, onClose: o, onUpdate: u, isLoading: d = !1, error: p = null }) => {
170
+ let { i18n: x, _: S } = _(), C = f(), { floating_ip_address: w } = i, T = y({
171
171
  defaultValues: { detach: "" },
172
172
  validators: { onSubmit: v.object({ detach: v.string().refine((e) => e === "detach", { message: x._({ id: "dPoCVe" }) }) }) },
173
173
  onSubmit: async () => {
174
- d || (await u(t.id, {
174
+ d || (await u(i.id, {
175
175
  project_id: C,
176
176
  port_id: null
177
177
  }), D());
178
178
  }
179
179
  }), E = b(T.store, (e) => e.isSubmitting || e.values.detach !== "detach"), D = () => {
180
- T.reset(), c();
180
+ T.reset(), o();
181
181
  };
182
- return /*#__PURE__*/ h(s, {
183
- open: i,
182
+ return /*#__PURE__*/ h(c, {
183
+ open: a,
184
184
  size: "large",
185
185
  title: x._({
186
186
  id: "vZUKSz",
@@ -192,7 +192,7 @@ var x = () => {
192
192
  onConfirm: T.handleSubmit,
193
193
  disableConfirmButton: d || E,
194
194
  children: [
195
- p && /*#__PURE__*/ m(r, {
195
+ p && /*#__PURE__*/ m(e, {
196
196
  dismissible: !1,
197
197
  variant: "error",
198
198
  className: "mb-4",
@@ -200,12 +200,12 @@ var x = () => {
200
200
  }),
201
201
  d && /*#__PURE__*/ h("div", {
202
202
  className: "mb-4 flex items-center justify-center gap-2",
203
- children: [/*#__PURE__*/ m(e, { variant: "primary" }), /*#__PURE__*/ m("span", {
203
+ children: [/*#__PURE__*/ m(n, { variant: "primary" }), /*#__PURE__*/ m("span", {
204
204
  className: "text-theme-high text-sm",
205
205
  children: /*#__PURE__*/ m(g, { id: "D3IRXw" })
206
206
  })]
207
207
  }),
208
- /*#__PURE__*/ h(n, {
208
+ /*#__PURE__*/ h(l, {
209
209
  gap: "2.5",
210
210
  direction: "vertical",
211
211
  className: "mb-2.5",
@@ -214,15 +214,15 @@ var x = () => {
214
214
  components: { 0: /*#__PURE__*/ m("strong", {}) }
215
215
  }) })]
216
216
  }),
217
- !d && /*#__PURE__*/ m(l, {
217
+ !d && /*#__PURE__*/ m(s, {
218
218
  className: "mb-0",
219
219
  id: "detach-floating-ip-form",
220
220
  onSubmit: (e) => {
221
221
  e.preventDefault(), T.handleSubmit();
222
222
  },
223
- children: /*#__PURE__*/ m(o, { children: /*#__PURE__*/ m(T.Field, {
223
+ children: /*#__PURE__*/ m(t, { children: /*#__PURE__*/ m(T.Field, {
224
224
  name: "detach",
225
- children: (e) => /*#__PURE__*/ m(a, {
225
+ children: (e) => /*#__PURE__*/ m(r, {
226
226
  id: e.name,
227
227
  name: e.name,
228
228
  value: e.state.value,
@@ -236,23 +236,23 @@ var x = () => {
236
236
  })
237
237
  ]
238
238
  });
239
- }, w = ({ floatingIp: n, open: i, onClose: a, onUpdate: c, isLoading: u = !1, error: d = null }) => {
240
- let { i18n: p, _: x } = _(), S = f(), { description: C, floating_ip_address: w } = n, T = v.object({ description: v.string().trim().min(1, p._({ id: "47eI0x" })).max(255, p._({ id: "lZvIXd" })) }), E = y({
239
+ }, w = ({ floatingIp: r, open: i, onClose: o, onUpdate: l, isLoading: u = !1, error: d = null }) => {
240
+ let { i18n: p, _: x } = _(), S = f(), { description: C, floating_ip_address: w } = r, T = v.object({ description: v.string().trim().min(1, p._({ id: "47eI0x" })).max(255, p._({ id: "lZvIXd" })) }), E = y({
241
241
  defaultValues: { description: C ?? "" },
242
242
  validators: { onSubmit: T },
243
243
  onSubmit: async ({ value: e }) => {
244
244
  if (u) return;
245
245
  let t = {
246
246
  project_id: S,
247
- port_id: n.port_id,
247
+ port_id: r.port_id,
248
248
  description: e.description.trim()
249
249
  };
250
- await c(n.id, t), D();
250
+ await l(r.id, t), D();
251
251
  }
252
252
  }), D = () => {
253
- E.reset(), a();
253
+ E.reset(), o();
254
254
  }, O = b(E.store, (e) => e.isSubmitting || !e.isDirty);
255
- return /*#__PURE__*/ h(s, {
255
+ return /*#__PURE__*/ h(c, {
256
256
  open: i,
257
257
  size: "large",
258
258
  title: p._({
@@ -265,7 +265,7 @@ var x = () => {
265
265
  disableConfirmButton: u || O,
266
266
  onConfirm: E.handleSubmit,
267
267
  children: [
268
- d && /*#__PURE__*/ m(r, {
268
+ d && /*#__PURE__*/ m(e, {
269
269
  dismissible: !1,
270
270
  variant: "error",
271
271
  className: "mb-4",
@@ -273,20 +273,20 @@ var x = () => {
273
273
  }),
274
274
  u && /*#__PURE__*/ h("div", {
275
275
  className: "mb-4 flex items-center justify-center gap-2",
276
- children: [/*#__PURE__*/ m(e, { variant: "primary" }), /*#__PURE__*/ m("span", {
276
+ children: [/*#__PURE__*/ m(n, { variant: "primary" }), /*#__PURE__*/ m("span", {
277
277
  className: "text-theme-high text-sm",
278
278
  children: /*#__PURE__*/ m(g, { id: "5g7owI" })
279
279
  })]
280
280
  }),
281
- !u && /*#__PURE__*/ m(l, {
281
+ !u && /*#__PURE__*/ m(s, {
282
282
  className: "mb-0",
283
283
  id: "edit-floating-ip-form",
284
284
  onSubmit: (e) => {
285
285
  e.preventDefault(), E.handleSubmit();
286
286
  },
287
- children: /*#__PURE__*/ m(o, { children: /*#__PURE__*/ m(E.Field, {
287
+ children: /*#__PURE__*/ m(t, { children: /*#__PURE__*/ m(E.Field, {
288
288
  name: "description",
289
- children: (e) => /*#__PURE__*/ m(t, {
289
+ children: (e) => /*#__PURE__*/ m(a, {
290
290
  id: e.name,
291
291
  name: e.name,
292
292
  value: e.state.value,
@@ -300,19 +300,19 @@ var x = () => {
300
300
  }) })
301
301
  })
302
302
  ]
303
- }, n.id);
304
- }, T = ({ floatingIp: t, open: i, onClose: c, onUpdate: u, isLoading: d = !1, error: f = null }) => {
305
- let { i18n: p, _: x } = _(), { floating_ip_address: S } = t, C = y({
303
+ }, r.id);
304
+ }, T = ({ floatingIp: i, open: a, onClose: o, onUpdate: u, isLoading: d = !1, error: f = null }) => {
305
+ let { i18n: p, _: x } = _(), { floating_ip_address: S } = i, C = y({
306
306
  defaultValues: { release: "" },
307
307
  validators: { onSubmit: v.object({ release: v.string().refine((e) => e === "release", { message: p._({ id: "TPMaxo" }) }) }) },
308
308
  onSubmit: async () => {
309
- d || (await u(t.id), T());
309
+ d || (await u(i.id), T());
310
310
  }
311
311
  }), w = b(C.store, (e) => e.isSubmitting || e.values.release !== "release"), T = () => {
312
- C.reset(), c();
312
+ C.reset(), o();
313
313
  };
314
- return /*#__PURE__*/ h(s, {
315
- open: i,
314
+ return /*#__PURE__*/ h(c, {
315
+ open: a,
316
316
  size: "large",
317
317
  title: p._({
318
318
  id: "Ovofy+",
@@ -324,7 +324,7 @@ var x = () => {
324
324
  onConfirm: C.handleSubmit,
325
325
  disableConfirmButton: d || w,
326
326
  children: [
327
- f && /*#__PURE__*/ m(r, {
327
+ f && /*#__PURE__*/ m(e, {
328
328
  dismissible: !1,
329
329
  variant: "error",
330
330
  className: "mb-4",
@@ -332,12 +332,12 @@ var x = () => {
332
332
  }),
333
333
  d && /*#__PURE__*/ h("div", {
334
334
  className: "mb-4 flex items-center justify-center gap-2",
335
- children: [/*#__PURE__*/ m(e, { variant: "primary" }), /*#__PURE__*/ m("span", {
335
+ children: [/*#__PURE__*/ m(n, { variant: "primary" }), /*#__PURE__*/ m("span", {
336
336
  className: "text-theme-high text-sm",
337
337
  children: /*#__PURE__*/ m(g, { id: "Yin3uB" })
338
338
  })]
339
339
  }),
340
- /*#__PURE__*/ h(n, {
340
+ /*#__PURE__*/ h(l, {
341
341
  gap: "2.5",
342
342
  direction: "vertical",
343
343
  className: "mb-2.5",
@@ -346,15 +346,15 @@ var x = () => {
346
346
  components: { 0: /*#__PURE__*/ m("strong", {}) }
347
347
  }) })]
348
348
  }),
349
- !d && /*#__PURE__*/ m(l, {
349
+ !d && /*#__PURE__*/ m(s, {
350
350
  className: "mb-0",
351
351
  id: "release-floating-ip-form",
352
352
  onSubmit: (e) => {
353
353
  e.preventDefault(), C.handleSubmit();
354
354
  },
355
- children: /*#__PURE__*/ m(o, { children: /*#__PURE__*/ m(C.Field, {
355
+ children: /*#__PURE__*/ m(t, { children: /*#__PURE__*/ m(C.Field, {
356
356
  name: "release",
357
- children: (e) => /*#__PURE__*/ m(a, {
357
+ children: (e) => /*#__PURE__*/ m(r, {
358
358
  id: e.name,
359
359
  name: e.name,
360
360
  value: e.state.value,
@@ -414,4 +414,4 @@ var x = () => {
414
414
  //#endregion
415
415
  export { E as t };
416
416
 
417
- //# sourceMappingURL=FloatingIpActionModals-DTn3HFei.mjs.map
417
+ //# sourceMappingURL=FloatingIpActionModals-RCvaamOg.mjs.map