@bigbinary/neeto-molecules 1.19.10 → 1.19.11
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 +13 -2
- package/dist/EmailForm.js.map +1 -1
- package/dist/EmailPreview.js +2 -1
- 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/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 +12 -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 +29 -11
- package/dist/cjs/EmailForm.js.map +1 -1
- package/dist/cjs/EmailPreview.js +12 -9
- 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/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 +33 -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
package/dist/cjs/Security.js
DELETED
|
@@ -1,372 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
require('@bigbinary/neeto-cist');
|
|
6
|
-
var formik$1 = require('@bigbinary/neetoui/formik');
|
|
7
|
-
var Container = require('./Container.js');
|
|
8
|
-
var Header = require('./Header.js');
|
|
9
|
-
var PageLoader = require('./PageLoader.js');
|
|
10
|
-
var Scrollable = require('./Scrollable.js');
|
|
11
|
-
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
12
|
-
var formik = require('formik');
|
|
13
|
-
var initializers = require('@bigbinary/neeto-commons-frontend/initializers');
|
|
14
|
-
var neetoui = require('@bigbinary/neetoui');
|
|
15
|
-
var ramda = require('ramda');
|
|
16
|
-
var reactI18next = require('react-i18next');
|
|
17
|
-
var classnames = require('classnames');
|
|
18
|
-
var neetoIcons = require('@bigbinary/neeto-icons');
|
|
19
|
-
var i18next = require('i18next');
|
|
20
|
-
var yup = require('yup');
|
|
21
|
-
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
22
|
-
var useMutationWithInvalidation = require('@bigbinary/neeto-commons-frontend/react-utils/useMutationWithInvalidation');
|
|
23
|
-
var reactQuery = require('react-query');
|
|
24
|
-
var axios = require('axios');
|
|
25
|
-
require('./index-248c4f4c.js');
|
|
26
|
-
require('./inject-css-80a5faa3.js');
|
|
27
|
-
require('@babel/runtime/helpers/extends');
|
|
28
|
-
require('@babel/runtime/helpers/objectWithoutProperties');
|
|
29
|
-
require('./Breadcrumbs.js');
|
|
30
|
-
require('@bigbinary/neeto-commons-frontend/utils/general');
|
|
31
|
-
require('react-router-dom');
|
|
32
|
-
require('./MoreDropdown.js');
|
|
33
|
-
require('./Search.js');
|
|
34
|
-
require('@bigbinary/neeto-commons-frontend/react-utils/useFuncDebounce');
|
|
35
|
-
require('@bigbinary/neeto-commons-frontend/react-utils/useQueryParams');
|
|
36
|
-
require('@bigbinary/neeto-commons-frontend/react-utils/useUpdateEffect');
|
|
37
|
-
require('@bigbinary/neeto-commons-frontend/utils');
|
|
38
|
-
|
|
39
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
40
|
-
|
|
41
|
-
function _interopNamespace(e) {
|
|
42
|
-
if (e && e.__esModule) return e;
|
|
43
|
-
var n = Object.create(null);
|
|
44
|
-
if (e) {
|
|
45
|
-
Object.keys(e).forEach(function (k) {
|
|
46
|
-
if (k !== 'default') {
|
|
47
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
48
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
49
|
-
enumerable: true,
|
|
50
|
-
get: function () { return e[k]; }
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
n["default"] = e;
|
|
56
|
-
return Object.freeze(n);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
|
60
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
61
|
-
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
|
|
62
|
-
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
63
|
-
var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
|
|
64
|
-
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
65
|
-
var useMutationWithInvalidation__default = /*#__PURE__*/_interopDefaultLegacy(useMutationWithInvalidation);
|
|
66
|
-
var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
|
|
67
|
-
|
|
68
|
-
var Add = function Add() {
|
|
69
|
-
var _useTranslation = reactI18next.useTranslation(),
|
|
70
|
-
t = _useTranslation.t;
|
|
71
|
-
var _useFormikContext = formik.useFormikContext(),
|
|
72
|
-
setFieldValue = _useFormikContext.setFieldValue,
|
|
73
|
-
allowedKeywords = _useFormikContext.values.allowedKeywords;
|
|
74
|
-
var removeKeyword = function removeKeyword(index) {
|
|
75
|
-
return setFieldValue("allowedKeywords", ramda.remove(index, 1, allowedKeywords));
|
|
76
|
-
};
|
|
77
|
-
if (!allowedKeywords) return null;
|
|
78
|
-
return allowedKeywords.map(function (_, index) {
|
|
79
|
-
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
80
|
-
className: classnames__default["default"]("flex w-full items-start justify-between gap-x-2"),
|
|
81
|
-
key: index
|
|
82
|
-
}, /*#__PURE__*/React__default["default"].createElement(formik$1.Input, {
|
|
83
|
-
autoFocus: true,
|
|
84
|
-
"data-cy": "keyword-input-field-".concat(index),
|
|
85
|
-
name: "allowedKeywords[".concat(index, "]"),
|
|
86
|
-
placeholder: t("neetoMolecules.security.placeholders.enterKeyword")
|
|
87
|
-
}), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
|
|
88
|
-
"data-cy": "keyword-remove-button-".concat(index),
|
|
89
|
-
icon: neetoIcons.Delete,
|
|
90
|
-
style: "text",
|
|
91
|
-
onClick: function onClick() {
|
|
92
|
-
return removeKeyword(index);
|
|
93
|
-
}
|
|
94
|
-
}));
|
|
95
|
-
});
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
99
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
100
|
-
var buildSecuritySettings = function buildSecuritySettings(settings) {
|
|
101
|
-
return _objectSpread(_objectSpread({}, settings.setting), {}, {
|
|
102
|
-
addEmail: false
|
|
103
|
-
});
|
|
104
|
-
};
|
|
105
|
-
var findKeywordDuplicates = function findKeywordDuplicates(list, message, createError) {
|
|
106
|
-
var duplicates = {};
|
|
107
|
-
list === null || list === void 0 ? void 0 : list.forEach(function (value, index) {
|
|
108
|
-
if (duplicates[value]) {
|
|
109
|
-
duplicates[value].push(index);
|
|
110
|
-
} else {
|
|
111
|
-
duplicates[value] = [index];
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
var errors = Object.values(duplicates).map(function (index) {
|
|
115
|
-
return index.length > 1 && new yup__namespace.ValidationError(message, list[index.at(-1)], "setting.allowedKeywords[".concat(index.at(-1), "]"));
|
|
116
|
-
});
|
|
117
|
-
if (ramda.isEmpty(errors)) {
|
|
118
|
-
return true;
|
|
119
|
-
}
|
|
120
|
-
return createError({
|
|
121
|
-
message: function message() {
|
|
122
|
-
return errors;
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
var NOT_SECURED = "no_auth";
|
|
128
|
-
var SESSION_AUTH = "session_auth";
|
|
129
|
-
yup__namespace.addMethod(yup__namespace.array, "unique", function (message) {
|
|
130
|
-
var mapper = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ramda.identity;
|
|
131
|
-
return this.test("unique", message, function (list, _ref) {
|
|
132
|
-
var authKind = _ref.parent.authKind;
|
|
133
|
-
return authKind === OTP_ENABLED && (list === null || list === void 0 ? void 0 : list.length) === new Set(list === null || list === void 0 ? void 0 : list.map(mapper)).size ? true : findKeywordDuplicates(list, message, this.createError);
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
var QUERY_KEYS = {
|
|
137
|
-
SETTINGS_LIST: "settings-list",
|
|
138
|
-
GETTING_STARTED: "getting-started",
|
|
139
|
-
INTEGRATION_SETTINGS: "integration_settings",
|
|
140
|
-
THEMES_SETTINGS: "themes_setting"
|
|
141
|
-
};
|
|
142
|
-
var SETTINGS_STALE_TIME = 900000; // 15 mins
|
|
143
|
-
var PASSWORD_ENABLED = "basic_auth";
|
|
144
|
-
var OTP_ENABLED = "otp_auth";
|
|
145
|
-
var APP_NAME = {
|
|
146
|
-
neetoKB: "KB",
|
|
147
|
-
neetoCourse: "Course"
|
|
148
|
-
};
|
|
149
|
-
[{
|
|
150
|
-
label: i18next.t("neetoMolecules.security.labels.notSecured"),
|
|
151
|
-
value: NOT_SECURED
|
|
152
|
-
}, {
|
|
153
|
-
label: i18next.t("neetoMolecules.security.labels.passwordEnabled"),
|
|
154
|
-
value: PASSWORD_ENABLED
|
|
155
|
-
}, {
|
|
156
|
-
label: i18next.t("neetoMolecules.security.labels.otpEnabled"),
|
|
157
|
-
value: OTP_ENABLED
|
|
158
|
-
}, {
|
|
159
|
-
label: i18next.t("neetoMolecules.security.labels.private"),
|
|
160
|
-
value: SESSION_AUTH
|
|
161
|
-
}];
|
|
162
|
-
var SECURITY_SETTINGS_VALIDATION_SCHEMA = yup__namespace.object({
|
|
163
|
-
password: yup__namespace.string().when("authKind", {
|
|
164
|
-
is: PASSWORD_ENABLED,
|
|
165
|
-
then: yup__namespace.string().required(i18next.t("neetoMolecules.security.validation.required", {
|
|
166
|
-
what: i18next.t("neetoMolecules.security.labels.password")
|
|
167
|
-
})).min(4, i18next.t("neetoMolecules.security.validation.min", {
|
|
168
|
-
entity: i18next.t("neetoMolecules.security.labels.password"),
|
|
169
|
-
min: 4
|
|
170
|
-
}))
|
|
171
|
-
}),
|
|
172
|
-
allowedKeywords: yup__namespace.array().when("authKind", {
|
|
173
|
-
is: OTP_ENABLED,
|
|
174
|
-
then: yup__namespace.array().of(yup__namespace.string().trim().required(i18next.t("neetoMolecules.security.validation.required", {
|
|
175
|
-
what: i18next.t("neetoMolecules.security.labels.keyword")
|
|
176
|
-
}))).unique(i18next.t("neetoMolecules.security.placeholders.exists", {
|
|
177
|
-
what: i18next.t("neetoMolecules.security.labels.keyword")
|
|
178
|
-
}))
|
|
179
|
-
})
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
var AllowedKeywords = function AllowedKeywords() {
|
|
183
|
-
var _useTranslation = reactI18next.useTranslation(),
|
|
184
|
-
t = _useTranslation.t;
|
|
185
|
-
var _useFormikContext = formik.useFormikContext(),
|
|
186
|
-
setFieldValue = _useFormikContext.setFieldValue,
|
|
187
|
-
_useFormikContext$val = _useFormikContext.values,
|
|
188
|
-
allowedKeywords = _useFormikContext$val.allowedKeywords,
|
|
189
|
-
authKind = _useFormikContext$val.authKind;
|
|
190
|
-
if (authKind !== OTP_ENABLED) return null;
|
|
191
|
-
var appName = APP_NAME[initializers.globalProps.appName];
|
|
192
|
-
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
193
|
-
className: "flex-col space-y-2 py-2"
|
|
194
|
-
}, appName && /*#__PURE__*/React__default["default"].createElement(neetoui.Label, null, t("neetoMolecules.security.labels.keywordForm.".concat(appName))), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
195
|
-
className: "neeto-ui-bg-pastel-blue neeto-ui-rounded-sm w-full space-y-4 p-6"
|
|
196
|
-
}, /*#__PURE__*/React__default["default"].createElement(Add, null), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
|
|
197
|
-
"data-cy": "add-allowed-keyword-button",
|
|
198
|
-
"data-testid": "add-allowed-keyword-button",
|
|
199
|
-
label: t("neetoMolecules.security.labels.addKeyWord"),
|
|
200
|
-
style: "link",
|
|
201
|
-
onClick: function onClick() {
|
|
202
|
-
return setFieldValue("allowedKeywords", [].concat(_toConsumableArray__default["default"](allowedKeywords), [""]));
|
|
203
|
-
}
|
|
204
|
-
})), ramda.isEmpty(allowedKeywords) && /*#__PURE__*/React__default["default"].createElement(formik.ErrorMessage, {
|
|
205
|
-
className: "neeto-ui-text-error-600",
|
|
206
|
-
component: "div",
|
|
207
|
-
name: "allowedKeywords"
|
|
208
|
-
}));
|
|
209
|
-
};
|
|
210
|
-
|
|
211
|
-
var Password = function Password() {
|
|
212
|
-
var _useTranslation = reactI18next.useTranslation(),
|
|
213
|
-
t = _useTranslation.t;
|
|
214
|
-
var _useFormikContext = formik.useFormikContext(),
|
|
215
|
-
authKind = _useFormikContext.values.authKind,
|
|
216
|
-
getFieldProps = _useFormikContext.getFieldProps;
|
|
217
|
-
if (authKind !== PASSWORD_ENABLED) return null;
|
|
218
|
-
var _getFieldProps = getFieldProps("password"),
|
|
219
|
-
onPasswordChange = _getFieldProps.onChange;
|
|
220
|
-
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
221
|
-
className: "space-y-4 pb-2"
|
|
222
|
-
}, /*#__PURE__*/React__default["default"].createElement(formik$1.Input, {
|
|
223
|
-
autoFocus: true,
|
|
224
|
-
unlimitedChars: true,
|
|
225
|
-
className: "w-7/12",
|
|
226
|
-
"data-testid": "password-block",
|
|
227
|
-
label: t("neetoMolecules.security.labels.password"),
|
|
228
|
-
name: "password",
|
|
229
|
-
placeholder: t("neetoMolecules.security.placeholders.enterPassword"),
|
|
230
|
-
onChange: function onChange(e) {
|
|
231
|
-
e.target.value = e.target.value.trim();
|
|
232
|
-
onPasswordChange(e);
|
|
233
|
-
}
|
|
234
|
-
}));
|
|
235
|
-
};
|
|
236
|
-
|
|
237
|
-
var RadioBlock = function RadioBlock(_ref) {
|
|
238
|
-
var radioItems = _ref.radioItems;
|
|
239
|
-
var _useFormikContext = formik.useFormikContext(),
|
|
240
|
-
_useFormikContext$val = _useFormikContext.values.allowedKeywords,
|
|
241
|
-
allowedKeywords = _useFormikContext$val === void 0 ? [] : _useFormikContext$val,
|
|
242
|
-
setFieldValue = _useFormikContext.setFieldValue;
|
|
243
|
-
var handleRadioChange = function handleRadioChange(_ref2) {
|
|
244
|
-
var value = _ref2.event.target.value,
|
|
245
|
-
allowedKeywords = _ref2.allowedKeywords;
|
|
246
|
-
var allowedKeywordsValue = value === OTP_ENABLED ? [].concat(_toConsumableArray__default["default"](allowedKeywords), [""]) : [];
|
|
247
|
-
setFieldValue("allowedKeywords", allowedKeywordsValue);
|
|
248
|
-
setFieldValue("authKind", value);
|
|
249
|
-
};
|
|
250
|
-
return /*#__PURE__*/React__default["default"].createElement(formik$1.Radio, {
|
|
251
|
-
stacked: true,
|
|
252
|
-
name: "authKind",
|
|
253
|
-
onChange: function onChange(event) {
|
|
254
|
-
return handleRadioChange({
|
|
255
|
-
event: event,
|
|
256
|
-
allowedKeywords: allowedKeywords
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
}, radioItems.map(function (_ref3) {
|
|
260
|
-
var label = _ref3.label,
|
|
261
|
-
value = _ref3.value;
|
|
262
|
-
return /*#__PURE__*/React__default["default"].createElement(formik$1.Radio.Item, {
|
|
263
|
-
key: value,
|
|
264
|
-
label: label,
|
|
265
|
-
value: value
|
|
266
|
-
});
|
|
267
|
-
}));
|
|
268
|
-
};
|
|
269
|
-
|
|
270
|
-
var fetch = function fetch(url) {
|
|
271
|
-
return axios__default["default"].get(url);
|
|
272
|
-
};
|
|
273
|
-
var update = function update(url, payload) {
|
|
274
|
-
return axios__default["default"].put(url, payload);
|
|
275
|
-
};
|
|
276
|
-
var settingsApi = {
|
|
277
|
-
fetch: fetch,
|
|
278
|
-
update: update
|
|
279
|
-
};
|
|
280
|
-
|
|
281
|
-
var SETTINGS_LIST = QUERY_KEYS.SETTINGS_LIST,
|
|
282
|
-
GETTING_STARTED = QUERY_KEYS.GETTING_STARTED,
|
|
283
|
-
THEMES_SETTINGS = QUERY_KEYS.THEMES_SETTINGS;
|
|
284
|
-
var useFetchSettings = function useFetchSettings(url) {
|
|
285
|
-
return reactQuery.useQuery(SETTINGS_LIST, function () {
|
|
286
|
-
return settingsApi.fetch(url);
|
|
287
|
-
}, {
|
|
288
|
-
staleTime: SETTINGS_STALE_TIME
|
|
289
|
-
});
|
|
290
|
-
};
|
|
291
|
-
var useUpdateSetting = function useUpdateSetting(url) {
|
|
292
|
-
return useMutationWithInvalidation__default["default"](function (payload) {
|
|
293
|
-
return settingsApi.update(url, payload);
|
|
294
|
-
}, {
|
|
295
|
-
keysToInvalidate: [SETTINGS_LIST, GETTING_STARTED, THEMES_SETTINGS]
|
|
296
|
-
});
|
|
297
|
-
};
|
|
298
|
-
|
|
299
|
-
var Security = function Security(_ref) {
|
|
300
|
-
var url = _ref.url,
|
|
301
|
-
breadcrumbs = _ref.breadcrumbs,
|
|
302
|
-
title = _ref.title,
|
|
303
|
-
radioItems = _ref.radioItems;
|
|
304
|
-
var _useFetchSettings = useFetchSettings(url),
|
|
305
|
-
_useFetchSettings$dat = _useFetchSettings.data,
|
|
306
|
-
settings = _useFetchSettings$dat === void 0 ? {} : _useFetchSettings$dat,
|
|
307
|
-
isLoading = _useFetchSettings.isLoading;
|
|
308
|
-
var _useUpdateSetting = useUpdateSetting(url),
|
|
309
|
-
updateSettings = _useUpdateSetting.mutate;
|
|
310
|
-
var _useState = React.useState(false),
|
|
311
|
-
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
312
|
-
isMobileScreen = _useState2[0],
|
|
313
|
-
setIsMobileScreen = _useState2[1];
|
|
314
|
-
var isLargerScreen = function isLargerScreen() {
|
|
315
|
-
return window.innerWidth > 1024;
|
|
316
|
-
};
|
|
317
|
-
var handleSubmit = function handleSubmit(values, _ref2) {
|
|
318
|
-
var setSubmitting = _ref2.setSubmitting;
|
|
319
|
-
updateSettings(values, {
|
|
320
|
-
onSettled: function onSettled() {
|
|
321
|
-
return setSubmitting(false);
|
|
322
|
-
}
|
|
323
|
-
});
|
|
324
|
-
};
|
|
325
|
-
React.useEffect(function () {
|
|
326
|
-
var handleResize = function handleResize() {
|
|
327
|
-
if (isLargerScreen()) setIsMobileScreen(false);else setIsMobileScreen(true);
|
|
328
|
-
};
|
|
329
|
-
window.addEventListener("resize", handleResize);
|
|
330
|
-
return function () {
|
|
331
|
-
return window.removeEventListener("resize", handleResize);
|
|
332
|
-
};
|
|
333
|
-
}, []);
|
|
334
|
-
if (isLoading) return /*#__PURE__*/React__default["default"].createElement(PageLoader, null);
|
|
335
|
-
return /*#__PURE__*/React__default["default"].createElement(Container, {
|
|
336
|
-
isHeaderFixed: true
|
|
337
|
-
}, /*#__PURE__*/React__default["default"].createElement(Header, {
|
|
338
|
-
breadcrumbs: breadcrumbs,
|
|
339
|
-
title: title,
|
|
340
|
-
"data-cy": "general-settings-heading",
|
|
341
|
-
size: isMobileScreen ? "small" : "large"
|
|
342
|
-
}), /*#__PURE__*/React__default["default"].createElement(Scrollable, {
|
|
343
|
-
className: "w-full pb-6"
|
|
344
|
-
}, /*#__PURE__*/React__default["default"].createElement(formik$1.Form, {
|
|
345
|
-
className: "mx-auto w-full max-w-3xl space-y-6 md:px-0 lg:px-6",
|
|
346
|
-
formikProps: {
|
|
347
|
-
initialValues: buildSecuritySettings(settings),
|
|
348
|
-
validationSchema: SECURITY_SETTINGS_VALIDATION_SCHEMA,
|
|
349
|
-
onSubmit: handleSubmit,
|
|
350
|
-
enableReinitialize: true
|
|
351
|
-
}
|
|
352
|
-
}, function (_ref3) {
|
|
353
|
-
var dirty = _ref3.dirty,
|
|
354
|
-
isSubmitting = _ref3.isSubmitting;
|
|
355
|
-
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(RadioBlock, {
|
|
356
|
-
radioItems: radioItems
|
|
357
|
-
}), /*#__PURE__*/React__default["default"].createElement(Password, null), /*#__PURE__*/React__default["default"].createElement(AllowedKeywords, null), /*#__PURE__*/React__default["default"].createElement(formik$1.ActionBlock, {
|
|
358
|
-
cancelButtonProps: {
|
|
359
|
-
disabled: false,
|
|
360
|
-
className: "ml-3"
|
|
361
|
-
},
|
|
362
|
-
className: "mt-6 w-full justify-start",
|
|
363
|
-
submitButtonProps: {
|
|
364
|
-
loading: isSubmitting,
|
|
365
|
-
disabled: !dirty || isSubmitting
|
|
366
|
-
}
|
|
367
|
-
}));
|
|
368
|
-
})));
|
|
369
|
-
};
|
|
370
|
-
|
|
371
|
-
module.exports = Security;
|
|
372
|
-
//# sourceMappingURL=Security.js.map
|
package/dist/cjs/Security.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Security.js","sources":["../../src/components/Security/AllowedKeywords/Add.jsx","../../src/components/Security/utils.js","../../src/components/Security/constants.js","../../src/components/Security/AllowedKeywords/index.jsx","../../src/components/Security/PasswordBlock.jsx","../../src/components/Security/RadioBlock.jsx","../../src/components/Security/api.js","../../src/components/Security/useSecurityApi.js","../../src/components/Security/index.jsx"],"sourcesContent":["import React from \"react\";\n\nimport classNames from \"classnames\";\nimport { useFormikContext } from \"formik\";\nimport { Delete } from \"neetoicons\";\nimport { Button } from \"neetoui\";\nimport { Input } from \"neetoui/formik\";\nimport { remove } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nconst Add = () => {\n const { t } = useTranslation();\n const {\n setFieldValue,\n values: { allowedKeywords },\n } = useFormikContext();\n\n const removeKeyword = index =>\n setFieldValue(\"allowedKeywords\", remove(index, 1, allowedKeywords));\n\n if (!allowedKeywords) return null;\n\n return allowedKeywords.map((_, index) => (\n <div\n className={classNames(\"flex w-full items-start justify-between gap-x-2\")}\n key={index}\n >\n <Input\n autoFocus\n data-cy={`keyword-input-field-${index}`}\n name={`allowedKeywords[${index}]`}\n placeholder={t(\"neetoMolecules.security.placeholders.enterKeyword\")}\n />\n <Button\n data-cy={`keyword-remove-button-${index}`}\n icon={Delete}\n style=\"text\"\n onClick={() => removeKeyword(index)}\n />\n </div>\n ));\n};\n\nexport default Add;\n","import { isEmpty } from \"ramda\";\nimport * as yup from \"yup\";\n\nexport const buildSecuritySettings = settings => ({\n ...settings.setting,\n addEmail: false,\n});\n\nexport const findKeywordDuplicates = (list, message, createError) => {\n const duplicates = {};\n\n list?.forEach((value, index) => {\n if (duplicates[value]) {\n duplicates[value].push(index);\n } else {\n duplicates[value] = [index];\n }\n });\n\n const errors = Object.values(duplicates).map(\n index =>\n index.length > 1 &&\n new yup.ValidationError(\n message,\n list[index.at(-1)],\n `setting.allowedKeywords[${index.at(-1)}]`\n )\n );\n\n if (isEmpty(errors)) {\n return true;\n }\n\n return createError({ message: () => errors });\n};\n","import { t } from \"i18next\";\nimport { identity } from \"ramda\";\nimport * as yup from \"yup\";\n\nimport { findKeywordDuplicates } from \"./utils\";\n\nconst NOT_SECURED = \"no_auth\";\nconst SESSION_AUTH = \"session_auth\";\n\nyup.addMethod(yup.array, \"unique\", function (message, mapper = identity) {\n return this.test(\n \"unique\",\n message,\n function (list, { parent: { authKind } }) {\n return authKind === OTP_ENABLED &&\n list?.length === new Set(list?.map(mapper)).size\n ? true\n : findKeywordDuplicates(list, message, this.createError);\n }\n );\n});\n\nexport const QUERY_KEYS = {\n SETTINGS_LIST: \"settings-list\",\n GETTING_STARTED: \"getting-started\",\n INTEGRATION_SETTINGS: \"integration_settings\",\n THEMES_SETTINGS: \"themes_setting\",\n};\nexport const SETTINGS_STALE_TIME = 900_000; // 15 mins\nexport const PASSWORD_ENABLED = \"basic_auth\";\nexport const OTP_ENABLED = \"otp_auth\";\n\nexport const APP_NAME = { neetoKB: \"KB\", neetoCourse: \"Course\" };\n\nexport const AUTH_KINDS = [\n {\n label: t(\"neetoMolecules.security.labels.notSecured\"),\n value: NOT_SECURED,\n },\n {\n label: t(\"neetoMolecules.security.labels.passwordEnabled\"),\n value: PASSWORD_ENABLED,\n },\n {\n label: t(\"neetoMolecules.security.labels.otpEnabled\"),\n value: OTP_ENABLED,\n },\n {\n label: t(\"neetoMolecules.security.labels.private\"),\n value: SESSION_AUTH,\n },\n];\n\nexport const SECURITY_SETTINGS_VALIDATION_SCHEMA = yup.object({\n password: yup.string().when(\"authKind\", {\n is: PASSWORD_ENABLED,\n then: yup\n .string()\n .required(\n t(\"neetoMolecules.security.validation.required\", {\n what: t(\"neetoMolecules.security.labels.password\"),\n })\n )\n .min(\n 4,\n t(\"neetoMolecules.security.validation.min\", {\n entity: t(\"neetoMolecules.security.labels.password\"),\n min: 4,\n })\n ),\n }),\n allowedKeywords: yup.array().when(\"authKind\", {\n is: OTP_ENABLED,\n then: yup\n .array()\n .of(\n yup\n .string()\n .trim()\n .required(\n t(\"neetoMolecules.security.validation.required\", {\n what: t(\"neetoMolecules.security.labels.keyword\"),\n })\n )\n )\n .unique(\n t(\"neetoMolecules.security.placeholders.exists\", {\n what: t(\"neetoMolecules.security.labels.keyword\"),\n })\n ),\n }),\n});\n","import React from \"react\";\n\nimport { ErrorMessage, useFormikContext } from \"formik\";\nimport { globalProps } from \"neetocommons/initializers\";\nimport { Button, Label } from \"neetoui\";\nimport { isEmpty } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Add from \"./Add\";\n\nimport { OTP_ENABLED, APP_NAME } from \"../constants\";\n\nconst AllowedKeywords = () => {\n const { t } = useTranslation();\n const {\n setFieldValue,\n values: { allowedKeywords, authKind },\n } = useFormikContext();\n\n if (authKind !== OTP_ENABLED) return null;\n\n const appName = APP_NAME[globalProps.appName];\n\n return (\n <div className=\"flex-col space-y-2 py-2\">\n {appName && (\n <Label>\n {t(`neetoMolecules.security.labels.keywordForm.${appName}`)}\n </Label>\n )}\n <div className=\"neeto-ui-bg-pastel-blue neeto-ui-rounded-sm w-full space-y-4 p-6\">\n <Add />\n <Button\n data-cy=\"add-allowed-keyword-button\"\n data-testid=\"add-allowed-keyword-button\"\n label={t(\"neetoMolecules.security.labels.addKeyWord\")}\n style=\"link\"\n onClick={() =>\n setFieldValue(\"allowedKeywords\", [...allowedKeywords, \"\"])\n }\n />\n </div>\n {isEmpty(allowedKeywords) && (\n <ErrorMessage\n className=\"neeto-ui-text-error-600\"\n component=\"div\"\n name=\"allowedKeywords\"\n />\n )}\n </div>\n );\n};\n\nexport default AllowedKeywords;\n","import React from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { Input } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { PASSWORD_ENABLED } from \"./constants\";\n\nconst Password = () => {\n const { t } = useTranslation();\n const {\n values: { authKind },\n getFieldProps,\n } = useFormikContext();\n\n if (authKind !== PASSWORD_ENABLED) return null;\n\n const { onChange: onPasswordChange } = getFieldProps(\"password\");\n\n return (\n <div className=\"space-y-4 pb-2\">\n <Input\n autoFocus\n unlimitedChars\n className=\"w-7/12\"\n data-testid=\"password-block\"\n label={t(\"neetoMolecules.security.labels.password\")}\n name=\"password\"\n placeholder={t(\"neetoMolecules.security.placeholders.enterPassword\")}\n onChange={e => {\n e.target.value = e.target.value.trim();\n onPasswordChange(e);\n }}\n />\n </div>\n );\n};\n\nexport default Password;\n","import React from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { Radio } from \"neetoui/formik\";\n\nimport { OTP_ENABLED } from \"./constants\";\n\nconst RadioBlock = ({ radioItems }) => {\n const {\n values: { allowedKeywords = [] },\n setFieldValue,\n } = useFormikContext();\n\n const handleRadioChange = ({\n event: {\n target: { value },\n },\n allowedKeywords,\n }) => {\n const allowedKeywordsValue =\n value === OTP_ENABLED ? [...allowedKeywords, \"\"] : [];\n setFieldValue(\"allowedKeywords\", allowedKeywordsValue);\n setFieldValue(\"authKind\", value);\n };\n\n return (\n <Radio\n stacked\n name=\"authKind\"\n onChange={event => handleRadioChange({ event, allowedKeywords })}\n >\n {radioItems.map(({ label, value }) => (\n <Radio.Item key={value} {...{ label, value }} />\n ))}\n </Radio>\n );\n};\n\nexport default RadioBlock;\n","import axios from \"axios\";\n\nconst fetch = url => axios.get(url);\n\nconst update = (url, payload) => axios.put(url, payload);\n\nconst settingsApi = { fetch, update };\n\nexport default settingsApi;\n","import useMutationWithInvalidation from \"neetocommons/react-utils/useMutationWithInvalidation\";\nimport { useQuery } from \"react-query\";\n\nimport settingsApi from \"./api\";\nimport { QUERY_KEYS, SETTINGS_STALE_TIME } from \"./constants\";\n\nconst { SETTINGS_LIST, GETTING_STARTED, THEMES_SETTINGS } = QUERY_KEYS;\n\nconst useFetchSettings = url =>\n useQuery(SETTINGS_LIST, () => settingsApi.fetch(url), {\n staleTime: SETTINGS_STALE_TIME,\n });\n\nconst useUpdateSetting = url =>\n useMutationWithInvalidation(payload => settingsApi.update(url, payload), {\n keysToInvalidate: [SETTINGS_LIST, GETTING_STARTED, THEMES_SETTINGS],\n });\n\nexport { useFetchSettings, useUpdateSetting };\n","import React, { useState, useEffect } from \"react\";\n\nimport { toLabelAndValue } from \"neetocist\";\nimport { Form, ActionBlock } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\n\nimport Container from \"components/Container\";\nimport Header from \"components/Header\";\nimport PageLoader from \"components/PageLoader\";\nimport Scrollable from \"components/Scrollable\";\n\nimport AllowedKeywords from \"./AllowedKeywords\";\nimport { SECURITY_SETTINGS_VALIDATION_SCHEMA } from \"./constants\";\nimport Password from \"./PasswordBlock\";\nimport RadioBlock from \"./RadioBlock\";\nimport { useFetchSettings, useUpdateSetting } from \"./useSecurityApi\";\nimport { buildSecuritySettings } from \"./utils\";\n\nconst Security = ({ url, breadcrumbs, title, radioItems }) => {\n const { data: settings = {}, isLoading } = useFetchSettings(url);\n const { mutate: updateSettings } = useUpdateSetting(url);\n\n const [isMobileScreen, setIsMobileScreen] = useState(false);\n\n const isLargerScreen = () => window.innerWidth > 1024;\n\n const handleSubmit = (values, { setSubmitting }) => {\n updateSettings(values, { onSettled: () => setSubmitting(false) });\n };\n\n useEffect(() => {\n const handleResize = () => {\n if (isLargerScreen()) setIsMobileScreen(false);\n else setIsMobileScreen(true);\n };\n window.addEventListener(\"resize\", handleResize);\n\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n\n if (isLoading) return <PageLoader />;\n\n return (\n <Container isHeaderFixed>\n <Header\n {...{ breadcrumbs, title }}\n data-cy=\"general-settings-heading\"\n size={isMobileScreen ? \"small\" : \"large\"}\n />\n <Scrollable className=\"w-full pb-6\">\n <Form\n className=\"mx-auto w-full max-w-3xl space-y-6 md:px-0 lg:px-6\"\n formikProps={{\n initialValues: buildSecuritySettings(settings),\n validationSchema: SECURITY_SETTINGS_VALIDATION_SCHEMA,\n onSubmit: handleSubmit,\n enableReinitialize: true,\n }}\n >\n {({ dirty, isSubmitting }) => (\n <>\n <RadioBlock {...{ radioItems }} />\n <Password />\n <AllowedKeywords />\n <ActionBlock\n cancelButtonProps={{ disabled: false, className: \"ml-3\" }}\n className=\"mt-6 w-full justify-start\"\n submitButtonProps={{\n loading: isSubmitting,\n disabled: !dirty || isSubmitting,\n }}\n />\n </>\n )}\n </Form>\n </Scrollable>\n </Container>\n );\n};\n\nSecurity.propTypes = {\n /**\n * To set a title in the Header section.\n */\n title: PropTypes.node,\n /**\n * API path to manage security record.\n */\n url: PropTypes.string,\n /**\n * To show breadcrumbs in the Header section. `text` accepts a text string to be shown as the breadcrumb and `link` accepts relative URL path for the breadcrumb.\n */\n breadcrumbs: PropTypes.arrayOf(\n PropTypes.shape({\n text: PropTypes.string,\n link: PropTypes.string,\n })\n ),\n radioItems: PropTypes.arrayOf(\n PropTypes.shape(toLabelAndValue(PropTypes.string))\n ),\n};\n\nexport default Security;\n"],"names":["Add","_useTranslation","useTranslation","t","_useFormikContext","useFormikContext","setFieldValue","allowedKeywords","values","removeKeyword","index","remove","map","_","React","createElement","className","classNames","key","Input","autoFocus","concat","name","placeholder","Button","icon","Delete","style","onClick","buildSecuritySettings","settings","_objectSpread","setting","addEmail","findKeywordDuplicates","list","message","createError","duplicates","forEach","value","push","errors","Object","length","yup","ValidationError","at","isEmpty","NOT_SECURED","SESSION_AUTH","addMethod","array","mapper","arguments","undefined","identity","test","_ref","authKind","parent","OTP_ENABLED","Set","size","QUERY_KEYS","SETTINGS_LIST","GETTING_STARTED","INTEGRATION_SETTINGS","THEMES_SETTINGS","SETTINGS_STALE_TIME","PASSWORD_ENABLED","APP_NAME","neetoKB","neetoCourse","label","SECURITY_SETTINGS_VALIDATION_SCHEMA","object","password","string","when","is","then","required","what","min","entity","of","trim","unique","AllowedKeywords","_useFormikContext$val","appName","globalProps","Label","_toConsumableArray","ErrorMessage","component","Password","getFieldProps","_getFieldProps","onPasswordChange","onChange","unlimitedChars","e","target","RadioBlock","radioItems","handleRadioChange","_ref2","event","allowedKeywordsValue","Radio","stacked","_ref3","Item","fetch","url","axios","get","update","payload","put","settingsApi","useFetchSettings","useQuery","staleTime","useUpdateSetting","useMutationWithInvalidation","keysToInvalidate","Security","breadcrumbs","title","_useFetchSettings","_useFetchSettings$dat","data","isLoading","_useUpdateSetting","updateSettings","mutate","_useState","useState","_useState2","_slicedToArray","isMobileScreen","setIsMobileScreen","isLargerScreen","window","innerWidth","handleSubmit","setSubmitting","onSettled","useEffect","handleResize","addEventListener","removeEventListener","PageLoader","Container","isHeaderFixed","Header","Scrollable","Form","formikProps","initialValues","validationSchema","onSubmit","enableReinitialize","dirty","isSubmitting","Fragment","ActionBlock","cancelButtonProps","disabled","submitButtonProps","loading"],"mappings":"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"}
|