@bigbinary/neeto-molecules 1.0.114 → 1.1.0

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 (49) hide show
  1. package/README.md +1 -0
  2. package/dist/Container.cjs.js +1 -1
  3. package/dist/Container.js +1 -1
  4. package/dist/CustomDomainDashboard.cjs.js +23 -24
  5. package/dist/CustomDomainDashboard.cjs.js.map +1 -1
  6. package/dist/CustomDomainDashboard.js +26 -27
  7. package/dist/CustomDomainDashboard.js.map +1 -1
  8. package/dist/EmailForm.cjs.js +110 -54
  9. package/dist/EmailForm.cjs.js.map +1 -1
  10. package/dist/EmailForm.js +111 -55
  11. package/dist/EmailForm.js.map +1 -1
  12. package/dist/Header.cjs.js +21 -23
  13. package/dist/Header.cjs.js.map +1 -1
  14. package/dist/Header.js +24 -26
  15. package/dist/Header.js.map +1 -1
  16. package/dist/MenuBar.cjs.js +1 -1
  17. package/dist/MenuBar.js +1 -1
  18. package/dist/NeetoWidget.cjs.js +52 -31
  19. package/dist/NeetoWidget.cjs.js.map +1 -1
  20. package/dist/NeetoWidget.js +54 -33
  21. package/dist/NeetoWidget.js.map +1 -1
  22. package/dist/Scrollable.cjs.js +5 -1
  23. package/dist/Scrollable.cjs.js.map +1 -1
  24. package/dist/Scrollable.js +5 -1
  25. package/dist/Scrollable.js.map +1 -1
  26. package/dist/Security.cjs.js +28 -25
  27. package/dist/Security.cjs.js.map +1 -1
  28. package/dist/Security.js +31 -28
  29. package/dist/Security.js.map +1 -1
  30. package/dist/SendToFields.cjs.js +2524 -0
  31. package/dist/SendToFields.cjs.js.map +1 -0
  32. package/dist/SendToFields.js +2517 -0
  33. package/dist/SendToFields.js.map +1 -0
  34. package/dist/ShareViaEmail.cjs.js +284 -221
  35. package/dist/ShareViaEmail.cjs.js.map +1 -1
  36. package/dist/ShareViaEmail.js +287 -224
  37. package/dist/ShareViaEmail.js.map +1 -1
  38. package/dist/Sidebar.cjs.js +251 -139
  39. package/dist/Sidebar.cjs.js.map +1 -1
  40. package/dist/Sidebar.js +254 -142
  41. package/dist/Sidebar.js.map +1 -1
  42. package/dist/SubHeader.cjs.js +1 -1
  43. package/dist/SubHeader.js +1 -1
  44. package/package.json +3 -3
  45. package/src/translations/en.json +16 -3
  46. package/types/Header.d.ts +3 -2
  47. package/types/NavigationHeader.d.ts +63 -41
  48. package/types/SendToFields.d.ts +63 -0
  49. package/types/Sidebar.d.ts +2 -1
package/dist/EmailForm.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import React, { useRef, useState, useContext } from 'react';
2
2
  import { useFormikContext, Field } from 'formik';
3
3
  import { isEditorEmpty, FormikEditor, EditorContent } from '@bigbinary/neeto-editor';
4
- import { Label, Button, Toastr, Input as Input$1, Typography } from '@bigbinary/neetoui';
4
+ import { Toastr, Button, Input as Input$1, Typography } from '@bigbinary/neetoui';
5
5
  import { Select, Input, MultiEmailInput, ActionBlock, Form } from '@bigbinary/neetoui/formik';
6
6
  import { useTranslation, Trans } from 'react-i18next';
7
7
  import { t } from 'i18next';
@@ -10,10 +10,10 @@ import * as yup from 'yup';
10
10
  import { string } from 'yup';
11
11
  import { isNotEmpty, noop, isPresent } from '@bigbinary/neeto-commons-frontend/pure';
12
12
  import { Info, Upload } from '@bigbinary/neeto-icons';
13
+ import { withT } from '@bigbinary/neeto-commons-frontend/react-utils';
13
14
  import require$$0 from 'stream';
14
15
  import { withEventTargetValue } from '@bigbinary/neeto-commons-frontend/utils';
15
16
  import DynamicVariables from '@bigbinary/neeto-molecules/DynamicVariables';
