@bigbinary/neeto-molecules 1.19.10 → 1.19.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/README.md +0 -2
  2. package/dist/Breadcrumbs.js +1 -1
  3. package/dist/Builder.js +5 -1
  4. package/dist/Builder.js.map +1 -1
  5. package/dist/CalendarView.js +8 -2
  6. package/dist/CalendarView.js.map +1 -1
  7. package/dist/{Chevron-c639aa31.js → Chevron-fe44fbdd.js} +2 -2
  8. package/dist/{Chevron-c639aa31.js.map → Chevron-fe44fbdd.js.map} +1 -1
  9. package/dist/Codeblock.js +1 -1
  10. package/dist/Columns.js +6 -2
  11. package/dist/Columns.js.map +1 -1
  12. package/dist/ConfigurePageSidebar.js +3 -2
  13. package/dist/ConfigurePageSidebar.js.map +1 -1
  14. package/dist/ConfirmationModal.js +5 -2
  15. package/dist/ConfirmationModal.js.map +1 -1
  16. package/dist/CopyToClipboardButton.js +1 -1
  17. package/dist/Currency.js +2 -2
  18. package/dist/CustomDomain.js +13 -3
  19. package/dist/CustomDomain.js.map +1 -1
  20. package/dist/CustomDomainDashboard.js +16 -4
  21. package/dist/CustomDomainDashboard.js.map +1 -1
  22. package/dist/DateFormat.js +2 -1
  23. package/dist/DateFormat.js.map +1 -1
  24. package/dist/DateRangeFilter.js +2 -1
  25. package/dist/DateRangeFilter.js.map +1 -1
  26. package/dist/DeleteArchiveModal.js +4 -1
  27. package/dist/DeleteArchiveModal.js.map +1 -1
  28. package/dist/DocumentEditor.js +2 -2
  29. package/dist/DownloadMobileAppCallout.js +1 -1
  30. package/dist/DynamicVariables.js +2 -1
  31. package/dist/DynamicVariables.js.map +1 -1
  32. package/dist/EmailForm.js +16 -4
  33. package/dist/EmailForm.js.map +1 -1
  34. package/dist/EmailPreview.js +11 -8
  35. package/dist/EmailPreview.js.map +1 -1
  36. package/dist/EmojiPicker.js +1 -1
  37. package/dist/EmojiReactions.js +2 -1
  38. package/dist/EmojiReactions.js.map +1 -1
  39. package/dist/ErrorPage.js +2 -1
  40. package/dist/ErrorPage.js.map +1 -1
  41. package/dist/FloatingActionMenu.js +8 -1
  42. package/dist/FloatingActionMenu.js.map +1 -1
  43. package/dist/Header.js +5 -1
  44. package/dist/Header.js.map +1 -1
  45. package/dist/HelpPopover.js +3 -1
  46. package/dist/HelpPopover.js.map +1 -1
  47. package/dist/IconPicker.js +6 -1
  48. package/dist/IconPicker.js.map +1 -1
  49. package/dist/InlineInput.js +2 -1
  50. package/dist/InlineInput.js.map +1 -1
  51. package/dist/Insights.js +6 -1
  52. package/dist/Insights.js.map +1 -1
  53. package/dist/IntegrationCard.js +6 -1
  54. package/dist/IntegrationCard.js.map +1 -1
  55. package/dist/IntegrationDisconnectAlert.js +1 -1
  56. package/dist/IntegrationWalkthroughModal.js +3 -1
  57. package/dist/IntegrationWalkthroughModal.js.map +1 -1
  58. package/dist/IpRestriction.js +10 -2
  59. package/dist/IpRestriction.js.map +1 -1
  60. package/dist/KeyboardShortcuts.js +3 -1
  61. package/dist/KeyboardShortcuts.js.map +1 -1
  62. package/dist/LoginPage.js +5 -2
  63. package/dist/LoginPage.js.map +1 -1
  64. package/dist/MadeWith.js +2 -2
  65. package/dist/MadeWith.js.map +1 -1
  66. package/dist/MenuBar.js +3 -1
  67. package/dist/MenuBar.js.map +1 -1
  68. package/dist/Metadata.js +2 -1
  69. package/dist/Metadata.js.map +1 -1
  70. package/dist/MoreDropdown.js +3 -1
  71. package/dist/MoreDropdown.js.map +1 -1
  72. package/dist/NavigationHeader.js +6 -1
  73. package/dist/NavigationHeader.js.map +1 -1
  74. package/dist/NeetoWidget.js +11 -2
  75. package/dist/NeetoWidget.js.map +1 -1
  76. package/dist/Onboarding.js +3 -1
  77. package/dist/Onboarding.js.map +1 -1
  78. package/dist/OptionFields.js +5 -1
  79. package/dist/OptionFields.js.map +1 -1
  80. package/dist/PageLoader.js +1 -1
  81. package/dist/PhoneNumber.js +4 -1
  82. package/dist/PhoneNumber.js.map +1 -1
  83. package/dist/ProductEmbed.js +11 -1
  84. package/dist/ProductEmbed.js.map +1 -1
  85. package/dist/PublishBlock.js +3 -1
  86. package/dist/PublishBlock.js.map +1 -1
  87. package/dist/PublishYourItem.js +1 -1
  88. package/dist/Rename.js +5 -1
  89. package/dist/Rename.js.map +1 -1
  90. package/dist/ResponsiveDevicePicker.js +1 -1
  91. package/dist/Schedule.js +8 -2
  92. package/dist/Schedule.js.map +1 -1
  93. package/dist/Search.js +1 -1
  94. package/dist/SendToFields.js +6 -2
  95. package/dist/SendToFields.js.map +1 -1
  96. package/dist/Settings.js +7 -1
  97. package/dist/Settings.js.map +1 -1
  98. package/dist/ShareRecordingPane.js +7 -1
  99. package/dist/ShareRecordingPane.js.map +1 -1
  100. package/dist/ShareViaEmail.js +14 -2
  101. package/dist/ShareViaEmail.js.map +1 -1
  102. package/dist/ShareViaLink.js +9 -2
  103. package/dist/ShareViaLink.js.map +1 -1
  104. package/dist/Sidebar.js +3 -2
  105. package/dist/Sidebar.js.map +1 -1
  106. package/dist/StickyRibbonsContainer.js +1 -1
  107. package/dist/SubHeader.js +7 -2
  108. package/dist/SubHeader.js.map +1 -1
  109. package/dist/SuffixedInput.js +2 -2
  110. package/dist/Taxonomy.js +16 -3
  111. package/dist/Taxonomy.js.map +1 -1
  112. package/dist/TimeFormat.js +2 -1
  113. package/dist/TimeFormat.js.map +1 -1
  114. package/dist/TimezoneMismatchModal.js +3 -1
  115. package/dist/TimezoneMismatchModal.js.map +1 -1
  116. package/dist/ToggleFeatureCard.js +6 -2
  117. package/dist/ToggleFeatureCard.js.map +1 -1
  118. package/dist/cjs/Breadcrumbs.js +3 -2
  119. package/dist/cjs/Breadcrumbs.js.map +1 -1
  120. package/dist/cjs/Builder.js +21 -14
  121. package/dist/cjs/Builder.js.map +1 -1
  122. package/dist/cjs/CalendarView.js +22 -12
  123. package/dist/cjs/CalendarView.js.map +1 -1
  124. package/dist/cjs/{Chevron-5fe59f57.js → Chevron-37ef38ee.js} +6 -5
  125. package/dist/cjs/{Chevron-5fe59f57.js.map → Chevron-37ef38ee.js.map} +1 -1
  126. package/dist/cjs/Codeblock.js +1 -1
  127. package/dist/cjs/Columns.js +6 -2
  128. package/dist/cjs/Columns.js.map +1 -1
  129. package/dist/cjs/ConfigurePageSidebar.js +5 -3
  130. package/dist/cjs/ConfigurePageSidebar.js.map +1 -1
  131. package/dist/cjs/ConfirmationModal.js +17 -9
  132. package/dist/cjs/ConfirmationModal.js.map +1 -1
  133. package/dist/cjs/CopyToClipboardButton.js +3 -2
  134. package/dist/cjs/CopyToClipboardButton.js.map +1 -1
  135. package/dist/cjs/Currency.js +6 -4
  136. package/dist/cjs/Currency.js.map +1 -1
  137. package/dist/cjs/CustomDomain.js +19 -6
  138. package/dist/cjs/CustomDomain.js.map +1 -1
  139. package/dist/cjs/CustomDomainDashboard.js +25 -9
  140. package/dist/cjs/CustomDomainDashboard.js.map +1 -1
  141. package/dist/cjs/DateFormat.js +6 -3
  142. package/dist/cjs/DateFormat.js.map +1 -1
  143. package/dist/cjs/DateRangeFilter.js +6 -3
  144. package/dist/cjs/DateRangeFilter.js.map +1 -1
  145. package/dist/cjs/DeleteArchiveModal.js +15 -8
  146. package/dist/cjs/DeleteArchiveModal.js.map +1 -1
  147. package/dist/cjs/DocumentEditor.js +6 -4
  148. package/dist/cjs/DocumentEditor.js.map +1 -1
  149. package/dist/cjs/DownloadMobileAppCallout.js +3 -2
  150. package/dist/cjs/DownloadMobileAppCallout.js.map +1 -1
  151. package/dist/cjs/DynamicVariables.js +7 -4
  152. package/dist/cjs/DynamicVariables.js.map +1 -1
  153. package/dist/cjs/EmailForm.js +32 -13
  154. package/dist/cjs/EmailForm.js.map +1 -1
  155. package/dist/cjs/EmailPreview.js +20 -15
  156. package/dist/cjs/EmailPreview.js.map +1 -1
  157. package/dist/cjs/EmojiPicker.js +3 -2
  158. package/dist/cjs/EmojiPicker.js.map +1 -1
  159. package/dist/cjs/EmojiReactions.js +6 -3
  160. package/dist/cjs/EmojiReactions.js.map +1 -1
  161. package/dist/cjs/ErrorPage.js +8 -5
  162. package/dist/cjs/ErrorPage.js.map +1 -1
  163. package/dist/cjs/FloatingActionMenu.js +40 -27
  164. package/dist/cjs/FloatingActionMenu.js.map +1 -1
  165. package/dist/cjs/Header.js +7 -2
  166. package/dist/cjs/Header.js.map +1 -1
  167. package/dist/cjs/HelpPopover.js +11 -6
  168. package/dist/cjs/HelpPopover.js.map +1 -1
  169. package/dist/cjs/IconPicker.js +20 -9
  170. package/dist/cjs/IconPicker.js.map +1 -1
  171. package/dist/cjs/InlineInput.js +7 -4
  172. package/dist/cjs/InlineInput.js.map +1 -1
  173. package/dist/cjs/Insights.js +18 -11
  174. package/dist/cjs/Insights.js.map +1 -1
  175. package/dist/cjs/IntegrationCard.js +18 -8
  176. package/dist/cjs/IntegrationCard.js.map +1 -1
  177. package/dist/cjs/IntegrationDisconnectAlert.js +3 -2
  178. package/dist/cjs/IntegrationDisconnectAlert.js.map +1 -1
  179. package/dist/cjs/IntegrationWalkthroughModal.js +10 -5
  180. package/dist/cjs/IntegrationWalkthroughModal.js.map +1 -1
  181. package/dist/cjs/IpRestriction.js +43 -25
  182. package/dist/cjs/IpRestriction.js.map +1 -1
  183. package/dist/cjs/KeyboardShortcuts.js +13 -8
  184. package/dist/cjs/KeyboardShortcuts.js.map +1 -1
  185. package/dist/cjs/LoginPage.js +21 -13
  186. package/dist/cjs/LoginPage.js.map +1 -1
  187. package/dist/cjs/MadeWith.js +2 -2
  188. package/dist/cjs/MadeWith.js.map +1 -1
  189. package/dist/cjs/MenuBar.js +15 -10
  190. package/dist/cjs/MenuBar.js.map +1 -1
  191. package/dist/cjs/Metadata.js +10 -7
  192. package/dist/cjs/Metadata.js.map +1 -1
  193. package/dist/cjs/MoreDropdown.js +14 -9
  194. package/dist/cjs/MoreDropdown.js.map +1 -1
  195. package/dist/cjs/NavigationHeader.js +10 -3
  196. package/dist/cjs/NavigationHeader.js.map +1 -1
  197. package/dist/cjs/NeetoWidget.js +52 -32
  198. package/dist/cjs/NeetoWidget.js.map +1 -1
  199. package/dist/cjs/Onboarding.js +16 -11
  200. package/dist/cjs/Onboarding.js.map +1 -1
  201. package/dist/cjs/OptionFields.js +25 -16
  202. package/dist/cjs/OptionFields.js.map +1 -1
  203. package/dist/cjs/PageLoader.js +3 -2
  204. package/dist/cjs/PageLoader.js.map +1 -1
  205. package/dist/cjs/PhoneNumber.js +13 -6
  206. package/dist/cjs/PhoneNumber.js.map +1 -1
  207. package/dist/cjs/ProductEmbed.js +53 -32
  208. package/dist/cjs/ProductEmbed.js.map +1 -1
  209. package/dist/cjs/PublishBlock.js +12 -7
  210. package/dist/cjs/PublishBlock.js.map +1 -1
  211. package/dist/cjs/PublishYourItem.js +4 -3
  212. package/dist/cjs/PublishYourItem.js.map +1 -1
  213. package/dist/cjs/Rename.js +12 -5
  214. package/dist/cjs/Rename.js.map +1 -1
  215. package/dist/cjs/ResponsiveDevicePicker.js +3 -2
  216. package/dist/cjs/ResponsiveDevicePicker.js.map +1 -1
  217. package/dist/cjs/Schedule.js +37 -23
  218. package/dist/cjs/Schedule.js.map +1 -1
  219. package/dist/cjs/Search.js +3 -2
  220. package/dist/cjs/Search.js.map +1 -1
  221. package/dist/cjs/SendToFields.js +30 -20
  222. package/dist/cjs/SendToFields.js.map +1 -1
  223. package/dist/cjs/Settings.js +15 -6
  224. package/dist/cjs/Settings.js.map +1 -1
  225. package/dist/cjs/ShareRecordingPane.js +21 -9
  226. package/dist/cjs/ShareRecordingPane.js.map +1 -1
  227. package/dist/cjs/ShareViaEmail.js +35 -15
  228. package/dist/cjs/ShareViaEmail.js.map +1 -1
  229. package/dist/cjs/ShareViaLink.js +37 -23
  230. package/dist/cjs/ShareViaLink.js.map +1 -1
  231. package/dist/cjs/Sidebar.js +7 -4
  232. package/dist/cjs/Sidebar.js.map +1 -1
  233. package/dist/cjs/StickyRibbonsContainer.js +3 -2
  234. package/dist/cjs/StickyRibbonsContainer.js.map +1 -1
  235. package/dist/cjs/SubHeader.js +11 -5
  236. package/dist/cjs/SubHeader.js.map +1 -1
  237. package/dist/cjs/SuffixedInput.js +4 -3
  238. package/dist/cjs/SuffixedInput.js.map +1 -1
  239. package/dist/cjs/Taxonomy.js +44 -21
  240. package/dist/cjs/Taxonomy.js.map +1 -1
  241. package/dist/cjs/TimeFormat.js +2 -1
  242. package/dist/cjs/TimeFormat.js.map +1 -1
  243. package/dist/cjs/TimezoneMismatchModal.js +15 -10
  244. package/dist/cjs/TimezoneMismatchModal.js.map +1 -1
  245. package/dist/cjs/ToggleFeatureCard.js +22 -12
  246. package/dist/cjs/ToggleFeatureCard.js.map +1 -1
  247. package/dist/cjs/{index-9b0c3047.js → index-5189db17.js} +36 -20
  248. package/dist/cjs/{index-9b0c3047.js.map → index-5189db17.js.map} +1 -1
  249. package/dist/cjs/{useColumns-9978cf70.js → useColumns-5660bfea.js} +19 -10
  250. package/dist/cjs/{useColumns-9978cf70.js.map → useColumns-5660bfea.js.map} +1 -1
  251. package/dist/{index-8fd0cad5.js → index-e29acf27.js} +10 -3
  252. package/dist/{index-8fd0cad5.js.map → index-e29acf27.js.map} +1 -1
  253. package/dist/{useColumns-751e9192.js → useColumns-cec6e827.js} +6 -2
  254. package/dist/{useColumns-751e9192.js.map → useColumns-cec6e827.js.map} +1 -1
  255. package/package.json +24 -3
  256. package/src/translations/en.json +0 -84
  257. package/dist/Security.js +0 -341
  258. package/dist/Security.js.map +0 -1
  259. package/dist/ThemeSidebar.js +0 -1410
  260. package/dist/ThemeSidebar.js.map +0 -1
  261. package/dist/cjs/Security.js +0 -372
  262. package/dist/cjs/Security.js.map +0 -1
  263. package/dist/cjs/ThemeSidebar.js +0 -1443
  264. package/dist/cjs/ThemeSidebar.js.map +0 -1
  265. package/types/Security.d.ts +0 -35
  266. package/types/themeSidebar.d.ts +0 -80
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neeto-molecules",
3
- "version": "1.19.10",
3
+ "version": "1.19.12",
4
4
  "description": "A package of reusable molecular components for neeto products.",
