@bigbinary/neeto-molecules 1.19.10 → 1.19.12
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/README.md +0 -2
- package/dist/Breadcrumbs.js +1 -1
- package/dist/Builder.js +5 -1
- package/dist/Builder.js.map +1 -1
- package/dist/CalendarView.js +8 -2
- package/dist/CalendarView.js.map +1 -1
- package/dist/{Chevron-c639aa31.js → Chevron-fe44fbdd.js} +2 -2
- package/dist/{Chevron-c639aa31.js.map → Chevron-fe44fbdd.js.map} +1 -1
- package/dist/Codeblock.js +1 -1
- package/dist/Columns.js +6 -2
- package/dist/Columns.js.map +1 -1
- package/dist/ConfigurePageSidebar.js +3 -2
- package/dist/ConfigurePageSidebar.js.map +1 -1
- package/dist/ConfirmationModal.js +5 -2
- package/dist/ConfirmationModal.js.map +1 -1
- package/dist/CopyToClipboardButton.js +1 -1
- package/dist/Currency.js +2 -2
- package/dist/CustomDomain.js +13 -3
- package/dist/CustomDomain.js.map +1 -1
- package/dist/CustomDomainDashboard.js +16 -4
- package/dist/CustomDomainDashboard.js.map +1 -1
- package/dist/DateFormat.js +2 -1
- package/dist/DateFormat.js.map +1 -1
- package/dist/DateRangeFilter.js +2 -1
- package/dist/DateRangeFilter.js.map +1 -1
- package/dist/DeleteArchiveModal.js +4 -1
- package/dist/DeleteArchiveModal.js.map +1 -1
- package/dist/DocumentEditor.js +2 -2
- package/dist/DownloadMobileAppCallout.js +1 -1
- package/dist/DynamicVariables.js +2 -1
- package/dist/DynamicVariables.js.map +1 -1
- package/dist/EmailForm.js +16 -4
- package/dist/EmailForm.js.map +1 -1
- package/dist/EmailPreview.js +11 -8
- package/dist/EmailPreview.js.map +1 -1
- package/dist/EmojiPicker.js +1 -1
- package/dist/EmojiReactions.js +2 -1
- package/dist/EmojiReactions.js.map +1 -1
- package/dist/ErrorPage.js +2 -1
- package/dist/ErrorPage.js.map +1 -1
- package/dist/FloatingActionMenu.js +8 -1
- package/dist/FloatingActionMenu.js.map +1 -1
- package/dist/Header.js +5 -1
- package/dist/Header.js.map +1 -1
- package/dist/HelpPopover.js +3 -1
- package/dist/HelpPopover.js.map +1 -1
- package/dist/IconPicker.js +6 -1
- package/dist/IconPicker.js.map +1 -1
- package/dist/InlineInput.js +2 -1
- package/dist/InlineInput.js.map +1 -1
- package/dist/Insights.js +6 -1
- package/dist/Insights.js.map +1 -1
- package/dist/IntegrationCard.js +6 -1
- package/dist/IntegrationCard.js.map +1 -1
- package/dist/IntegrationDisconnectAlert.js +1 -1
- package/dist/IntegrationWalkthroughModal.js +3 -1
- package/dist/IntegrationWalkthroughModal.js.map +1 -1
- package/dist/IpRestriction.js +10 -2
- package/dist/IpRestriction.js.map +1 -1
- package/dist/KeyboardShortcuts.js +3 -1
- package/dist/KeyboardShortcuts.js.map +1 -1
- package/dist/LoginPage.js +5 -2
- package/dist/LoginPage.js.map +1 -1
- package/dist/MadeWith.js +2 -2
- package/dist/MadeWith.js.map +1 -1
- package/dist/MenuBar.js +3 -1
- package/dist/MenuBar.js.map +1 -1
- package/dist/Metadata.js +2 -1
- package/dist/Metadata.js.map +1 -1
- package/dist/MoreDropdown.js +3 -1
- package/dist/MoreDropdown.js.map +1 -1
- package/dist/NavigationHeader.js +6 -1
- package/dist/NavigationHeader.js.map +1 -1
- package/dist/NeetoWidget.js +11 -2
- package/dist/NeetoWidget.js.map +1 -1
- package/dist/Onboarding.js +3 -1
- package/dist/Onboarding.js.map +1 -1
- package/dist/OptionFields.js +5 -1
- package/dist/OptionFields.js.map +1 -1
- package/dist/PageLoader.js +1 -1
- package/dist/PhoneNumber.js +4 -1
- package/dist/PhoneNumber.js.map +1 -1
- package/dist/ProductEmbed.js +11 -1
- package/dist/ProductEmbed.js.map +1 -1
- package/dist/PublishBlock.js +3 -1
- package/dist/PublishBlock.js.map +1 -1
- package/dist/PublishYourItem.js +1 -1
- package/dist/Rename.js +5 -1
- package/dist/Rename.js.map +1 -1
- package/dist/ResponsiveDevicePicker.js +1 -1
- package/dist/Schedule.js +8 -2
- package/dist/Schedule.js.map +1 -1
- package/dist/Search.js +1 -1
- package/dist/SendToFields.js +6 -2
- package/dist/SendToFields.js.map +1 -1
- package/dist/Settings.js +7 -1
- package/dist/Settings.js.map +1 -1
- package/dist/ShareRecordingPane.js +7 -1
- package/dist/ShareRecordingPane.js.map +1 -1
- package/dist/ShareViaEmail.js +14 -2
- package/dist/ShareViaEmail.js.map +1 -1
- package/dist/ShareViaLink.js +9 -2
- package/dist/ShareViaLink.js.map +1 -1
- package/dist/Sidebar.js +3 -2
- package/dist/Sidebar.js.map +1 -1
- package/dist/StickyRibbonsContainer.js +1 -1
- package/dist/SubHeader.js +7 -2
- package/dist/SubHeader.js.map +1 -1
- package/dist/SuffixedInput.js +2 -2
- package/dist/Taxonomy.js +16 -3
- package/dist/Taxonomy.js.map +1 -1
- package/dist/TimeFormat.js +2 -1
- package/dist/TimeFormat.js.map +1 -1
- package/dist/TimezoneMismatchModal.js +3 -1
- package/dist/TimezoneMismatchModal.js.map +1 -1
- package/dist/ToggleFeatureCard.js +6 -2
- package/dist/ToggleFeatureCard.js.map +1 -1
- package/dist/cjs/Breadcrumbs.js +3 -2
- package/dist/cjs/Breadcrumbs.js.map +1 -1
- package/dist/cjs/Builder.js +21 -14
- package/dist/cjs/Builder.js.map +1 -1
- package/dist/cjs/CalendarView.js +22 -12
- package/dist/cjs/CalendarView.js.map +1 -1
- package/dist/cjs/{Chevron-5fe59f57.js → Chevron-37ef38ee.js} +6 -5
- package/dist/cjs/{Chevron-5fe59f57.js.map → Chevron-37ef38ee.js.map} +1 -1
- package/dist/cjs/Codeblock.js +1 -1
- package/dist/cjs/Columns.js +6 -2
- package/dist/cjs/Columns.js.map +1 -1
- package/dist/cjs/ConfigurePageSidebar.js +5 -3
- package/dist/cjs/ConfigurePageSidebar.js.map +1 -1
- package/dist/cjs/ConfirmationModal.js +17 -9
- package/dist/cjs/ConfirmationModal.js.map +1 -1
- package/dist/cjs/CopyToClipboardButton.js +3 -2
- package/dist/cjs/CopyToClipboardButton.js.map +1 -1
- package/dist/cjs/Currency.js +6 -4
- package/dist/cjs/Currency.js.map +1 -1
- package/dist/cjs/CustomDomain.js +19 -6
- package/dist/cjs/CustomDomain.js.map +1 -1
- package/dist/cjs/CustomDomainDashboard.js +25 -9
- package/dist/cjs/CustomDomainDashboard.js.map +1 -1
- package/dist/cjs/DateFormat.js +6 -3
- package/dist/cjs/DateFormat.js.map +1 -1
- package/dist/cjs/DateRangeFilter.js +6 -3
- package/dist/cjs/DateRangeFilter.js.map +1 -1
- package/dist/cjs/DeleteArchiveModal.js +15 -8
- package/dist/cjs/DeleteArchiveModal.js.map +1 -1
- package/dist/cjs/DocumentEditor.js +6 -4
- package/dist/cjs/DocumentEditor.js.map +1 -1
- package/dist/cjs/DownloadMobileAppCallout.js +3 -2
- package/dist/cjs/DownloadMobileAppCallout.js.map +1 -1
- package/dist/cjs/DynamicVariables.js +7 -4
- package/dist/cjs/DynamicVariables.js.map +1 -1
- package/dist/cjs/EmailForm.js +32 -13
- package/dist/cjs/EmailForm.js.map +1 -1
- package/dist/cjs/EmailPreview.js +20 -15
- package/dist/cjs/EmailPreview.js.map +1 -1
- package/dist/cjs/EmojiPicker.js +3 -2
- package/dist/cjs/EmojiPicker.js.map +1 -1
- package/dist/cjs/EmojiReactions.js +6 -3
- package/dist/cjs/EmojiReactions.js.map +1 -1
- package/dist/cjs/ErrorPage.js +8 -5
- package/dist/cjs/ErrorPage.js.map +1 -1
- package/dist/cjs/FloatingActionMenu.js +40 -27
- package/dist/cjs/FloatingActionMenu.js.map +1 -1
- package/dist/cjs/Header.js +7 -2
- package/dist/cjs/Header.js.map +1 -1
- package/dist/cjs/HelpPopover.js +11 -6
- package/dist/cjs/HelpPopover.js.map +1 -1
- package/dist/cjs/IconPicker.js +20 -9
- package/dist/cjs/IconPicker.js.map +1 -1
- package/dist/cjs/InlineInput.js +7 -4
- package/dist/cjs/InlineInput.js.map +1 -1
- package/dist/cjs/Insights.js +18 -11
- package/dist/cjs/Insights.js.map +1 -1
- package/dist/cjs/IntegrationCard.js +18 -8
- package/dist/cjs/IntegrationCard.js.map +1 -1
- package/dist/cjs/IntegrationDisconnectAlert.js +3 -2
- package/dist/cjs/IntegrationDisconnectAlert.js.map +1 -1
- package/dist/cjs/IntegrationWalkthroughModal.js +10 -5
- package/dist/cjs/IntegrationWalkthroughModal.js.map +1 -1
- package/dist/cjs/IpRestriction.js +43 -25
- package/dist/cjs/IpRestriction.js.map +1 -1
- package/dist/cjs/KeyboardShortcuts.js +13 -8
- package/dist/cjs/KeyboardShortcuts.js.map +1 -1
- package/dist/cjs/LoginPage.js +21 -13
- package/dist/cjs/LoginPage.js.map +1 -1
- package/dist/cjs/MadeWith.js +2 -2
- package/dist/cjs/MadeWith.js.map +1 -1
- package/dist/cjs/MenuBar.js +15 -10
- package/dist/cjs/MenuBar.js.map +1 -1
- package/dist/cjs/Metadata.js +10 -7
- package/dist/cjs/Metadata.js.map +1 -1
- package/dist/cjs/MoreDropdown.js +14 -9
- package/dist/cjs/MoreDropdown.js.map +1 -1
- package/dist/cjs/NavigationHeader.js +10 -3
- package/dist/cjs/NavigationHeader.js.map +1 -1
- package/dist/cjs/NeetoWidget.js +52 -32
- package/dist/cjs/NeetoWidget.js.map +1 -1
- package/dist/cjs/Onboarding.js +16 -11
- package/dist/cjs/Onboarding.js.map +1 -1
- package/dist/cjs/OptionFields.js +25 -16
- package/dist/cjs/OptionFields.js.map +1 -1
- package/dist/cjs/PageLoader.js +3 -2
- package/dist/cjs/PageLoader.js.map +1 -1
- package/dist/cjs/PhoneNumber.js +13 -6
- package/dist/cjs/PhoneNumber.js.map +1 -1
- package/dist/cjs/ProductEmbed.js +53 -32
- package/dist/cjs/ProductEmbed.js.map +1 -1
- package/dist/cjs/PublishBlock.js +12 -7
- package/dist/cjs/PublishBlock.js.map +1 -1
- package/dist/cjs/PublishYourItem.js +4 -3
- package/dist/cjs/PublishYourItem.js.map +1 -1
- package/dist/cjs/Rename.js +12 -5
- package/dist/cjs/Rename.js.map +1 -1
- package/dist/cjs/ResponsiveDevicePicker.js +3 -2
- package/dist/cjs/ResponsiveDevicePicker.js.map +1 -1
- package/dist/cjs/Schedule.js +37 -23
- package/dist/cjs/Schedule.js.map +1 -1
- package/dist/cjs/Search.js +3 -2
- package/dist/cjs/Search.js.map +1 -1
- package/dist/cjs/SendToFields.js +30 -20
- package/dist/cjs/SendToFields.js.map +1 -1
- package/dist/cjs/Settings.js +15 -6
- package/dist/cjs/Settings.js.map +1 -1
- package/dist/cjs/ShareRecordingPane.js +21 -9
- package/dist/cjs/ShareRecordingPane.js.map +1 -1
- package/dist/cjs/ShareViaEmail.js +35 -15
- package/dist/cjs/ShareViaEmail.js.map +1 -1
- package/dist/cjs/ShareViaLink.js +37 -23
- package/dist/cjs/ShareViaLink.js.map +1 -1
- package/dist/cjs/Sidebar.js +7 -4
- package/dist/cjs/Sidebar.js.map +1 -1
- package/dist/cjs/StickyRibbonsContainer.js +3 -2
- package/dist/cjs/StickyRibbonsContainer.js.map +1 -1
- package/dist/cjs/SubHeader.js +11 -5
- package/dist/cjs/SubHeader.js.map +1 -1
- package/dist/cjs/SuffixedInput.js +4 -3
- package/dist/cjs/SuffixedInput.js.map +1 -1
- package/dist/cjs/Taxonomy.js +44 -21
- package/dist/cjs/Taxonomy.js.map +1 -1
- package/dist/cjs/TimeFormat.js +2 -1
- package/dist/cjs/TimeFormat.js.map +1 -1
- package/dist/cjs/TimezoneMismatchModal.js +15 -10
- package/dist/cjs/TimezoneMismatchModal.js.map +1 -1
- package/dist/cjs/ToggleFeatureCard.js +22 -12
- package/dist/cjs/ToggleFeatureCard.js.map +1 -1
- package/dist/cjs/{index-9b0c3047.js → index-5189db17.js} +36 -20
- package/dist/cjs/{index-9b0c3047.js.map → index-5189db17.js.map} +1 -1
- package/dist/cjs/{useColumns-9978cf70.js → useColumns-5660bfea.js} +19 -10
- package/dist/cjs/{useColumns-9978cf70.js.map → useColumns-5660bfea.js.map} +1 -1
- package/dist/{index-8fd0cad5.js → index-e29acf27.js} +10 -3
- package/dist/{index-8fd0cad5.js.map → index-e29acf27.js.map} +1 -1
- package/dist/{useColumns-751e9192.js → useColumns-cec6e827.js} +6 -2
- package/dist/{useColumns-751e9192.js.map → useColumns-cec6e827.js.map} +1 -1
- package/package.json +24 -3
- package/src/translations/en.json +0 -84
- package/dist/Security.js +0 -341
- package/dist/Security.js.map +0 -1
- package/dist/ThemeSidebar.js +0 -1410
- package/dist/ThemeSidebar.js.map +0 -1
- package/dist/cjs/Security.js +0 -372
- package/dist/cjs/Security.js.map +0 -1
- package/dist/cjs/ThemeSidebar.js +0 -1443
- package/dist/cjs/ThemeSidebar.js.map +0 -1
- package/types/Security.d.ts +0 -35
- package/types/themeSidebar.d.ts +0 -80
|
@@ -5,12 +5,17 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var neetoCist = require('@bigbinary/neeto-cist');
|
|
7
7
|
var withT = require('@bigbinary/neeto-commons-frontend/react-utils/withT');
|
|
8
|
-
var
|
|
8
|
+
var Modal = require('@bigbinary/neetoui/Modal');
|
|
9
|
+
var Button = require('@bigbinary/neetoui/Button');
|
|
10
|
+
var Typography = require('@bigbinary/neetoui/Typography');
|
|
9
11
|
|
|
10
12
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
13
|
|
|
12
14
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
13
15
|
var withT__default = /*#__PURE__*/_interopDefaultLegacy(withT);
|
|
16
|
+
var Modal__default = /*#__PURE__*/_interopDefaultLegacy(Modal);
|
|
17
|
+
var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
|
|
18
|
+
var Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);
|
|
14
19
|
|
|
15
20
|
var IntegrationWalkthroughModal = function IntegrationWalkthroughModal(_ref) {
|
|
16
21
|
var t = _ref.t,
|
|
@@ -21,14 +26,14 @@ var IntegrationWalkthroughModal = function IntegrationWalkthroughModal(_ref) {
|
|
|
21
26
|
_ref$videoUrl = _ref.videoUrl,
|
|
22
27
|
videoUrl = _ref$videoUrl === void 0 ? "" : _ref$videoUrl,
|
|
23
28
|
children = _ref.children;
|
|
24
|
-
return /*#__PURE__*/React__default["default"].createElement(
|
|
29
|
+
return /*#__PURE__*/React__default["default"].createElement(Modal__default["default"], {
|
|
25
30
|
isOpen: isOpen,
|
|
26
31
|
onClose: onClose,
|
|
27
32
|
size: "large"
|
|
28
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
33
|
+
}, /*#__PURE__*/React__default["default"].createElement(Modal__default["default"].Header, null, /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
29
34
|
style: "h2",
|
|
30
35
|
weight: "semibold"
|
|
31
|
-
}, t("neetoMolecules.integrationWalkthroughModal.header"))), /*#__PURE__*/React__default["default"].createElement(
|
|
36
|
+
}, t("neetoMolecules.integrationWalkthroughModal.header"))), /*#__PURE__*/React__default["default"].createElement(Modal__default["default"].Body, null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
32
37
|
className: "w-full py-6"
|
|
33
38
|
}, /*#__PURE__*/React__default["default"].createElement("video", {
|
|
34
39
|
autoPlay: true,
|
|
@@ -38,7 +43,7 @@ var IntegrationWalkthroughModal = function IntegrationWalkthroughModal(_ref) {
|
|
|
38
43
|
id: "walkthrough-video"
|
|
39
44
|
}, /*#__PURE__*/React__default["default"].createElement("source", {
|
|
40
45
|
src: videoUrl
|
|
41
|
-
})), children)), /*#__PURE__*/React__default["default"].createElement(
|
|
46
|
+
})), children)), /*#__PURE__*/React__default["default"].createElement(Modal__default["default"].Footer, null, /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
|
|
42
47
|
label: t("neetoMolecules.integrationWalkthroughModal.continue"),
|
|
43
48
|
onClick: onClose
|
|
44
49
|
})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegrationWalkthroughModal.js","sources":["../../src/components/IntegrationWalkthroughModal/index.jsx"],"sourcesContent":["import React from \"react\";\n\nimport { noop } from \"neetocist\";\nimport withT from \"neetocommons/react-utils/withT\";\nimport { Modal, Button, Typography } from \"neetoui\";\nimport PropTypes from \"prop-types\";\n\nconst IntegrationWalkthroughModal = ({\n t,\n isOpen = false,\n onClose = noop,\n videoUrl = \"\",\n children,\n}) => (\n <Modal {...{ isOpen, onClose }} size=\"large\">\n <Modal.Header>\n <Typography style=\"h2\" weight=\"semibold\">\n {t(\"neetoMolecules.integrationWalkthroughModal.header\")}\n </Typography>\n </Modal.Header>\n <Modal.Body>\n <div className=\"w-full py-6\">\n <video\n autoPlay\n controls\n muted\n className=\"neeto-ui-rounded-md w-full cursor-pointer\"\n id=\"walkthrough-video\"\n >\n <source src={videoUrl} />\n </video>\n {children}\n </div>\n </Modal.Body>\n <Modal.Footer>\n <Button\n label={t(\"neetoMolecules.integrationWalkthroughModal.continue\")}\n onClick={onClose}\n />\n </Modal.Footer>\n </Modal>\n);\n\nIntegrationWalkthroughModal.propTypes = {\n /**\n * To specify video URL of integration walkthrough that will be embedded.\n */\n videoUrl: PropTypes.string,\n /**\n * To specify whether the integration modal should be opened or closed.\n */\n isOpen: PropTypes.bool,\n /**\n * Handler function that is triggered when the continue or close button is clicked.\n */\n onClose: PropTypes.func,\n};\n\nconst WrappedIntegrationWalkthroughModal = withT(IntegrationWalkthroughModal);\nWrappedIntegrationWalkthroughModal.displayName = \"IntegrationWalkthroughModal\";\n\nexport { IntegrationWalkthroughModal };\nexport default WrappedIntegrationWalkthroughModal;\n"],"names":["IntegrationWalkthroughModal","_ref","t","_ref$isOpen","isOpen","_ref$onClose","onClose","noop","_ref$videoUrl","videoUrl","children","React","createElement","Modal","size","Header","Typography","style","weight","Body","className","autoPlay","controls","muted","id","src","Footer","Button","label","onClick","WrappedIntegrationWalkthroughModal","withT","displayName"],"mappings":"
|
|
1
|
+
{"version":3,"file":"IntegrationWalkthroughModal.js","sources":["../../src/components/IntegrationWalkthroughModal/index.jsx"],"sourcesContent":["import React from \"react\";\n\nimport { noop } from \"neetocist\";\nimport withT from \"neetocommons/react-utils/withT\";\nimport { Modal, Button, Typography } from \"neetoui\";\nimport PropTypes from \"prop-types\";\n\nconst IntegrationWalkthroughModal = ({\n t,\n isOpen = false,\n onClose = noop,\n videoUrl = \"\",\n children,\n}) => (\n <Modal {...{ isOpen, onClose }} size=\"large\">\n <Modal.Header>\n <Typography style=\"h2\" weight=\"semibold\">\n {t(\"neetoMolecules.integrationWalkthroughModal.header\")}\n </Typography>\n </Modal.Header>\n <Modal.Body>\n <div className=\"w-full py-6\">\n <video\n autoPlay\n controls\n muted\n className=\"neeto-ui-rounded-md w-full cursor-pointer\"\n id=\"walkthrough-video\"\n >\n <source src={videoUrl} />\n </video>\n {children}\n </div>\n </Modal.Body>\n <Modal.Footer>\n <Button\n label={t(\"neetoMolecules.integrationWalkthroughModal.continue\")}\n onClick={onClose}\n />\n </Modal.Footer>\n </Modal>\n);\n\nIntegrationWalkthroughModal.propTypes = {\n /**\n * To specify video URL of integration walkthrough that will be embedded.\n */\n videoUrl: PropTypes.string,\n /**\n * To specify whether the integration modal should be opened or closed.\n */\n isOpen: PropTypes.bool,\n /**\n * Handler function that is triggered when the continue or close button is clicked.\n */\n onClose: PropTypes.func,\n};\n\nconst WrappedIntegrationWalkthroughModal = withT(IntegrationWalkthroughModal);\nWrappedIntegrationWalkthroughModal.displayName = \"IntegrationWalkthroughModal\";\n\nexport { IntegrationWalkthroughModal };\nexport default WrappedIntegrationWalkthroughModal;\n"],"names":["IntegrationWalkthroughModal","_ref","t","_ref$isOpen","isOpen","_ref$onClose","onClose","noop","_ref$videoUrl","videoUrl","children","React","createElement","Modal","size","Header","Typography","style","weight","Body","className","autoPlay","controls","muted","id","src","Footer","Button","label","onClick","WrappedIntegrationWalkthroughModal","withT","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;AAOA,IAAMA,2BAA2B,GAAG,SAA9BA,2BAA2BA,CAAAC,IAAA,EAAA;AAAA,EAAA,IAC/BC,CAAC,GAAAD,IAAA,CAADC,CAAC;IAAAC,WAAA,GAAAF,IAAA,CACDG,MAAM;AAANA,IAAAA,MAAM,GAAAD,WAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,WAAA;IAAAE,YAAA,GAAAJ,IAAA,CACdK,OAAO;AAAPA,IAAAA,OAAO,GAAAD,YAAA,KAAGE,KAAAA,CAAAA,GAAAA,cAAI,GAAAF,YAAA;IAAAG,aAAA,GAAAP,IAAA,CACdQ,QAAQ;AAARA,IAAAA,QAAQ,GAAAD,aAAA,KAAG,KAAA,CAAA,GAAA,EAAE,GAAAA,aAAA;IACbE,QAAQ,GAAAT,IAAA,CAARS,QAAQ,CAAA;AAAA,EAAA,oBAERC,yBAAA,CAAAC,aAAA,CAACC,yBAAK,EAAA;AAAOT,IAAAA,MAAM,EAANA,MAAM;AAAEE,IAAAA,OAAO,EAAPA,OAAO;AAAIQ,IAAAA,IAAI,EAAC,OAAA;AAAO,GAAA,eAC1CH,yBAAA,CAAAC,aAAA,CAACC,yBAAK,CAACE,MAAM,EAAA,IAAA,eACXJ,yBAAA,CAAAC,aAAA,CAACI,8BAAU,EAAA;AAACC,IAAAA,KAAK,EAAC,IAAI;AAACC,IAAAA,MAAM,EAAC,UAAA;AAAU,GAAA,EACrChB,CAAC,CAAC,mDAAmD,CAC5C,CACA,CAAC,eACfS,yBAAA,CAAAC,aAAA,CAACC,yBAAK,CAACM,IAAI,EACTR,IAAAA,eAAAA,yBAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKQ,IAAAA,SAAS,EAAC,aAAA;GACbT,eAAAA,yBAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;IACES,QAAQ,EAAA,IAAA;IACRC,QAAQ,EAAA,IAAA;IACRC,KAAK,EAAA,IAAA;AACLH,IAAAA,SAAS,EAAC,2CAA2C;AACrDI,IAAAA,EAAE,EAAC,mBAAA;GAEHb,eAAAA,yBAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQa,IAAAA,GAAG,EAAEhB,QAAAA;AAAS,GAAE,CACnB,CAAC,EACPC,QACE,CACK,CAAC,eACbC,yBAAA,CAAAC,aAAA,CAACC,yBAAK,CAACa,MAAM,EAAA,IAAA,eACXf,yBAAA,CAAAC,aAAA,CAACe,0BAAM,EAAA;AACLC,IAAAA,KAAK,EAAE1B,CAAC,CAAC,qDAAqD,CAAE;AAChE2B,IAAAA,OAAO,EAAEvB,OAAAA;GACV,CACW,CACT,CAAC,CAAA;AAAA,EACT;AAiBD,IAAMwB,kCAAkC,GAAGC,yBAAK,CAAC/B,2BAA2B,EAAC;AAC7E8B,kCAAkC,CAACE,WAAW,GAAG,6BAA6B;;;;;"}
|
|
@@ -2,13 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
4
4
|
var React = require('react');
|
|
5
|
-
var
|
|
6
|
-
var
|
|
5
|
+
var Typography = require('@bigbinary/neetoui/Typography');
|
|
6
|
+
var Alert = require('@bigbinary/neetoui/Alert');
|
|
7
|
+
var Callout = require('@bigbinary/neetoui/Callout');
|
|
8
|
+
var Button = require('@bigbinary/neetoui/Button');
|
|
9
|
+
var Form = require('@bigbinary/neetoui/formik/Form');
|
|
10
|
+
var Checkbox = require('@bigbinary/neetoui/formik/Checkbox');
|
|
11
|
+
var Button$1 = require('@bigbinary/neetoui/formik/Button');
|
|
12
|
+
var BlockNavigation = require('@bigbinary/neetoui/formik/BlockNavigation');
|
|
7
13
|
var reactI18next = require('react-i18next');
|
|
8
14
|
var PageLoader = require('./PageLoader.js');
|
|
9
|
-
var formik
|
|
15
|
+
var formik = require('formik');
|
|
10
16
|
var withT = require('@bigbinary/neeto-commons-frontend/react-utils/withT');
|
|
11
17
|
var neetoIcons = require('@bigbinary/neeto-icons');
|
|
18
|
+
var Input = require('@bigbinary/neetoui/formik/Input');
|
|
19
|
+
var Select = require('@bigbinary/neetoui/formik/Select');
|
|
12
20
|
var i18next = require('i18next');
|
|
13
21
|
var yup = require('yup');
|
|
14
22
|
var ipNum = require('ip-num');
|
|
@@ -42,7 +50,17 @@ function _interopNamespace(e) {
|
|
|
42
50
|
|
|
43
51
|
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
|
44
52
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
53
|
+
var Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);
|
|
54
|
+
var Alert__default = /*#__PURE__*/_interopDefaultLegacy(Alert);
|
|
55
|
+
var Callout__default = /*#__PURE__*/_interopDefaultLegacy(Callout);
|
|
56
|
+
var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
|
|
57
|
+
var Form__default = /*#__PURE__*/_interopDefaultLegacy(Form);
|
|
58
|
+
var Checkbox__default = /*#__PURE__*/_interopDefaultLegacy(Checkbox);
|
|
59
|
+
var Button__default$1 = /*#__PURE__*/_interopDefaultLegacy(Button$1);
|
|
60
|
+
var BlockNavigation__default = /*#__PURE__*/_interopDefaultLegacy(BlockNavigation);
|
|
45
61
|
var withT__default = /*#__PURE__*/_interopDefaultLegacy(withT);
|
|
62
|
+
var Input__default = /*#__PURE__*/_interopDefaultLegacy(Input);
|
|
63
|
+
var Select__default = /*#__PURE__*/_interopDefaultLegacy(Select);
|
|
46
64
|
var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
|
|
47
65
|
var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
|
|
48
66
|
var useMutationWithInvalidation__default = /*#__PURE__*/_interopDefaultLegacy(useMutationWithInvalidation);
|
|
@@ -183,7 +201,7 @@ var AllowedIpRange = withT__default["default"](function (_ref) {
|
|
|
183
201
|
arrayHelpers = _ref.arrayHelpers;
|
|
184
202
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
185
203
|
className: "neeto-ui-bg-white neeto-ui-rounded-lg grid grid-cols-2 gap-4 p-3 sm:grid-cols-12"
|
|
186
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
204
|
+
}, /*#__PURE__*/React__default["default"].createElement(Input__default["default"], {
|
|
187
205
|
className: "col-span-1 text-left sm:col-span-4",
|
|
188
206
|
"data-cy": "ip-start-text-field",
|
|
189
207
|
label: t("neetoMolecules.ipRestriction.ipStart"),
|
|
@@ -192,7 +210,7 @@ var AllowedIpRange = withT__default["default"](function (_ref) {
|
|
|
192
210
|
},
|
|
193
211
|
name: "allowedIpRanges.".concat(index, ".ipStart"),
|
|
194
212
|
placeholder: t("neetoMolecules.ipRestriction.ipStart")
|
|
195
|
-
}), /*#__PURE__*/React__default["default"].createElement(
|
|
213
|
+
}), /*#__PURE__*/React__default["default"].createElement(Input__default["default"], {
|
|
196
214
|
className: "col-span-1 text-left sm:col-span-4",
|
|
197
215
|
"data-cy": "ip-end-text-field",
|
|
198
216
|
label: t("neetoMolecules.ipRestriction.ipEnd"),
|
|
@@ -201,7 +219,7 @@ var AllowedIpRange = withT__default["default"](function (_ref) {
|
|
|
201
219
|
},
|
|
202
220
|
name: "allowedIpRanges.".concat(index, ".ipEnd"),
|
|
203
221
|
placeholder: t("neetoMolecules.ipRestriction.ipEnd")
|
|
204
|
-
}), /*#__PURE__*/React__default["default"].createElement(
|
|
222
|
+
}), /*#__PURE__*/React__default["default"].createElement(Select__default["default"], {
|
|
205
223
|
className: "col-span-1 text-left sm:col-span-2",
|
|
206
224
|
"data-testid": "address-type-select-field",
|
|
207
225
|
label: t("neetoMolecules.ipRestriction.type"),
|
|
@@ -212,7 +230,7 @@ var AllowedIpRange = withT__default["default"](function (_ref) {
|
|
|
212
230
|
options: ADDRESS_TYPE_SELECT_OPTIONS
|
|
213
231
|
}), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
214
232
|
className: "col-span-1 flex sm:col-span-2 sm:justify-center"
|
|
215
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
233
|
+
}, /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
|
|
216
234
|
className: "mt-auto sm:mt-0",
|
|
217
235
|
"data-testid": "allowed-ip-range-delete-btn",
|
|
218
236
|
icon: neetoIcons.Delete,
|
|
@@ -232,28 +250,28 @@ var AllowedIpRanges = withT__default["default"](function (_ref) {
|
|
|
232
250
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
233
251
|
className: "space-y-6",
|
|
234
252
|
"data-cy": "allowed-ip-range-container"
|
|
235
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
253
|
+
}, /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
236
254
|
"data-cy": "allowed-ip-range-heading",
|
|
237
255
|
style: "h4"
|
|
238
256
|
}, t("neetoMolecules.ipRestriction.allowedIpRangeTitle")), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
239
257
|
className: "space-y-4"
|
|
240
258
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
241
259
|
className: "hidden grid-cols-12 gap-4 px-3 sm:grid"
|
|
242
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
260
|
+
}, /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
243
261
|
className: "neeto-ui-text-gray-700 col-span-4 uppercase",
|
|
244
262
|
style: "h6"
|
|
245
|
-
}, t("neetoMolecules.ipRestriction.ipStart"), "*"), /*#__PURE__*/React__default["default"].createElement(
|
|
263
|
+
}, t("neetoMolecules.ipRestriction.ipStart"), "*"), /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
246
264
|
className: "neeto-ui-text-gray-700 col-span-4 uppercase",
|
|
247
265
|
style: "h6"
|
|
248
|
-
}, t("neetoMolecules.ipRestriction.ipEnd"), "*"), /*#__PURE__*/React__default["default"].createElement(
|
|
266
|
+
}, t("neetoMolecules.ipRestriction.ipEnd"), "*"), /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
249
267
|
className: "neeto-ui-text-gray-700 col-span-2 uppercase",
|
|
250
268
|
style: "h6"
|
|
251
|
-
}, t("neetoMolecules.ipRestriction.type"), "*"), /*#__PURE__*/React__default["default"].createElement(
|
|
269
|
+
}, t("neetoMolecules.ipRestriction.type"), "*"), /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
252
270
|
className: "neeto-ui-text-gray-700 col-span-2 text-center uppercase",
|
|
253
271
|
style: "h6"
|
|
254
272
|
}, t("neetoMolecules.ipRestriction.actions"))), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
255
273
|
className: "w-full space-y-2"
|
|
256
|
-
}, /*#__PURE__*/React__default["default"].createElement(formik
|
|
274
|
+
}, /*#__PURE__*/React__default["default"].createElement(formik.FieldArray, {
|
|
257
275
|
name: "allowedIpRanges"
|
|
258
276
|
}, function (arrayHelpers) {
|
|
259
277
|
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, arrayHelpers.form.values.allowedIpRanges.map(function (allowedIpRange, index) {
|
|
@@ -263,7 +281,7 @@ var AllowedIpRanges = withT__default["default"](function (_ref) {
|
|
|
263
281
|
index: index,
|
|
264
282
|
key: allowedIpRange.createdAt
|
|
265
283
|
});
|
|
266
|
-
}), /*#__PURE__*/React__default["default"].createElement(
|
|
284
|
+
}), /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
|
|
267
285
|
"data-cy": "add-allowed-ip-range-button",
|
|
268
286
|
label: t("neetoMolecules.ipRestriction.addNew"),
|
|
269
287
|
style: "link",
|
|
@@ -298,7 +316,7 @@ var CurrentIp = function CurrentIp() {
|
|
|
298
316
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
299
317
|
className: "flex flex-wrap items-baseline gap-1",
|
|
300
318
|
"data-cy": "current-ip-container"
|
|
301
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
319
|
+
}, /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], null, /*#__PURE__*/React__default["default"].createElement(reactI18next.Trans, {
|
|
302
320
|
i18nKey: "neetoMolecules.ipRestriction.currentIpMessage",
|
|
303
321
|
values: {
|
|
304
322
|
ip: isLoading ? "..." : data.ip
|
|
@@ -417,7 +435,7 @@ var IpRestriction = function IpRestriction() {
|
|
|
417
435
|
}
|
|
418
436
|
});
|
|
419
437
|
};
|
|
420
|
-
return /*#__PURE__*/React__default["default"].createElement(
|
|
438
|
+
return /*#__PURE__*/React__default["default"].createElement(Form__default["default"], {
|
|
421
439
|
className: "mx-auto mb-4 w-full sm:max-w-screen-sm md:max-w-screen-md lg:max-w-3xl",
|
|
422
440
|
formikProps: {
|
|
423
441
|
initialValues: buildInitialValue(isIpRestrictionEnabled, allowedIpRanges),
|
|
@@ -432,29 +450,29 @@ var IpRestriction = function IpRestriction() {
|
|
|
432
450
|
setFieldValue = _ref2.setFieldValue,
|
|
433
451
|
resetForm = _ref2.resetForm,
|
|
434
452
|
setSubmitting = _ref2.setSubmitting;
|
|
435
|
-
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(
|
|
453
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(BlockNavigation__default["default"], null), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
436
454
|
className: "neeto-ui-bg-white neeto-ui-border-gray-200 neeto-ui-rounded-lg mx-auto mb-4 w-full overflow-hidden border sm:max-w-screen-sm md:max-w-screen-md lg:max-w-3xl",
|
|
437
455
|
"data-cy": "ip-restrictions-card"
|
|
438
456
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
439
457
|
className: "space-y-2 p-6"
|
|
440
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
458
|
+
}, /*#__PURE__*/React__default["default"].createElement(Checkbox__default["default"], {
|
|
441
459
|
checked: values.ipRestriction,
|
|
442
460
|
className: "flex-grow-0",
|
|
443
461
|
"data-cy": "enable-ip-restriction-checkbox",
|
|
444
462
|
disabled: isFetchingIpRestriction || isUpdating,
|
|
445
463
|
name: "ipRestriction",
|
|
446
|
-
label: /*#__PURE__*/React__default["default"].createElement(
|
|
464
|
+
label: /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
447
465
|
style: "h3"
|
|
448
466
|
}, t("neetoMolecules.ipRestriction.switchLabel")),
|
|
449
467
|
onChange: function onChange() {
|
|
450
468
|
return setFieldValue("ipRestriction", !values.ipRestriction);
|
|
451
469
|
}
|
|
452
|
-
}), /*#__PURE__*/React__default["default"].createElement(
|
|
470
|
+
}), /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
453
471
|
"data-cy": "ip-restriction-description",
|
|
454
472
|
style: "body2"
|
|
455
473
|
}, t("neetoMolecules.ipRestriction.description"))), values.ipRestriction && /*#__PURE__*/React__default["default"].createElement("div", {
|
|
456
474
|
className: "neeto-ui-bg-gray-100 w-full space-y-6 p-6"
|
|
457
|
-
}, /*#__PURE__*/React__default["default"].createElement(CurrentIp$1, null), /*#__PURE__*/React__default["default"].createElement(AllowedIpRanges$1, null), /*#__PURE__*/React__default["default"].createElement(
|
|
475
|
+
}, /*#__PURE__*/React__default["default"].createElement(CurrentIp$1, null), /*#__PURE__*/React__default["default"].createElement(AllowedIpRanges$1, null), /*#__PURE__*/React__default["default"].createElement(Callout__default["default"], {
|
|
458
476
|
style: "warning"
|
|
459
477
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
460
478
|
className: "leading-2 block whitespace-pre-wrap py-1"
|
|
@@ -462,24 +480,24 @@ var IpRestriction = function IpRestriction() {
|
|
|
462
480
|
i18nKey: "neetoMolecules.ipRestriction.warningMessage"
|
|
463
481
|
}))))), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
464
482
|
className: "flex flex-wrap items-center justify-between gap-4"
|
|
465
|
-
}, dirty && /*#__PURE__*/React__default["default"].createElement(
|
|
483
|
+
}, dirty && /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
466
484
|
className: "neeto-ui-text-error-500",
|
|
467
485
|
style: "body2"
|
|
468
486
|
}, t("neetoMolecules.ipRestriction.validations.unsavedChanges")), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
469
487
|
className: "ml-auto flex justify-between"
|
|
470
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
488
|
+
}, /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
|
|
471
489
|
className: "mr-2",
|
|
472
490
|
disabled: !dirty,
|
|
473
491
|
label: t("neetoMolecules.common.actions.reset"),
|
|
474
492
|
style: "secondary",
|
|
475
493
|
type: "reset",
|
|
476
494
|
onClick: resetForm
|
|
477
|
-
}), /*#__PURE__*/React__default["default"].createElement(
|
|
495
|
+
}), /*#__PURE__*/React__default["default"].createElement(Button__default$1["default"], {
|
|
478
496
|
"data-cy": "ip-restriction-save-changes",
|
|
479
497
|
"data-testid": "save-changes-button",
|
|
480
498
|
isLoading: isUpdating,
|
|
481
499
|
type: "submit"
|
|
482
|
-
}, t("neetoMolecules.common.actions.saveChanges")))), /*#__PURE__*/React__default["default"].createElement(
|
|
500
|
+
}, t("neetoMolecules.common.actions.saveChanges")))), /*#__PURE__*/React__default["default"].createElement(Alert__default["default"], {
|
|
483
501
|
isOpen: isAlertOpen,
|
|
484
502
|
isSubmitting: isUpdating,
|
|
485
503
|
title: t("neetoMolecules.ipRestriction.enableAlert.title"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IpRestriction.js","sources":["../../src/components/IpRestriction/utils.js","../../src/components/IpRestriction/constants.js","../../src/components/IpRestriction/AllowedIpRanges/AllowedIpRange.jsx","../../src/components/IpRestriction/AllowedIpRanges/index.jsx","../../src/components/IpRestriction/apis/current_ip.js","../../src/components/IpRestriction/hooks/reactQuery/useCurrentIp.js","../../src/components/IpRestriction/CurrentIp.jsx","../../src/components/IpRestriction/apis/allowed_ip_ranges.js","../../src/components/IpRestriction/hooks/reactQuery/useAllowedIpRanges.js","../../src/components/IpRestriction/apis/ip_restriction.js","../../src/components/IpRestriction/hooks/reactQuery/useIpRestrictions.js","../../src/components/IpRestriction/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { IPv4, IPv6, Validator } from \"ip-num\";\nimport { assoc, isNil, isNotNil } from \"ramda\";\nimport * as yup from \"yup\";\n\nconst toLabelAndValue = value => ({\n label: humanizeIpAddressFormat(value),\n value,\n});\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 addressType: yup\n .object()\n .shape({\n value: yup.string().required(),\n label: yup.string().required(),\n })\n .nullable()\n .required(\n t(\"neetoMolecules.ipRestriction.validations.addressTypeRequired\")\n ),\n });\n\nexport const humanizeIpAddressFormat = addressFormat => {\n const addressFormats = { ipv4: \"IPv4\", ipv6: \"IPv6\" };\n\n return addressFormats[addressFormat];\n};\n\nexport const buildInitialValue = (isIpRestrictionEnabled, allowedIpRanges) => ({\n ipRestriction: isIpRestrictionEnabled,\n allowedIpRanges: buildAllowedIpRangesFormData(allowedIpRanges),\n});\n\nexport const buildAllowedIpRangesFormData = allowedIpRanges =>\n allowedIpRanges?.map(allowedIpRange =>\n assoc(\n \"addressType\",\n toLabelAndValue(allowedIpRange.addressType),\n allowedIpRange\n )\n );\n\nexport const buildIpRestrictionPayload = values => {\n const allowedIpRangesWithTransformedAddressType = values.allowedIpRanges.map(\n allowedIpRange =>\n assoc(\"addressType\", allowedIpRange.addressType.value, allowedIpRange)\n );\n\n return {\n isIpRestrictionEnabled: values.ipRestriction,\n allowedIpRanges: allowedIpRangesWithTransformedAddressType,\n };\n};\n","import { t } from \"i18next\";\nimport * as yup from \"yup\";\n\nimport { getIpRestrictionValidationSchema } from \"./utils\";\n\nexport const IP_RESTRICTIONS_ENGINE_BASE_URL = \"/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 React from \"react\";\n\nimport withT from \"neetocommons/react-utils/withT\";\nimport { Delete } from \"neetoicons\";\nimport { Button } from \"neetoui\";\nimport { Input, Select } from \"neetoui/formik\";\n\nimport { ADDRESS_TYPE_SELECT_OPTIONS } from \"../constants\";\n\nconst AllowedIpRange = withT(({ t, index, arrayHelpers }) => (\n <div className=\"neeto-ui-bg-white neeto-ui-rounded-lg grid grid-cols-2 gap-4 p-3 sm:grid-cols-12\">\n <Input\n className=\"col-span-1 text-left sm:col-span-4\"\n data-cy=\"ip-start-text-field\"\n label={t(\"neetoMolecules.ipRestriction.ipStart\")}\n labelProps={{ className: \"sm:hidden\" }}\n name={`allowedIpRanges.${index}.ipStart`}\n placeholder={t(\"neetoMolecules.ipRestriction.ipStart\")}\n />\n <Input\n className=\"col-span-1 text-left sm:col-span-4\"\n data-cy=\"ip-end-text-field\"\n label={t(\"neetoMolecules.ipRestriction.ipEnd\")}\n labelProps={{ className: \"sm:hidden\" }}\n name={`allowedIpRanges.${index}.ipEnd`}\n placeholder={t(\"neetoMolecules.ipRestriction.ipEnd\")}\n />\n <Select\n className=\"col-span-1 text-left sm:col-span-2\"\n data-testid=\"address-type-select-field\"\n label={t(\"neetoMolecules.ipRestriction.type\")}\n labelProps={{ className: \"sm:hidden\" }}\n name={`allowedIpRanges.${index}.addressType`}\n options={ADDRESS_TYPE_SELECT_OPTIONS}\n />\n <div className=\"col-span-1 flex sm:col-span-2 sm:justify-center\">\n <Button\n className=\"mt-auto sm:mt-0\"\n data-testid=\"allowed-ip-range-delete-btn\"\n icon={Delete}\n style=\"text\"\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 React from \"react\";\n\nimport { FieldArray } from \"formik\";\nimport withT from \"neetocommons/react-utils/withT\";\nimport { Button, Typography } from \"neetoui\";\n\nimport AllowedIpRange from \"./AllowedIpRange\";\n\nimport { NEW_ALLOWED_IP_RANGE } from \"../constants\";\n\nconst AllowedIpRanges = withT(({ t }) => (\n <div className=\"space-y-6\" data-cy=\"allowed-ip-range-container\">\n <Typography data-cy=\"allowed-ip-range-heading\" style=\"h4\">\n {t(\"neetoMolecules.ipRestriction.allowedIpRangeTitle\")}\n </Typography>\n <div className=\"space-y-4\">\n <div className=\"hidden grid-cols-12 gap-4 px-3 sm:grid\">\n <Typography\n className=\"neeto-ui-text-gray-700 col-span-4 uppercase\"\n style=\"h6\"\n >\n {t(\"neetoMolecules.ipRestriction.ipStart\")}*\n </Typography>\n <Typography\n className=\"neeto-ui-text-gray-700 col-span-4 uppercase\"\n style=\"h6\"\n >\n {t(\"neetoMolecules.ipRestriction.ipEnd\")}*\n </Typography>\n <Typography\n className=\"neeto-ui-text-gray-700 col-span-2 uppercase\"\n style=\"h6\"\n >\n {t(\"neetoMolecules.ipRestriction.type\")}*\n </Typography>\n <Typography\n className=\"neeto-ui-text-gray-700 col-span-2 text-center uppercase\"\n style=\"h6\"\n >\n {t(\"neetoMolecules.ipRestriction.actions\")}\n </Typography>\n </div>\n <div className=\"w-full space-y-2\">\n <FieldArray name=\"allowedIpRanges\">\n {arrayHelpers => (\n <>\n {arrayHelpers.form.values.allowedIpRanges.map(\n (allowedIpRange, index) => (\n <AllowedIpRange\n {...{ allowedIpRange, arrayHelpers, index }}\n key={allowedIpRange.createdAt}\n />\n )\n )}\n <Button\n data-cy=\"add-allowed-ip-range-button\"\n label={t(\"neetoMolecules.ipRestriction.addNew\")}\n style=\"link\"\n onClick={() => arrayHelpers.push(NEW_ALLOWED_IP_RANGE)}\n />\n </>\n )}\n </FieldArray>\n </div>\n </div>\n </div>\n));\n\nexport default React.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 \"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([CURRENT_IP], () => currentIpApi.show());\n\nexport { useShowCurrentIp };\n","import React from \"react\";\n\nimport { Typography } from \"neetoui\";\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-cy=\"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 React.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 useMutationWithInvalidation from \"neetocommons/react-utils/useMutationWithInvalidation\";\nimport { useQuery } from \"react-query\";\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([ALLOWED_IP_RANGES], () => allowedIpRangesApi.fetch(), options);\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 useMutationWithInvalidation from \"neetocommons/react-utils/useMutationWithInvalidation\";\nimport { useQuery } from \"react-query\";\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([IP_RESTRICTION], () => ipRestrictionApi.show());\n\nconst useUpdateIpRestriction = () =>\n useMutationWithInvalidation(ipRestrictionApi.update, {\n keysToInvalidate: [IP_RESTRICTION, ALLOWED_IP_RANGES],\n });\n\nexport { useShowIpRestriction, useUpdateIpRestriction };\n","import React, { useState } from \"react\";\n\nimport { Typography, Alert, Callout, Button } from \"neetoui\";\nimport {\n Form as NeetoUIForm,\n Checkbox,\n Button as FormikButton,\n BlockNavigation,\n} from \"neetoui/formik\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport PageLoader from \"components/PageLoader\";\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\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, isLoading: isUpdating } =\n useUpdateIpRestriction();\n\n if (isFetchingIpRestriction || isFetchingAllowedIpRanges || isRefetching) {\n return (\n <div className=\"h-screen\">\n <PageLoader />\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=\"mx-auto mb-4 w-full sm:max-w-screen-sm md:max-w-screen-md lg:max-w-3xl\"\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, setFieldValue, resetForm, setSubmitting }) => (\n <>\n <BlockNavigation />\n <div\n className=\"neeto-ui-bg-white neeto-ui-border-gray-200 neeto-ui-rounded-lg mx-auto mb-4 w-full overflow-hidden border sm:max-w-screen-sm md:max-w-screen-md lg:max-w-3xl\"\n data-cy=\"ip-restrictions-card\"\n >\n <div className=\"space-y-2 p-6\">\n <Checkbox\n checked={values.ipRestriction}\n className=\"flex-grow-0\"\n data-cy=\"enable-ip-restriction-checkbox\"\n disabled={isFetchingIpRestriction || isUpdating}\n name=\"ipRestriction\"\n label={\n <Typography style=\"h3\">\n {t(\"neetoMolecules.ipRestriction.switchLabel\")}\n </Typography>\n }\n onChange={() =>\n setFieldValue(\"ipRestriction\", !values.ipRestriction)\n }\n />\n <Typography data-cy=\"ip-restriction-description\" style=\"body2\">\n {t(\"neetoMolecules.ipRestriction.description\")}\n </Typography>\n </div>\n {values.ipRestriction && (\n <div className=\"neeto-ui-bg-gray-100 w-full space-y-6 p-6\">\n <CurrentIp />\n <AllowedIpRanges />\n <Callout style=\"warning\">\n <div className=\"leading-2 block whitespace-pre-wrap py-1\">\n <Trans i18nKey=\"neetoMolecules.ipRestriction.warningMessage\" />\n </div>\n </Callout>\n </div>\n )}\n </div>\n <div className=\"flex flex-wrap items-center justify-between gap-4\">\n {dirty && (\n <Typography className=\"neeto-ui-text-error-500\" style=\"body2\">\n {t(\"neetoMolecules.ipRestriction.validations.unsavedChanges\")}\n </Typography>\n )}\n <div className=\"ml-auto flex justify-between\">\n <Button\n className=\"mr-2\"\n disabled={!dirty}\n label={t(\"neetoMolecules.common.actions.reset\")}\n style=\"secondary\"\n type=\"reset\"\n onClick={resetForm}\n />\n <FormikButton\n data-cy=\"ip-restriction-save-changes\"\n data-testid=\"save-changes-button\"\n isLoading={isUpdating}\n type=\"submit\"\n >\n {t(\"neetoMolecules.common.actions.saveChanges\")}\n </FormikButton>\n </div>\n </div>\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 </>\n )}\n </NeetoUIForm>\n );\n};\n\nexport default React.memo(IpRestriction);\n"],"names":["toLabelAndValue","value","label","humanizeIpAddressFormat","isValidIPv4String","ip","isNotNil","Validator","isValidIPv6String","isValidIpString","areIpAddressesInSameFormat","ipStart","ipEnd","isValidIPv4Range","ipStartAddr","IPv4","fromDecimalDottedString","ipEndAddr","isLessThanOrEquals","isValidIPv6Range","IPv6","fromString","isValidIPRange","yup","addMethod","string","errorMessage","test","isNil","isValidIp","createError","path","message","getIpRestrictionValidationSchema","object","shape","validIp","t","required","when","schema","addressType","nullable","addressFormat","addressFormats","ipv4","ipv6","buildInitialValue","isIpRestrictionEnabled","allowedIpRanges","ipRestriction","buildAllowedIpRangesFormData","map","allowedIpRange","assoc","buildIpRestrictionPayload","values","allowedIpRangesWithTransformedAddressType","IP_RESTRICTIONS_ENGINE_BASE_URL","QUERY_KEYS","IP_RESTRICTION","ALLOWED_IP_RANGES","CURRENT_IP","ADDRESS_TYPE_SELECT_OPTIONS","VALIDATION_SCHEMA","array","of","NEW_ALLOWED_IP_RANGE","createdAt","Date","toISOString","AllowedIpRange","withT","_ref","index","arrayHelpers","React","createElement","className","Input","labelProps","name","concat","placeholder","Select","options","Button","icon","Delete","style","tooltipProps","content","position","onClick","remove","AllowedIpRanges","Typography","FieldArray","Fragment","form","key","push","memo","show","params","axios","get","currentIpApi","useShowCurrentIp","useQuery","CurrentIp","_useShowCurrentIp","data","isLoading","Trans","i18nKey","allowedIpRangesUrl","fetch","create","payload","post","destroy","id","update","patch","allowedIpRangesApi","useFetchAllowedIpRanges","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","PageLoader","handleSubmit","formikBag","handleUpdateIpRestriction","handleCloseAlert","setSubmitting","resetForm","onSuccess","onError","NeetoUIForm","formikProps","initialValues","validationSchema","validateOnBlur","enableReinitialize","onSubmit","_ref2","dirty","setFieldValue","BlockNavigation","Checkbox","checked","disabled","onChange","Callout","type","FormikButton","Alert","isOpen","isSubmitting","title","submitButtonLabel","onClose"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IpRestriction.js","sources":["../../src/components/IpRestriction/utils.js","../../src/components/IpRestriction/constants.js","../../src/components/IpRestriction/AllowedIpRanges/AllowedIpRange.jsx","../../src/components/IpRestriction/AllowedIpRanges/index.jsx","../../src/components/IpRestriction/apis/current_ip.js","../../src/components/IpRestriction/hooks/reactQuery/useCurrentIp.js","../../src/components/IpRestriction/CurrentIp.jsx","../../src/components/IpRestriction/apis/allowed_ip_ranges.js","../../src/components/IpRestriction/hooks/reactQuery/useAllowedIpRanges.js","../../src/components/IpRestriction/apis/ip_restriction.js","../../src/components/IpRestriction/hooks/reactQuery/useIpRestrictions.js","../../src/components/IpRestriction/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { IPv4, IPv6, Validator } from \"ip-num\";\nimport { assoc, isNil, isNotNil } from \"ramda\";\nimport * as yup from \"yup\";\n\nconst toLabelAndValue = value => ({\n label: humanizeIpAddressFormat(value),\n value,\n});\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 addressType: yup\n .object()\n .shape({\n value: yup.string().required(),\n label: yup.string().required(),\n })\n .nullable()\n .required(\n t(\"neetoMolecules.ipRestriction.validations.addressTypeRequired\")\n ),\n });\n\nexport const humanizeIpAddressFormat = addressFormat => {\n const addressFormats = { ipv4: \"IPv4\", ipv6: \"IPv6\" };\n\n return addressFormats[addressFormat];\n};\n\nexport const buildInitialValue = (isIpRestrictionEnabled, allowedIpRanges) => ({\n ipRestriction: isIpRestrictionEnabled,\n allowedIpRanges: buildAllowedIpRangesFormData(allowedIpRanges),\n});\n\nexport const buildAllowedIpRangesFormData = allowedIpRanges =>\n allowedIpRanges?.map(allowedIpRange =>\n assoc(\n \"addressType\",\n toLabelAndValue(allowedIpRange.addressType),\n allowedIpRange\n )\n );\n\nexport const buildIpRestrictionPayload = values => {\n const allowedIpRangesWithTransformedAddressType = values.allowedIpRanges.map(\n allowedIpRange =>\n assoc(\"addressType\", allowedIpRange.addressType.value, allowedIpRange)\n );\n\n return {\n isIpRestrictionEnabled: values.ipRestriction,\n allowedIpRanges: allowedIpRangesWithTransformedAddressType,\n };\n};\n","import { t } from \"i18next\";\nimport * as yup from \"yup\";\n\nimport { getIpRestrictionValidationSchema } from \"./utils\";\n\nexport const IP_RESTRICTIONS_ENGINE_BASE_URL = \"/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 React from \"react\";\n\nimport withT from \"neetocommons/react-utils/withT\";\nimport { Delete } from \"neetoicons\";\nimport { Button } from \"neetoui\";\nimport { Input, Select } from \"neetoui/formik\";\n\nimport { ADDRESS_TYPE_SELECT_OPTIONS } from \"../constants\";\n\nconst AllowedIpRange = withT(({ t, index, arrayHelpers }) => (\n <div className=\"neeto-ui-bg-white neeto-ui-rounded-lg grid grid-cols-2 gap-4 p-3 sm:grid-cols-12\">\n <Input\n className=\"col-span-1 text-left sm:col-span-4\"\n data-cy=\"ip-start-text-field\"\n label={t(\"neetoMolecules.ipRestriction.ipStart\")}\n labelProps={{ className: \"sm:hidden\" }}\n name={`allowedIpRanges.${index}.ipStart`}\n placeholder={t(\"neetoMolecules.ipRestriction.ipStart\")}\n />\n <Input\n className=\"col-span-1 text-left sm:col-span-4\"\n data-cy=\"ip-end-text-field\"\n label={t(\"neetoMolecules.ipRestriction.ipEnd\")}\n labelProps={{ className: \"sm:hidden\" }}\n name={`allowedIpRanges.${index}.ipEnd`}\n placeholder={t(\"neetoMolecules.ipRestriction.ipEnd\")}\n />\n <Select\n className=\"col-span-1 text-left sm:col-span-2\"\n data-testid=\"address-type-select-field\"\n label={t(\"neetoMolecules.ipRestriction.type\")}\n labelProps={{ className: \"sm:hidden\" }}\n name={`allowedIpRanges.${index}.addressType`}\n options={ADDRESS_TYPE_SELECT_OPTIONS}\n />\n <div className=\"col-span-1 flex sm:col-span-2 sm:justify-center\">\n <Button\n className=\"mt-auto sm:mt-0\"\n data-testid=\"allowed-ip-range-delete-btn\"\n icon={Delete}\n style=\"text\"\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 React from \"react\";\n\nimport { FieldArray } from \"formik\";\nimport withT from \"neetocommons/react-utils/withT\";\nimport { Button, Typography } from \"neetoui\";\n\nimport AllowedIpRange from \"./AllowedIpRange\";\n\nimport { NEW_ALLOWED_IP_RANGE } from \"../constants\";\n\nconst AllowedIpRanges = withT(({ t }) => (\n <div className=\"space-y-6\" data-cy=\"allowed-ip-range-container\">\n <Typography data-cy=\"allowed-ip-range-heading\" style=\"h4\">\n {t(\"neetoMolecules.ipRestriction.allowedIpRangeTitle\")}\n </Typography>\n <div className=\"space-y-4\">\n <div className=\"hidden grid-cols-12 gap-4 px-3 sm:grid\">\n <Typography\n className=\"neeto-ui-text-gray-700 col-span-4 uppercase\"\n style=\"h6\"\n >\n {t(\"neetoMolecules.ipRestriction.ipStart\")}*\n </Typography>\n <Typography\n className=\"neeto-ui-text-gray-700 col-span-4 uppercase\"\n style=\"h6\"\n >\n {t(\"neetoMolecules.ipRestriction.ipEnd\")}*\n </Typography>\n <Typography\n className=\"neeto-ui-text-gray-700 col-span-2 uppercase\"\n style=\"h6\"\n >\n {t(\"neetoMolecules.ipRestriction.type\")}*\n </Typography>\n <Typography\n className=\"neeto-ui-text-gray-700 col-span-2 text-center uppercase\"\n style=\"h6\"\n >\n {t(\"neetoMolecules.ipRestriction.actions\")}\n </Typography>\n </div>\n <div className=\"w-full space-y-2\">\n <FieldArray name=\"allowedIpRanges\">\n {arrayHelpers => (\n <>\n {arrayHelpers.form.values.allowedIpRanges.map(\n (allowedIpRange, index) => (\n <AllowedIpRange\n {...{ allowedIpRange, arrayHelpers, index }}\n key={allowedIpRange.createdAt}\n />\n )\n )}\n <Button\n data-cy=\"add-allowed-ip-range-button\"\n label={t(\"neetoMolecules.ipRestriction.addNew\")}\n style=\"link\"\n onClick={() => arrayHelpers.push(NEW_ALLOWED_IP_RANGE)}\n />\n </>\n )}\n </FieldArray>\n </div>\n </div>\n </div>\n));\n\nexport default React.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 \"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([CURRENT_IP], () => currentIpApi.show());\n\nexport { useShowCurrentIp };\n","import React from \"react\";\n\nimport { Typography } from \"neetoui\";\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-cy=\"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 React.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 useMutationWithInvalidation from \"neetocommons/react-utils/useMutationWithInvalidation\";\nimport { useQuery } from \"react-query\";\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([ALLOWED_IP_RANGES], () => allowedIpRangesApi.fetch(), options);\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 useMutationWithInvalidation from \"neetocommons/react-utils/useMutationWithInvalidation\";\nimport { useQuery } from \"react-query\";\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([IP_RESTRICTION], () => ipRestrictionApi.show());\n\nconst useUpdateIpRestriction = () =>\n useMutationWithInvalidation(ipRestrictionApi.update, {\n keysToInvalidate: [IP_RESTRICTION, ALLOWED_IP_RANGES],\n });\n\nexport { useShowIpRestriction, useUpdateIpRestriction };\n","import React, { useState } from \"react\";\n\nimport { Typography, Alert, Callout, Button } from \"neetoui\";\nimport {\n Form as NeetoUIForm,\n Checkbox,\n Button as FormikButton,\n BlockNavigation,\n} from \"neetoui/formik\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport PageLoader from \"components/PageLoader\";\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\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, isLoading: isUpdating } =\n useUpdateIpRestriction();\n\n if (isFetchingIpRestriction || isFetchingAllowedIpRanges || isRefetching) {\n return (\n <div className=\"h-screen\">\n <PageLoader />\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=\"mx-auto mb-4 w-full sm:max-w-screen-sm md:max-w-screen-md lg:max-w-3xl\"\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, setFieldValue, resetForm, setSubmitting }) => (\n <>\n <BlockNavigation />\n <div\n className=\"neeto-ui-bg-white neeto-ui-border-gray-200 neeto-ui-rounded-lg mx-auto mb-4 w-full overflow-hidden border sm:max-w-screen-sm md:max-w-screen-md lg:max-w-3xl\"\n data-cy=\"ip-restrictions-card\"\n >\n <div className=\"space-y-2 p-6\">\n <Checkbox\n checked={values.ipRestriction}\n className=\"flex-grow-0\"\n data-cy=\"enable-ip-restriction-checkbox\"\n disabled={isFetchingIpRestriction || isUpdating}\n name=\"ipRestriction\"\n label={\n <Typography style=\"h3\">\n {t(\"neetoMolecules.ipRestriction.switchLabel\")}\n </Typography>\n }\n onChange={() =>\n setFieldValue(\"ipRestriction\", !values.ipRestriction)\n }\n />\n <Typography data-cy=\"ip-restriction-description\" style=\"body2\">\n {t(\"neetoMolecules.ipRestriction.description\")}\n </Typography>\n </div>\n {values.ipRestriction && (\n <div className=\"neeto-ui-bg-gray-100 w-full space-y-6 p-6\">\n <CurrentIp />\n <AllowedIpRanges />\n <Callout style=\"warning\">\n <div className=\"leading-2 block whitespace-pre-wrap py-1\">\n <Trans i18nKey=\"neetoMolecules.ipRestriction.warningMessage\" />\n </div>\n </Callout>\n </div>\n )}\n </div>\n <div className=\"flex flex-wrap items-center justify-between gap-4\">\n {dirty && (\n <Typography className=\"neeto-ui-text-error-500\" style=\"body2\">\n {t(\"neetoMolecules.ipRestriction.validations.unsavedChanges\")}\n </Typography>\n )}\n <div className=\"ml-auto flex justify-between\">\n <Button\n className=\"mr-2\"\n disabled={!dirty}\n label={t(\"neetoMolecules.common.actions.reset\")}\n style=\"secondary\"\n type=\"reset\"\n onClick={resetForm}\n />\n <FormikButton\n data-cy=\"ip-restriction-save-changes\"\n data-testid=\"save-changes-button\"\n isLoading={isUpdating}\n type=\"submit\"\n >\n {t(\"neetoMolecules.common.actions.saveChanges\")}\n </FormikButton>\n </div>\n </div>\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 </>\n )}\n </NeetoUIForm>\n );\n};\n\nexport default React.memo(IpRestriction);\n"],"names":["toLabelAndValue","value","label","humanizeIpAddressFormat","isValidIPv4String","ip","isNotNil","Validator","isValidIPv6String","isValidIpString","areIpAddressesInSameFormat","ipStart","ipEnd","isValidIPv4Range","ipStartAddr","IPv4","fromDecimalDottedString","ipEndAddr","isLessThanOrEquals","isValidIPv6Range","IPv6","fromString","isValidIPRange","yup","addMethod","string","errorMessage","test","isNil","isValidIp","createError","path","message","getIpRestrictionValidationSchema","object","shape","validIp","t","required","when","schema","addressType","nullable","addressFormat","addressFormats","ipv4","ipv6","buildInitialValue","isIpRestrictionEnabled","allowedIpRanges","ipRestriction","buildAllowedIpRangesFormData","map","allowedIpRange","assoc","buildIpRestrictionPayload","values","allowedIpRangesWithTransformedAddressType","IP_RESTRICTIONS_ENGINE_BASE_URL","QUERY_KEYS","IP_RESTRICTION","ALLOWED_IP_RANGES","CURRENT_IP","ADDRESS_TYPE_SELECT_OPTIONS","VALIDATION_SCHEMA","array","of","NEW_ALLOWED_IP_RANGE","createdAt","Date","toISOString","AllowedIpRange","withT","_ref","index","arrayHelpers","React","createElement","className","Input","labelProps","name","concat","placeholder","Select","options","Button","icon","Delete","style","tooltipProps","content","position","onClick","remove","AllowedIpRanges","Typography","FieldArray","Fragment","form","key","push","memo","show","params","axios","get","currentIpApi","useShowCurrentIp","useQuery","CurrentIp","_useShowCurrentIp","data","isLoading","Trans","i18nKey","allowedIpRangesUrl","fetch","create","payload","post","destroy","id","update","patch","allowedIpRangesApi","useFetchAllowedIpRanges","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","PageLoader","handleSubmit","formikBag","handleUpdateIpRestriction","handleCloseAlert","setSubmitting","resetForm","onSuccess","onError","NeetoUIForm","formikProps","initialValues","validationSchema","validateOnBlur","enableReinitialize","onSubmit","_ref2","dirty","setFieldValue","BlockNavigation","Checkbox","checked","disabled","onChange","Callout","type","FormikButton","Alert","isOpen","isSubmitting","title","submitButtonLabel","onClose"],"mappings":"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"}
|
|
@@ -6,11 +6,13 @@ var zustand = require('zustand');
|
|
|
6
6
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var neetoIcons = require('@bigbinary/neeto-icons');
|
|
9
|
-
var
|
|
9
|
+
var Typography = require('@bigbinary/neetoui/Typography');
|
|
10
|
+
var Button = require('@bigbinary/neetoui/Button');
|
|
10
11
|
var managers = require('@bigbinary/neetoui/managers');
|
|
11
12
|
var classnames = require('classnames');
|
|
12
13
|
var useHotkeys = require('@bigbinary/neeto-hotkeys');
|
|
13
14
|
var reactI18next = require('react-i18next');
|
|
15
|
+
var Kbd = require('@bigbinary/neetoui/Kbd');
|
|
14
16
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
15
17
|
var i18next = require('i18next');
|
|
16
18
|
var platform = require('platform');
|
|
@@ -22,8 +24,11 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
22
24
|
var withImmutableActions__default = /*#__PURE__*/_interopDefaultLegacy(withImmutableActions);
|
|
23
25
|
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
|
24
26
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
27
|
+
var Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);
|
|
28
|
+
var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
|
|
25
29
|
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
26
30
|
var useHotkeys__default = /*#__PURE__*/_interopDefaultLegacy(useHotkeys);
|
|
31
|
+
var Kbd__default = /*#__PURE__*/_interopDefaultLegacy(Kbd);
|
|
27
32
|
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
28
33
|
var i18next__default = /*#__PURE__*/_interopDefaultLegacy(i18next);
|
|
29
34
|
var platform__default = /*#__PURE__*/_interopDefaultLegacy(platform);
|
|
@@ -167,7 +172,7 @@ var HotKey = function HotKey(_ref) {
|
|
|
167
172
|
className: "flex items-center justify-between gap-3",
|
|
168
173
|
"data-cy": "hotkey-item",
|
|
169
174
|
"data-testid": "hotkey-item"
|
|
170
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
175
|
+
}, /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
171
176
|
className: "neeto-ui-text-gray-800 min-w-0 flex-grow break-words",
|
|
172
177
|
lineHeight: "normal",
|
|
173
178
|
style: "body2"
|
|
@@ -176,10 +181,10 @@ var HotKey = function HotKey(_ref) {
|
|
|
176
181
|
}, sequences.map(function (keyName, idx) {
|
|
177
182
|
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, {
|
|
178
183
|
key: idx
|
|
179
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
184
|
+
}, /*#__PURE__*/React__default["default"].createElement(Kbd__default["default"], {
|
|
180
185
|
keyName: keyName,
|
|
181
186
|
tooltipProps: getTooltipProps(keyName)
|
|
182
|
-
}), isSequentialHotkey && idx + 1 !== sequences.length && /*#__PURE__*/React__default["default"].createElement(
|
|
187
|
+
}), isSequentialHotkey && idx + 1 !== sequences.length && /*#__PURE__*/React__default["default"].createElement(Kbd__default["default"], {
|
|
183
188
|
keyName: "then"
|
|
184
189
|
}));
|
|
185
190
|
}))));
|
|
@@ -196,7 +201,7 @@ var HotKeyList = function HotKeyList(_ref) {
|
|
|
196
201
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
197
202
|
className: "mt-4 px-4",
|
|
198
203
|
key: categoryName
|
|
199
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
204
|
+
}, /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
200
205
|
style: "h6",
|
|
201
206
|
textTransform: "uppercase",
|
|
202
207
|
weight: "bold"
|
|
@@ -210,7 +215,7 @@ var HotKeyList = function HotKeyList(_ref) {
|
|
|
210
215
|
key: sequence,
|
|
211
216
|
sequence: sequence
|
|
212
217
|
});
|
|
213
|
-
}), fullShortcutsLink && /*#__PURE__*/React__default["default"].createElement(
|
|
218
|
+
}), fullShortcutsLink && /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
|
|
214
219
|
className: "mb-3",
|
|
215
220
|
href: fullShortcutsLink,
|
|
216
221
|
style: "link",
|
|
@@ -257,10 +262,10 @@ var KeyboardShortcutsPane = function KeyboardShortcutsPane(_ref) {
|
|
|
257
262
|
className: "h-full w-80 overflow-y-auto"
|
|
258
263
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
259
264
|
className: "neeto-ui-border-gray-300 my-2 flex items-center justify-between border-b px-4 pb-2"
|
|
260
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
265
|
+
}, /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
261
266
|
"data-cy": "keyboard-shortcuts-pane-title",
|
|
262
267
|
style: "h4"
|
|
263
|
-
}, t("neetoMolecules.keyboardShortcuts.title")), /*#__PURE__*/React__default["default"].createElement(
|
|
268
|
+
}, t("neetoMolecules.keyboardShortcuts.title")), /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
|
|
264
269
|
"data-cy": "keyboard-shortcuts-pane-close-button",
|
|
265
270
|
icon: neetoIcons.Close,
|
|
266
271
|
style: "text",
|