16
- import { withT } from '@bigbinary/neeto-commons-frontend/react-utils';
17
17
 
18
18
  function _typeof$1(obj) {
19
19
  "@babel/helpers - typeof";
@@ -147,7 +147,6 @@ var REPLY_TO_FIELD_VALIDATION = yup.object({
147
147
  }))
148
148
  });
149
149
  var EDITOR_ADDONS = ["highlight", "emoji", "code-block", "block-quote", "image-upload", "divider", "video-embed"];
150
- var ALLOWED_FILE_PICKER_TYPES = [".csv"];
151
150
 
152
151
  /* eslint-disable @bigbinary/neeto/use-zustand-for-global-state-management */
153
152
  var EmailFormContext = /*#__PURE__*/React.createContext({
@@ -203,6 +202,21 @@ var ReplyToField = function ReplyToField(_ref) {
203
202
  });
204
203
  };
205
204
 
205
+ function _extends() {
206
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
207
+ for (var i = 1; i < arguments.length; i++) {
208
+ var source = arguments[i];
209
+ for (var key in source) {
210
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
211
+ target[key] = source[key];
212
+ }
213
+ }
214
+ }
215
+ return target;
216
+ };
217
+ return _extends.apply(this, arguments);
218
+ }
219
+
206
220
  function _arrayLikeToArray(arr, len) {
207
221
  if (len == null || len > arr.length) len = arr.length;
208
222
  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
@@ -604,6 +618,8 @@ try {
604
618
  }
605
619
  }
606
620
 
621
+ var ALLOWED_FILE_PICKER_TYPES = [".csv"];
622
+
607
623
  var FilePicker = function FilePicker(_ref) {
608
624
  var _ref$types = _ref.types,
609
625
  types = _ref$types === void 0 ? [] : _ref$types,
@@ -2576,10 +2592,16 @@ var parseCsvEmails = /*#__PURE__*/function () {
2576
2592
  return h.toLowerCase().replace(/\W/g, "");
2577
2593
  },
2578
2594
  complete: function complete(results) {
2579
- var emails = results.data.filter(prop("email")).map(function (item) {
2580
- return item.email.trim();
2581
- });
2582
- onSuccess(createEmailOptions(emails));
2595
+ var _results$meta$fields;
2596
+ var isEmailFieldPresent = (_results$meta$fields = results.meta.fields) === null || _results$meta$fields === void 0 ? void 0 : _results$meta$fields.includes("email");
2597
+ if (isEmailFieldPresent) {
2598
+ var emails = results.data.filter(prop("email")).map(function (item) {
2599
+ return item.email.trim();
2600
+ });
2601
+ onSuccess(createEmailOptions(emails));
2602
+ } else {
2603
+ Toastr.error(t("neetoMolecules.sendToFields.errors.invalidCsv"));
2604
+ }
2583
2605
  }
2584
2606
  });
2585
2607
  case 1:
@@ -2592,37 +2614,35 @@ var parseCsvEmails = /*#__PURE__*/function () {
2592
2614
  return _ref.apply(this, arguments);
2593
2615
  };
2594
2616
  }();
2595
- var getValidationSchema = function getValidationSchema(_ref2) {
2596
- var showSendToField = _ref2.showSendToField,
2597
- showReplyToField = _ref2.showReplyToField,
2598
- customValidations = _ref2.customValidations;
2599
- var schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();
2600
- if (showSendToField) schema = schema.concat(SEND_TO_FIELD_VALIDATION);
2601
- if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);
2602
- return schema.shape(customValidations);
2603
- };
2604
2617
 