5
5
  "repository": "git@github.com:bigbinary/neeto-molecules.git",
6
6
  "author": "Amaljith K <amaljith.k@bigbinary.com>",
@@ -69,14 +69,14 @@
69
69
  "@bigbinary/eslint-plugin-neeto": "^1.1.14",
70
70
  "@bigbinary/neeto-audit-frontend": "2.0.1",
71
71
  "@bigbinary/neeto-cist": "^1.0.6",
72
- "@bigbinary/neeto-commons-frontend": "^3.1.11",
72
+ "@bigbinary/neeto-commons-frontend": "3.5.9",
73
73
  "@bigbinary/neeto-editor": "^1.28.36",
74
74
  "@bigbinary/neeto-filters-frontend": "3.3.1",
75
75
  "@bigbinary/neeto-hotkeys": "1.0.4",
76
76
  "@bigbinary/neeto-icons": "latest",
77
77
  "@bigbinary/neeto-team-members-frontend": "2.13.1",
78
78
  "@bigbinary/neeto-time-zones": "^0.5.0",
79
- "@bigbinary/neetoui": "^6.5.8",
79
+ "@bigbinary/neetoui": "6.8.1",
80
80
  "@faker-js/faker": "7.6.0",
81
81
  "@fullcalendar/core": "^6.1.8",
