@bigbinary/neeto-molecules 5.2.12 → 5.2.14

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.
@@ -153,41 +153,49 @@ var AllowedIpRange = reactUtils.withT(function (_ref) {
153
153
  index = _ref.index,
154
154
  arrayHelpers = _ref.arrayHelpers;
155
155
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
156
- className: "flex items-start gap-3",
156
+ className: "border-border relative flex items-start gap-3 rounded-lg border p-4 pe-14 md:static md:rounded-none md:border-none md:p-0 md:pe-0",
157
157
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
158
158
  className: "grid flex-grow grid-cols-1 gap-3 md:grid-cols-3",
159
- children: [/*#__PURE__*/jsxRuntime.jsx(formik.Input, {
160
- className: "text-start",
161
- "data-testid": "ip-start-text-field",
162
- label: t("neetoMolecules.ipRestriction.ipStart"),
163
- labelProps: {
164
- className: "md:hidden"
165
- },
166
- name: "allowedIpRanges.".concat(index, ".ipStart"),
167
- placeholder: t("neetoMolecules.ipRestriction.ipStart")
168
- }), /*#__PURE__*/jsxRuntime.jsx(formik.Input, {
169
- className: "text-start",
170
- "data-testid": "ip-end-text-field",
171
- label: t("neetoMolecules.ipRestriction.ipEnd"),
172
- labelProps: {
173
- className: "md:hidden"
174
- },
175
- name: "allowedIpRanges.".concat(index, ".ipEnd"),
176
- placeholder: t("neetoMolecules.ipRestriction.ipEnd")
177
- }), /*#__PURE__*/jsxRuntime.jsx(formik.Select, {
178
- className: "text-start",
179
- "data-testid": "address-type-select-field",
180
- label: t("neetoMolecules.ipRestriction.type"),
181
- labelProps: {
182
- className: "md:hidden"
183
- },
184
- name: "allowedIpRanges.".concat(index, ".addressType"),
185
- options: ADDRESS_TYPE_SELECT_OPTIONS
159
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
160
+ className: "flex flex-col gap-2",
161
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Label, {
162
+ className: "md:hidden",
163
+ children: t("neetoMolecules.ipRestriction.ipStart")
164
+ }), /*#__PURE__*/jsxRuntime.jsx(formik.Input, {
165
+ "aria-label": t("neetoMolecules.ipRestriction.ipStart"),
166
+ className: "text-start",
167
+ "data-testid": "ip-start-text-field",
168
+ name: "allowedIpRanges.".concat(index, ".ipStart"),
169
+ placeholder: t("neetoMolecules.ipRestriction.ipStart")
170
+ })]
171
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
172
+ className: "flex flex-col gap-2",
173
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Label, {
174
+ className: "md:hidden",
175
+ children: t("neetoMolecules.ipRestriction.ipEnd")
176
+ }), /*#__PURE__*/jsxRuntime.jsx(formik.Input, {
177
+ "aria-label": t("neetoMolecules.ipRestriction.ipEnd"),
178
+ className: "text-start",
179
+ "data-testid": "ip-end-text-field",
180
+ name: "allowedIpRanges.".concat(index, ".ipEnd"),
181
+ placeholder: t("neetoMolecules.ipRestriction.ipEnd")
182
+ })]
183
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
184
+ className: "flex flex-col gap-2",
185
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Label, {
186
+ className: "md:hidden",
187
+ children: t("neetoMolecules.ipRestriction.type")
188
+ }), /*#__PURE__*/jsxRuntime.jsx(formik.Select, {
189
+ "aria-label": t("neetoMolecules.ipRestriction.type"),
190
+ className: "text-start",
191
+ "data-testid": "address-type-select-field",
192
+ name: "allowedIpRanges.".concat(index, ".addressType"),
193
+ options: ADDRESS_TYPE_SELECT_OPTIONS
194
+ })]
186
195
  })]