2605
- var SendToField = function SendToField() {
2618
+ var SendToFields = function SendToFields(_ref) {
2619
+ var emailInputProps = _ref.emailInputProps,
2620
+ ccInputProps = _ref.ccInputProps,
2621
+ bccInputProps = _ref.bccInputProps,
2622
+ _ref$showUploadCsvBut = _ref.showUploadCsvButton,
2623
+ showUploadCsvButton = _ref$showUploadCsvBut === void 0 ? false : _ref$showUploadCsvBut,
2624
+ _ref$showCcBccButton = _ref.showCcBccButton,
2625
+ showCcBccButton = _ref$showCcBccButton === void 0 ? false : _ref$showCcBccButton;
2626
+ var sendToFieldRef = useRef();
2627
+ var _useFormikContext = useFormikContext(),
2628
+ _useFormikContext$val = _useFormikContext.values,
2629
+ showCopyEmails = _useFormikContext$val.showCopyEmails,
2630
+ existingSendToEmails = _useFormikContext$val[emailInputProps.name || "sendTo"],
2631
+ setFieldValue = _useFormikContext.setFieldValue;
2606
2632
  var _useTranslation = useTranslation(),
2607
2633
  t = _useTranslation.t;
2608
- var _useFormikContext = useFormikContext(),
2609
- setFieldValue = _useFormikContext.setFieldValue,
2610
- values = _useFormikContext.values;
2611
- var sendToFieldRef = useRef();
2612
- var showCopyEmailFieldValue = values.showCopyEmails,
2613
- existingSendToEmails = values.sendTo;
2614
2634
  var handleCSVFile = /*#__PURE__*/function () {
2615
- var _ref = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(files) {
2616
- var _sendToFieldRef$curre, setNotifyEmails;
2635
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(files) {
2636
+ var _sendToFieldRef$curre, onSuccess;
2617
2637
  return regenerator.wrap(function _callee$(_context) {
2618
2638
  while (1) switch (_context.prev = _context.next) {
2619
2639
  case 0:
2620
2640
  _context.prev = 0;
2621
- setNotifyEmails = function setNotifyEmails(values) {
2622
- return setFieldValue("sendTo", [].concat(_toConsumableArray(existingSendToEmails), _toConsumableArray(values)));
2641
+ onSuccess = function onSuccess(values) {
2642
+ return setFieldValue(emailInputProps.name || "sendTo", [].concat(_toConsumableArray(existingSendToEmails), _toConsumableArray(values)));
2623
2643
  };
2624
2644
  _context.next = 4;
2625
- return parseCsvEmails(files[0], setNotifyEmails);
2645
+ return parseCsvEmails(files[0], onSuccess);
2626
2646
  case 4:
2627
2647
  (_sendToFieldRef$curre = sendToFieldRef.current) === null || _sendToFieldRef$curre === void 0 ? void 0 : _sendToFieldRef$curre.focus();
2628
2648
  _context.next = 10;
@@ -2638,14 +2658,18 @@ var SendToField = function SendToField() {
2638
2658
  }, _callee, null, [[0, 7]]);
2639
2659
  }));
2640
2660
  return function handleCSVFile(_x) {
2641
- return _ref.apply(this, arguments);
2661
+ return _ref2.apply(this, arguments);
2642
2662
  };
2643
2663
  }();
2644
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
2645
- className: "flex w-full flex-col gap-2"
2646
- }, /*#__PURE__*/React.createElement("div", {
2647
- className: "flex items-center justify-between"
2648
- }, /*#__PURE__*/React.createElement(Label, null, t("neetoMolecules.emailForm.labels.sendTo")), /*#__PURE__*/React.createElement(FilePicker, {
2664
+ var handelCcBccButtonClick = function handelCcBccButtonClick(e) {
2665
+ e.stopPropagation();
2666
+ setFieldValue("showCopyEmails", !showCopyEmails);
2667
+ };
2668
+ return /*#__PURE__*/React.createElement("div", {
2669
+ className: "relative w-full flex-col gap-2"
2670
+ }, showUploadCsvButton && /*#__PURE__*/React.createElement("div", {
2671
+ className: "absolute top-0 right-1"
2672
+ }, /*#__PURE__*/React.createElement(FilePicker, {
2649
2673
  types: ALLOWED_FILE_PICKER_TYPES,
2650
2674
  onChange: handleCSVFile
2651
2675
  }, /*#__PURE__*/React.createElement(Button, {
@@ -2653,35 +2677,57 @@ var SendToField = function SendToField() {
2653
2677
  icon: Upload,
2654
2678
  label: t("neetoMolecules.emailForm.uploadCSV"),
2655
2679
  size: "small",
2656
- style: "link"
2657
- }))), /*#__PURE__*/React.createElement(MultiEmailInput, {
2658
- id: "sendTo",
2659
- label: "",
2680
+ style: "link",
2681
+ tooltipProps: {
2682
+ content: t("neetoMolecules.sendToFields.uploadCsvTooltip"),
2683
+ position: "right"
2684
+ }
2685
+ }))), /*#__PURE__*/React.createElement(MultiEmailInput, _extends({
2686
+ "data-testid": "emails",
2660
2687
  name: "sendTo",
2661
- ref: sendToFieldRef,
2662
- placeholder: t("neetoMolecules.emailForm.placeholders.commaSeparatedEmails"),
2663
- suffix: /*#__PURE__*/React.createElement(Button, {
2688
+ ref: sendToFieldRef
2689
+ }, emailInputProps, {
2690
+ suffix: showCcBccButton && /*#__PURE__*/React.createElement(Button, {
2664
2691
  "data-cy": "cc-bcc-button",
2692
+ "data-testid": "cc-bcc-button",
2665
2693
  label: t("neetoMolecules.emailForm.labels.ccBcc"),
2666
2694
  size: "small",
2667
2695
  style: "link",
2668
- onClick: function onClick() {
2669
- return setFieldValue("showCopyEmails", !showCopyEmailFieldValue);
2670
- }
2696
+ onClick: handelCcBccButtonClick
2671
2697
  })
2672
- })), showCopyEmailFieldValue && /*#__PURE__*/React.createElement("div", {
2673
- className: "flex w-full flex-col gap-6"
2674
- }, /*#__PURE__*/React.createElement(MultiEmailInput, {
2675
- label: t("neetoMolecules.emailForm.labels.cc"),
2676
- name: "sendToCc",
2677
- placeholder: t("neetoMolecules.emailForm.placeholders.commaSeparatedEmails")
2678
- }), /*#__PURE__*/React.createElement(MultiEmailInput, {
2679
- label: t("neetoMolecules.emailForm.labels.bCc"),
2680
- name: "sendToBcc",
2681
- placeholder: t("neetoMolecules.emailForm.placeholders.commaSeparatedEmails")
2682
- })));
2698
+ })), showCopyEmails && /*#__PURE__*/React.createElement("div", {
2699
+ className: "mt-5 flex w-full flex-col gap-6"
2700
+ }, /*#__PURE__*/React.createElement(MultiEmailInput, _extends({
2701
+ name: "sendToBcc"
2702
+ }, ccInputProps)), /*#__PURE__*/React.createElement(MultiEmailInput, _extends({
2703
+ name: "sendToCc"
2704
+ }, bccInputProps))));
2683
2705
  };
2684
2706
 
2707
+ var SendToField = withT(function (_ref) {
2708
+ var t = _ref.t;
2709
+ return /*#__PURE__*/React.createElement(SendToFields, {
2710
+ showCcBccButton: true,
2711
+ showUploadCsvButton: true,
2712
+ bccInputProps: {
2713
+ label: t("neetoMolecules.emailForm.labels.bCc"),
2714
+ name: "sendToBcc",
2715
+ placeholder: t("neetoMolecules.emailForm.placeholders.commaSeparatedEmails")
2716
+ },
2717
+ ccInputProps: {
2718
+ label: t("neetoMolecules.emailForm.labels.cc"),
2719
+ name: "sendToCc",
2720
+ placeholder: t("neetoMolecules.emailForm.placeholders.commaSeparatedEmails")
2721
+ },
2722
+ emailInputProps: {
2723
+ id: "sendTo",
2724
+ name: "sendTo",
2725
+ label: t("neetoMolecules.emailForm.labels.sendTo"),
2726
+ placeholder: t("neetoMolecules.emailForm.placeholders.commaSeparatedEmails")
2727
+ }
2728
+ });
2729
+ });
2730
+
2685
2731
  function _arrayWithHoles(arr) {
2686
2732
  if (Array.isArray(arr)) return arr;
2687
2733
  }
@@ -2864,6 +2910,16 @@ var EmailForm = function EmailForm(_ref) {
2864
2910
  }));
2865
2911
  };
2866
2912
 
2913
+ var getValidationSchema = function getValidationSchema(_ref) {
2914
+ var showSendToField = _ref.showSendToField,
2915
+ showReplyToField = _ref.showReplyToField,
2916
+ customValidations = _ref.customValidations;
2917
+ var schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();
2918
+ if (showSendToField) schema = schema.concat(SEND_TO_FIELD_VALIDATION);
2919
+ if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);
2920
+ return schema.shape(customValidations);
2921
+ };
2922
+
2867
2923
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2868
2924
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2869
2925
  var EmailFormProvider = function EmailFormProvider(_ref) {