@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.
- package/dist/cjs/v2/IpRestriction.js +64 -43
- package/dist/cjs/v2/IpRestriction.js.map +1 -1
- package/dist/cjs/v2/Sidebar.js +26 -19
- package/dist/cjs/v2/Sidebar.js.map +1 -1
- package/dist/v2/IpRestriction.js +65 -44
- package/dist/v2/IpRestriction.js.map +1 -1
- package/dist/v2/Sidebar.js +27 -20
- package/dist/v2/Sidebar.js.map +1 -1
- package/package.json +1 -1
|
@@ -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.
|
|
160
|
-
className: "
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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: "
|
|
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: "
|
|
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: "
|
|
224
|
-
|
|
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: "
|
|
228
|
-
|
|
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: "
|
|
232
|
-
|
|
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-
|
|
239
|
-
|
|
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: "
|
|
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
|
-
|
|
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-
|
|
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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"}
|
package/dist/cjs/v2/Sidebar.js
CHANGED
|
@@ -90,14 +90,18 @@ var AddAction = function AddAction(_ref) {
|
|
|
90
90
|
align: "end",
|
|
91
91
|
side: "bottom"
|
|
92
92
|
},
|
|
93
|
-
customTarget: /*#__PURE__*/jsxRuntime.jsx("
|
|
94
|
-
className: "text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-sidebar-ring
|
|
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.
|
|
332
|
-
children:
|
|
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.
|
|
363
|
-
className: "ms-auto shrink-0
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
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
|
-
})
|
|
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) {
|