187
196
  }), /*#__PURE__*/jsxRuntime.jsx("div", {
188
- className: "flex flex-shrink-0 justify-center md:min-w-14",
197
+ className: "absolute end-3 top-3 md:static md:flex md:min-w-14 md:flex-shrink-0 md:justify-center",
189
198
  children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
190
- className: "mt-5 md:mt-0",
191
199
  "data-testid": "allowed-ip-range-delete-button",
192
200
  icon: trash2.Trash2,
193
201
  size: "icon",
@@ -211,7 +219,7 @@ var AllowedIpRanges$1 = reactUtils.withT(function (_ref) {
211
219
  "data-testid": "allowed-ip-range-container",
212
220
  children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
213
221
  "data-testid": "allowed-ip-range-heading",
214
- variant: "h4",
222
+ variant: "h6",
215
223
  children: t("neetoMolecules.ipRestriction.allowedIpRangeTitle")
216
224
  }), /*#__PURE__*/jsxRuntime.jsxs("div", {
217
225
  className: "flex flex-col gap-y-3",
@@ -220,23 +228,31 @@ var AllowedIpRanges$1 = reactUtils.withT(function (_ref) {
220
228
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
221
229
  className: "grid flex-grow grid-cols-3 gap-3",
222
230
  children: [/*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Typography, {
223
- className: "text-muted-foreground uppercase",
224
- variant: "h6",
231
+ className: "uppercase",
232
+ color: "muted",
233
+ variant: "caption",
234
+ weight: "bold",
225
235
  children: [t("neetoMolecules.ipRestriction.ipStart"), "*"]
226
236
  }), /*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Typography, {
227
- className: "text-muted-foreground uppercase",
228
- variant: "h6",
237
+ className: "uppercase",
238
+ color: "muted",
239
+ variant: "caption",
240
+ weight: "bold",
229
241
  children: [t("neetoMolecules.ipRestriction.ipEnd"), "*"]
230
242
  }), /*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Typography, {
231
- className: "text-muted-foreground uppercase",
232
- variant: "h6",
243
+ className: "uppercase",
244
+ color: "muted",
245
+ variant: "caption",
246
+ weight: "bold",
233
247
  children: [t("neetoMolecules.ipRestriction.type"), "*"]
234
248
  })]
235
249
  }), /*#__PURE__*/jsxRuntime.jsx("div", {
236
250
  className: "min-w-14 flex-shrink-0",
237
251
  children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
238
- className: "text-muted-foreground text-center uppercase",
239
- variant: "h6",
252
+ className: "text-center uppercase",
253
+ color: "muted",
254
+ variant: "caption",
255
+ weight: "bold",
240
256
  children: t("neetoMolecules.ipRestriction.actions")
241
257
  })
242
258
  })]
@@ -248,7 +264,7 @@ var AllowedIpRanges$1 = reactUtils.withT(function (_ref) {
248
264
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
249
265
  children: [arrayHelpers.form.values.allowedIpRanges.map(function (allowedIpRange, index) {
250
266
  return /*#__PURE__*/jsxRuntime.jsx("div", {
251
- className: "border-border w-full border-b pb-6 last:border-none last:pb-0 md:border-none md:pb-0",
267
+ className: "w-full",
252
268
  children: /*#__PURE__*/React.createElement(AllowedIpRange, {
253
269
  allowedIpRange: allowedIpRange,
254
270
  arrayHelpers: arrayHelpers,
@@ -257,7 +273,7 @@ var AllowedIpRanges$1 = reactUtils.withT(function (_ref) {
257
273
  })
258
274
  }, index);
259
275
  }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
260
- className: "md:mt-2",
276
+ className: "self-start md:mt-2",
261
277
  "data-testid": "add-allowed-ip-range-button",
262
278
  icon: plus.Plus,
263
279
  iconPosition: "left",
@@ -382,6 +398,9 @@ var useUpdateIpRestriction = function useUpdateIpRestriction() {
382
398
  });
383
399
  };
384
400
 
401
+ var NoIcon = function NoIcon() {
402
+ return null;
403
+ };
385
404
  var IpRestriction = function IpRestriction() {
386
405
  var _useTranslation = reactI18next.useTranslation(),
387
406
  t = _useTranslation.t;
@@ -462,7 +481,7 @@ var IpRestriction = function IpRestriction() {
462
481
  variant: "secondary",
463
482
  onClick: resetForm
464
483
  }), dirty && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
465
- className: "text-destructive",
484
+ color: "destructive",
466
485
  variant: "body2",
467
486
  children: t("neetoMolecules.ipRestriction.validations.unsavedChanges")
468
487
  })]
@@ -478,8 +497,9 @@ var IpRestriction = function IpRestriction() {
478
497
  id: "ipRestriction",
479
498
  label: t("neetoMolecules.ipRestriction.switchLabel"),
480
499
  name: "ipRestriction",
500
+ size: "lg",
481
501
  labelProps: {
482
- className: "text-[1.75rem] font-semibold leading-tight"
502
+ className: "text-xl font-semibold leading-tight"
483
503
  }
484
504
  }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
485
505
  "data-testid": "ip-restriction-description",
@@ -489,6 +509,7 @@ var IpRestriction = function IpRestriction() {
489
509
  }), values.ipRestriction && /*#__PURE__*/jsxRuntime.jsxs("div", {
490
510
  className: "border-border flex w-full flex-col gap-y-6 border-t pt-6",
491
511
  children: [/*#__PURE__*/jsxRuntime.jsx(CurrentIp, {}), /*#__PURE__*/jsxRuntime.jsx(AllowedIpRanges, {}), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Callout, {
512
+ icon: NoIcon,
492
513
  variant: "warning",
493
514
  children: /*#__PURE__*/jsxRuntime.jsx("div", {
494
515
  className: "py-1 whitespace-pre-wrap",
@@ -1 +1 @@
1
- {"version":3,"file":"IpRestriction.js","sources":["../../../src/v2/components/IpRestriction/utils.js","../../../src/v2/components/IpRestriction/constants.js","../../../src/v2/components/IpRestriction/AllowedIpRanges/AllowedIpRange.jsx","../../../src/v2/components/IpRestriction/AllowedIpRanges/index.jsx","../../../src/v2/components/IpRestriction/apis/current_ip.js","../../../src/v2/components/IpRestriction/hooks/reactQuery/useCurrentIp.js","../../../src/v2/components/IpRestriction/CurrentIp.jsx","../../../src/v2/components/IpRestriction/apis/allowed_ip_ranges.js","../../../src/v2/components/IpRestriction/hooks/reactQuery/useAllowedIpRanges.js","../../../src/v2/components/IpRestriction/apis/ip_restriction.js","../../../src/v2/components/IpRestriction/hooks/reactQuery/useIpRestrictions.js","../../../src/v2/components/IpRestriction/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { IPv4, IPv6, Validator } from \"ip-num\";\nimport { isNil, isNotNil } from \"ramda\";\nimport * as yup from \"yup\";\n\nconst isValidIPv4String = ip =>\n isNotNil(ip) && Validator.isValidIPv4String(ip)[0];\n\nconst isValidIPv6String = ip =>\n isNotNil(ip) && Validator.isValidIPv6String(ip)[0];\n\nconst isValidIpString = ip => isValidIPv4String(ip) || isValidIPv6String(ip);\n\nconst areIpAddressesInSameFormat = (ipStart, ipEnd) =>\n (isValidIPv4String(ipStart) && isValidIPv4String(ipEnd)) ||\n (isValidIPv6String(ipStart) && isValidIPv6String(ipEnd));\n\nconst isValidIPv4Range = (ipStart, ipEnd) => {\n const ipStartAddr = IPv4.fromDecimalDottedString(ipStart);\n const ipEndAddr = IPv4.fromDecimalDottedString(ipEnd);\n\n return ipStartAddr.isLessThanOrEquals(ipEndAddr);\n};\n\nconst isValidIPv6Range = (ipStart, ipEnd) => {\n const ipStartAddr = IPv6.fromString(ipStart);\n const ipEndAddr = IPv6.fromString(ipEnd);\n\n return ipStartAddr.isLessThanOrEquals(ipEndAddr);\n};\n\nconst isValidIPRange = (ipStart, ipEnd) => {\n if (isValidIPv4String(ipStart) && isValidIPv4String(ipEnd)) {\n return isValidIPv4Range(ipStart, ipEnd);\n }\n\n if (isValidIPv6String(ipStart) && isValidIPv6String(ipEnd)) {\n return isValidIPv6Range(ipStart, ipEnd);\n }\n\n return false;\n};\n\nyup.addMethod(yup.string, \"validIp\", function (errorMessage) {\n return this.test(\"valid-ip\", errorMessage, function (value) {\n if (isNil(value)) {\n return this;\n }\n\n const isValidIp = isValidIpString(value);\n\n return (\n isValidIp || this.createError({ path: this.path, message: errorMessage })\n );\n });\n});\n\nexport const getIpRestrictionValidationSchema = () =>\n yup.object().shape({\n ipStart: yup\n .string()\n .validIp(t(\"neetoMolecules.ipRestriction.validations.invalidIp\"))\n .required(t(\"neetoMolecules.ipRestriction.validations.ipStartRequired\")),\n ipEnd: yup\n .string()\n .validIp(t(\"neetoMolecules.ipRestriction.validations.invalidIp\"))\n .when(\"ipStart\", (ipStart, schema) =>\n schema.test({\n test: ipEnd => areIpAddressesInSameFormat(ipStart, ipEnd),\n message: t(\n \"neetoMolecules.ipRestriction.validations.eitherIpv4OrIpv6\"\n ),\n })\n )\n .when(\"ipStart\", (ipStart, schema) =>\n schema.test({\n test: ipEnd => isValidIPRange(ipStart, ipEnd),\n message: t(\n \"neetoMolecules.ipRestriction.validations.ipEndGreaterThanIpStart\"\n ),\n })\n )\n .required(t(\"neetoMolecules.ipRestriction.validations.ipEndRequired\")),\n // v2 Select stores the scalar option value (string), not the option object.\n addressType: yup\n .string()\n .nullable()\n .required(\n t(\"neetoMolecules.ipRestriction.validations.addressTypeRequired\")\n ),\n });\n\nexport const buildInitialValue = (isIpRestrictionEnabled, allowedIpRanges) => ({\n ipRestriction: isIpRestrictionEnabled,\n allowedIpRanges,\n});\n\nexport const buildIpRestrictionPayload = values => ({\n isIpRestrictionEnabled: values.ipRestriction,\n allowedIpRanges: values.allowedIpRanges,\n});\n","import { t } from \"i18next\";\nimport * as yup from \"yup\";\n\nimport { getIpRestrictionValidationSchema } from \"./utils\";\n\nexport const IP_RESTRICTIONS_ENGINE_BASE_URL = \"/neeto_ip_restrictions/api/v1\";\n\nexport const QUERY_KEYS = {\n IP_RESTRICTION: \"IP_RESTRICTION\",\n ALLOWED_IP_RANGES: \"ALLOWED_IP_RANGES\",\n CURRENT_IP: \"CURRENT_IP\",\n};\n\nexport const TRUNCATE_LENGTH = 18;\n\nexport const ADDRESS_TYPE_SELECT_OPTIONS = [\n { label: t(\"neetoMolecules.ipRestriction.ipv4\"), value: \"ipv4\" },\n { label: t(\"neetoMolecules.ipRestriction.ipv6\"), value: \"ipv6\" },\n];\n\nexport const INITIAL_VALUES = {\n ipStart: \"\",\n ipEnd: \"\",\n addressType: ADDRESS_TYPE_SELECT_OPTIONS[0].value,\n};\n\nexport const VALIDATION_SCHEMA = yup.object().shape({\n ipRestriction: yup.boolean(),\n allowedIpRanges: yup.array().of(getIpRestrictionValidationSchema()),\n});\n\nexport const NEW_ALLOWED_IP_RANGE = {\n ipStart: \"\",\n ipEnd: \"\",\n addressType: null,\n createdAt: new Date().toISOString(),\n};\n","import { Button } from \"@bigbinary/neeto-atoms\";\nimport { Input, Select } from \"@bigbinary/neeto-atoms/formik\";\nimport { Trash2 } from \"lucide-react\";\nimport { withT } from \"neetocommons/v2/react-utils\";\n\nimport { ADDRESS_TYPE_SELECT_OPTIONS } from \"../constants\";\n\nconst AllowedIpRange = withT(({ t, index, arrayHelpers }) => (\n <div className=\"flex items-start gap-3\">\n <div className=\"grid flex-grow grid-cols-1 gap-3 md:grid-cols-3\">\n <Input\n className=\"text-start\"\n data-testid=\"ip-start-text-field\"\n label={t(\"neetoMolecules.ipRestriction.ipStart\")}\n labelProps={{ className: \"md:hidden\" }}\n name={`allowedIpRanges.${index}.ipStart`}\n placeholder={t(\"neetoMolecules.ipRestriction.ipStart\")}\n />\n <Input\n className=\"text-start\"\n data-testid=\"ip-end-text-field\"\n label={t(\"neetoMolecules.ipRestriction.ipEnd\")}\n labelProps={{ className: \"md:hidden\" }}\n name={`allowedIpRanges.${index}.ipEnd`}\n placeholder={t(\"neetoMolecules.ipRestriction.ipEnd\")}\n />\n <Select\n className=\"text-start\"\n data-testid=\"address-type-select-field\"\n label={t(\"neetoMolecules.ipRestriction.type\")}\n labelProps={{ className: \"md:hidden\" }}\n name={`allowedIpRanges.${index}.addressType`}\n options={ADDRESS_TYPE_SELECT_OPTIONS}\n />\n </div>\n <div className=\"flex flex-shrink-0 justify-center md:min-w-14\">\n <Button\n className=\"mt-5 md:mt-0\"\n data-testid=\"allowed-ip-range-delete-button\"\n icon={Trash2}\n size=\"icon\"\n variant=\"ghost\"\n tooltipProps={{\n content: t(\"neetoMolecules.common.actions.discard\"),\n position: \"top\",\n }}\n onClick={() => arrayHelpers.remove(index)}\n />\n </div>\n </div>\n));\n\nexport default AllowedIpRange;\n","import { memo } from \"react\";\n\nimport { Button, Typography } from \"@bigbinary/neeto-atoms\";\nimport { FieldArray } from \"formik\";\nimport { Plus } from \"lucide-react\";\nimport { withT } from \"neetocommons/v2/react-utils\";\n\nimport AllowedIpRange from \"./AllowedIpRange\";\n\nimport { NEW_ALLOWED_IP_RANGE } from \"../constants\";\n\nconst AllowedIpRanges = withT(({ t }) => (\n <div\n className=\"flex flex-col gap-y-5\"\n data-testid=\"allowed-ip-range-container\"\n >\n <Typography data-testid=\"allowed-ip-range-heading\" variant=\"h4\">\n {t(\"neetoMolecules.ipRestriction.allowedIpRangeTitle\")}\n </Typography>\n <div className=\"flex flex-col gap-y-3\">\n <div className=\"hidden gap-3 md:flex\">\n <div className=\"grid flex-grow grid-cols-3 gap-3\">\n <Typography className=\"text-muted-foreground uppercase\" variant=\"h6\">\n {t(\"neetoMolecules.ipRestriction.ipStart\")}*\n </Typography>\n <Typography className=\"text-muted-foreground uppercase\" variant=\"h6\">\n {t(\"neetoMolecules.ipRestriction.ipEnd\")}*\n </Typography>\n <Typography className=\"text-muted-foreground uppercase\" variant=\"h6\">\n {t(\"neetoMolecules.ipRestriction.type\")}*\n </Typography>\n </div>\n <div className=\"min-w-14 flex-shrink-0\">\n <Typography\n className=\"text-muted-foreground text-center uppercase\"\n variant=\"h6\"\n >\n {t(\"neetoMolecules.ipRestriction.actions\")}\n </Typography>\n </div>\n </div>\n <div className=\"flex w-full flex-col gap-y-6 md:gap-y-4\">\n <FieldArray name=\"allowedIpRanges\">\n {arrayHelpers => (\n <>\n {arrayHelpers.form.values.allowedIpRanges.map(\n (allowedIpRange, index) => (\n <div\n className=\"border-border w-full border-b pb-6 last:border-none last:pb-0 md:border-none md:pb-0\"\n key={index}\n >\n <AllowedIpRange\n {...{ allowedIpRange, arrayHelpers, index }}\n key={allowedIpRange.createdAt}\n />\n </div>\n )\n )}\n <Button\n className=\"md:mt-2\"\n data-testid=\"add-allowed-ip-range-button\"\n icon={Plus}\n iconPosition=\"left\"\n label={t(\"neetoMolecules.ipRestriction.addNew\")}\n variant=\"link\"\n onClick={() => arrayHelpers.push(NEW_ALLOWED_IP_RANGE)}\n />\n </>\n )}\n </FieldArray>\n </div>\n </div>\n </div>\n));\n\nexport default memo(AllowedIpRanges);\n","import axios from \"axios\";\n\nimport { IP_RESTRICTIONS_ENGINE_BASE_URL } from \"../constants\";\n\nconst show = params =>\n axios.get(`${IP_RESTRICTIONS_ENGINE_BASE_URL}/current_ip`, { params });\n\nconst currentIpApi = { show };\n\nexport default currentIpApi;\n","import { useQuery } from \"@tanstack/react-query\";\n\nimport currentIpApi from \"../../apis/current_ip\";\nimport { QUERY_KEYS } from \"../../constants\";\n\nconst { CURRENT_IP } = QUERY_KEYS;\n\nconst useShowCurrentIp = () =>\n useQuery({\n queryKey: [CURRENT_IP],\n queryFn: () => currentIpApi.show(),\n });\n\nexport { useShowCurrentIp };\n","import { memo } from \"react\";\n\nimport { Typography } from \"@bigbinary/neeto-atoms\";\nimport { Trans } from \"react-i18next\";\n\nimport { useShowCurrentIp } from \"./hooks/reactQuery/useCurrentIp\";\n\nconst CurrentIp = () => {\n const { data, isLoading } = useShowCurrentIp();\n\n return (\n <div\n className=\"flex flex-wrap items-baseline gap-1\"\n data-testid=\"current-ip-container\"\n >\n <Typography>\n <Trans\n i18nKey=\"neetoMolecules.ipRestriction.currentIpMessage\"\n values={{ ip: isLoading ? \"...\" : data.ip }}\n />\n </Typography>\n </div>\n );\n};\n\nexport default memo(CurrentIp);\n","import axios from \"axios\";\n\nimport { IP_RESTRICTIONS_ENGINE_BASE_URL } from \"../constants\";\n\nconst allowedIpRangesUrl = `${IP_RESTRICTIONS_ENGINE_BASE_URL}/allowed_ips`;\n\nconst fetch = () => axios.get(allowedIpRangesUrl);\n\nconst create = payload =>\n axios.post(allowedIpRangesUrl, { allowedIpRange: payload });\n\nconst destroy = id => axios.delete(`${allowedIpRangesUrl}/${id}`);\n\nconst update = ({ id, payload }) =>\n axios.patch(`${allowedIpRangesUrl}/${id}`, {\n allowedIpRange: payload,\n });\n\nconst allowedIpRangesApi = { fetch, create, destroy, update };\n\nexport default allowedIpRangesApi;\n","import { useQuery } from \"@tanstack/react-query\";\nimport useMutationWithInvalidation from \"neetocommons/v2/react-utils/useMutationWithInvalidation\";\n\nimport allowedIpRangesApi from \"../../apis/allowed_ip_ranges\";\nimport { QUERY_KEYS } from \"../../constants\";\n\nconst { ALLOWED_IP_RANGES } = QUERY_KEYS;\n\nconst useFetchAllowedIpRanges = options =>\n useQuery({\n queryKey: [ALLOWED_IP_RANGES],\n queryFn: () => allowedIpRangesApi.fetch(),\n ...options,\n });\n\nconst useCreateAllowedIpRanges = () =>\n useMutationWithInvalidation(allowedIpRangesApi.create, {\n keysToInvalidate: [[ALLOWED_IP_RANGES]],\n });\n\nconst useDestroyAllowedIpRanges = () =>\n useMutationWithInvalidation(allowedIpRangesApi.destroy, {\n keysToInvalidate: [[ALLOWED_IP_RANGES]],\n });\n\nconst useUpdateAllowedIpRanges = () =>\n useMutationWithInvalidation(allowedIpRangesApi.update, {\n keysToInvalidate: [[ALLOWED_IP_RANGES]],\n });\n\nexport {\n useFetchAllowedIpRanges,\n useCreateAllowedIpRanges,\n useDestroyAllowedIpRanges,\n useUpdateAllowedIpRanges,\n};\n","import axios from \"axios\";\n\nimport { IP_RESTRICTIONS_ENGINE_BASE_URL } from \"../constants\";\n\nconst ipRestrictionUrl = `${IP_RESTRICTIONS_ENGINE_BASE_URL}/ip_restriction`;\n\nconst update = params =>\n axios.patch(ipRestrictionUrl, { ipRestriction: params });\n\nconst show = () => axios.get(ipRestrictionUrl);\n\nconst ipRestrictionApi = { update, show };\n\nexport default ipRestrictionApi;\n","import { useQuery } from \"@tanstack/react-query\";\nimport useMutationWithInvalidation from \"neetocommons/v2/react-utils/useMutationWithInvalidation\";\n\nimport ipRestrictionApi from \"../../apis/ip_restriction\";\nimport { QUERY_KEYS } from \"../../constants\";\n\nconst { IP_RESTRICTION, ALLOWED_IP_RANGES } = QUERY_KEYS;\n\nconst useShowIpRestriction = () =>\n useQuery({\n queryKey: [IP_RESTRICTION],\n queryFn: () => ipRestrictionApi.show(),\n });\n\nconst useUpdateIpRestriction = () =>\n useMutationWithInvalidation(ipRestrictionApi.update, {\n keysToInvalidate: [[IP_RESTRICTION], [ALLOWED_IP_RANGES]],\n });\n\nexport { useShowIpRestriction, useUpdateIpRestriction };\n","import { memo, useState } from \"react\";\n\nimport {\n Alert,\n Button,\n Callout,\n Spinner,\n Typography,\n} from \"@bigbinary/neeto-atoms\";\nimport {\n Form as NeetoUIForm,\n Switch,\n Button as FormikButton,\n BlockNavigation,\n} from \"@bigbinary/neeto-atoms/formik\";\nimport classnames from \"classnames\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport AllowedIpRanges from \"./AllowedIpRanges\";\nimport { VALIDATION_SCHEMA } from \"./constants\";\nimport CurrentIp from \"./CurrentIp\";\nimport { useFetchAllowedIpRanges } from \"./hooks/reactQuery/useAllowedIpRanges\";\nimport {\n useShowIpRestriction,\n useUpdateIpRestriction,\n} from \"./hooks/reactQuery/useIpRestrictions\";\nimport { buildInitialValue, buildIpRestrictionPayload } from \"./utils\";\n\nimport CardLayout from \"../CardLayout\";\n\nconst IpRestriction = () => {\n const { t } = useTranslation();\n const [isAlertOpen, setIsAlertOpen] = useState(false);\n\n const {\n data: { isIpRestrictionEnabled } = {},\n isLoading: isFetchingIpRestriction,\n } = useShowIpRestriction();\n\n const {\n data: allowedIpRanges,\n isLoading: isFetchingAllowedIpRanges,\n isRefetching,\n } = useFetchAllowedIpRanges({ enabled: isIpRestrictionEnabled });\n\n const { mutate: updateIpRestriction, isPending: isUpdating } =\n useUpdateIpRestriction();\n\n if (isFetchingIpRestriction || isFetchingAllowedIpRanges || isRefetching) {\n return (\n <div className=\"flex h-full w-full items-center justify-center\">\n <Spinner />\n </div>\n );\n }\n\n const handleSubmit = (values, formikBag) => {\n if (values.ipRestriction) setIsAlertOpen(true);\n else handleUpdateIpRestriction(values, formikBag);\n };\n\n const handleCloseAlert = setSubmitting => {\n setIsAlertOpen(false);\n setSubmitting(false);\n };\n\n const handleUpdateIpRestriction = (values, { setSubmitting, resetForm }) => {\n updateIpRestriction(buildIpRestrictionPayload(values), {\n onSuccess: () => {\n setIsAlertOpen(false);\n setSubmitting(false);\n resetForm({ values });\n },\n onError: () => {\n setIsAlertOpen(false);\n setSubmitting(false);\n },\n });\n };\n\n return (\n <NeetoUIForm\n className=\"w-full\"\n formikProps={{\n initialValues: buildInitialValue(\n isIpRestrictionEnabled,\n allowedIpRanges\n ),\n validationSchema: VALIDATION_SCHEMA,\n validateOnBlur: true,\n enableReinitialize: true,\n onSubmit: handleSubmit,\n }}\n >\n {({ values, dirty, resetForm, setSubmitting }) => (\n <CardLayout\n actionBlock={\n <div className=\"flex flex-wrap items-center gap-2\">\n <FormikButton\n data-testid=\"ip-restriction-save-changes\"\n loading={isUpdating}\n >\n {t(\"neetoMolecules.common.actions.saveChanges\")}\n </FormikButton>\n <Button\n data-testid=\"ip-restriction-reset-btn\"\n disabled={!dirty}\n label={t(\"neetoMolecules.common.actions.reset\")}\n type=\"reset\"\n variant=\"secondary\"\n onClick={resetForm}\n />\n {dirty && (\n <Typography className=\"text-destructive\" variant=\"body2\">\n {t(\"neetoMolecules.ipRestriction.validations.unsavedChanges\")}\n </Typography>\n )}\n </div>\n }\n >\n <BlockNavigation />\n <div\n className={classnames(\"flex flex-col gap-y-2\", {\n \"pb-6\": values.ipRestriction,\n })}\n >\n <Switch\n className=\"flex-grow-0\"\n data-testid=\"enable-ip-restriction-switch\"\n disabled={isFetchingIpRestriction || isUpdating}\n id=\"ipRestriction\"\n label={t(\"neetoMolecules.ipRestriction.switchLabel\")}\n name=\"ipRestriction\"\n labelProps={{\n className: \"text-[1.75rem] font-semibold leading-tight\",\n }}\n />\n <Typography\n data-testid=\"ip-restriction-description\"\n variant=\"body2\"\n >\n {t(\"neetoMolecules.ipRestriction.description\")}\n </Typography>\n </div>\n {values.ipRestriction && (\n <div className=\"border-border flex w-full flex-col gap-y-6 border-t pt-6\">\n <CurrentIp />\n <AllowedIpRanges />\n <Callout variant=\"warning\">\n <div className=\"py-1 whitespace-pre-wrap\">\n <Trans i18nKey=\"neetoMolecules.ipRestriction.warningMessage\" />\n </div>\n </Callout>\n </div>\n )}\n <Alert\n isOpen={isAlertOpen}\n isSubmitting={isUpdating}\n title={t(\"neetoMolecules.ipRestriction.enableAlert.title\")}\n message={\n <Trans i18nKey=\"neetoMolecules.ipRestriction.enableAlert.message\" />\n }\n submitButtonLabel={t(\n \"neetoMolecules.ipRestriction.enableAlert.submitButtonLabel\"\n )}\n onClose={() => handleCloseAlert(setSubmitting)}\n onSubmit={() =>\n handleUpdateIpRestriction(values, { setSubmitting, resetForm })\n }\n />\n </CardLayout>\n )}\n </NeetoUIForm>\n );\n};\n\nexport default memo(IpRestriction);\n"],"names":["isValidIPv4String","ip","isNotNil","Validator","isValidIPv6String","isValidIpString","areIpAddressesInSameFormat","ipStart","ipEnd","isValidIPv4Range","ipStartAddr","IPv4","fromDecimalDottedString","ipEndAddr","isLessThanOrEquals","isValidIPv6Range","IPv6","fromString","isValidIPRange","yup","addMethod","string","errorMessage","test","value","isNil","isValidIp","createError","path","message","getIpRestrictionValidationSchema","object","shape","validIp","t","required","when","schema","addressType","nullable","buildInitialValue","isIpRestrictionEnabled","allowedIpRanges","ipRestriction","buildIpRestrictionPayload","values","IP_RESTRICTIONS_ENGINE_BASE_URL","QUERY_KEYS","IP_RESTRICTION","ALLOWED_IP_RANGES","CURRENT_IP","ADDRESS_TYPE_SELECT_OPTIONS","label","VALIDATION_SCHEMA","array","of","NEW_ALLOWED_IP_RANGE","createdAt","Date","toISOString","AllowedIpRange","withT","_ref","index","arrayHelpers","_jsxs","className","children","_jsx","Input","labelProps","name","concat","placeholder","Select","options","Button","icon","Trash2","size","variant","tooltipProps","content","position","onClick","remove","AllowedIpRanges","Typography","FieldArray","_Fragment","form","map","allowedIpRange","_createElement","key","Plus","iconPosition","push","memo","show","params","axios","get","currentIpApi","useShowCurrentIp","useQuery","queryKey","queryFn","CurrentIp","_useShowCurrentIp","data","isLoading","Trans","i18nKey","allowedIpRangesUrl","fetch","create","payload","post","destroy","id","update","patch","allowedIpRangesApi","useFetchAllowedIpRanges","_objectSpread","ipRestrictionUrl","ipRestrictionApi","useShowIpRestriction","useUpdateIpRestriction","useMutationWithInvalidation","keysToInvalidate","IpRestriction","_useTranslation","useTranslation","_useState","useState","_useState2","_slicedToArray","isAlertOpen","setIsAlertOpen","_useShowIpRestriction","_useShowIpRestriction2","_useShowIpRestriction3","isFetchingIpRestriction","_useFetchAllowedIpRan","enabled","isFetchingAllowedIpRanges","isRefetching","_useUpdateIpRestricti","updateIpRestriction","mutate","isUpdating","isPending","Spinner","handleSubmit","formikBag","handleUpdateIpRestriction","handleCloseAlert","setSubmitting","resetForm","onSuccess","onError","NeetoUIForm","formikProps","initialValues","validationSchema","validateOnBlur","enableReinitialize","onSubmit","_ref2","dirty","CardLayout","actionBlock","FormikButton","loading","disabled","type","BlockNavigation","classnames","Switch","Callout","Alert","isOpen","isSubmitting","title","submitButtonLabel","onClose"],"mappings":"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"}
1
+ {"version":3,"file":"IpRestriction.js","sources":["../../../src/v2/components/IpRestriction/utils.js","../../../src/v2/components/IpRestriction/constants.js","../../../src/v2/components/IpRestriction/AllowedIpRanges/AllowedIpRange.jsx","../../../src/v2/components/IpRestriction/AllowedIpRanges/index.jsx","../../../src/v2/components/IpRestriction/apis/current_ip.js","../../../src/v2/components/IpRestriction/hooks/reactQuery/useCurrentIp.js","../../../src/v2/components/IpRestriction/CurrentIp.jsx","../../../src/v2/components/IpRestriction/apis/allowed_ip_ranges.js","../../../src/v2/components/IpRestriction/hooks/reactQuery/useAllowedIpRanges.js","../../../src/v2/components/IpRestriction/apis/ip_restriction.js","../../../src/v2/components/IpRestriction/hooks/reactQuery/useIpRestrictions.js","../../../src/v2/components/IpRestriction/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { IPv4, IPv6, Validator } from \"ip-num\";\nimport { isNil, isNotNil } from \"ramda\";\nimport * as yup from \"yup\";\n\nconst isValidIPv4String = ip =>\n isNotNil(ip) && Validator.isValidIPv4String(ip)[0];\n\nconst isValidIPv6String = ip =>\n isNotNil(ip) && Validator.isValidIPv6String(ip)[0];\n\nconst isValidIpString = ip => isValidIPv4String(ip) || isValidIPv6String(ip);\n\nconst areIpAddressesInSameFormat = (ipStart, ipEnd) =>\n (isValidIPv4String(ipStart) && isValidIPv4String(ipEnd)) ||\n (isValidIPv6String(ipStart) && isValidIPv6String(ipEnd));\n\nconst isValidIPv4Range = (ipStart, ipEnd) => {\n const ipStartAddr = IPv4.fromDecimalDottedString(ipStart);\n const ipEndAddr = IPv4.fromDecimalDottedString(ipEnd);\n\n return ipStartAddr.isLessThanOrEquals(ipEndAddr);\n};\n\nconst isValidIPv6Range = (ipStart, ipEnd) => {\n const ipStartAddr = IPv6.fromString(ipStart);\n const ipEndAddr = IPv6.fromString(ipEnd);\n\n return ipStartAddr.isLessThanOrEquals(ipEndAddr);\n};\n\nconst isValidIPRange = (ipStart, ipEnd) => {\n if (isValidIPv4String(ipStart) && isValidIPv4String(ipEnd)) {\n return isValidIPv4Range(ipStart, ipEnd);\n }\n\n if (isValidIPv6String(ipStart) && isValidIPv6String(ipEnd)) {\n return isValidIPv6Range(ipStart, ipEnd);\n }\n\n return false;\n};\n\nyup.addMethod(yup.string, \"validIp\", function (errorMessage) {\n return this.test(\"valid-ip\", errorMessage, function (value) {\n if (isNil(value)) {\n return this;\n }\n\n const isValidIp = isValidIpString(value);\n\n return (\n isValidIp || this.createError({ path: this.path, message: errorMessage })\n );\n });\n});\n\nexport const getIpRestrictionValidationSchema = () =>\n yup.object().shape({\n ipStart: yup\n .string()\n .validIp(t(\"neetoMolecules.ipRestriction.validations.invalidIp\"))\n .required(t(\"neetoMolecules.ipRestriction.validations.ipStartRequired\")),\n ipEnd: yup\n .string()\n .validIp(t(\"neetoMolecules.ipRestriction.validations.invalidIp\"))\n .when(\"ipStart\", (ipStart, schema) =>\n schema.test({\n test: ipEnd => areIpAddressesInSameFormat(ipStart, ipEnd),\n message: t(\n \"neetoMolecules.ipRestriction.validations.eitherIpv4OrIpv6\"\n ),\n })\n )\n .when(\"ipStart\", (ipStart, schema) =>\n schema.test({\n test: ipEnd => isValidIPRange(ipStart, ipEnd),\n message: t(\n \"neetoMolecules.ipRestriction.validations.ipEndGreaterThanIpStart\"\n ),\n })\n )\n .required(t(\"neetoMolecules.ipRestriction.validations.ipEndRequired\")),\n // v2 Select stores the scalar option value (string), not the option object.\n addressType: yup\n .string()\n .nullable()\n .required(\n t(\"neetoMolecules.ipRestriction.validations.addressTypeRequired\")\n ),\n });\n\nexport const buildInitialValue = (isIpRestrictionEnabled, allowedIpRanges) => ({\n ipRestriction: isIpRestrictionEnabled,\n allowedIpRanges,\n});\n\nexport const buildIpRestrictionPayload = values => ({\n isIpRestrictionEnabled: values.ipRestriction,\n allowedIpRanges: values.allowedIpRanges,\n});\n","import { t } from \"i18next\";\nimport * as yup from \"yup\";\n\nimport { getIpRestrictionValidationSchema } from \"./utils\";\n\nexport const IP_RESTRICTIONS_ENGINE_BASE_URL = \"/neeto_ip_restrictions/api/v1\";\n\nexport const QUERY_KEYS = {\n IP_RESTRICTION: \"IP_RESTRICTION\",\n ALLOWED_IP_RANGES: \"ALLOWED_IP_RANGES\",\n CURRENT_IP: \"CURRENT_IP\",\n};\n\nexport const TRUNCATE_LENGTH = 18;\n\nexport const ADDRESS_TYPE_SELECT_OPTIONS = [\n { label: t(\"neetoMolecules.ipRestriction.ipv4\"), value: \"ipv4\" },\n { label: t(\"neetoMolecules.ipRestriction.ipv6\"), value: \"ipv6\" },\n];\n\nexport const INITIAL_VALUES = {\n ipStart: \"\",\n ipEnd: \"\",\n addressType: ADDRESS_TYPE_SELECT_OPTIONS[0].value,\n};\n\nexport const VALIDATION_SCHEMA = yup.object().shape({\n ipRestriction: yup.boolean(),\n allowedIpRanges: yup.array().of(getIpRestrictionValidationSchema()),\n});\n\nexport const NEW_ALLOWED_IP_RANGE = {\n ipStart: \"\",\n ipEnd: \"\",\n addressType: null,\n createdAt: new Date().toISOString(),\n};\n","import { Button, Label } from \"@bigbinary/neeto-atoms\";\nimport { Input, Select } from \"@bigbinary/neeto-atoms/formik\";\nimport { Trash2 } from \"lucide-react\";\nimport { withT } from \"neetocommons/v2/react-utils\";\n\nimport { ADDRESS_TYPE_SELECT_OPTIONS } from \"../constants\";\n\n// The fields render their own mobile-only labels instead of passing `label`\n// to the atoms fields: a labelled atoms field keeps its (empty) label row in\n// the flow on desktop, and the field column's gap pushes the control 8px\n// below the row top, misaligning it with the delete button.\nconst AllowedIpRange = withT(({ t, index, arrayHelpers }) => (\n <div className=\"border-border relative flex items-start gap-3 rounded-lg border p-4 pe-14 md:static md:rounded-none md:border-none md:p-0 md:pe-0\">\n <div className=\"grid flex-grow grid-cols-1 gap-3 md:grid-cols-3\">\n <div className=\"flex flex-col gap-2\">\n <Label className=\"md:hidden\">\n {t(\"neetoMolecules.ipRestriction.ipStart\")}\n </Label>\n <Input\n aria-label={t(\"neetoMolecules.ipRestriction.ipStart\")}\n className=\"text-start\"\n data-testid=\"ip-start-text-field\"\n name={`allowedIpRanges.${index}.ipStart`}\n placeholder={t(\"neetoMolecules.ipRestriction.ipStart\")}\n />\n </div>\n <div className=\"flex flex-col gap-2\">\n <Label className=\"md:hidden\">\n {t(\"neetoMolecules.ipRestriction.ipEnd\")}\n </Label>\n <Input\n aria-label={t(\"neetoMolecules.ipRestriction.ipEnd\")}\n className=\"text-start\"\n data-testid=\"ip-end-text-field\"\n name={`allowedIpRanges.${index}.ipEnd`}\n placeholder={t(\"neetoMolecules.ipRestriction.ipEnd\")}\n />\n </div>\n <div className=\"flex flex-col gap-2\">\n <Label className=\"md:hidden\">\n {t(\"neetoMolecules.ipRestriction.type\")}\n </Label>\n <Select\n aria-label={t(\"neetoMolecules.ipRestriction.type\")}\n className=\"text-start\"\n data-testid=\"address-type-select-field\"\n name={`allowedIpRanges.${index}.addressType`}\n options={ADDRESS_TYPE_SELECT_OPTIONS}\n />\n </div>\n </div>\n <div className=\"absolute end-3 top-3 md:static md:flex md:min-w-14 md:flex-shrink-0 md:justify-center\">\n <Button\n data-testid=\"allowed-ip-range-delete-button\"\n icon={Trash2}\n size=\"icon\"\n variant=\"ghost\"\n tooltipProps={{\n content: t(\"neetoMolecules.common.actions.discard\"),\n position: \"top\",\n }}\n onClick={() => arrayHelpers.remove(index)}\n />\n </div>\n </div>\n));\n\nexport default AllowedIpRange;\n","import { memo } from \"react\";\n\nimport { Button, Typography } from \"@bigbinary/neeto-atoms\";\nimport { FieldArray } from \"formik\";\nimport { Plus } from \"lucide-react\";\nimport { withT } from \"neetocommons/v2/react-utils\";\n\nimport AllowedIpRange from \"./AllowedIpRange\";\n\nimport { NEW_ALLOWED_IP_RANGE } from \"../constants\";\n\nconst AllowedIpRanges = withT(({ t }) => (\n <div\n className=\"flex flex-col gap-y-5\"\n data-testid=\"allowed-ip-range-container\"\n >\n <Typography data-testid=\"allowed-ip-range-heading\" variant=\"h6\">\n {t(\"neetoMolecules.ipRestriction.allowedIpRangeTitle\")}\n </Typography>\n <div className=\"flex flex-col gap-y-3\">\n <div className=\"hidden gap-3 md:flex\">\n <div className=\"grid flex-grow grid-cols-3 gap-3\">\n <Typography\n className=\"uppercase\"\n color=\"muted\"\n variant=\"caption\"\n weight=\"bold\"\n >\n {t(\"neetoMolecules.ipRestriction.ipStart\")}*\n </Typography>\n <Typography\n className=\"uppercase\"\n color=\"muted\"\n variant=\"caption\"\n weight=\"bold\"\n >\n {t(\"neetoMolecules.ipRestriction.ipEnd\")}*\n </Typography>\n <Typography\n className=\"uppercase\"\n color=\"muted\"\n variant=\"caption\"\n weight=\"bold\"\n >\n {t(\"neetoMolecules.ipRestriction.type\")}*\n </Typography>\n </div>\n <div className=\"min-w-14 flex-shrink-0\">\n <Typography\n className=\"text-center uppercase\"\n color=\"muted\"\n variant=\"caption\"\n weight=\"bold\"\n >\n {t(\"neetoMolecules.ipRestriction.actions\")}\n </Typography>\n </div>\n </div>\n <div className=\"flex w-full flex-col gap-y-6 md:gap-y-4\">\n <FieldArray name=\"allowedIpRanges\">\n {arrayHelpers => (\n <>\n {arrayHelpers.form.values.allowedIpRanges.map(\n (allowedIpRange, index) => (\n <div className=\"w-full\" key={index}>\n <AllowedIpRange\n {...{ allowedIpRange, arrayHelpers, index }}\n key={allowedIpRange.createdAt}\n />\n </div>\n )\n )}\n <Button\n className=\"self-start md:mt-2\"\n data-testid=\"add-allowed-ip-range-button\"\n icon={Plus}\n iconPosition=\"left\"\n label={t(\"neetoMolecules.ipRestriction.addNew\")}\n variant=\"link\"\n onClick={() => arrayHelpers.push(NEW_ALLOWED_IP_RANGE)}\n />\n </>\n )}\n </FieldArray>\n </div>\n </div>\n </div>\n));\n\nexport default memo(AllowedIpRanges);\n","import axios from \"axios\";\n\nimport { IP_RESTRICTIONS_ENGINE_BASE_URL } from \"../constants\";\n\nconst show = params =>\n axios.get(`${IP_RESTRICTIONS_ENGINE_BASE_URL}/current_ip`, { params });\n\nconst currentIpApi = { show };\n\nexport default currentIpApi;\n","import { useQuery } from \"@tanstack/react-query\";\n\nimport currentIpApi from \"../../apis/current_ip\";\nimport { QUERY_KEYS } from \"../../constants\";\n\nconst { CURRENT_IP } = QUERY_KEYS;\n\nconst useShowCurrentIp = () =>\n useQuery({\n queryKey: [CURRENT_IP],\n queryFn: () => currentIpApi.show(),\n });\n\nexport { useShowCurrentIp };\n","import { memo } from \"react\";\n\nimport { Typography } from \"@bigbinary/neeto-atoms\";\nimport { Trans } from \"react-i18next\";\n\nimport { useShowCurrentIp } from \"./hooks/reactQuery/useCurrentIp\";\n\nconst CurrentIp = () => {\n const { data, isLoading } = useShowCurrentIp();\n\n return (\n <div\n className=\"flex flex-wrap items-baseline gap-1\"\n data-testid=\"current-ip-container\"\n >\n <Typography>\n <Trans\n i18nKey=\"neetoMolecules.ipRestriction.currentIpMessage\"\n values={{ ip: isLoading ? \"...\" : data.ip }}\n />\n </Typography>\n </div>\n );\n};\n\nexport default memo(CurrentIp);\n","import axios from \"axios\";\n\nimport { IP_RESTRICTIONS_ENGINE_BASE_URL } from \"../constants\";\n\nconst allowedIpRangesUrl = `${IP_RESTRICTIONS_ENGINE_BASE_URL}/allowed_ips`;\n\nconst fetch = () => axios.get(allowedIpRangesUrl);\n\nconst create = payload =>\n axios.post(allowedIpRangesUrl, { allowedIpRange: payload });\n\nconst destroy = id => axios.delete(`${allowedIpRangesUrl}/${id}`);\n\nconst update = ({ id, payload }) =>\n axios.patch(`${allowedIpRangesUrl}/${id}`, {\n allowedIpRange: payload,\n });\n\nconst allowedIpRangesApi = { fetch, create, destroy, update };\n\nexport default allowedIpRangesApi;\n","import { useQuery } from \"@tanstack/react-query\";\nimport useMutationWithInvalidation from \"neetocommons/v2/react-utils/useMutationWithInvalidation\";\n\nimport allowedIpRangesApi from \"../../apis/allowed_ip_ranges\";\nimport { QUERY_KEYS } from \"../../constants\";\n\nconst { ALLOWED_IP_RANGES } = QUERY_KEYS;\n\nconst useFetchAllowedIpRanges = options =>\n useQuery({\n queryKey: [ALLOWED_IP_RANGES],\n queryFn: () => allowedIpRangesApi.fetch(),\n ...options,\n });\n\nconst useCreateAllowedIpRanges = () =>\n useMutationWithInvalidation(allowedIpRangesApi.create, {\n keysToInvalidate: [[ALLOWED_IP_RANGES]],\n });\n\nconst useDestroyAllowedIpRanges = () =>\n useMutationWithInvalidation(allowedIpRangesApi.destroy, {\n keysToInvalidate: [[ALLOWED_IP_RANGES]],\n });\n\nconst useUpdateAllowedIpRanges = () =>\n useMutationWithInvalidation(allowedIpRangesApi.update, {\n keysToInvalidate: [[ALLOWED_IP_RANGES]],\n });\n\nexport {\n useFetchAllowedIpRanges,\n useCreateAllowedIpRanges,\n useDestroyAllowedIpRanges,\n useUpdateAllowedIpRanges,\n};\n","import axios from \"axios\";\n\nimport { IP_RESTRICTIONS_ENGINE_BASE_URL } from \"../constants\";\n\nconst ipRestrictionUrl = `${IP_RESTRICTIONS_ENGINE_BASE_URL}/ip_restriction`;\n\nconst update = params =>\n axios.patch(ipRestrictionUrl, { ipRestriction: params });\n\nconst show = () => axios.get(ipRestrictionUrl);\n\nconst ipRestrictionApi = { update, show };\n\nexport default ipRestrictionApi;\n","import { useQuery } from \"@tanstack/react-query\";\nimport useMutationWithInvalidation from \"neetocommons/v2/react-utils/useMutationWithInvalidation\";\n\nimport ipRestrictionApi from \"../../apis/ip_restriction\";\nimport { QUERY_KEYS } from \"../../constants\";\n\nconst { IP_RESTRICTION, ALLOWED_IP_RANGES } = QUERY_KEYS;\n\nconst useShowIpRestriction = () =>\n useQuery({\n queryKey: [IP_RESTRICTION],\n queryFn: () => ipRestrictionApi.show(),\n });\n\nconst useUpdateIpRestriction = () =>\n useMutationWithInvalidation(ipRestrictionApi.update, {\n keysToInvalidate: [[IP_RESTRICTION], [ALLOWED_IP_RANGES]],\n });\n\nexport { useShowIpRestriction, useUpdateIpRestriction };\n","import { memo, useState } from \"react\";\n\nimport {\n Alert,\n Button,\n Callout,\n Spinner,\n Typography,\n} from \"@bigbinary/neeto-atoms\";\nimport {\n Form as NeetoUIForm,\n Switch,\n Button as FormikButton,\n BlockNavigation,\n} from \"@bigbinary/neeto-atoms/formik\";\nimport classnames from \"classnames\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport AllowedIpRanges from \"./AllowedIpRanges\";\nimport { VALIDATION_SCHEMA } from \"./constants\";\nimport CurrentIp from \"./CurrentIp\";\nimport { useFetchAllowedIpRanges } from \"./hooks/reactQuery/useAllowedIpRanges\";\nimport {\n useShowIpRestriction,\n useUpdateIpRestriction,\n} from \"./hooks/reactQuery/useIpRestrictions\";\nimport { buildInitialValue, buildIpRestrictionPayload } from \"./utils\";\n\nimport CardLayout from \"../CardLayout\";\n\nconst NoIcon = () => null;\n\nconst IpRestriction = () => {\n const { t } = useTranslation();\n const [isAlertOpen, setIsAlertOpen] = useState(false);\n\n const {\n data: { isIpRestrictionEnabled } = {},\n isLoading: isFetchingIpRestriction,\n } = useShowIpRestriction();\n\n const {\n data: allowedIpRanges,\n isLoading: isFetchingAllowedIpRanges,\n isRefetching,\n } = useFetchAllowedIpRanges({ enabled: isIpRestrictionEnabled });\n\n const { mutate: updateIpRestriction, isPending: isUpdating } =\n useUpdateIpRestriction();\n\n if (isFetchingIpRestriction || isFetchingAllowedIpRanges || isRefetching) {\n return (\n <div className=\"flex h-full w-full items-center justify-center\">\n <Spinner />\n </div>\n );\n }\n\n const handleSubmit = (values, formikBag) => {\n if (values.ipRestriction) setIsAlertOpen(true);\n else handleUpdateIpRestriction(values, formikBag);\n };\n\n const handleCloseAlert = setSubmitting => {\n setIsAlertOpen(false);\n setSubmitting(false);\n };\n\n const handleUpdateIpRestriction = (values, { setSubmitting, resetForm }) => {\n updateIpRestriction(buildIpRestrictionPayload(values), {\n onSuccess: () => {\n setIsAlertOpen(false);\n setSubmitting(false);\n resetForm({ values });\n },\n onError: () => {\n setIsAlertOpen(false);\n setSubmitting(false);\n },\n });\n };\n\n return (\n <NeetoUIForm\n className=\"w-full\"\n formikProps={{\n initialValues: buildInitialValue(\n isIpRestrictionEnabled,\n allowedIpRanges\n ),\n validationSchema: VALIDATION_SCHEMA,\n validateOnBlur: true,\n enableReinitialize: true,\n onSubmit: handleSubmit,\n }}\n >\n {({ values, dirty, resetForm, setSubmitting }) => (\n <CardLayout\n actionBlock={\n <div className=\"flex flex-wrap items-center gap-2\">\n <FormikButton\n data-testid=\"ip-restriction-save-changes\"\n loading={isUpdating}\n >\n {t(\"neetoMolecules.common.actions.saveChanges\")}\n </FormikButton>\n <Button\n data-testid=\"ip-restriction-reset-btn\"\n disabled={!dirty}\n label={t(\"neetoMolecules.common.actions.reset\")}\n type=\"reset\"\n variant=\"secondary\"\n onClick={resetForm}\n />\n {dirty && (\n <Typography color=\"destructive\" variant=\"body2\">\n {t(\"neetoMolecules.ipRestriction.validations.unsavedChanges\")}\n </Typography>\n )}\n </div>\n }\n >\n <BlockNavigation />\n <div\n className={classnames(\"flex flex-col gap-y-2\", {\n \"pb-6\": values.ipRestriction,\n })}\n >\n <Switch\n className=\"flex-grow-0\"\n data-testid=\"enable-ip-restriction-switch\"\n disabled={isFetchingIpRestriction || isUpdating}\n id=\"ipRestriction\"\n label={t(\"neetoMolecules.ipRestriction.switchLabel\")}\n name=\"ipRestriction\"\n size=\"lg\"\n labelProps={{\n className: \"text-xl font-semibold leading-tight\",\n }}\n />\n <Typography\n data-testid=\"ip-restriction-description\"\n variant=\"body2\"\n >\n {t(\"neetoMolecules.ipRestriction.description\")}\n </Typography>\n </div>\n {values.ipRestriction && (\n <div className=\"border-border flex w-full flex-col gap-y-6 border-t pt-6\">\n <CurrentIp />\n <AllowedIpRanges />\n <Callout icon={NoIcon} variant=\"warning\">\n <div className=\"py-1 whitespace-pre-wrap\">\n <Trans i18nKey=\"neetoMolecules.ipRestriction.warningMessage\" />\n </div>\n </Callout>\n </div>\n )}\n <Alert\n isOpen={isAlertOpen}\n isSubmitting={isUpdating}\n title={t(\"neetoMolecules.ipRestriction.enableAlert.title\")}\n message={\n <Trans i18nKey=\"neetoMolecules.ipRestriction.enableAlert.message\" />\n }\n submitButtonLabel={t(\n \"neetoMolecules.ipRestriction.enableAlert.submitButtonLabel\"\n )}\n onClose={() => handleCloseAlert(setSubmitting)}\n onSubmit={() =>\n handleUpdateIpRestriction(values, { setSubmitting, resetForm })\n }\n />\n </CardLayout>\n )}\n </NeetoUIForm>\n );\n};\n\nexport default memo(IpRestriction);\n"],"names":["isValidIPv4String","ip","isNotNil","Validator","isValidIPv6String","isValidIpString","areIpAddressesInSameFormat","ipStart","ipEnd","isValidIPv4Range","ipStartAddr","IPv4","fromDecimalDottedString","ipEndAddr","isLessThanOrEquals","isValidIPv6Range","IPv6","fromString","isValidIPRange","yup","addMethod","string","errorMessage","test","value","isNil","isValidIp","createError","path","message","getIpRestrictionValidationSchema","object","shape","validIp","t","required","when","schema","addressType","nullable","buildInitialValue","isIpRestrictionEnabled","allowedIpRanges","ipRestriction","buildIpRestrictionPayload","values","IP_RESTRICTIONS_ENGINE_BASE_URL","QUERY_KEYS","IP_RESTRICTION","ALLOWED_IP_RANGES","CURRENT_IP","ADDRESS_TYPE_SELECT_OPTIONS","label","VALIDATION_SCHEMA","array","of","NEW_ALLOWED_IP_RANGE","createdAt","Date","toISOString","AllowedIpRange","withT","_ref","index","arrayHelpers","_jsxs","className","children","_jsx","Label","Input","name","concat","placeholder","Select","options","Button","icon","Trash2","size","variant","tooltipProps","content","position","onClick","remove","AllowedIpRanges","Typography","color","weight","FieldArray","_Fragment","form","map","allowedIpRange","_createElement","key","Plus","iconPosition","push","memo","show","params","axios","get","currentIpApi","useShowCurrentIp","useQuery","queryKey","queryFn","CurrentIp","_useShowCurrentIp","data","isLoading","Trans","i18nKey","allowedIpRangesUrl","fetch","create","payload","post","destroy","id","update","patch","allowedIpRangesApi","useFetchAllowedIpRanges","_objectSpread","ipRestrictionUrl","ipRestrictionApi","useShowIpRestriction","useUpdateIpRestriction","useMutationWithInvalidation","keysToInvalidate","NoIcon","IpRestriction","_useTranslation","useTranslation","_useState","useState","_useState2","_slicedToArray","isAlertOpen","setIsAlertOpen","_useShowIpRestriction","_useShowIpRestriction2","_useShowIpRestriction3","isFetchingIpRestriction","_useFetchAllowedIpRan","enabled","isFetchingAllowedIpRanges","isRefetching","_useUpdateIpRestricti","updateIpRestriction","mutate","isUpdating","isPending","Spinner","handleSubmit","formikBag","handleUpdateIpRestriction","handleCloseAlert","setSubmitting","resetForm","onSuccess","onError","NeetoUIForm","formikProps","initialValues","validationSchema","validateOnBlur","enableReinitialize","onSubmit","_ref2","dirty","CardLayout","actionBlock","FormikButton","loading","disabled","type","BlockNavigation","classnames","Switch","labelProps","Callout","Alert","isOpen","isSubmitting","title","submitButtonLabel","onClose"],"mappings":"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"}
@@ -90,14 +90,18 @@ var AddAction = function AddAction(_ref) {
90
90
  align: "end",
91
91
  side: "bottom"
92
92
  },
93
- customTarget: /*#__PURE__*/jsxRuntime.jsx("button", {
94
- className: "text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-sidebar-ring absolute end-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden focus-visible:ring-2 md:opacity-0 md:group-focus-within/menu-item:opacity-100 md:group-hover/menu-item:opacity-100",
93
+ customTarget: /*#__PURE__*/jsxRuntime.jsx("span", {
94
+ className: "text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-sidebar-ring md:data-[state=open]:bg-sidebar-accent flex aspect-square w-5 shrink-0 cursor-pointer items-center justify-center rounded-md outline-hidden focus-visible:ring-2 md:opacity-0 md:group-focus-within/menu-item:opacity-100 md:group-hover/menu-item:opacity-100 md:data-[state=open]:opacity-100",
95
95
  "data-testid": "add-dropdown-trigger",
96
+ role: "button",
97
+ tabIndex: 0,
96
98
  onClick: function onClick(e) {
97
99
  e.preventDefault();
98
100
  e.stopPropagation();
99
101
  },
100
- children: /*#__PURE__*/jsxRuntime.jsx(plus.Plus, {})
102
+ children: /*#__PURE__*/jsxRuntime.jsx(plus.Plus, {
103
+ className: "size-4"
104
+ })
101
105
  }),
102
106
  children: actions.map(function (action) {
103
107
  return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.DropdownMenu.MenuItem, {
@@ -328,8 +332,8 @@ var NavLinks = function NavLinks(_ref) {
328
332
  });
329
333
  };
330
334
  return /*#__PURE__*/jsxRuntime.jsxs(React.Fragment, {
331
- children: [/*#__PURE__*/jsxRuntime.jsxs(primitives.SidebarMenuItem, {
332
- children: [/*#__PURE__*/jsxRuntime.jsx(primitives.SidebarMenuButton, {
335
+ children: [/*#__PURE__*/jsxRuntime.jsx(primitives.SidebarMenuItem, {
336
+ children: /*#__PURE__*/jsxRuntime.jsx(primitives.SidebarMenuButton, {
333
337
  asChild: true,
334
338
  className: "h-10",
335
339
  isActive: isActive(),
@@ -359,22 +363,25 @@ var NavLinks = function NavLinks(_ref) {
359
363
  }), /*#__PURE__*/jsxRuntime.jsx("span", {
360
364
  className: "flex-grow truncate",
361
365
  children: label
362
- }), tag && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Badge, _objectSpread({}, tag)), isExpandable && !isConfigureNavLink && /*#__PURE__*/jsxRuntime.jsx("span", {
363
- className: "ms-auto shrink-0 transition-transform duration-200",
364
- role: "button",
365
- tabIndex: -1,
366
- style: {
367
- transform: isMenuExpanded ? "rotate(90deg)" : "rotate(0deg)"
368
- },
369
- onClick: handleCaretClick,
370
- children: /*#__PURE__*/jsxRuntime.jsx(chevronRight.ChevronRight, {
371
- className: "rtl:rotate-180"
372
- })
366
+ }), tag && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Badge, _objectSpread({}, tag)), (neetoCist.isNotEmpty(addActions) || isExpandable && !isConfigureNavLink) && /*#__PURE__*/jsxRuntime.jsxs("span", {
367
+ className: "ms-auto flex shrink-0 items-center gap-0.5",
368
+ children: [neetoCist.isNotEmpty(addActions) && /*#__PURE__*/jsxRuntime.jsx(AddAction, {
369
+ actions: addActions
370
+ }), isExpandable && !isConfigureNavLink && /*#__PURE__*/jsxRuntime.jsx("span", {
371
+ className: "shrink-0 transition-transform duration-200",
372
+ role: "button",
373
+ tabIndex: -1,
374
+ style: {
375
+ transform: isMenuExpanded ? "rotate(90deg)" : "rotate(0deg)"
376
+ },
377
+ onClick: handleCaretClick,
378
+ children: /*#__PURE__*/jsxRuntime.jsx(chevronRight.ChevronRight, {
379
+ className: "rtl:rotate-180"
380
+ })
381
+ })]
373
382
  })]
374
383
  }))
375
- }), neetoCist.isNotEmpty(addActions) && /*#__PURE__*/jsxRuntime.jsx(AddAction, {
376
- actions: addActions
377
- })]
384
+ })
378
385
  }), isExpandable && !isConfigureNavLink && isMenuExpanded && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
379
386
  children: [items && /*#__PURE__*/jsxRuntime.jsx(primitives.SidebarMenuSub, {
380
387
  children: items.filter(ConfigureView.filterByPermissions).map(function (subItem, subIndex) {