82
82
  "@fullcalendar/daygrid": "^6.1.8",
@@ -102,8 +102,11 @@
102
102
  "@testing-library/react": "^14.0.0",
103
103
  "@testing-library/react-hooks": "^8.0.0",
104
104
  "@testing-library/user-event": "14.5.1",
105
+ "@tippyjs/react": "^4.2.6",
106
+ "@wojtekmaj/react-timerange-picker": "5.5.0",
105
107
  "antd": "5.9.2",
106
108
  "autoprefixer": "^10.4.13",
109
+ "avvvatars-react": "0.4.2",
107
110
  "axios": "^1.6.2",
108
111
  "babel-jest": "27.0.6",
109
112
  "babel-loader": "^8.2.5",
@@ -112,6 +115,7 @@
112
115
  "babel-plugin-js-logger": "1.0.17",
113
116
  "babel-plugin-macros": "3.1.0",
114
117
  "babel-plugin-preval": "^5.1.0",
118
+ "babel-plugin-transform-imports": "^2.0.0",
115
119
  "babel-plugin-transform-react-remove-prop-types": "0.4.24",
116
120
  "babel-preset-react": "6.24.1",
117
121
  "babel-preset-typescript": "^7.0.0-alpha.19",
@@ -142,6 +146,8 @@
142
146
  "jest-canvas-mock": "^2.5.2",
