@bigbinary/neeto-access-control-frontend 0.0.1

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 ADDED
@@ -0,0 +1 @@
1
+ # neeto-access-control-nano
@@ -0,0 +1,32 @@
1
+ {
2
+ "neetoAccessControl": {
3
+ "titles": {
4
+ "dashboard": "Access Control"
5
+ },
6
+ "auth": {
7
+ "no": "Public, anyone can access",
8
+ "basic": "Secure with password",
9
+ "email": "Secure by allowing emails with certain keywords",
10
+ "session": "Private, logged in members only"
11
+ },
12
+ "actions": {
13
+ "addKeyword": "Add allowed keyword"
14
+ },
15
+ "inputs": {
16
+ "labels": {
17
+ "keywords": "Add keywords that must be present in the email address for it to be allowed access. For example if you want to give access only to the folks whose email ends with @bigbinary.com then you can add @bigbinary as the keyword required. You can add as many keywords as you want.",
18
+ "password": "Password",
19
+ "visibility": "Visibility"
20
+ },
21
+ "placeholders": {
22
+ "enterKeyword": "Enter keyword",
23
+ "enterPassword": "Enter password"
24
+ },
25
+ "validation": {
26
+ "passwordRequired": "Password is required",
27
+ "authRequired": "Authentication type is required",
28
+ "passwordMinLength": "Password must be at least ${min} characters"
29
+ }
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,3 @@
1
+ import en from "./en.json";
2
+
3
+ export { en };
@@ -0,0 +1,348 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var classNames = require('classnames');
7
+ var Container = require('@bigbinary/neeto-molecules/Container');
8
+ var Header = require('@bigbinary/neeto-molecules/Header');
9
+ var PageLoader = require('@bigbinary/neeto-molecules/PageLoader');
10
+ var Scrollable = require('@bigbinary/neeto-molecules/Scrollable');
11
+ var neetoui = require('@bigbinary/neetoui');
12
+ var formik$1 = require('@bigbinary/neetoui/formik');
13
+ var reactI18next = require('react-i18next');
14
+ var constants = require('@bigbinary/neeto-commons-frontend/constants');
15
+ var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
16
+ var ramda = require('ramda');
17
+ var reactQuery = require('react-query');
18
+ var axios = require('axios');
19
+ var formik = require('formik');
20
+ var neetoCist = require('@bigbinary/neeto-cist');
21
+ var neetoIcons = require('@bigbinary/neeto-icons');
22
+ var i18next = require('i18next');
23
+ var yup = require('yup');
24
+
25
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
26
+
27
+ function _interopNamespace(e) {
28
+ if (e && e.__esModule) return e;
29
+ var n = Object.create(null);
30
+ if (e) {
31
+ Object.keys(e).forEach(function (k) {
32
+ if (k !== 'default') {
33
+ var d = Object.getOwnPropertyDescriptor(e, k);
34
+ Object.defineProperty(n, k, d.get ? d : {
35
+ enumerable: true,
36
+ get: function () { return e[k]; }
37
+ });
38
+ }
39
+ });
40
+ }
41
+ n["default"] = e;
42
+ return Object.freeze(n);
43
+ }
44
+
45
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
46
+ var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
47
+ var Container__default = /*#__PURE__*/_interopDefaultLegacy(Container);
48
+ var Header__default = /*#__PURE__*/_interopDefaultLegacy(Header);
49
+ var PageLoader__default = /*#__PURE__*/_interopDefaultLegacy(PageLoader);
50
+ var Scrollable__default = /*#__PURE__*/_interopDefaultLegacy(Scrollable);
51
+ var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
52
+ var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
53
+
54
+ function _extends() {
55
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
56
+ for (var i = 1; i < arguments.length; i++) {
57
+ var source = arguments[i];
58
+ for (var key in source) {
59
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
60
+ target[key] = source[key];
61
+ }
62
+ }
63
+ }
64
+ return target;
65
+ };
66
+ return _extends.apply(this, arguments);
67
+ }
68
+
69
+ function _typeof(o) {
70
+ "@babel/helpers - typeof";
71
+
72
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
73
+ return typeof o;
74
+ } : function (o) {
75
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
76
+ }, _typeof(o);
77
+ }
78
+
79
+ function _toPrimitive(input, hint) {
80
+ if (_typeof(input) !== "object" || input === null) return input;
81
+ var prim = input[Symbol.toPrimitive];
82
+ if (prim !== undefined) {
83
+ var res = prim.call(input, hint || "default");
84
+ if (_typeof(res) !== "object") return res;
85
+ throw new TypeError("@@toPrimitive must return a primitive value.");
86
+ }
87
+ return (hint === "string" ? String : Number)(input);
88
+ }
89
+
90
+ function _toPropertyKey(arg) {
91
+ var key = _toPrimitive(arg, "string");
92
+ return _typeof(key) === "symbol" ? key : String(key);
93
+ }
94
+
95
+ function _defineProperty(obj, key, value) {
96
+ key = _toPropertyKey(key);
97
+ if (key in obj) {
98
+ Object.defineProperty(obj, key, {
99
+ value: value,
100
+ enumerable: true,
101
+ configurable: true,
102
+ writable: true
103
+ });
104
+ } else {
105
+ obj[key] = value;
106
+ }
107
+ return obj;
108
+ }
109
+
110
+ var ACCESS_CONTROL_BASE_PATH = "/secure/api/v1";
111
+
112
+ var configurationPath = "".concat(ACCESS_CONTROL_BASE_PATH, "/configuration");
113
+ var show = function show(params) {
114
+ return axios__default["default"].get(configurationPath, {
115
+ params: params
116
+ });
117
+ };
118
+ var update = function update(_ref) {
119
+ var ownerId = _ref.ownerId,
120
+ ownerType = _ref.ownerType,
121
+ payload = _ref.payload;
122
+ return axios__default["default"].put(configurationPath, {
123
+ configuration: payload
124
+ }, {
125
+ params: {
126
+ ownerId: ownerId,
127
+ ownerType: ownerType
128
+ }
129
+ });
130
+ };
131
+ var configurationsApi = {
132
+ show: show,
133
+ update: update
134
+ };
135
+
136
+ var QUERY_KEYS = {
137
+ ACCESS_CONTROL_CONFIGURATION: "access-control-configuration"
138
+ };
139
+
140
+ 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; }
141
+ 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(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; }
142
+ var ACCESS_CONTROL_CONFIGURATION = QUERY_KEYS.ACCESS_CONTROL_CONFIGURATION;
143
+ var useShowConfiguration = function useShowConfiguration(_ref) {
144
+ var ownerId = _ref.ownerId,
145
+ ownerType = _ref.ownerType;
146
+ var queryKey = [ACCESS_CONTROL_CONFIGURATION, ownerType, ownerId];
147
+ return reactQuery.useQuery(queryKey, function () {
148
+ return configurationsApi.show({
149
+ ownerType: ownerType,
150
+ ownerId: ownerId
151
+ });
152
+ }, {
153
+ select: ramda.prop("configuration"),
154
+ staleTime: constants.DEFAULT_STALE_TIME
155
+ });
156
+ };
157
+ var useUpdateConfiguration = function useUpdateConfiguration(_ref2, options) {
158
+ var ownerId = _ref2.ownerId,
159
+ ownerType = _ref2.ownerType;
160
+ return reactUtils.useMutationWithInvalidation(function (payload) {
161
+ return configurationsApi.update({
162
+ ownerId: ownerId,
163
+ ownerType: ownerType,
164
+ payload: payload
165
+ });
166
+ }, _objectSpread({
167
+ keysToInvalidate: [[ACCESS_CONTROL_CONFIGURATION, ownerType, ownerId]]
168
+ }, options));
169
+ };
170
+
171
+ var AUTH = {
172
+ NO: "no",
173
+ EMAIL: "email",
174
+ BASIC: "basic",
175
+ SESSION: "session"
176
+ };
177
+ var AUTH_OPTIONS = [{
178
+ label: i18next.t("neetoAccessControl.auth.no"),
179
+ value: AUTH.NO
180
+ }, {
181
+ label: i18next.t("neetoAccessControl.auth.basic"),
182
+ value: AUTH.BASIC
183
+ }, {
184
+ label: i18next.t("neetoAccessControl.auth.email"),
185
+ value: AUTH.EMAIL
186
+ }, {
187
+ label: i18next.t("neetoAccessControl.auth.session"),
188
+ value: AUTH.SESSION
189
+ }];
190
+ var CONFIGURATION_VALIDATION_SCHEMA = yup__namespace.object({
191
+ auth: yup__namespace.string().required(i18next.t("neetoAccessControl.inputs.validation.authRequired")),
192
+ password: yup__namespace.string().nullable().when("auth", {
193
+ is: ramda.equals(AUTH.BASIC),
194
+ then: yup__namespace.string().nullable().trim().min(4, i18next.t("neetoAccessControl.inputs.validation.passwordMinLength")).required(i18next.t("neetoAccessControl.inputs.validation.passwordRequired"))
195
+ }),
196
+ allowedKeywords: yup__namespace.array(yup__namespace.string())
197
+ });
198
+
199
+ var buildConfigurationInitialValues = function buildConfigurationInitialValues(configuration) {
200
+ if (ramda.isEmpty(configuration.allowedKeywords)) {
201
+ configuration.allowedKeywords.push("");
202
+ }
203
+ return configuration;
204
+ };
205
+ var removeKeyword = function removeKeyword(_ref) {
206
+ var arrayHelpers = _ref.arrayHelpers,
207
+ index = _ref.index,
208
+ allowedKeywords = _ref.allowedKeywords;
209
+ if (allowedKeywords.length === 1) {
210
+ arrayHelpers.remove(index);
211
+ arrayHelpers.push("");
212
+ return;
213
+ }
214
+ arrayHelpers.remove(index);
215
+ };
216
+ var buildPayload = function buildPayload(values) {
217
+ var payload = ramda.pick(["auth"], values);
218
+ if (values.auth === AUTH.BASIC) {
219
+ payload["password"] = values.password;
220
+ return payload;
221
+ }
222
+ if (values.auth === AUTH.EMAIL) {
223
+ var rejectEmptyKeywords = ramda.reject(ramda.pipe(ramda.trim, ramda.isEmpty));
224
+ payload["allowedKeywords"] = rejectEmptyKeywords(values.allowedKeywords);
225
+ return payload;
226
+ }
227
+ return payload;
228
+ };
229
+
230
+ var AllowedKeywords = reactUtils.withT(function (_ref) {
231
+ var t = _ref.t,
232
+ name = _ref.name,
233
+ _ref$label = _ref.label,
234
+ label = _ref$label === void 0 ? "" : _ref$label;
235
+ return /*#__PURE__*/React__default["default"].createElement(formik.FieldArray, {
236
+ name: name
237
+ }, function (arrayHelpers) {
238
+ var allowedKeywords = arrayHelpers.form.values[name];
239
+ var showDeleteButton = allowedKeywords.length > 1 || neetoCist.isNotEmpty(allowedKeywords[0]);
240
+ return /*#__PURE__*/React__default["default"].createElement("div", {
241
+ className: "space-y-4"
242
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Label, null, label), /*#__PURE__*/React__default["default"].createElement("div", {
243
+ className: "neeto-ui-bg-pastel-blue neeto-ui-rounded-sm space-y-4 p-6"
244
+ }, allowedKeywords.map(function (_, index) {
245
+ return /*#__PURE__*/React__default["default"].createElement(formik$1.Input, {
246
+ className: "w-full",
247
+ key: index,
248
+ name: "".concat(name, ".").concat(index),
249
+ placeholder: t("neetoAccessControl.inputs.placeholders.enterKeyword"),
250
+ suffix: showDeleteButton && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
251
+ icon: neetoIcons.Delete,
252
+ size: "small",
253
+ style: "text",
254
+ onClick: function onClick() {
255
+ return removeKeyword({
256
+ index: index,
257
+ allowedKeywords: allowedKeywords,
258
+ arrayHelpers: arrayHelpers
259
+ });
260
+ }
261
+ })
262
+ });
263
+ }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
264
+ className: "pt-2",
265
+ label: t("neetoAccessControl.actions.addKeyword"),
266
+ style: "link",
267
+ onClick: function onClick() {
268
+ return arrayHelpers.push("");
269
+ }
270
+ })));
271
+ });
272
+ });
273
+
274
+ var Configuration = function Configuration(_ref) {
275
+ var ownerId = _ref.ownerId,
276
+ ownerType = _ref.ownerType,
277
+ onReset = _ref.onReset,
278
+ onSuccess = _ref.onSuccess,
279
+ headerProps = _ref.headerProps,
280
+ className = _ref.className;
281
+ var _useTranslation = reactI18next.useTranslation(),
282
+ t = _useTranslation.t;
283
+ var _useShowConfiguration = useShowConfiguration({
284
+ ownerId: ownerId,
285
+ ownerType: ownerType
286
+ }),
287
+ _useShowConfiguration2 = _useShowConfiguration.data,
288
+ configuration = _useShowConfiguration2 === void 0 ? {} : _useShowConfiguration2,
289
+ isLoading = _useShowConfiguration.isLoading;
290
+ var _useUpdateConfigurati = useUpdateConfiguration({
291
+ ownerId: ownerId,
292
+ ownerType: ownerType
293
+ }, {
294
+ onSuccess: onSuccess
295
+ }),
296
+ updateConfiguration = _useUpdateConfigurati.mutate;
297
+ var handleSubmit = function handleSubmit(values, _ref2) {
298
+ var setSubmitting = _ref2.setSubmitting;
299
+ var payload = buildPayload(values);
300
+ updateConfiguration(payload, {
301
+ onSettled: function onSettled() {
302
+ return setSubmitting(false);
303
+ }
304
+ });
305
+ };
306
+ return /*#__PURE__*/React__default["default"].createElement(Container__default["default"], null, /*#__PURE__*/React__default["default"].createElement(Header__default["default"], headerProps), isLoading ? /*#__PURE__*/React__default["default"].createElement(PageLoader__default["default"], null) : /*#__PURE__*/React__default["default"].createElement(Scrollable__default["default"], {
307
+ className: "w-full"
308
+ }, /*#__PURE__*/React__default["default"].createElement(formik$1.Form, {
309
+ className: classNames__default["default"]("space-y-6", className),
310
+ formikProps: {
311
+ initialValues: buildConfigurationInitialValues(configuration),
312
+ validationSchema: CONFIGURATION_VALIDATION_SCHEMA,
313
+ onSubmit: handleSubmit,
314
+ onReset: onReset,
315
+ enableReinitialize: true
316
+ }
317
+ }, function (_ref3) {
318
+ var values = _ref3.values;
319
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Label, {
320
+ className: "neeto-ui-text-base"
321
+ }, t("neetoAccessControl.inputs.labels.visibility")), /*#__PURE__*/React__default["default"].createElement(formik$1.Radio, {
322
+ stacked: true,
323
+ name: "auth"
324
+ }, AUTH_OPTIONS.map(function (props) {
325
+ return /*#__PURE__*/React__default["default"].createElement(formik$1.Radio.Item, _extends({}, props, {
326
+ key: props.value
327
+ }));
328
+ })), values.auth === AUTH.BASIC && /*#__PURE__*/React__default["default"].createElement("div", {
329
+ className: "space-y-4 pb-2"
330
+ }, /*#__PURE__*/React__default["default"].createElement(formik$1.Input, {
331
+ autoFocus: true,
332
+ required: true,
333
+ unlimitedChars: true,
334
+ className: "w-7/12",
335
+ label: t("neetoAccessControl.inputs.labels.password"),
336
+ name: "password",
337
+ placeholder: t("neetoAccessControl.inputs.placeholders.enterPassword")
338
+ })), values.auth === AUTH.EMAIL && /*#__PURE__*/React__default["default"].createElement(AllowedKeywords, {
339
+ label: t("neetoAccessControl.inputs.labels.keywords"),
340
+ name: "allowedKeywords"
341
+ }), /*#__PURE__*/React__default["default"].createElement(formik$1.ActionBlock, {
342
+ className: "space-x-2"
343
+ }));
344
+ })));
345
+ };
346
+
347
+ exports.Configuration = Configuration;
348
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../app/javascript/src/constants/index.js","../app/javascript/src/apis/configurations.js","../app/javascript/src/constants/query.js","../app/javascript/src/hooks/reactQuery/useConfigurationsApi.js","../app/javascript/src/components/Configuration/constants.js","../app/javascript/src/components/Configuration/utils.js","../app/javascript/src/components/Configuration/AllowedKeywords.jsx","../app/javascript/src/components/Configuration/index.jsx"],"sourcesContent":["export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export const ACCESS_CONTROL_BASE_PATH = \"/secure/api/v1\";\n","import axios from \"axios\";\n\nimport { ACCESS_CONTROL_BASE_PATH } from \"src/constants\";\n\nconst configurationPath = `${ACCESS_CONTROL_BASE_PATH}/configuration`;\n\nconst show = params => axios.get(configurationPath, { params });\n\nconst update = ({ ownerId, ownerType, payload }) =>\n axios.put(\n configurationPath,\n { configuration: payload },\n { params: { ownerId, ownerType } }\n );\n\nconst configurationsApi = { show, update };\n\nexport default configurationsApi;\n","export const QUERY_KEYS = {\n ACCESS_CONTROL_CONFIGURATION: \"access-control-configuration\",\n};\n","import { DEFAULT_STALE_TIME } from \"neetocommons/constants\";\nimport { useMutationWithInvalidation } from \"neetocommons/react-utils\";\nimport { prop } from \"ramda\";\nimport { useQuery } from \"react-query\";\n\nimport configurationsApi from \"apis/configurations\";\nimport { QUERY_KEYS } from \"src/constants/query\";\n\nconst { ACCESS_CONTROL_CONFIGURATION } = QUERY_KEYS;\n\nexport const useShowConfiguration = ({ ownerId, ownerType }) => {\n const queryKey = [ACCESS_CONTROL_CONFIGURATION, ownerType, ownerId];\n\n return useQuery(\n queryKey,\n () => configurationsApi.show({ ownerType, ownerId }),\n { select: prop(\"configuration\"), staleTime: DEFAULT_STALE_TIME }\n );\n};\n\nexport const useUpdateConfiguration = ({ ownerId, ownerType }, options) =>\n useMutationWithInvalidation(\n payload => configurationsApi.update({ ownerId, ownerType, payload }),\n {\n keysToInvalidate: [[ACCESS_CONTROL_CONFIGURATION, ownerType, ownerId]],\n ...options,\n }\n );\n","import { t } from \"i18next\";\nimport { equals } from \"ramda\";\nimport * as yup from \"yup\";\n\nexport const AUTH = {\n NO: \"no\",\n EMAIL: \"email\",\n BASIC: \"basic\",\n SESSION: \"session\",\n};\n\nexport const AUTH_OPTIONS = [\n { label: t(\"neetoAccessControl.auth.no\"), value: AUTH.NO },\n { label: t(\"neetoAccessControl.auth.basic\"), value: AUTH.BASIC },\n { label: t(\"neetoAccessControl.auth.email\"), value: AUTH.EMAIL },\n { label: t(\"neetoAccessControl.auth.session\"), value: AUTH.SESSION },\n];\n\nexport const CONFIGURATION_VALIDATION_SCHEMA = yup.object({\n auth: yup\n .string()\n .required(t(\"neetoAccessControl.inputs.validation.authRequired\")),\n password: yup\n .string()\n .nullable()\n .when(\"auth\", {\n is: equals(AUTH.BASIC),\n then: yup\n .string()\n .nullable()\n .trim()\n .min(4, t(\"neetoAccessControl.inputs.validation.passwordMinLength\"))\n .required(t(\"neetoAccessControl.inputs.validation.passwordRequired\")),\n }),\n allowedKeywords: yup.array(yup.string()),\n});\n","import { isEmpty, pick, pipe, reject, trim } from \"ramda\";\n\nimport { AUTH } from \"./constants\";\n\nexport const buildConfigurationInitialValues = configuration => {\n if (isEmpty(configuration.allowedKeywords)) {\n configuration.allowedKeywords.push(\"\");\n }\n\n return configuration;\n};\n\nexport const removeKeyword = ({ arrayHelpers, index, allowedKeywords }) => {\n if (allowedKeywords.length === 1) {\n arrayHelpers.remove(index);\n arrayHelpers.push(\"\");\n\n return;\n }\n arrayHelpers.remove(index);\n};\n\nexport const buildPayload = values => {\n const payload = pick([\"auth\"], values);\n\n if (values.auth === AUTH.BASIC) {\n payload[\"password\"] = values.password;\n\n return payload;\n }\n\n if (values.auth === AUTH.EMAIL) {\n const rejectEmptyKeywords = reject(pipe(trim, isEmpty));\n payload[\"allowedKeywords\"] = rejectEmptyKeywords(values.allowedKeywords);\n\n return payload;\n }\n\n return payload;\n};\n","import React from \"react\";\n\nimport { FieldArray } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { withT } from \"neetocommons/react-utils\";\nimport { Delete } from \"neetoicons\";\nimport { Button, Label } from \"neetoui\";\nimport { Input } from \"neetoui/formik\";\n\nimport { removeKeyword } from \"./utils\";\n\nconst AllowedKeywords = withT(({ t, name, label = \"\" }) => (\n <FieldArray {...{ name }}>\n {arrayHelpers => {\n const allowedKeywords = arrayHelpers.form.values[name];\n const showDeleteButton =\n allowedKeywords.length > 1 || isNotEmpty(allowedKeywords[0]);\n\n return (\n <div className=\"space-y-4\">\n <Label>{label}</Label>\n <div className=\"neeto-ui-bg-pastel-blue neeto-ui-rounded-sm space-y-4 p-6\">\n {allowedKeywords.map((_, index) => (\n <Input\n className=\"w-full\"\n key={index}\n name={`${name}.${index}`}\n placeholder={t(\n \"neetoAccessControl.inputs.placeholders.enterKeyword\"\n )}\n suffix={\n showDeleteButton && (\n <Button\n icon={Delete}\n size=\"small\"\n style=\"text\"\n onClick={() =>\n removeKeyword({\n index,\n allowedKeywords,\n arrayHelpers,\n })\n }\n />\n )\n }\n />\n ))}\n <Button\n className=\"pt-2\"\n label={t(\"neetoAccessControl.actions.addKeyword\")}\n style=\"link\"\n onClick={() => arrayHelpers.push(\"\")}\n />\n </div>\n </div>\n );\n }}\n </FieldArray>\n));\n\nexport default AllowedKeywords;\n","import React from \"react\";\n\nimport classNames from \"classnames\";\nimport Container from \"neetomolecules/Container\";\nimport Header from \"neetomolecules/Header\";\nimport PageLoader from \"neetomolecules/PageLoader\";\nimport Scrollable from \"neetomolecules/Scrollable\";\nimport { Label } from \"neetoui\";\nimport { ActionBlock, Form, Input, Radio } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n useShowConfiguration,\n useUpdateConfiguration,\n} from \"hooks/reactQuery/useConfigurationsApi\";\n\nimport AllowedKeywords from \"./AllowedKeywords\";\nimport {\n AUTH,\n AUTH_OPTIONS,\n CONFIGURATION_VALIDATION_SCHEMA,\n} from \"./constants\";\nimport { buildConfigurationInitialValues, buildPayload } from \"./utils\";\n\nconst Configuration = ({\n ownerId,\n ownerType,\n onReset,\n onSuccess,\n headerProps,\n className,\n}) => {\n const { t } = useTranslation();\n\n const { data: configuration = {}, isLoading } = useShowConfiguration({\n ownerId,\n ownerType,\n });\n\n const { mutate: updateConfiguration } = useUpdateConfiguration(\n { ownerId, ownerType },\n { onSuccess }\n );\n\n const handleSubmit = (values, { setSubmitting }) => {\n const payload = buildPayload(values);\n updateConfiguration(payload, { onSettled: () => setSubmitting(false) });\n };\n\n return (\n <Container>\n <Header {...headerProps} />\n {isLoading ? (\n <PageLoader />\n ) : (\n <Scrollable className=\"w-full\">\n <Form\n className={classNames(\"space-y-6\", className)}\n formikProps={{\n initialValues: buildConfigurationInitialValues(configuration),\n validationSchema: CONFIGURATION_VALIDATION_SCHEMA,\n onSubmit: handleSubmit,\n onReset,\n enableReinitialize: true,\n }}\n >\n {({ values }) => (\n <>\n <Label className=\"neeto-ui-text-base\">\n {t(\"neetoAccessControl.inputs.labels.visibility\")}\n </Label>\n <Radio stacked name=\"auth\">\n {AUTH_OPTIONS.map(props => (\n <Radio.Item {...props} key={props.value} />\n ))}\n </Radio>\n {values.auth === AUTH.BASIC && (\n <div className=\"space-y-4 pb-2\">\n <Input\n autoFocus\n required\n unlimitedChars\n className=\"w-7/12\"\n label={t(\"neetoAccessControl.inputs.labels.password\")}\n name=\"password\"\n placeholder={t(\n \"neetoAccessControl.inputs.placeholders.enterPassword\"\n )}\n />\n </div>\n )}\n {values.auth === AUTH.EMAIL && (\n <AllowedKeywords\n label={t(\"neetoAccessControl.inputs.labels.keywords\")}\n name=\"allowedKeywords\"\n />\n )}\n <ActionBlock className=\"space-x-2\" />\n </>\n )}\n </Form>\n </Scrollable>\n )}\n </Container>\n );\n};\nexport default Configuration;\n"],"names":["toPrimitive","toPropertyKey","ACCESS_CONTROL_BASE_PATH","configurationPath","concat","show","params","axios","get","update","_ref","ownerId","ownerType","payload","put","configuration","configurationsApi","QUERY_KEYS","ACCESS_CONTROL_CONFIGURATION","useShowConfiguration","queryKey","useQuery","select","prop","staleTime","DEFAULT_STALE_TIME","useUpdateConfiguration","_ref2","options","useMutationWithInvalidation","_objectSpread","keysToInvalidate","AUTH","NO","EMAIL","BASIC","SESSION","AUTH_OPTIONS","label","t","value","CONFIGURATION_VALIDATION_SCHEMA","yup","object","auth","string","required","password","nullable","when","is","equals","then","trim","min","allowedKeywords","array","buildConfigurationInitialValues","isEmpty","push","removeKeyword","arrayHelpers","index","length","remove","buildPayload","values","pick","rejectEmptyKeywords","reject","pipe","AllowedKeywords","withT","name","_ref$label","React","createElement","FieldArray","form","showDeleteButton","isNotEmpty","className","Label","map","_","Input","key","placeholder","suffix","Button","icon","Delete","size","style","onClick","Configuration","onReset","onSuccess","headerProps","_useTranslation","useTranslation","_useShowConfiguration","_useShowConfiguration2","data","isLoading","_useUpdateConfigurati","updateConfiguration","mutate","handleSubmit","setSubmitting","onSettled","Container","Header","PageLoader","Scrollable","Form","classNames","formikProps","initialValues","validationSchema","onSubmit","enableReinitialize","_ref3","Fragment","Radio","stacked","props","Item","_extends","autoFocus","unlimitedChars","ActionBlock"],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,315 @@
1
+ import React from 'react';
2
+ import classNames from 'classnames';
3
+ import Container from '@bigbinary/neeto-molecules/Container';
4
+ import Header from '@bigbinary/neeto-molecules/Header';
5
+ import PageLoader from '@bigbinary/neeto-molecules/PageLoader';
6
+ import Scrollable from '@bigbinary/neeto-molecules/Scrollable';
7
+ import { Label, Button } from '@bigbinary/neetoui';
8
+ import { Input, Form, Radio, ActionBlock } from '@bigbinary/neetoui/formik';
9
+ import { useTranslation } from 'react-i18next';
10
+ import { DEFAULT_STALE_TIME } from '@bigbinary/neeto-commons-frontend/constants';
11
+ import { useMutationWithInvalidation, withT } from '@bigbinary/neeto-commons-frontend/react-utils';
12
+ import { prop, equals, isEmpty, pick, reject, pipe, trim } from 'ramda';
13
+ import { useQuery } from 'react-query';
14
+ import axios from 'axios';
15
+ import { FieldArray } from 'formik';
16
+ import { isNotEmpty } from '@bigbinary/neeto-cist';
17
+ import { Delete } from '@bigbinary/neeto-icons';
18
+ import { t } from 'i18next';
19
+ import * as yup from 'yup';
20
+
21
+ function _extends() {
22
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
23
+ for (var i = 1; i < arguments.length; i++) {
24
+ var source = arguments[i];
25
+ for (var key in source) {
26
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
27
+ target[key] = source[key];
28
+ }
29
+ }
30
+ }
31
+ return target;
32
+ };
33
+ return _extends.apply(this, arguments);
34
+ }
35
+
36
+ function _typeof(o) {
37
+ "@babel/helpers - typeof";
38
+
39
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
40
+ return typeof o;
41
+ } : function (o) {
42
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
43
+ }, _typeof(o);
44
+ }
45
+
46
+ function _toPrimitive(input, hint) {
47
+ if (_typeof(input) !== "object" || input === null) return input;
48
+ var prim = input[Symbol.toPrimitive];
49
+ if (prim !== undefined) {
50
+ var res = prim.call(input, hint || "default");
51
+ if (_typeof(res) !== "object") return res;
52
+ throw new TypeError("@@toPrimitive must return a primitive value.");
53
+ }
54
+ return (hint === "string" ? String : Number)(input);
55
+ }
56
+
57
+ function _toPropertyKey(arg) {
58
+ var key = _toPrimitive(arg, "string");
59
+ return _typeof(key) === "symbol" ? key : String(key);
60
+ }
61
+
62
+ function _defineProperty(obj, key, value) {
63
+ key = _toPropertyKey(key);
64
+ if (key in obj) {
65
+ Object.defineProperty(obj, key, {
66
+ value: value,
67
+ enumerable: true,
68
+ configurable: true,
69
+ writable: true
70
+ });
71
+ } else {
72
+ obj[key] = value;
73
+ }
74
+ return obj;
75
+ }
76
+
77
+ var ACCESS_CONTROL_BASE_PATH = "/secure/api/v1";
78
+
79
+ var configurationPath = "".concat(ACCESS_CONTROL_BASE_PATH, "/configuration");
80
+ var show = function show(params) {
81
+ return axios.get(configurationPath, {
82
+ params: params
83
+ });
84
+ };
85
+ var update = function update(_ref) {
86
+ var ownerId = _ref.ownerId,
87
+ ownerType = _ref.ownerType,
88
+ payload = _ref.payload;
89
+ return axios.put(configurationPath, {
90
+ configuration: payload
91
+ }, {
92
+ params: {
93
+ ownerId: ownerId,
94
+ ownerType: ownerType
95
+ }
96
+ });
97
+ };
98
+ var configurationsApi = {
99
+ show: show,
100
+ update: update
101
+ };
102
+
103
+ var QUERY_KEYS = {
104
+ ACCESS_CONTROL_CONFIGURATION: "access-control-configuration"
105
+ };
106
+
107
+ 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; }
108
+ 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(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; }
109
+ var ACCESS_CONTROL_CONFIGURATION = QUERY_KEYS.ACCESS_CONTROL_CONFIGURATION;
110
+ var useShowConfiguration = function useShowConfiguration(_ref) {
111
+ var ownerId = _ref.ownerId,
112
+ ownerType = _ref.ownerType;
113
+ var queryKey = [ACCESS_CONTROL_CONFIGURATION, ownerType, ownerId];
114
+ return useQuery(queryKey, function () {
115
+ return configurationsApi.show({
116
+ ownerType: ownerType,
117
+ ownerId: ownerId
118
+ });
119
+ }, {
120
+ select: prop("configuration"),
121
+ staleTime: DEFAULT_STALE_TIME
122
+ });
123
+ };
124
+ var useUpdateConfiguration = function useUpdateConfiguration(_ref2, options) {
125
+ var ownerId = _ref2.ownerId,
126
+ ownerType = _ref2.ownerType;
127
+ return useMutationWithInvalidation(function (payload) {
128
+ return configurationsApi.update({
129
+ ownerId: ownerId,
130
+ ownerType: ownerType,
131
+ payload: payload
132
+ });
133
+ }, _objectSpread({
134
+ keysToInvalidate: [[ACCESS_CONTROL_CONFIGURATION, ownerType, ownerId]]
135
+ }, options));
136
+ };
137
+
138
+ var AUTH = {
139
+ NO: "no",
140
+ EMAIL: "email",
141
+ BASIC: "basic",
142
+ SESSION: "session"
143
+ };
144
+ var AUTH_OPTIONS = [{
145
+ label: t("neetoAccessControl.auth.no"),
146
+ value: AUTH.NO
147
+ }, {
148
+ label: t("neetoAccessControl.auth.basic"),
149
+ value: AUTH.BASIC
150
+ }, {
151
+ label: t("neetoAccessControl.auth.email"),
152
+ value: AUTH.EMAIL
153
+ }, {
154
+ label: t("neetoAccessControl.auth.session"),
155
+ value: AUTH.SESSION
156
+ }];
157
+ var CONFIGURATION_VALIDATION_SCHEMA = yup.object({
158
+ auth: yup.string().required(t("neetoAccessControl.inputs.validation.authRequired")),
159
+ password: yup.string().nullable().when("auth", {
160
+ is: equals(AUTH.BASIC),
161
+ then: yup.string().nullable().trim().min(4, t("neetoAccessControl.inputs.validation.passwordMinLength")).required(t("neetoAccessControl.inputs.validation.passwordRequired"))
162
+ }),
163
+ allowedKeywords: yup.array(yup.string())
164
+ });
165
+
166
+ var buildConfigurationInitialValues = function buildConfigurationInitialValues(configuration) {
167
+ if (isEmpty(configuration.allowedKeywords)) {
168
+ configuration.allowedKeywords.push("");
169
+ }
170
+ return configuration;
171
+ };
172
+ var removeKeyword = function removeKeyword(_ref) {
173
+ var arrayHelpers = _ref.arrayHelpers,
174
+ index = _ref.index,
175
+ allowedKeywords = _ref.allowedKeywords;
176
+ if (allowedKeywords.length === 1) {
177
+ arrayHelpers.remove(index);
178
+ arrayHelpers.push("");
179
+ return;
180
+ }
181
+ arrayHelpers.remove(index);
182
+ };
183
+ var buildPayload = function buildPayload(values) {
184
+ var payload = pick(["auth"], values);
185
+ if (values.auth === AUTH.BASIC) {
186
+ payload["password"] = values.password;
187
+ return payload;
188
+ }
189
+ if (values.auth === AUTH.EMAIL) {
190
+ var rejectEmptyKeywords = reject(pipe(trim, isEmpty));
191
+ payload["allowedKeywords"] = rejectEmptyKeywords(values.allowedKeywords);
192
+ return payload;
193
+ }
194
+ return payload;
195
+ };
196
+
197
+ var AllowedKeywords = withT(function (_ref) {
198
+ var t = _ref.t,
199
+ name = _ref.name,
200
+ _ref$label = _ref.label,
201
+ label = _ref$label === void 0 ? "" : _ref$label;
202
+ return /*#__PURE__*/React.createElement(FieldArray, {
203
+ name: name
204
+ }, function (arrayHelpers) {
205
+ var allowedKeywords = arrayHelpers.form.values[name];
206
+ var showDeleteButton = allowedKeywords.length > 1 || isNotEmpty(allowedKeywords[0]);
207
+ return /*#__PURE__*/React.createElement("div", {
208
+ className: "space-y-4"
209
+ }, /*#__PURE__*/React.createElement(Label, null, label), /*#__PURE__*/React.createElement("div", {
210
+ className: "neeto-ui-bg-pastel-blue neeto-ui-rounded-sm space-y-4 p-6"
211
+ }, allowedKeywords.map(function (_, index) {
212
+ return /*#__PURE__*/React.createElement(Input, {
213
+ className: "w-full",
214
+ key: index,
215
+ name: "".concat(name, ".").concat(index),
216
+ placeholder: t("neetoAccessControl.inputs.placeholders.enterKeyword"),
217
+ suffix: showDeleteButton && /*#__PURE__*/React.createElement(Button, {
218
+ icon: Delete,
219
+ size: "small",
220
+ style: "text",
221
+ onClick: function onClick() {
222
+ return removeKeyword({
223
+ index: index,
224
+ allowedKeywords: allowedKeywords,
225
+ arrayHelpers: arrayHelpers
226
+ });
227
+ }
228
+ })
229
+ });
230
+ }), /*#__PURE__*/React.createElement(Button, {
231
+ className: "pt-2",
232
+ label: t("neetoAccessControl.actions.addKeyword"),
233
+ style: "link",
234
+ onClick: function onClick() {
235
+ return arrayHelpers.push("");
236
+ }
237
+ })));
238
+ });
239
+ });
240
+
241
+ var Configuration = function Configuration(_ref) {
242
+ var ownerId = _ref.ownerId,
243
+ ownerType = _ref.ownerType,
244
+ onReset = _ref.onReset,
245
+ onSuccess = _ref.onSuccess,
246
+ headerProps = _ref.headerProps,
247
+ className = _ref.className;
248
+ var _useTranslation = useTranslation(),
249
+ t = _useTranslation.t;
250
+ var _useShowConfiguration = useShowConfiguration({
251
+ ownerId: ownerId,
252
+ ownerType: ownerType
253
+ }),
254
+ _useShowConfiguration2 = _useShowConfiguration.data,
255
+ configuration = _useShowConfiguration2 === void 0 ? {} : _useShowConfiguration2,
256
+ isLoading = _useShowConfiguration.isLoading;
257
+ var _useUpdateConfigurati = useUpdateConfiguration({
258
+ ownerId: ownerId,
259
+ ownerType: ownerType
260
+ }, {
261
+ onSuccess: onSuccess
262
+ }),
263
+ updateConfiguration = _useUpdateConfigurati.mutate;
264
+ var handleSubmit = function handleSubmit(values, _ref2) {
265
+ var setSubmitting = _ref2.setSubmitting;
266
+ var payload = buildPayload(values);
267
+ updateConfiguration(payload, {
268
+ onSettled: function onSettled() {
269
+ return setSubmitting(false);
270
+ }
271
+ });
272
+ };
273
+ return /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Header, headerProps), isLoading ? /*#__PURE__*/React.createElement(PageLoader, null) : /*#__PURE__*/React.createElement(Scrollable, {
274
+ className: "w-full"
275
+ }, /*#__PURE__*/React.createElement(Form, {
276
+ className: classNames("space-y-6", className),
277
+ formikProps: {
278
+ initialValues: buildConfigurationInitialValues(configuration),
279
+ validationSchema: CONFIGURATION_VALIDATION_SCHEMA,
280
+ onSubmit: handleSubmit,
281
+ onReset: onReset,
282
+ enableReinitialize: true
283
+ }
284
+ }, function (_ref3) {
285
+ var values = _ref3.values;
286
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Label, {
287
+ className: "neeto-ui-text-base"
288
+ }, t("neetoAccessControl.inputs.labels.visibility")), /*#__PURE__*/React.createElement(Radio, {
289
+ stacked: true,
290
+ name: "auth"
291
+ }, AUTH_OPTIONS.map(function (props) {
292
+ return /*#__PURE__*/React.createElement(Radio.Item, _extends({}, props, {
293
+ key: props.value
294
+ }));
295
+ })), values.auth === AUTH.BASIC && /*#__PURE__*/React.createElement("div", {
296
+ className: "space-y-4 pb-2"
297
+ }, /*#__PURE__*/React.createElement(Input, {
298
+ autoFocus: true,
299
+ required: true,
300
+ unlimitedChars: true,
301
+ className: "w-7/12",
302
+ label: t("neetoAccessControl.inputs.labels.password"),
303
+ name: "password",
304
+ placeholder: t("neetoAccessControl.inputs.placeholders.enterPassword")
305
+ })), values.auth === AUTH.EMAIL && /*#__PURE__*/React.createElement(AllowedKeywords, {
306
+ label: t("neetoAccessControl.inputs.labels.keywords"),
307
+ name: "allowedKeywords"
308
+ }), /*#__PURE__*/React.createElement(ActionBlock, {
309
+ className: "space-x-2"
310
+ }));
311
+ })));
312
+ };
313
+
314
+ export { Configuration };
315
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../app/javascript/src/constants/index.js","../app/javascript/src/apis/configurations.js","../app/javascript/src/constants/query.js","../app/javascript/src/hooks/reactQuery/useConfigurationsApi.js","../app/javascript/src/components/Configuration/constants.js","../app/javascript/src/components/Configuration/utils.js","../app/javascript/src/components/Configuration/AllowedKeywords.jsx","../app/javascript/src/components/Configuration/index.jsx"],"sourcesContent":["export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export const ACCESS_CONTROL_BASE_PATH = \"/secure/api/v1\";\n","import axios from \"axios\";\n\nimport { ACCESS_CONTROL_BASE_PATH } from \"src/constants\";\n\nconst configurationPath = `${ACCESS_CONTROL_BASE_PATH}/configuration`;\n\nconst show = params => axios.get(configurationPath, { params });\n\nconst update = ({ ownerId, ownerType, payload }) =>\n axios.put(\n configurationPath,\n { configuration: payload },\n { params: { ownerId, ownerType } }\n );\n\nconst configurationsApi = { show, update };\n\nexport default configurationsApi;\n","export const QUERY_KEYS = {\n ACCESS_CONTROL_CONFIGURATION: \"access-control-configuration\",\n};\n","import { DEFAULT_STALE_TIME } from \"neetocommons/constants\";\nimport { useMutationWithInvalidation } from \"neetocommons/react-utils\";\nimport { prop } from \"ramda\";\nimport { useQuery } from \"react-query\";\n\nimport configurationsApi from \"apis/configurations\";\nimport { QUERY_KEYS } from \"src/constants/query\";\n\nconst { ACCESS_CONTROL_CONFIGURATION } = QUERY_KEYS;\n\nexport const useShowConfiguration = ({ ownerId, ownerType }) => {\n const queryKey = [ACCESS_CONTROL_CONFIGURATION, ownerType, ownerId];\n\n return useQuery(\n queryKey,\n () => configurationsApi.show({ ownerType, ownerId }),\n { select: prop(\"configuration\"), staleTime: DEFAULT_STALE_TIME }\n );\n};\n\nexport const useUpdateConfiguration = ({ ownerId, ownerType }, options) =>\n useMutationWithInvalidation(\n payload => configurationsApi.update({ ownerId, ownerType, payload }),\n {\n keysToInvalidate: [[ACCESS_CONTROL_CONFIGURATION, ownerType, ownerId]],\n ...options,\n }\n );\n","import { t } from \"i18next\";\nimport { equals } from \"ramda\";\nimport * as yup from \"yup\";\n\nexport const AUTH = {\n NO: \"no\",\n EMAIL: \"email\",\n BASIC: \"basic\",\n SESSION: \"session\",\n};\n\nexport const AUTH_OPTIONS = [\n { label: t(\"neetoAccessControl.auth.no\"), value: AUTH.NO },\n { label: t(\"neetoAccessControl.auth.basic\"), value: AUTH.BASIC },\n { label: t(\"neetoAccessControl.auth.email\"), value: AUTH.EMAIL },\n { label: t(\"neetoAccessControl.auth.session\"), value: AUTH.SESSION },\n];\n\nexport const CONFIGURATION_VALIDATION_SCHEMA = yup.object({\n auth: yup\n .string()\n .required(t(\"neetoAccessControl.inputs.validation.authRequired\")),\n password: yup\n .string()\n .nullable()\n .when(\"auth\", {\n is: equals(AUTH.BASIC),\n then: yup\n .string()\n .nullable()\n .trim()\n .min(4, t(\"neetoAccessControl.inputs.validation.passwordMinLength\"))\n .required(t(\"neetoAccessControl.inputs.validation.passwordRequired\")),\n }),\n allowedKeywords: yup.array(yup.string()),\n});\n","import { isEmpty, pick, pipe, reject, trim } from \"ramda\";\n\nimport { AUTH } from \"./constants\";\n\nexport const buildConfigurationInitialValues = configuration => {\n if (isEmpty(configuration.allowedKeywords)) {\n configuration.allowedKeywords.push(\"\");\n }\n\n return configuration;\n};\n\nexport const removeKeyword = ({ arrayHelpers, index, allowedKeywords }) => {\n if (allowedKeywords.length === 1) {\n arrayHelpers.remove(index);\n arrayHelpers.push(\"\");\n\n return;\n }\n arrayHelpers.remove(index);\n};\n\nexport const buildPayload = values => {\n const payload = pick([\"auth\"], values);\n\n if (values.auth === AUTH.BASIC) {\n payload[\"password\"] = values.password;\n\n return payload;\n }\n\n if (values.auth === AUTH.EMAIL) {\n const rejectEmptyKeywords = reject(pipe(trim, isEmpty));\n payload[\"allowedKeywords\"] = rejectEmptyKeywords(values.allowedKeywords);\n\n return payload;\n }\n\n return payload;\n};\n","import React from \"react\";\n\nimport { FieldArray } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { withT } from \"neetocommons/react-utils\";\nimport { Delete } from \"neetoicons\";\nimport { Button, Label } from \"neetoui\";\nimport { Input } from \"neetoui/formik\";\n\nimport { removeKeyword } from \"./utils\";\n\nconst AllowedKeywords = withT(({ t, name, label = \"\" }) => (\n <FieldArray {...{ name }}>\n {arrayHelpers => {\n const allowedKeywords = arrayHelpers.form.values[name];\n const showDeleteButton =\n allowedKeywords.length > 1 || isNotEmpty(allowedKeywords[0]);\n\n return (\n <div className=\"space-y-4\">\n <Label>{label}</Label>\n <div className=\"neeto-ui-bg-pastel-blue neeto-ui-rounded-sm space-y-4 p-6\">\n {allowedKeywords.map((_, index) => (\n <Input\n className=\"w-full\"\n key={index}\n name={`${name}.${index}`}\n placeholder={t(\n \"neetoAccessControl.inputs.placeholders.enterKeyword\"\n )}\n suffix={\n showDeleteButton && (\n <Button\n icon={Delete}\n size=\"small\"\n style=\"text\"\n onClick={() =>\n removeKeyword({\n index,\n allowedKeywords,\n arrayHelpers,\n })\n }\n />\n )\n }\n />\n ))}\n <Button\n className=\"pt-2\"\n label={t(\"neetoAccessControl.actions.addKeyword\")}\n style=\"link\"\n onClick={() => arrayHelpers.push(\"\")}\n />\n </div>\n </div>\n );\n }}\n </FieldArray>\n));\n\nexport default AllowedKeywords;\n","import React from \"react\";\n\nimport classNames from \"classnames\";\nimport Container from \"neetomolecules/Container\";\nimport Header from \"neetomolecules/Header\";\nimport PageLoader from \"neetomolecules/PageLoader\";\nimport Scrollable from \"neetomolecules/Scrollable\";\nimport { Label } from \"neetoui\";\nimport { ActionBlock, Form, Input, Radio } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n useShowConfiguration,\n useUpdateConfiguration,\n} from \"hooks/reactQuery/useConfigurationsApi\";\n\nimport AllowedKeywords from \"./AllowedKeywords\";\nimport {\n AUTH,\n AUTH_OPTIONS,\n CONFIGURATION_VALIDATION_SCHEMA,\n} from \"./constants\";\nimport { buildConfigurationInitialValues, buildPayload } from \"./utils\";\n\nconst Configuration = ({\n ownerId,\n ownerType,\n onReset,\n onSuccess,\n headerProps,\n className,\n}) => {\n const { t } = useTranslation();\n\n const { data: configuration = {}, isLoading } = useShowConfiguration({\n ownerId,\n ownerType,\n });\n\n const { mutate: updateConfiguration } = useUpdateConfiguration(\n { ownerId, ownerType },\n { onSuccess }\n );\n\n const handleSubmit = (values, { setSubmitting }) => {\n const payload = buildPayload(values);\n updateConfiguration(payload, { onSettled: () => setSubmitting(false) });\n };\n\n return (\n <Container>\n <Header {...headerProps} />\n {isLoading ? (\n <PageLoader />\n ) : (\n <Scrollable className=\"w-full\">\n <Form\n className={classNames(\"space-y-6\", className)}\n formikProps={{\n initialValues: buildConfigurationInitialValues(configuration),\n validationSchema: CONFIGURATION_VALIDATION_SCHEMA,\n onSubmit: handleSubmit,\n onReset,\n enableReinitialize: true,\n }}\n >\n {({ values }) => (\n <>\n <Label className=\"neeto-ui-text-base\">\n {t(\"neetoAccessControl.inputs.labels.visibility\")}\n </Label>\n <Radio stacked name=\"auth\">\n {AUTH_OPTIONS.map(props => (\n <Radio.Item {...props} key={props.value} />\n ))}\n </Radio>\n {values.auth === AUTH.BASIC && (\n <div className=\"space-y-4 pb-2\">\n <Input\n autoFocus\n required\n unlimitedChars\n className=\"w-7/12\"\n label={t(\"neetoAccessControl.inputs.labels.password\")}\n name=\"password\"\n placeholder={t(\n \"neetoAccessControl.inputs.placeholders.enterPassword\"\n )}\n />\n </div>\n )}\n {values.auth === AUTH.EMAIL && (\n <AllowedKeywords\n label={t(\"neetoAccessControl.inputs.labels.keywords\")}\n name=\"allowedKeywords\"\n />\n )}\n <ActionBlock className=\"space-x-2\" />\n </>\n )}\n </Form>\n </Scrollable>\n )}\n </Container>\n );\n};\nexport default Configuration;\n"],"names":["toPrimitive","toPropertyKey","ACCESS_CONTROL_BASE_PATH","configurationPath","concat","show","params","axios","get","update","_ref","ownerId","ownerType","payload","put","configuration","configurationsApi","QUERY_KEYS","ACCESS_CONTROL_CONFIGURATION","useShowConfiguration","queryKey","useQuery","select","prop","staleTime","DEFAULT_STALE_TIME","useUpdateConfiguration","_ref2","options","useMutationWithInvalidation","_objectSpread","keysToInvalidate","AUTH","NO","EMAIL","BASIC","SESSION","AUTH_OPTIONS","label","t","value","CONFIGURATION_VALIDATION_SCHEMA","yup","object","auth","string","required","password","nullable","when","is","equals","then","trim","min","allowedKeywords","array","buildConfigurationInitialValues","isEmpty","push","removeKeyword","arrayHelpers","index","length","remove","buildPayload","values","pick","rejectEmptyKeywords","reject","pipe","AllowedKeywords","withT","name","_ref$label","React","createElement","FieldArray","form","showDeleteButton","isNotEmpty","className","Label","map","_","Input","key","placeholder","suffix","Button","icon","Delete","size","style","onClick","Configuration","onReset","onSuccess","headerProps","_useTranslation","useTranslation","_useShowConfiguration","_useShowConfiguration2","data","isLoading","_useUpdateConfigurati","updateConfiguration","mutate","handleSubmit","setSubmitting","onSettled","Container","Header","PageLoader","Scrollable","Form","classNames","formikProps","initialValues","validationSchema","onSubmit","enableReinitialize","_ref3","Fragment","Radio","stacked","props","Item","_extends","autoFocus","unlimitedChars","ActionBlock"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,194 @@
1
+ {
2
+ "name": "@bigbinary/neeto-access-control-frontend",
3
+ "version": "0.0.1",
4
+ "description": "Neeto access control",
5
+ "license": "UNLICENSED",
6
+ "homepage": "https://github.com/bigbinary/neeto-access-control-nano",
7
+ "bugs": {
8
+ "url": "https://github.com/bigbinary/neeto-access-control-nano/issues"
9
+ },
10
+ "repository": "neeto-access-control-nano",
11
+ "author": "BigBinary",
12
+ "files": [
13
+ "dist",
14
+ "types.d.ts",
15
+ "app/javascript/src/translations"
16
+ ],
17
+ "main": "dist/index.cjs.js",
18
+ "module": "dist/index.js",
19
+ "types": "types.d.ts",
20
+ "scripts": {
21
+ "build": "NODE_ENV=production rollup -c --environment production",
22
+ "build-preview": "NODE_ENV=production webpack",
23
+ "prepare": "husky install",
24
+ "release": "yarn build && yalc push --sig"
25
+ },
26
+ "lint-staged": {
27
+ "./**/*.rb": [
28
+ "bundle exec rubocop -a --force-exclusion"
29
+ ],
30
+ "./**/app/javascript/**/*.{js,jsx,json}": [
31
+ "prettier --write",
32
+ "eslint --fix"
33
+ ],
34
+ "./test/dummy/**/app/javascript/**/*.{js,jsx,json}": [
35
+ "prettier --write",
36
+ "eslint --fix"
37
+ ],
38
+ "{Gemfile,Rakefile,config.ru}": [
39
+ "bundle exec rubocop -a --force-exclusion"
40
+ ]
41
+ },
42
+ "devDependencies": {
43
+ "@babel/core": "7.23.2",
44
+ "@babel/eslint-parser": "7.22.15",
45
+ "@babel/plugin-transform-runtime": "7.23.2",
46
+ "@babel/preset-env": "7.23.2",
47
+ "@babel/preset-react": "7.22.15",
48
+ "@babel/preset-typescript": "7.23.2",
49
+ "@babel/runtime": "7.23.2",
50
+ "@bigbinary/babel-preset-neeto": "1.0.6",
51
+ "@bigbinary/eslint-plugin-neeto": "1.5.0",
52
+ "@bigbinary/neeto-audit-frontend": "2.0.9",
53
+ "@bigbinary/neeto-cist": "1.0.8",
54
+ "@bigbinary/neeto-commons-frontend": "3.1.20",
55
+ "@bigbinary/neeto-filters-frontend": "3.1.3",
56
+ "@bigbinary/neeto-icons": "1.17.14",
57
+ "@bigbinary/neeto-molecules": "1.13.2",
58
+ "@bigbinary/neetoui": "6.3.2",
59
+ "@emotion/is-prop-valid": "1.2.0",
60
+ "@faker-js/faker": "8.2.0",
61
+ "@honeybadger-io/js": "6.5.3",
62
+ "@honeybadger-io/react": "6.1.9",
63
+ "@rollup/plugin-alias": "5.0.1",
64
+ "@rollup/plugin-babel": "6.0.4",
65
+ "@rollup/plugin-commonjs": "25.0.7",
66
+ "@rollup/plugin-json": "6.0.1",
67
+ "@rollup/plugin-node-resolve": "15.2.3",
68
+ "@rollup/plugin-replace": "5.0.4",
69
+ "@svgr/rollup": "8.1.0",
70
+ "antd": "5.10.2",
71
+ "autoprefixer": "10.4.16",
72
+ "axios": "1.6.0",
73
+ "babel-loader": "9.1.3",
74
+ "babel-plugin-istanbul": "6.1.1",
75
+ "babel-plugin-js-logger": "1.0.17",
76
+ "babel-plugin-macros": "3.1.0",
77
+ "babel-plugin-preval": "^5.1.0",
78
+ "babel-plugin-transform-react-remove-prop-types": "0.4.24",
79
+ "babel-preset-react": "6.24.1",
80
+ "babel-preset-typescript": "7.0.0-alpha.19",
81
+ "browserify-zlib": "0.2.0",
82
+ "buffer": "6.0.3",
83
+ "classnames": "2.3.2",
84
+ "crypto-browserify": "3.12.0",
85
+ "css-loader": "6.8.1",
86
+ "dompurify": "3.0.2",
87
+ "dotenv-webpack": "^8.0.1",
88
+ "eslint": "8.52.0",
89
+ "eslint-config-prettier": "8.5.0",
90
+ "eslint-plugin-cypress": "2.15.1",
91
+ "eslint-plugin-import": "2.29.0",
92
+ "eslint-plugin-jam3": "0.2.3",
93
+ "eslint-plugin-json": "3.1.0",
94
+ "eslint-plugin-prettier": "4.0.0",
95
+ "eslint-plugin-promise": "6.1.1",
96
+ "eslint-plugin-react": "7.33.2",
97
+ "eslint-plugin-react-hooks": "4.6.0",
98
+ "eslint-plugin-security": "^1.7.1",
99
+ "eslint-plugin-sonarjs": "^0.21.0",
100
+ "eslint-plugin-unused-imports": "3.0.0",
101
+ "eslint-plugin-xss": "^0.1.12",
102
+ "formik": "2.4.5",
103
+ "html-webpack-plugin": "5.5.3",
104
+ "https-browserify": "1.0.0",
105
+ "husky": "8.0.3",
106
+ "i18next": "23.6.0",
107
+ "i18next-browser-languagedetector": "7.0.1",
108
+ "js-logger": "1.6.1",
109
+ "lint-staged": "15.0.2",
110
+ "mini-css-extract-plugin": "2.7.6",
111
+ "mixpanel-browser": "2.47.0",
112
+ "os-browserify": "0.3.0",
113
+ "path-browserify": "1.0.1",
114
+ "postcss": "8.4.31",
115
+ "postcss-import": "15.1.0",
116
+ "postcss-loader": "7.3.3",
117
+ "postcss-preset-env": "9.2.0",
118
+ "prettier": "2.6.2",
119
+ "prettier-plugin-tailwindcss": "0.1.10",
120
+ "process": "0.11.10",
121
+ "qs": "6.11.2",
122
+ "ramda": "0.29.1",
123
+ "react": "18.2.0",
124
+ "react-dom": "18.2.0",
125
+ "react-helmet": "6.1.0",
126
+ "react-i18next": "13.3.1",
127
+ "react-query": "3.39.3",
128
+ "react-router-dom": "5.3.4",
129
+ "react-toastify": "8.2.0",
130
+ "react_ujs": "^3.1.1",
131
+ "rollup": "2.79.1",
132
+ "rollup-plugin-analyzer": "4.0.0",
133
+ "rollup-plugin-cleaner": "1.0.0",
134
+ "rollup-plugin-copy": "^3.5.0",
135
+ "rollup-plugin-peer-deps-external": "2.2.4",
136
+ "rollup-plugin-styles": "4.0.0",
137
+ "sass": "1.69.5",
138
+ "sass-loader": "13.3.2",
139
+ "shakapacker": "6.6.0",
140
+ "stream-browserify": "3.0.0",
141
+ "stream-http": "3.2.0",
142
+ "style-loader": "3.3.3",
143
+ "tailwindcss": "3.4.1",
144
+ "tty-browserify": "0.0.1",
145
+ "url": "0.11.1",
146
+ "util": "0.12.5",
147
+ "vm-browserify": "1.1.2",
148
+ "webpack": "5.88.1",
149
+ "webpack-assets-manifest": "5.1.0",
150
+ "webpack-cli": "5.1.4",
151
+ "webpack-dev-server": "4.15.1",
152
+ "yup": "1.3.2"
153
+ },
154
+ "peerDependencies": {
155
+ "@bigbinary/neeto-cist": "latest",
156
+ "@bigbinary/neeto-commons-frontend": "3.1.20",
157
+ "@bigbinary/neeto-editor": "^1.26.3",
158
+ "@bigbinary/neeto-filters-frontend": "3.1.3",
159
+ "@bigbinary/neeto-icons": "1.17.14",
160
+ "@bigbinary/neeto-molecules": "1.13.2",
161
+ "@bigbinary/neetoui": "6.3.2",
162
+ "@honeybadger-io/js": "^6.5.3",
163
+ "@honeybadger-io/react": "^6.1.9",
164
+ "axios": "^1.6.0",
165
+ "classnames": "^2.3.2",
166
+ "formik": "^2.4.5",
167
+ "i18next": "^23.6.0",
168
+ "js-logger": "^1.6.1",
169
+ "mixpanel-browser": "^2.45.0",
170
+ "ramda": "^0.29.1",
171
+ "react": "^18.2.0",
172
+ "react-dom": "^18.2.0",
173
+ "react-helmet": "^6.1.0",
174
+ "react-i18next": "^13.3.1",
175
+ "react-query": "^3.39.3",
176
+ "react-router-dom": "^5.3.4",
177
+ "react-toastify": "^8.2.0",
178
+ "yup": "^0.32.11",
179
+ "zustand": "4.3.2"
180
+ },
181
+ "resolutions": {
182
+ "postcss": "^8"
183
+ },
184
+ "engines": {
185
+ "node": ">=18.12",
186
+ "npm": ">=9",
187
+ "yarn": ">=1.22"
188
+ },
189
+ "dependencies": {
190
+ "react-router-nav-prompt": "0.4.1",
191
+ "source-map-loader": "^4.0.1",
192
+ "zustand": "4.3.2"
193
+ }
194
+ }
package/types.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+
3
+ interface ConfigurationProps {
4
+ headerProps: { [key: string]: any };
5
+ ownerType?: string;
6
+ ownerId?: string;
7
+ onSubmit?: () => void;
8
+ onReset?: () => void;
9
+ className?: string;
10
+ }
11
+
12
+ export const Configuration = React.FC<ConfigurationProps>;