@bigbinary/neeto-molecules 1.19.8 → 1.19.10-beta
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/{Chevron-c639aa31.js → Chevron-e9377de4.js} +6 -5
- package/dist/Chevron-e9377de4.js.map +1 -0
- package/dist/ConfigurePageSidebar.js +4 -8
- package/dist/ConfigurePageSidebar.js.map +1 -1
- package/dist/FloatingActionMenu.js +1 -1
- package/dist/MadeWith.js +2 -1
- package/dist/MadeWith.js.map +1 -1
- package/dist/PageLoader.js +5 -65
- package/dist/PageLoader.js.map +1 -1
- package/dist/Sidebar.js +3 -9
- package/dist/Sidebar.js.map +1 -1
- package/dist/cjs/{Chevron-5fe59f57.js → Chevron-90e580d5.js} +6 -5
- package/dist/cjs/Chevron-90e580d5.js.map +1 -0
- package/dist/cjs/ConfigurePageSidebar.js +4 -8
- package/dist/cjs/ConfigurePageSidebar.js.map +1 -1
- package/dist/cjs/FloatingActionMenu.js +1 -1
- package/dist/cjs/MadeWith.js +2 -1
- package/dist/cjs/MadeWith.js.map +1 -1
- package/dist/cjs/PageLoader.js +5 -83
- package/dist/cjs/PageLoader.js.map +1 -1
- package/dist/cjs/Sidebar.js +3 -9
- package/dist/cjs/Sidebar.js.map +1 -1
- package/package.json +2 -2
- package/src/translations/en.json +0 -84
- package/types/ProductEmbed.d.ts +53 -9
- package/dist/Chevron-c639aa31.js.map +0 -1
- 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/Chevron-5fe59f57.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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"}
|