143
147
  "js-logger": "^1.6.1",
144
148
  "json-server": "0.17.1",
149
+ "linkify-react": "^4.1.3",
150
+ "linkifyjs": "4.1.2",
145
151
  "lint-staged": "^12.3.7",
146
152
  "mixpanel-browser": "^2.45.0",
147
153
  "nock": "^13.3.3",
@@ -154,12 +160,16 @@
154
160
  "ramda": "^0.29.0",
155
161
  "raw-loader": "^4.0.2",
156
162
  "react": "^18.2.0",
163
+ "react-colorful": "5.6.1",
157
164
  "react-dom": "^18.2.0",
165
+ "react-drag-listview": "2.0.0",
158
166
  "react-helmet": "^6.1.0",
159
167
  "react-i18next": "^12.3.1",
160
168
  "react-query": "^3.39.2",
169
+ "react-resizable": "3.0.4",
161
170
  "react-router-dom": "^5.3.3",
162
171
  "react-syntax-highlighter": "^15.5.0",
172
+ "react-time-picker": "6.5.2",
163
173
  "react-toastify": "^9.0.8",
164
174
  "remark-gfm": "4.0.0",
165
175
  "rfs": "^10.0.0",
@@ -175,6 +185,7 @@
175
185
  "storybook": "^7.5.3",
