@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/src/translations/en.json
CHANGED
|
@@ -524,62 +524,6 @@
|
|
|
524
524
|
"custom": "Custom"
|
|
525
525
|
}
|
|
526
526
|
},
|
|
527
|
-
"themeSidebar": {
|
|
528
|
-
"theme_one": "theme",
|
|
529
|
-
"theme_other": "themes",
|
|
530
|
-
"active": "Active",
|
|
531
|
-
"defaultThemeName": "My theme",
|
|
532
|
-
"addNewTheme": "Add new theme",
|
|
533
|
-
"searchThemes": "Search themes",
|
|
534
|
-
"systemThemes": "System themes",
|
|
535
|
-
"customThemes": "Custom themes",
|
|
536
|
-
"backToThemes": "Back to themes",
|
|
537
|
-
"name": "Name",
|
|
538
|
-
"thankYouTextAlignment": "Thank you text alignment",
|
|
539
|
-
"welcomeTextAlignment": "Welcome text alignment",
|
|
540
|
-
"questionsTextAlignment": "Questions text alignment",
|
|
541
|
-
"backgroundOverlay": "Background overlay",
|
|
542
|
-
"enableDominantBackgroundColor": "Enable dominant background color",
|
|
543
|
-
"backgroundPosition": "Background position",
|
|
544
|
-
"backgroundColor": "Background color",
|
|
545
|
-
"enableContentBackground": "Enable content background",
|
|
546
|
-
"formBackgroundColor": "Form background color",
|
|
547
|
-
"backgroundImage": "Background image",
|
|
548
|
-
"buttonBorderRadius": "Button border radius",
|
|
549
|
-
"buttonText": "Button text",
|
|
550
|
-
"buttons": "Buttons",
|
|
551
|
-
"answerColor": "Answer color",
|
|
552
|
-
"questions": "Questions",
|
|
553
|
-
"font": "Font",
|
|
554
|
-
"left": "Left",
|
|
555
|
-
"style": "Style",
|
|
556
|
-
"fileRequirements": "Only .jpeg, .jpg, .png, .svg and .gif files are supported. Maximum allowed file size {{maxSize}}MB.",
|
|
557
|
-
"logoPosition": "Logo position",
|
|
558
|
-
"logo": "Logo",
|
|
559
|
-
"themeOptions": {
|
|
560
|
-
"clone": "Clone",
|
|
561
|
-
"delete": "Delete"
|
|
562
|
-
},
|
|
563
|
-
"themeCard": {
|
|
564
|
-
"question": "Question",
|
|
565
|
-
"answer": "Answer"
|
|
566
|
-
},
|
|
567
|
-
"editTheme": {
|
|
568
|
-
"title": "Edit theme",
|
|
569
|
-
"imageUpload": "Drag and drop or <span>Browse</span> a file"
|
|
570
|
-
},
|
|
571
|
-
"createTheme": {
|
|
572
|
-
"title": "New theme"
|
|
573
|
-
},
|
|
574
|
-
"alignmentOptions": {
|
|
575
|
-
"left": "Left align",
|
|
576
|
-
"center": "Center align"
|
|
577
|
-
},
|
|
578
|
-
"error": {
|
|
579
|
-
"fileSizeLimitExceeded": "Your file is larger than {{maxSizeInReadableUnits}}. Please try again with a smaller file.",
|
|
580
|
-
"fileTypeError": "Please upload a file with one of the following file types: {{acceptedTypes}}."
|
|
581
|
-
}
|
|
582
|
-
},
|
|
583
527
|
"builderSidebar": {
|
|
584
528
|
"element_one": "Element",
|
|
585
529
|
"element_other": "Elements",
|
|
@@ -643,34 +587,6 @@
|
|
|
643
587
|
"search": "Search settings"
|
|
644
588
|
}
|
|
645
589
|
},
|
|
646
|
-
"security": {
|
|
647
|
-
"labels": {
|
|
648
|
-
"notSecured": "Public, anyone can access {{name}}",
|
|
649
|
-
"passwordEnabled": "Secure {{name}} with password",
|
|
650
|
-
"otpEnabled": "Secure {{name}} by allowing emails with certain keywords",
|
|
651
|
-
"private": "Private, logged in members only",
|
|
652
|
-
"password": "Password",
|
|
653
|
-
"keyword": "Keyword",
|
|
654
|
-
"keywordForm": {
|
|
655
|
-
"KB": "Add keywords that must be present in the email address for it to be allowed access to KB. 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.",
|
|
656
|
-
"Course": "Add keywords that must be present in the email address for it to be allowed access to the course."
|
|
657
|
-
},
|
|
658
|
-
"addKeyWord": "Add keyword"
|
|
659
|
-
},
|
|
660
|
-
"validation": {
|
|
661
|
-
"required": "{{what}} is required.",
|
|
662
|
-
"min": "{{entity}} should be more than or equal to {{min}} characters."
|
|
663
|
-
},
|
|
664
|
-
"placeholders": {
|
|
665
|
-
"exists": "{{what}} already exists",
|
|
666
|
-
"enterPassword": "Enter password",
|
|
667
|
-
"enterKeyword": "Enter keyword"
|
|
668
|
-
},
|
|
669
|
-
"appName": {
|
|
670
|
-
"KB": "KB",
|
|
671
|
-
"Course": "Course"
|
|
672
|
-
}
|
|
673
|
-
},
|
|
674
590
|
"documentEditor": {
|
|
675
591
|
"title": "Document title"
|
|
676
592
|
},
|
package/types/ProductEmbed.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
|
|
3
2
|
interface InlineProps {
|
|
4
3
|
label: string;
|
|
5
4
|
description: string;
|
|
@@ -7,7 +6,6 @@ interface InlineProps {
|
|
|
7
6
|
height?: number;
|
|
8
7
|
elementSelector?: string;
|
|
9
8
|
}
|
|
10
|
-
|
|
11
9
|
interface FloatingPopupProps {
|
|
12
10
|
label: string;
|
|
13
11
|
description: string;
|
|
@@ -18,19 +16,66 @@ interface FloatingPopupProps {
|
|
|
18
16
|
icon?: React.FC;
|
|
19
17
|
showIcon?: boolean;
|
|
20
18
|
}
|
|
21
|
-
|
|
22
19
|
interface ElementPopupProps {
|
|
23
20
|
label: string;
|
|
24
21
|
description: string;
|
|
25
22
|
elementSelector?: string;
|
|
26
23
|
}
|
|
27
|
-
|
|
24
|
+
/**
|
|
25
|
+
*
|
|
26
|
+
* A component to generate and display the embed code for a product, which can then
|
|
27
|
+
*
|
|
28
|
+
* be pasted into a host application where the product should be embedded. Please
|
|
29
|
+
*
|
|
30
|
+
* note that this component does not embed the product itself but provides the
|
|
31
|
+
*
|
|
32
|
+
* necessary code and a preview to facilitate embedding.
|
|
33
|
+
*
|
|
34
|
+
* Here’s how you can use the ProductEmbed component in your React application:
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
*
|
|
38
|
+
* import React from "react";
|
|
39
|
+
* import ProductEmbed from "@bigbinary/neeto-molecules/ProductEmbed";
|
|
40
|
+
*
|
|
41
|
+
* const EmbedPage = () => (
|
|
42
|
+
* <ProductEmbed
|
|
43
|
+
* id="123"
|
|
44
|
+
* goBackLink="/share"
|
|
45
|
+
* options={{
|
|
46
|
+
* inline: {
|
|
47
|
+
* label: "Inline",
|
|
48
|
+
* description: "An inline component",
|
|
49
|
+
* width: 90,
|
|
50
|
+
* height: 100,
|
|
51
|
+
* elementSelector: "#inline-embed",
|
|
52
|
+
* },
|
|
53
|
+
* floatingPopup: {
|
|
54
|
+
* label: "Floating Popup",
|
|
55
|
+
* description: "A floating popup",
|
|
56
|
+
* btnText: "Schedule meeting",
|
|
57
|
+
* showIcon: true,
|
|
58
|
+
* icon: Calendar,
|
|
59
|
+
* },
|
|
60
|
+
* elementPopup: {
|
|
61
|
+
* label: "Element Popup",
|
|
62
|
+
* description: "An element popup",
|
|
63
|
+
* elementSelector: "element-id",
|
|
64
|
+
* },
|
|
65
|
+
* }}
|
|
66
|
+
* isQueryParamsEnabled={true}
|
|
67
|
+
* />
|
|
68
|
+
* );
|
|
69
|
+
*
|
|
70
|
+
* export default EmbedPage;
|
|
71
|
+
* @endexample
|
|
72
|
+
*/
|
|
28
73
|
const ProductEmbed: React.FC<{
|
|
29
74
|
className?: string;
|
|
30
75
|
goBackLink?: string;
|
|
31
|
-
customEmbedScriptPath?: string
|
|
32
|
-
customPreviewIframeUrl?: string
|
|
33
|
-
extraArgs?: object
|
|
76
|
+
customEmbedScriptPath?: string;
|
|
77
|
+
customPreviewIframeUrl?: string;
|
|
78
|
+
extraArgs?: object;
|
|
34
79
|
id: string;
|
|
35
80
|
options?: {
|
|
36
81
|
inline?: InlineProps;
|
|
@@ -39,5 +84,4 @@ const ProductEmbed: React.FC<{
|
|
|
39
84
|
};
|
|
40
85
|
isQueryParamsEnabled?: boolean;
|
|
41
86
|
}>;
|
|
42
|
-
|
|
43
|
-
export default ProductEmbed;
|
|
87
|
+
export default ProductEmbed;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Chevron-c639aa31.js","sources":["../src/components/Sidebar/Components/Links/CheckPointNavLink.jsx","../src/components/Sidebar/constants.js","../src/components/Sidebar/utils.js","../src/components/Sidebar/Components/Links/SubLink.jsx","../src/components/Sidebar/Components/Links/Items.jsx","../src/components/Sidebar/Components/Links/SelectedLink.jsx","../src/components/Sidebar/Components/Chevron.jsx"],"sourcesContent":["import React from \"react\";\n\nimport { useNavigationCheckpoints } from \"neetocommons/react-utils/useRegisterNavigationCheckpoint\";\nimport { NavLink } from \"react-router-dom\";\n\nconst CheckPointNavLinks = ({ checkpointKey, to, children, ...others }) => {\n const { [checkpointKey]: checkpoint } =\n useNavigationCheckpoints(checkpointKey);\n\n return (\n <NavLink to={checkpoint || to} {...others} key={to}>\n {children}\n </NavLink>\n );\n};\n\nexport default CheckPointNavLinks;\n","export const SUB_LINK_TYPES = {\n SYSTEM_VIEW: \"system_view\",\n SEGMENTS: \"segments\",\n};\n\nexport const SELECTED_NAV_LINK_ROUTE_STORAGE_KEY = \"selectedNavLinkRoute\";\n","import { isNotEmpty } from \"neetocist\";\nimport { __, all, curry, equals, includes, is } from \"ramda\";\n\nexport const isSubRouteActive = (subRoute, location) => {\n const currentBrowserUrl = new URL(\n location.pathname + location.search + location.hash,\n window.location.origin\n );\n const targetUrl = new URL(subRoute, window.location.origin);\n\n const targetSearchParams = targetUrl.searchParams;\n const targetSearchKeys = Array.from(targetSearchParams.keys());\n\n return (\n all(\n key =>\n currentBrowserUrl.searchParams.get(key) === targetSearchParams.get(key),\n targetSearchKeys\n ) && equals(currentBrowserUrl.pathname, targetUrl.pathname)\n );\n};\n\nexport const getSidebarStateLocalStorageKey = () => {\n const user = globalProps.user?.email || globalProps.user?.phoneNumber;\n\n return `sidebarState-${user}`;\n};\n\nexport const filterByPermissions = curry(({ permissions }) => {\n if (permissions && isNotEmpty(permissions)) {\n return is(Array, permissions)\n ? permissions.some(includes(__, globalProps.permissions))\n : globalProps.permissions.includes(permissions);\n }\n\n return true;\n});\n","import React from \"react\";\n\nimport { hyphenate } from \"neetocist\";\nimport { Segments } from \"neetofilters\";\nimport { Typography } from \"neetoui\";\n\nimport CheckPointNavLinks from \"./CheckPointNavLink\";\n\nimport { SUB_LINK_TYPES } from \"../../constants\";\nimport { isSubRouteActive } from \"../../utils\";\n\nconst SubLink = ({\n to,\n label,\n type = SUB_LINK_TYPES.SYSTEM_VIEW,\n count,\n isSectionHeader,\n isCountsLoading,\n \"data-cy\": dataCy,\n entity = \"\",\n columns = [],\n}) => {\n if (type === SUB_LINK_TYPES.SEGMENTS) {\n return <Segments {...{ columns, entity }} isIndependent={false} />;\n }\n\n const dataCyPrefix = dataCy || hyphenate(label);\n\n const renderCount = count => (count > 999 ? \"999+\" : count);\n\n return (\n <CheckPointNavLinks\n {...{ to }}\n activeClassName=\"active\"\n className=\"neeto-molecules-sidebar__sublink neeto-ui-flex neeto-ui-items-center neeto-ui-select-none\"\n data-cy={`${dataCyPrefix}-sub-link`}\n isActive={() => !isSectionHeader && isSubRouteActive(to, location)}\n >\n <Typography\n className=\"neeto-molecules-sidebar__link-sub-label neeto-ui-flex-grow\"\n component=\"span\"\n data-cy={`${dataCyPrefix}-sub-link-label`}\n style=\"body2\"\n >\n {label}\n </Typography>\n <Typography\n className=\"neeto-molecules-sidebar__link-sub-count neeto-ui-flex-shrink-0\"\n component=\"span\"\n data-cy={`${dataCyPrefix}-sub-link-count`}\n style=\"body2\"\n >\n {isCountsLoading ? (\n <div className=\"neeto-ui-rounded neeto-ui-bg-gray-200 h-4 w-4 animate-pulse\" />\n ) : (\n renderCount(count)\n )}\n </Typography>\n </CheckPointNavLinks>\n );\n};\n\nexport default SubLink;\n","import React from \"react\";\n\nimport { isPresent } from \"neetocist\";\n\nimport SubLink from \"./SubLink\";\n\nimport { filterByPermissions } from \"../../utils\";\n\nconst Items = ({ items, isSettingsItems = false, isCountsLoading }) => (\n <div\n className=\"neeto-molecules-sidebar__sublink-wrapper\"\n data-cy=\"sidebar-sub-link-wrapper\"\n >\n {items.filter(filterByPermissions).map((subItem, subIndex) => (\n <React.Fragment key={subIndex}>\n <SubLink\n {...{ ...subItem, isCountsLoading }}\n isSectionHeader={isPresent(subItem.item)}\n to={subItem.to ?? subItem.path}\n />\n {isSettingsItems && isPresent(subItem.items) && (\n <>\n <Items {...{ isSettingsItems }} items={subItem.items} />\n {items.length - 1 !== subIndex && (\n <hr className=\"neeto-molecules-sidebar__separator\" />\n )}\n </>\n )}\n </React.Fragment>\n ))}\n </div>\n);\n\nexport default Items;\n","import React from \"react\";\n\nimport classNames from \"classnames\";\nimport { hyphenize } from \"neetocommons/utils/general\";\nimport { Left } from \"neetoicons\";\nimport { Typography } from \"neetoui\";\nimport { omit } from \"ramda\";\n\nimport Items from \"./Items\";\n\nconst SelectedLink = ({\n navLink = { label: \"\", items: [], isConfigureNavLink: false },\n handleGoBack,\n isConfigureSidebar,\n}) => {\n const { label, items, isConfigureNavLink, ...otherProps } = navLink;\n\n return (\n <div\n className=\"neeto-molecules-sidebar__links neeto-molecules-sidebar__links--focus-mode neeto-molecules-sidebar__no-shrinkable\"\n data-cy=\"configure-nav-container\"\n >\n <div\n className=\"neeto-ui-flex neeto-ui-items-center neeto-ui-no-underline neeto-molecules-sidebar__link neeto-ui-border-b hover:neeto-ui-bg-primary-100\"\n onClick={handleGoBack}\n {...{ ...omit([\"icon\"], otherProps) }}\n >\n {isConfigureNavLink && (\n <span\n className=\"neeto-molecules-sidebar__link-icon\"\n data-cy={`${hyphenize(label)}-go-back-button`}\n data-testid={`${label}-go-back-button`}\n >\n <Left />\n </span>\n )}\n <Typography\n component=\"span\"\n style=\"body1\"\n weight=\"normal\"\n className={classNames(\"neeto-molecules-sidebar__link-label\", {\n \"neeto-molecules-sidebar__configure-page-header\":\n isConfigureNavLink,\n [\"pl-4\"]: isConfigureSidebar,\n })}\n >\n {label}\n </Typography>\n </div>\n {items && <Items {...{ items }} isSettingsItems />}\n </div>\n );\n};\n\nexport default SelectedLink;\n","import React from \"react\";\n\nconst Chevron = ({ style }) => (\n <svg {...{ style }} height=\"16\" viewBox=\"0 0 16 16\" width=\"16\">\n <path\n d=\"M7.07031 13.8887C7.2207 14.0391 7.40527 14.1211 7.62402 14.1211C8.06836 14.1211 8.41699 13.7725 8.41699 13.3281C8.41699 13.1094 8.32812 12.9043 8.17773 12.7539L3.37207 8.05762L8.17773 3.375C8.32812 3.21777 8.41699 3.0127 8.41699 2.80078C8.41699 2.35645 8.06836 2.00781 7.62402 2.00781C7.40527 2.00781 7.2207 2.08984 7.07031 2.24023L1.73828 7.44922C1.56055 7.62012 1.46484 7.8252 1.46484 8.06445C1.46484 8.29688 1.55371 8.49512 1.73828 8.67969L7.07031 13.8887ZM13.1748 13.8887C13.3252 14.0391 13.5098 14.1211 13.7354 14.1211C14.1797 14.1211 14.5283 13.7725 14.5283 13.3281C14.5283 13.1094 14.4395 12.9043 14.2891 12.7539L9.4834 8.05762L14.2891 3.375C14.4395 3.21777 14.5283 3.0127 14.5283 2.80078C14.5283 2.35645 14.1797 2.00781 13.7354 2.00781C13.5098 2.00781 13.3252 2.08984 13.1748 2.24023L7.84961 7.44922C7.66504 7.62012 7.57617 7.8252 7.56934 8.06445C7.56934 8.29688 7.66504 8.49512 7.84961 8.67969L13.1748 13.8887Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Chevron;\n"],"names":["CheckPointNavLinks","_ref","checkpointKey","to","children","others","_objectWithoutProperties","_excluded","_useNavigationCheckpo","useNavigationCheckpoints","checkpoint","React","createElement","NavLink","_extends","key","SUB_LINK_TYPES","SYSTEM_VIEW","SEGMENTS","SELECTED_NAV_LINK_ROUTE_STORAGE_KEY","isSubRouteActive","subRoute","location","currentBrowserUrl","URL","pathname","search","hash","window","origin","targetUrl","targetSearchParams","searchParams","targetSearchKeys","Array","from","keys","all","get","equals","getSidebarStateLocalStorageKey","_globalProps$user","_globalProps$user2","user","globalProps","email","phoneNumber","concat","filterByPermissions","curry","permissions","isNotEmpty","is","some","includes","__","SubLink","label","_ref$type","type","count","isSectionHeader","isCountsLoading","dataCy","_ref$entity","entity","_ref$columns","columns","Segments","isIndependent","dataCyPrefix","hyphenate","renderCount","activeClassName","className","isActive","Typography","component","style","Items","items","_ref$isSettingsItems","isSettingsItems","filter","map","subItem","subIndex","_subItem$to","Fragment","_objectSpread","isPresent","item","path","length","SelectedLink","_ref$navLink","navLink","isConfigureNavLink","handleGoBack","isConfigureSidebar","otherProps","onClick","omit","hyphenize","Left","weight","classNames","_defineProperty","Chevron","height","viewBox","width","d","fill"],"mappings":"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"}
|
package/dist/Security.js
DELETED
|
@@ -1,341 +0,0 @@
|
|
|
1
|
-
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
2
|
-
import React__default, { useState, useEffect } from 'react';
|
|
3
|
-
import '@bigbinary/neeto-cist';
|
|
4
|
-
import { Input, Radio, Form, ActionBlock } from '@bigbinary/neetoui/formik';
|
|
5
|
-
import Container from './Container.js';
|
|
6
|
-
import Header from './Header.js';
|
|
7
|
-
import PageLoader from './PageLoader.js';
|
|
8
|
-
import Scrollable from './Scrollable.js';
|
|
9
|
-
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
10
|
-
import { useFormikContext, ErrorMessage } from 'formik';
|
|
11
|
-
import { globalProps } from '@bigbinary/neeto-commons-frontend/initializers';
|
|
12
|
-
import { Button, Label } from '@bigbinary/neetoui';
|
|
13
|
-
import { remove, isEmpty, identity } from 'ramda';
|
|
14
|
-
import { useTranslation } from 'react-i18next';
|
|
15
|
-
import classnames from 'classnames';
|
|
16
|
-
import { Delete } from '@bigbinary/neeto-icons';
|
|
17
|
-
import { t } from 'i18next';
|
|
18
|
-
import * as yup from 'yup';
|
|
19
|
-
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
20
|
-
import useMutationWithInvalidation from '@bigbinary/neeto-commons-frontend/react-utils/useMutationWithInvalidation';
|
|
21
|
-
import { useQuery } from 'react-query';
|
|
22
|
-
import axios from 'axios';
|
|
23
|
-
import './index-e5588516.js';
|
|
24
|
-
import './inject-css-c86de496.js';
|
|
25
|
-
import '@babel/runtime/helpers/extends';
|
|
26
|
-
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
27
|
-
import './Breadcrumbs.js';
|
|
28
|
-
import '@bigbinary/neeto-commons-frontend/utils/general';
|
|
29
|
-
import 'react-router-dom';
|
|
30
|
-
import './MoreDropdown.js';
|
|
31
|
-
import './Search.js';
|
|
32
|
-
import '@bigbinary/neeto-commons-frontend/react-utils/useFuncDebounce';
|
|
33
|
-
import '@bigbinary/neeto-commons-frontend/react-utils/useQueryParams';
|
|
34
|
-
import '@bigbinary/neeto-commons-frontend/react-utils/useUpdateEffect';
|
|
35
|
-
import '@bigbinary/neeto-commons-frontend/utils';
|
|
36
|
-
|
|
37
|
-
var Add = function Add() {
|
|
38
|
-
var _useTranslation = useTranslation(),
|
|
39
|
-
t = _useTranslation.t;
|
|
40
|
-
var _useFormikContext = useFormikContext(),
|
|
41
|
-
setFieldValue = _useFormikContext.setFieldValue,
|
|
42
|
-
allowedKeywords = _useFormikContext.values.allowedKeywords;
|
|
43
|
-
var removeKeyword = function removeKeyword(index) {
|
|
44
|
-
return setFieldValue("allowedKeywords", remove(index, 1, allowedKeywords));
|
|
45
|
-
};
|
|
46
|
-
if (!allowedKeywords) return null;
|
|
47
|
-
return allowedKeywords.map(function (_, index) {
|
|
48
|
-
return /*#__PURE__*/React__default.createElement("div", {
|
|
49
|
-
className: classnames("flex w-full items-start justify-between gap-x-2"),
|
|
50
|
-
key: index
|
|
51
|
-
}, /*#__PURE__*/React__default.createElement(Input, {
|
|
52
|
-
autoFocus: true,
|
|
53
|
-
"data-cy": "keyword-input-field-".concat(index),
|
|
54
|
-
name: "allowedKeywords[".concat(index, "]"),
|
|
55
|
-
placeholder: t("neetoMolecules.security.placeholders.enterKeyword")
|
|
56
|
-
}), /*#__PURE__*/React__default.createElement(Button, {
|
|
57
|
-
"data-cy": "keyword-remove-button-".concat(index),
|
|
58
|
-
icon: Delete,
|
|
59
|
-
style: "text",
|
|
60
|
-
onClick: function onClick() {
|
|
61
|
-
return removeKeyword(index);
|
|
62
|
-
}
|
|
63
|
-
}));
|
|
64
|
-
});
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
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; }
|
|
68
|
-
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; }
|
|
69
|
-
var buildSecuritySettings = function buildSecuritySettings(settings) {
|
|
70
|
-
return _objectSpread(_objectSpread({}, settings.setting), {}, {
|
|
71
|
-
addEmail: false
|
|
72
|
-
});
|
|
73
|
-
};
|
|
74
|
-
var findKeywordDuplicates = function findKeywordDuplicates(list, message, createError) {
|
|
75
|
-
var duplicates = {};
|
|
76
|
-
list === null || list === void 0 ? void 0 : list.forEach(function (value, index) {
|
|
77
|
-
if (duplicates[value]) {
|
|
78
|
-
duplicates[value].push(index);
|
|
79
|
-
} else {
|
|
80
|
-
duplicates[value] = [index];
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
var errors = Object.values(duplicates).map(function (index) {
|
|
84
|
-
return index.length > 1 && new yup.ValidationError(message, list[index.at(-1)], "setting.allowedKeywords[".concat(index.at(-1), "]"));
|
|
85
|
-
});
|
|
86
|
-
if (isEmpty(errors)) {
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
return createError({
|
|
90
|
-
message: function message() {
|
|
91
|
-
return errors;
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
var NOT_SECURED = "no_auth";
|
|
97
|
-
var SESSION_AUTH = "session_auth";
|
|
98
|
-
yup.addMethod(yup.array, "unique", function (message) {
|
|
99
|
-
var mapper = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : identity;
|
|
100
|
-
return this.test("unique", message, function (list, _ref) {
|
|
101
|
-
var authKind = _ref.parent.authKind;
|
|
102
|
-
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);
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
var QUERY_KEYS = {
|
|
106
|
-
SETTINGS_LIST: "settings-list",
|
|
107
|
-
GETTING_STARTED: "getting-started",
|
|
108
|
-
INTEGRATION_SETTINGS: "integration_settings",
|
|
109
|
-
THEMES_SETTINGS: "themes_setting"
|
|
110
|
-
};
|
|
111
|
-
var SETTINGS_STALE_TIME = 900000; // 15 mins
|
|
112
|
-
var PASSWORD_ENABLED = "basic_auth";
|
|
113
|
-
var OTP_ENABLED = "otp_auth";
|
|
114
|
-
var APP_NAME = {
|
|
115
|
-
neetoKB: "KB",
|
|
116
|
-
neetoCourse: "Course"
|
|
117
|
-
};
|
|
118
|
-
[{
|
|
119
|
-
label: t("neetoMolecules.security.labels.notSecured"),
|
|
120
|
-
value: NOT_SECURED
|
|
121
|
-
}, {
|
|
122
|
-
label: t("neetoMolecules.security.labels.passwordEnabled"),
|
|
123
|
-
value: PASSWORD_ENABLED
|
|
124
|
-
}, {
|
|
125
|
-
label: t("neetoMolecules.security.labels.otpEnabled"),
|
|
126
|
-
value: OTP_ENABLED
|
|
127
|
-
}, {
|
|
128
|
-
label: t("neetoMolecules.security.labels.private"),
|
|
129
|
-
value: SESSION_AUTH
|
|
130
|
-
}];
|
|
131
|
-
var SECURITY_SETTINGS_VALIDATION_SCHEMA = yup.object({
|
|
132
|
-
password: yup.string().when("authKind", {
|
|
133
|
-
is: PASSWORD_ENABLED,
|
|
134
|
-
then: yup.string().required(t("neetoMolecules.security.validation.required", {
|
|
135
|
-
what: t("neetoMolecules.security.labels.password")
|
|
136
|
-
})).min(4, t("neetoMolecules.security.validation.min", {
|
|
137
|
-
entity: t("neetoMolecules.security.labels.password"),
|
|
138
|
-
min: 4
|
|
139
|
-
}))
|
|
140
|
-
}),
|
|
141
|
-
allowedKeywords: yup.array().when("authKind", {
|
|
142
|
-
is: OTP_ENABLED,
|
|
143
|
-
then: yup.array().of(yup.string().trim().required(t("neetoMolecules.security.validation.required", {
|
|
144
|
-
what: t("neetoMolecules.security.labels.keyword")
|
|
145
|
-
}))).unique(t("neetoMolecules.security.placeholders.exists", {
|
|
146
|
-
what: t("neetoMolecules.security.labels.keyword")
|
|
147
|
-
}))
|
|
148
|
-
})
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
var AllowedKeywords = function AllowedKeywords() {
|
|
152
|
-
var _useTranslation = useTranslation(),
|
|
153
|
-
t = _useTranslation.t;
|
|
154
|
-
var _useFormikContext = useFormikContext(),
|
|
155
|
-
setFieldValue = _useFormikContext.setFieldValue,
|
|
156
|
-
_useFormikContext$val = _useFormikContext.values,
|
|
157
|
-
allowedKeywords = _useFormikContext$val.allowedKeywords,
|
|
158
|
-
authKind = _useFormikContext$val.authKind;
|
|
159
|
-
if (authKind !== OTP_ENABLED) return null;
|
|
160
|
-
var appName = APP_NAME[globalProps.appName];
|
|
161
|
-
return /*#__PURE__*/React__default.createElement("div", {
|
|
162
|
-
className: "flex-col space-y-2 py-2"
|
|
163
|
-
}, appName && /*#__PURE__*/React__default.createElement(Label, null, t("neetoMolecules.security.labels.keywordForm.".concat(appName))), /*#__PURE__*/React__default.createElement("div", {
|
|
164
|
-
className: "neeto-ui-bg-pastel-blue neeto-ui-rounded-sm w-full space-y-4 p-6"
|
|
165
|
-
}, /*#__PURE__*/React__default.createElement(Add, null), /*#__PURE__*/React__default.createElement(Button, {
|
|
166
|
-
"data-cy": "add-allowed-keyword-button",
|
|
167
|
-
"data-testid": "add-allowed-keyword-button",
|
|
168
|
-
label: t("neetoMolecules.security.labels.addKeyWord"),
|
|
169
|
-
style: "link",
|
|
170
|
-
onClick: function onClick() {
|
|
171
|
-
return setFieldValue("allowedKeywords", [].concat(_toConsumableArray(allowedKeywords), [""]));
|
|
172
|
-
}
|
|
173
|
-
})), isEmpty(allowedKeywords) && /*#__PURE__*/React__default.createElement(ErrorMessage, {
|
|
174
|
-
className: "neeto-ui-text-error-600",
|
|
175
|
-
component: "div",
|
|
176
|
-
name: "allowedKeywords"
|
|
177
|
-
}));
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
var Password = function Password() {
|
|
181
|
-
var _useTranslation = useTranslation(),
|
|
182
|
-
t = _useTranslation.t;
|
|
183
|
-
var _useFormikContext = useFormikContext(),
|
|
184
|
-
authKind = _useFormikContext.values.authKind,
|
|
185
|
-
getFieldProps = _useFormikContext.getFieldProps;
|
|
186
|
-
if (authKind !== PASSWORD_ENABLED) return null;
|
|
187
|
-
var _getFieldProps = getFieldProps("password"),
|
|
188
|
-
onPasswordChange = _getFieldProps.onChange;
|
|
189
|
-
return /*#__PURE__*/React__default.createElement("div", {
|
|
190
|
-
className: "space-y-4 pb-2"
|
|
191
|
-
}, /*#__PURE__*/React__default.createElement(Input, {
|
|
192
|
-
autoFocus: true,
|
|
193
|
-
unlimitedChars: true,
|
|
194
|
-
className: "w-7/12",
|
|
195
|
-
"data-testid": "password-block",
|
|
196
|
-
label: t("neetoMolecules.security.labels.password"),
|
|
197
|
-
name: "password",
|
|
198
|
-
placeholder: t("neetoMolecules.security.placeholders.enterPassword"),
|
|
199
|
-
onChange: function onChange(e) {
|
|
200
|
-
e.target.value = e.target.value.trim();
|
|
201
|
-
onPasswordChange(e);
|
|
202
|
-
}
|
|
203
|
-
}));
|
|
204
|
-
};
|
|
205
|
-
|
|
206
|
-
var RadioBlock = function RadioBlock(_ref) {
|
|
207
|
-
var radioItems = _ref.radioItems;
|
|
208
|
-
var _useFormikContext = useFormikContext(),
|
|
209
|
-
_useFormikContext$val = _useFormikContext.values.allowedKeywords,
|
|
210
|
-
allowedKeywords = _useFormikContext$val === void 0 ? [] : _useFormikContext$val,
|
|
211
|
-
setFieldValue = _useFormikContext.setFieldValue;
|
|
212
|
-
var handleRadioChange = function handleRadioChange(_ref2) {
|
|
213
|
-
var value = _ref2.event.target.value,
|
|
214
|
-
allowedKeywords = _ref2.allowedKeywords;
|
|
215
|
-
var allowedKeywordsValue = value === OTP_ENABLED ? [].concat(_toConsumableArray(allowedKeywords), [""]) : [];
|
|
216
|
-
setFieldValue("allowedKeywords", allowedKeywordsValue);
|
|
217
|
-
setFieldValue("authKind", value);
|
|
218
|
-
};
|
|
219
|
-
return /*#__PURE__*/React__default.createElement(Radio, {
|
|
220
|
-
stacked: true,
|
|
221
|
-
name: "authKind",
|
|
222
|
-
onChange: function onChange(event) {
|
|
223
|
-
return handleRadioChange({
|
|
224
|
-
event: event,
|
|
225
|
-
allowedKeywords: allowedKeywords
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
}, radioItems.map(function (_ref3) {
|
|
229
|
-
var label = _ref3.label,
|
|
230
|
-
value = _ref3.value;
|
|
231
|
-
return /*#__PURE__*/React__default.createElement(Radio.Item, {
|
|
232
|
-
key: value,
|
|
233
|
-
label: label,
|
|
234
|
-
value: value
|
|
235
|
-
});
|
|
236
|
-
}));
|
|
237
|
-
};
|
|
238
|
-
|
|
239
|
-
var fetch = function fetch(url) {
|
|
240
|
-
return axios.get(url);
|
|
241
|
-
};
|
|
242
|
-
var update = function update(url, payload) {
|
|
243
|
-
return axios.put(url, payload);
|
|
244
|
-
};
|
|
245
|
-
var settingsApi = {
|
|
246
|
-
fetch: fetch,
|
|
247
|
-
update: update
|
|
248
|
-
};
|
|
249
|
-
|
|
250
|
-
var SETTINGS_LIST = QUERY_KEYS.SETTINGS_LIST,
|
|
251
|
-
GETTING_STARTED = QUERY_KEYS.GETTING_STARTED,
|
|
252
|
-
THEMES_SETTINGS = QUERY_KEYS.THEMES_SETTINGS;
|
|
253
|
-
var useFetchSettings = function useFetchSettings(url) {
|
|
254
|
-
return useQuery(SETTINGS_LIST, function () {
|
|
255
|
-
return settingsApi.fetch(url);
|
|
256
|
-
}, {
|
|
257
|
-
staleTime: SETTINGS_STALE_TIME
|
|
258
|
-
});
|
|
259
|
-
};
|
|
260
|
-
var useUpdateSetting = function useUpdateSetting(url) {
|
|
261
|
-
return useMutationWithInvalidation(function (payload) {
|
|
262
|
-
return settingsApi.update(url, payload);
|
|
263
|
-
}, {
|
|
264
|
-
keysToInvalidate: [SETTINGS_LIST, GETTING_STARTED, THEMES_SETTINGS]
|
|
265
|
-
});
|
|
266
|
-
};
|
|
267
|
-
|
|
268
|
-
var Security = function Security(_ref) {
|
|
269
|
-
var url = _ref.url,
|
|
270
|
-
breadcrumbs = _ref.breadcrumbs,
|
|
271
|
-
title = _ref.title,
|
|
272
|
-
radioItems = _ref.radioItems;
|
|
273
|
-
var _useFetchSettings = useFetchSettings(url),
|
|
274
|
-
_useFetchSettings$dat = _useFetchSettings.data,
|
|
275
|
-
settings = _useFetchSettings$dat === void 0 ? {} : _useFetchSettings$dat,
|
|
276
|
-
isLoading = _useFetchSettings.isLoading;
|
|
277
|
-
var _useUpdateSetting = useUpdateSetting(url),
|
|
278
|
-
updateSettings = _useUpdateSetting.mutate;
|
|
279
|
-
var _useState = useState(false),
|
|
280
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
281
|
-
isMobileScreen = _useState2[0],
|
|
282
|
-
setIsMobileScreen = _useState2[1];
|
|
283
|
-
var isLargerScreen = function isLargerScreen() {
|
|
284
|
-
return window.innerWidth > 1024;
|
|
285
|
-
};
|
|
286
|
-
var handleSubmit = function handleSubmit(values, _ref2) {
|
|
287
|
-
var setSubmitting = _ref2.setSubmitting;
|
|
288
|
-
updateSettings(values, {
|
|
289
|
-
onSettled: function onSettled() {
|
|
290
|
-
return setSubmitting(false);
|
|
291
|
-
}
|
|
292
|
-
});
|
|
293
|
-
};
|
|
294
|
-
useEffect(function () {
|
|
295
|
-
var handleResize = function handleResize() {
|
|
296
|
-
if (isLargerScreen()) setIsMobileScreen(false);else setIsMobileScreen(true);
|
|
297
|
-
};
|
|
298
|
-
window.addEventListener("resize", handleResize);
|
|
299
|
-
return function () {
|
|
300
|
-
return window.removeEventListener("resize", handleResize);
|
|
301
|
-
};
|
|
302
|
-
}, []);
|
|
303
|
-
if (isLoading) return /*#__PURE__*/React__default.createElement(PageLoader, null);
|
|
304
|
-
return /*#__PURE__*/React__default.createElement(Container, {
|
|
305
|
-
isHeaderFixed: true
|
|
306
|
-
}, /*#__PURE__*/React__default.createElement(Header, {
|
|
307
|
-
breadcrumbs: breadcrumbs,
|
|
308
|
-
title: title,
|
|
309
|
-
"data-cy": "general-settings-heading",
|
|
310
|
-
size: isMobileScreen ? "small" : "large"
|
|
311
|
-
}), /*#__PURE__*/React__default.createElement(Scrollable, {
|
|
312
|
-
className: "w-full pb-6"
|
|
313
|
-
}, /*#__PURE__*/React__default.createElement(Form, {
|
|
314
|
-
className: "mx-auto w-full max-w-3xl space-y-6 md:px-0 lg:px-6",
|
|
315
|
-
formikProps: {
|
|
316
|
-
initialValues: buildSecuritySettings(settings),
|
|
317
|
-
validationSchema: SECURITY_SETTINGS_VALIDATION_SCHEMA,
|
|
318
|
-
onSubmit: handleSubmit,
|
|
319
|
-
enableReinitialize: true
|
|
320
|
-
}
|
|
321
|
-
}, function (_ref3) {
|
|
322
|
-
var dirty = _ref3.dirty,
|
|
323
|
-
isSubmitting = _ref3.isSubmitting;
|
|
324
|
-
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(RadioBlock, {
|
|
325
|
-
radioItems: radioItems
|
|
326
|
-
}), /*#__PURE__*/React__default.createElement(Password, null), /*#__PURE__*/React__default.createElement(AllowedKeywords, null), /*#__PURE__*/React__default.createElement(ActionBlock, {
|
|
327
|
-
cancelButtonProps: {
|
|
328
|
-
disabled: false,
|
|
329
|
-
className: "ml-3"
|
|
330
|
-
},
|
|
331
|
-
className: "mt-6 w-full justify-start",
|
|
332
|
-
submitButtonProps: {
|
|
333
|
-
loading: isSubmitting,
|
|
334
|
-
disabled: !dirty || isSubmitting
|
|
335
|
-
}
|
|
336
|
-
}));
|
|
337
|
-
})));
|
|
338
|
-
};
|
|
339
|
-
|
|
340
|
-
export { Security as default };
|
|
341
|
-
//# sourceMappingURL=Security.js.map
|
package/dist/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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"}
|