176
186
  "storybook-dark-mode": "^3.0.1",
177
187
  "tailwindcss": "^3.4.1",
188
+ "tippy.js": "6.3.7",
178
189
  "yup": "^0.32.11",
179
190
  "zustand": "4.3.2"
180
191
  },
@@ -197,7 +208,10 @@
197
208
  "@hello-pangea/dnd": "^16.3.0",
198
209
  "@honeybadger-io/react": "2.0.1",
199
210
  "@rails/activestorage": "^7.0.5",
211
+ "@tippyjs/react": "^4.2.6",
212
+ "@wojtekmaj/react-timerange-picker": "5.5.0",
200
213
  "antd": "5.9.2",
214
+ "avvvatars-react": "0.4.2",
201
215
  "axios": "^0.27.2",
202
216
  "classnames": "^2.3.2",
203
217
  "dayjs": "1.11.10",
@@ -206,16 +220,23 @@
206
220
  "i18next": "^22.5.1",
207
221
  "js-logger": "^1.6.1",
208
222
  "libphonenumber-js": "1.11.2",
223
+ "linkify-react": "^4.1.3",
224
+ "linkifyjs": "4.1.2",
209
225
  "ramda": "^0.29.0",
210
226
  "react": "^18.2.0",
227
+ "react-colorful": "5.6.1",
211
228
  "react-dom": "^18.2.0",
229
+ "react-drag-listview": "2.0.0",
212
230
  "react-helmet": "^6.1.0",
213
231
  "react-i18next": "^12.3.1",
214
232
  "react-query": "^3.39.2",
233
+ "react-resizable": "3.0.4",
215
234
  "react-router-dom": "^5.3.3",
216
235
  "react-syntax-highlighter": "^15.5.0",
236
+ "react-time-picker": "6.5.2",
217
237
  "react-toastify": "^9.0.8",
218
238
  "tailwindcss": "^3.4.1",
239
+ "tippy.js": "6.3.7",
219
240
  "webpack": "^5.75.0",
220
241
  "yup": "^0.32.11",
221
242
  "zustand": "4.3.2"
@@ -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/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
@@ -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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"}