@bigbinary/neeto-molecules 1.13.2 → 1.13.4

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/dist/Currency.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { _ as _extends } from './extends-093996c9.js';
2
2
  import { _ as _objectWithoutProperties } from './objectWithoutProperties-a0edb288.js';
3
3
  import React__default, { useMemo } from 'react';
4
- import { isPresent, isNotEmpty } from '@bigbinary/neeto-cist';
5
4
  import { Select } from '@bigbinary/neetoui';
6
- import { Select as Select$1 } from '@bigbinary/neetoui/formik';
7
5
  import { useTranslation } from 'react-i18next';
6
+ import { isPresent, isNotEmpty } from '@bigbinary/neeto-cist';
7
+ import { Select as Select$1 } from '@bigbinary/neetoui/formik';
8
8
 
9
9
  var currencyData = [
10
10
  {
@@ -864,32 +864,49 @@ var currencyData = [
864
864
  }
865
865
  ];
866
866
 
867
- var _excluded = ["label", "name", "standalone", "allowedCurrencies"];
867
+ var getCurrencies = function getCurrencies(allowedCurrencies) {
868
+ if (isPresent(allowedCurrencies) && isNotEmpty(allowedCurrencies)) {
869
+ return currencyData.filter(function (item) {
870
+ return allowedCurrencies.includes(item.value);
871
+ });
872
+ }
873
+ return currencyData;
874
+ };
875
+
876
+ var _excluded$1 = ["label", "allowedCurrencies"];
868
877
  var Currency = function Currency(_ref) {
878
+ var label = _ref.label,
879
+ allowedCurrencies = _ref.allowedCurrencies,
880
+ otherSelectProps = _objectWithoutProperties(_ref, _excluded$1);
881
+ var _useTranslation = useTranslation(),
882
+ t = _useTranslation.t;
883
+ var data = useMemo(function () {
884
+ return getCurrencies(allowedCurrencies);
885
+ }, [allowedCurrencies]);
886
+ return /*#__PURE__*/React__default.createElement(Select, _extends({
887
+ label: label || t("neetoMolecules.common.currency"),
888
+ options: data
889
+ }, otherSelectProps));
890
+ };
891
+
892
+ var _excluded = ["label", "name", "allowedCurrencies"];
893
+ var FormikCurrency = function FormikCurrency(_ref) {
869
894
  var label = _ref.label,
870
895
  _ref$name = _ref.name,
871
896
  name = _ref$name === void 0 ? "currency" : _ref$name,
872
- _ref$standalone = _ref.standalone,
873
- standalone = _ref$standalone === void 0 ? false : _ref$standalone,
874
897
  allowedCurrencies = _ref.allowedCurrencies,
875
898
  otherSelectProps = _objectWithoutProperties(_ref, _excluded);
876
899
  var _useTranslation = useTranslation(),
877
900
  t = _useTranslation.t;
878
901
  var data = useMemo(function () {
879
- if (isPresent(allowedCurrencies) && isNotEmpty(allowedCurrencies)) {
880
- return currencyData.filter(function (item) {
881
- return allowedCurrencies.includes(item.value);
882
- });
883
- }
884
- return currencyData;
902
+ return getCurrencies(allowedCurrencies);
885
903
  }, [allowedCurrencies]);
886
- var Component = standalone ? Select : Select$1;
887
- return /*#__PURE__*/React__default.createElement(Component, _extends({
904
+ return /*#__PURE__*/React__default.createElement(Select$1, _extends({
888
905
  name: name,
889
906
  label: label || t("neetoMolecules.common.currency"),
890
907
  options: data
891
908
  }, otherSelectProps));
892
909
  };
893
910
 
894
- export { Currency as default };
911
+ export { Currency, FormikCurrency };
895
912
  //# sourceMappingURL=Currency.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Currency.js","sources":["../src/components/Currency/index.jsx"],"sourcesContent":["import React, { useMemo } from \"react\";\n\nimport { isPresent, isNotEmpty } from \"neetocist\";\nimport { Select } from \"neetoui\";\nimport { Select as FormSelect } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport currencyData from \"./currencyData.json\";\n\nconst Currency = ({\n label,\n name = \"currency\",\n standalone = false,\n allowedCurrencies,\n ...otherSelectProps\n}) => {\n const { t } = useTranslation();\n\n const data = useMemo(() => {\n if (isPresent(allowedCurrencies) && isNotEmpty(allowedCurrencies)) {\n return currencyData.filter(item =>\n allowedCurrencies.includes(item.value)\n );\n }\n\n return currencyData;\n }, [allowedCurrencies]);\n\n const Component = standalone ? Select : FormSelect;\n\n return (\n <Component\n {...{ name }}\n label={label || t(\"neetoMolecules.common.currency\")}\n options={data}\n {...otherSelectProps}\n />\n );\n};\n\nCurrency.propTypes = {\n /**\n * Label for the currency input.\n */\n label: PropTypes.string,\n /**\n * Name for the currency input.\n */\n name: PropTypes.string,\n /**\n * To specify whether Currency can be used outside of formik.\n */\n standalone: PropTypes.bool,\n /**\n * To specify only a selected list of currencies to be used.\n */\n allowedCurrencies: PropTypes.arrayOf(PropTypes.string),\n};\n\nexport default Currency;\n"],"names":["Currency","_ref","label","_ref$name","name","_ref$standalone","standalone","allowedCurrencies","otherSelectProps","_objectWithoutProperties","_excluded","_useTranslation","useTranslation","t","data","useMemo","isPresent","isNotEmpty","currencyData","filter","item","includes","value","Component","Select","FormSelect","React","createElement","_extends","options"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAMA,QAAQ,GAAG,SAAXA,QAAQA,CAAAC,IAAA,EAMR;AAAA,EAAA,IALJC,KAAK,GAAAD,IAAA,CAALC,KAAK;IAAAC,SAAA,GAAAF,IAAA,CACLG,IAAI;AAAJA,IAAAA,IAAI,GAAAD,SAAA,KAAG,KAAA,CAAA,GAAA,UAAU,GAAAA,SAAA;IAAAE,eAAA,GAAAJ,IAAA,CACjBK,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,eAAA;IAClBE,iBAAiB,GAAAN,IAAA,CAAjBM,iBAAiB;AACdC,IAAAA,gBAAgB,GAAAC,wBAAA,CAAAR,IAAA,EAAAS,SAAA,CAAA,CAAA;AAEnB,EAAA,IAAAC,eAAA,GAAcC,cAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC,CAAA;AAET,EAAA,IAAMC,IAAI,GAAGC,OAAO,CAAC,YAAM;IACzB,IAAIC,SAAS,CAACT,iBAAiB,CAAC,IAAIU,UAAU,CAACV,iBAAiB,CAAC,EAAE;AACjE,MAAA,OAAOW,YAAY,CAACC,MAAM,CAAC,UAAAC,IAAI,EAAA;AAAA,QAAA,OAC7Bb,iBAAiB,CAACc,QAAQ,CAACD,IAAI,CAACE,KAAK,CAAC,CAAA;AAAA,OACxC,CAAC,CAAA;AACH,KAAA;AAEA,IAAA,OAAOJ,YAAY,CAAA;AACrB,GAAC,EAAE,CAACX,iBAAiB,CAAC,CAAC,CAAA;AAEvB,EAAA,IAAMgB,SAAS,GAAGjB,UAAU,GAAGkB,MAAM,GAAGC,QAAU,CAAA;AAElD,EAAA,oBACEC,cAAA,CAAAC,aAAA,CAACJ,SAAS,EAAAK,QAAA,CAAA;AACFxB,IAAAA,IAAI,EAAJA,IAAI;AACVF,IAAAA,KAAK,EAAEA,KAAK,IAAIW,CAAC,CAAC,gCAAgC,CAAE;AACpDgB,IAAAA,OAAO,EAAEf,IAAAA;GACLN,EAAAA,gBAAgB,CACrB,CAAC,CAAA;AAEN;;;;"}
1
+ {"version":3,"file":"Currency.js","sources":["../src/components/Currency/utils.js","../src/components/Currency/Currency.jsx","../src/components/Currency/FormikCurrency.jsx"],"sourcesContent":["import { isPresent, isNotEmpty } from \"neetocist\";\n\nimport currencyData from \"./currencyData.json\";\n\nexport const getCurrencies = allowedCurrencies => {\n if (isPresent(allowedCurrencies) && isNotEmpty(allowedCurrencies)) {\n return currencyData.filter(item => allowedCurrencies.includes(item.value));\n }\n\n return currencyData;\n};\n","import React, { useMemo } from \"react\";\n\nimport { Select } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getCurrencies } from \"./utils\";\n\nconst Currency = ({ label, allowedCurrencies, ...otherSelectProps }) => {\n const { t } = useTranslation();\n\n const data = useMemo(\n () => getCurrencies(allowedCurrencies),\n [allowedCurrencies]\n );\n\n return (\n <Select\n label={label || t(\"neetoMolecules.common.currency\")}\n options={data}\n {...otherSelectProps}\n />\n );\n};\n\nCurrency.propTypes = {\n /**\n * Label for the currency input.\n */\n label: PropTypes.string,\n /**\n * To specify only a selected list of currencies to be used.\n */\n allowedCurrencies: PropTypes.arrayOf(PropTypes.string),\n};\n\nexport default Currency;\n","import React, { useMemo } from \"react\";\n\nimport { Select } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getCurrencies } from \"./utils\";\n\nconst FormikCurrency = ({\n label,\n name = \"currency\",\n allowedCurrencies,\n ...otherSelectProps\n}) => {\n const { t } = useTranslation();\n\n const data = useMemo(\n () => getCurrencies(allowedCurrencies),\n [allowedCurrencies]\n );\n\n return (\n <Select\n {...{ name }}\n label={label || t(\"neetoMolecules.common.currency\")}\n options={data}\n {...otherSelectProps}\n />\n );\n};\n\nFormikCurrency.propTypes = {\n /**\n * Label for the currency input.\n */\n label: PropTypes.string,\n /**\n * Name for the currency input.\n */\n name: PropTypes.string,\n /**\n * To specify only a selected list of currencies to be used.\n */\n allowedCurrencies: PropTypes.arrayOf(PropTypes.string),\n};\n\nexport default FormikCurrency;\n"],"names":["getCurrencies","allowedCurrencies","isPresent","isNotEmpty","currencyData","filter","item","includes","value","Currency","_ref","label","otherSelectProps","_objectWithoutProperties","_excluded","_useTranslation","useTranslation","t","data","useMemo","React","createElement","Select","_extends","options","FormikCurrency","_ref$name","name"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import React__default, { forwardRef, useRef } from 'react';
1
+ import React__default, { forwardRef, useMemo, useRef } from 'react';
2
2
  import { LeftArrow } from '@bigbinary/neeto-icons';
3
- import { DatePicker, Label, Typography, Button } from '@bigbinary/neetoui';
3
+ import { DateTimePicker, Label, Typography, Button } from '@bigbinary/neetoui';
4
4
  import { Input, Switch, ActionBlock, Form as Form$1 } from '@bigbinary/neetoui/formik';
5
5
  import { useTranslation } from 'react-i18next';
6
6
  import EmailPreview from './EmailPreview.js';
@@ -54,24 +54,6 @@ var EmailBody = function EmailBody(_ref, ref) {
54
54
  };
55
55
  var EmailBody$1 = /*#__PURE__*/forwardRef(EmailBody);
56
56
 
57
- var _excluded = ["name"];
58
- var FormikDatePicker = function FormikDatePicker(_ref) {
59
- var name = _ref.name,
60
- props = _objectWithoutProperties(_ref, _excluded);
61
- var _useField = useField(name),
62
- _useField2 = _slicedToArray(_useField, 3),
63
- field = _useField2[0],
64
- meta = _useField2[1],
65
- setValue = _useField2[2].setValue;
66
- return /*#__PURE__*/React__default.createElement(DatePicker, _extends({}, field, meta, {
67
- onChange: function onChange(date) {
68
- return setValue(date || undefined);
69
- }
70
- }, props, {
71
- "data-cy": "email-share-date-input"
72
- }));
73
- };
74
-
75
57
  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; }
76
58
  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; }
77
59
  var isPastDate = function isPastDate(date) {
@@ -100,6 +82,58 @@ var emailFormValidationSchema = function emailFormValidationSchema(disableReplyT
100
82
  actionButtonText: yup.string().required(t("neetoMolecules.shareViaEmail.validations.requiredField.startButtonText"))
101
83
  });
102
84
  };
85
+ var disabledTime = function disabledTime(selectedDate) {
86
+ var current = selectedDate ? dayjs(selectedDate).startOf("day") : null;
87
+ if (!current) return {};
88
+ var today = dayjs().startOf("day");
89
+ var isAfterToday = current.isAfter(today, "day");
90
+ var isBeforeToday = current.isBefore(today, "day");
91
+ if (isAfterToday) {
92
+ return {
93
+ minTime: null,
94
+ maxTime: null
95
+ };
96
+ } else if (isBeforeToday) {
97
+ return {
98
+ minTime: "0:00",
99
+ maxTime: "24:00"
100
+ };
101
+ }
102
+
103
+ // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats
104
+ var currentTime = dayjs().format("HH:mm");
105
+ var endOfDay = "23:59";
106
+ return {
107
+ minTime: currentTime,
108
+ maxTime: endOfDay
109
+ };
110
+ };
111
+
112
+ var _excluded = ["name", "disabledDate"];
113
+ var FormikDatePicker = function FormikDatePicker(_ref) {
114
+ var name = _ref.name,
115
+ disabledDate = _ref.disabledDate,
116
+ props = _objectWithoutProperties(_ref, _excluded);
117
+ var _useField = useField(name),
118
+ _useField2 = _slicedToArray(_useField, 3),
119
+ field = _useField2[0],
120
+ meta = _useField2[1],
121
+ setValue = _useField2[2].setValue;
122
+ var disabledTimeFrame = useMemo(function () {
123
+ return disabledTime(field === null || field === void 0 ? void 0 : field.value);
124
+ }, [field === null || field === void 0 ? void 0 : field.value]);
125
+ return /*#__PURE__*/React__default.createElement(DateTimePicker, _extends({}, field, meta, {
126
+ timePickerProps: disabledTimeFrame,
127
+ datePickerProps: {
128
+ disabledDate: disabledDate,
129
+ "data-cy": props["data-cy"],
130
+ "data-testid": props["data-testid"]
131
+ },
132
+ onChange: function onChange(date) {
133
+ return setValue(date || undefined);
134
+ }
135
+ }, props));
136
+ };
103
137
 
104
138
  var Form = function Form(_ref) {
105
139
  var showSendFromField = _ref.showSendFromField,
@@ -149,14 +183,11 @@ var Form = function Form(_ref) {
149
183
  weight: "semibold"
150
184
  }, t("neetoMolecules.shareViaEmail.sendLater")))), values.isSendLaterEnabled && /*#__PURE__*/React__default.createElement(FormikDatePicker, {
151
185
  autoFocus: true,
152
- showTime: true,
153
186
  "data-cy": "email-share-date-input",
154
187
  "data-testid": "formik-date-picker",
155
188
  disabledDate: isPastDate,
156
189
  name: "sendEmailDatetime",
157
- picker: "date",
158
- size: "large",
159
- type: "date"
190
+ size: "large"
160
191
  }), /*#__PURE__*/React__default.createElement(Input, {
161
192
  required: true,
162
193
  label: t("neetoMolecules.shareViaEmail.startButtonText"),
@@ -1 +1 @@
1
- {"version":3,"file":"ShareViaEmail.js","sources":["../src/components/ShareViaEmail/constants.js","../src/components/ShareViaEmail/EmailBodyEditor.jsx","../src/components/ShareViaEmail/FormikDatePicker.jsx","../src/components/ShareViaEmail/utils.js","../src/components/ShareViaEmail/Form.jsx","../src/components/ShareViaEmail/index.jsx"],"sourcesContent":["export const ONE_MEGABYTE = 1_048_576;\n\nexport const INITIAL_VALUES = {\n sendFromEmail: \"\",\n replyToEmail: \"\",\n notifyEmails: [],\n emailSubject: \"\",\n emailBody: \"\",\n isSendLaterEnabled: false,\n sendEmailDatetime: undefined,\n category: \"email_share\",\n actionButtonText: \"\",\n};\n\nexport const EDITOR_ADDONS = [\n \"emoji\",\n \"block-quote\",\n \"image-upload\",\n \"divider\",\n];\n\nexport const ALLOWED_FILE_PICKER_TYPES = [\".csv\"];\n","import React, { forwardRef } from \"react\";\n\nimport { FormikEditor } from \"neetoeditor\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { EDITOR_ADDONS } from \"./constants\";\n\nconst EmailBody = ({ id, showVideoEmbedInEditor }, ref) => {\n const { t } = useTranslation();\n\n return (\n <FormikEditor\n required\n className=\"mb-6\"\n data-cy=\"email-body\"\n id={id}\n label={t(\"neetoMolecules.shareViaEmail.emailBody\")}\n name=\"emailBody\"\n ref={ref}\n addons={\n showVideoEmbedInEditor\n ? [...EDITOR_ADDONS, \"video-embed\"]\n : EDITOR_ADDONS\n }\n />\n );\n};\n\nexport default forwardRef(EmailBody);\n","import React from \"react\";\n\nimport { useField } from \"formik\";\nimport { DatePicker } from \"neetoui\";\n\nconst FormikDatePicker = ({ name, ...props }) => {\n const [field, meta, { setValue }] = useField(name);\n\n return (\n <DatePicker\n {...field}\n {...meta}\n onChange={date => setValue(date || undefined)}\n {...props}\n data-cy=\"email-share-date-input\"\n />\n );\n};\n\nexport default FormikDatePicker;\n","import dayjs from \"dayjs\";\nimport { t } from \"i18next\";\nimport { isNot } from \"neetocist\";\nimport { isEditorEmpty } from \"neetoeditor\";\nimport Papa from \"papaparse\";\nimport { prop } from \"ramda\";\nimport { string } from \"yup\";\nimport * as yup from \"yup\";\n\nimport { INITIAL_VALUES } from \"./constants\";\n\nconst isValidEmail = email => string().email().isValidSync(email);\n\nexport const isPastDate = date =>\n dayjs(date).isBefore(dayjs().subtract(1, \"days\"));\n\nexport const createEmailOptions = (emails = []) =>\n emails.map(email => ({\n label: email,\n value: email,\n valid: isValidEmail(email),\n }));\n\nexport const parseCsvEmails = file =>\n new Promise(resolve => {\n Papa.parse(file, {\n header: true,\n skipEmptyLines: true,\n transformHeader: h => h.toLowerCase().replace(/\\W/g, \"\"),\n complete: results => {\n const isEmailFieldPresent = results.meta.fields?.includes(\"email\");\n if (!isEmailFieldPresent) return resolve([]);\n\n const emails = results.data\n .map(item => item.email?.trim())\n .filter(isNot(undefined));\n\n return resolve(createEmailOptions(emails));\n },\n });\n });\n\nexport const generateInitialValues = defaultValues => ({\n ...INITIAL_VALUES,\n ...defaultValues,\n});\n\nexport const emailFormValidationSchema = disableReplyTo =>\n yup.object().shape({\n emailSubject: yup\n .string()\n .required(\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.subject\")\n ),\n emailBody: yup\n .string()\n .test(\n \"emailBody\",\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.emailBody\"),\n value => !isEditorEmpty(value)\n ),\n sendFromEmail: yup\n .string()\n .trim()\n .email(\n t(\"neetoMolecules.shareViaEmail.validations.invalidField.emailAddress\")\n )\n .required(\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.sendFrom\")\n ),\n replyToEmail:\n !disableReplyTo &&\n yup\n .string()\n .trim()\n .email(\n t(\n \"neetoMolecules.shareViaEmail.validations.invalidField.emailAddress\"\n )\n )\n .required(\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.replyTo\")\n ),\n notifyEmails: yup\n .array()\n .min(\n 1,\n t(\n \"neetoMolecules.shareViaEmail.validations.atleastOneIsRequired.emailAddress\"\n )\n )\n .test(\n \"are-all-emails-valid\",\n t(\"neetoMolecules.shareViaEmail.validations.invalidField.emailAddress\"),\n emails => emails.every(prop(\"valid\"))\n ),\n isSendLaterEnabled: yup.boolean(),\n sendEmailDatetime: yup.date().when(\"isSendLaterEnabled\", {\n is: true,\n then: yup\n .date()\n .required(\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.sendLater\")\n ),\n }),\n name: yup.string(),\n actionButtonText: yup\n .string()\n .required(\n t(\n \"neetoMolecules.shareViaEmail.validations.requiredField.startButtonText\"\n )\n ),\n });\n","import React, { useRef } from \"react\";\n\nimport classnames from \"classnames\";\nimport { useFormikContext } from \"formik\";\nimport { Typography, Label } from \"neetoui\";\nimport { Input, Switch, ActionBlock } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport SendToFields from \"components/SendToFields\";\n\nimport EmailBody from \"./EmailBodyEditor\";\nimport FormikDatePicker from \"./FormikDatePicker\";\nimport { isPastDate } from \"./utils\";\n\nconst Form = ({\n showSendFromField,\n disableReplyTo,\n showVideoEmbedInEditor,\n children,\n}) => {\n const { values, initialValues } = useFormikContext();\n const editorRef = useRef();\n const { t } = useTranslation();\n\n const handleReset = () =>\n editorRef.current.editor.commands.setContent(initialValues.emailBody);\n\n return (\n <>\n <div className=\"space-y-4\">\n <SendToFields\n showUploadCsvButton\n emailInputProps={{\n label: t(\"neetoMolecules.shareViaEmail.sendTo\"),\n name: \"notifyEmails\",\n required: true,\n }}\n />\n <Input\n required\n className=\"col-span-1\"\n label={t(\"neetoMolecules.shareViaEmail.subject\")}\n name=\"emailSubject\"\n />\n <EmailBody\n {...{ showVideoEmbedInEditor }}\n id=\"emailBody\"\n ref={editorRef}\n />\n <div ref={editorRef} />\n <div>\n <Label className=\"flex items-center gap-2\">\n <Switch\n data-cy=\"send-later-switch\"\n data-testid=\"send-later-switch\"\n name=\"isSendLaterEnabled\"\n />\n <Typography\n component=\"span\"\n data-cy=\"send-later-label\"\n lineHeight=\"normal\"\n style=\"h4\"\n weight=\"semibold\"\n >\n {t(\"neetoMolecules.shareViaEmail.sendLater\")}\n </Typography>\n </Label>\n </div>\n {values.isSendLaterEnabled && (\n <FormikDatePicker\n autoFocus\n showTime\n data-cy=\"email-share-date-input\"\n data-testid=\"formik-date-picker\"\n disabledDate={isPastDate}\n name=\"sendEmailDatetime\"\n picker=\"date\"\n size=\"large\"\n type=\"date\"\n />\n )}\n <Input\n required\n label={t(\"neetoMolecules.shareViaEmail.startButtonText\")}\n name=\"actionButtonText\"\n />\n <div className=\"flex flex-col gap-4 sm:flex-row sm:gap-6\">\n {showSendFromField && (\n <Input\n required\n className={classnames({ \"w-full flex-grow-0\": !disableReplyTo })}\n data-testid=\"neeto-molecules-share-via-email-send-from\"\n label={t(\"neetoMolecules.shareViaEmail.sendFrom\")}\n name=\"sendFromEmail\"\n />\n )}\n {!disableReplyTo && (\n <Input\n required\n data-testid=\"replyTo-field\"\n label={t(\"neetoMolecules.shareViaEmail.replyTo\")}\n name=\"replyToEmail\"\n className={classnames({\n \"w-full flex-grow-0\": showSendFromField,\n })}\n />\n )}\n </div>\n </div>\n {children && (\n <div className=\"neeto-ui-border-gray-300 mt-4 border-t py-4\">\n <h3 className=\"mb-4\">\n {t(\"neetoMolecules.shareViaEmail.additionalOptions\")}\n </h3>\n {children}\n </div>\n )}\n <div className=\"mt-6\">\n <ActionBlock\n cancelButtonProps={{\n label: t(\"neetoMolecules.shareViaEmail.reset\"),\n type: \"reset\",\n onClick: handleReset,\n }}\n submitButtonProps={{\n label: t(\"neetoMolecules.shareViaEmail.sendEmail\"),\n }}\n />\n </div>\n </>\n );\n};\n\nexport default Form;\n","import React from \"react\";\n\nimport { LeftArrow } from \"neetoicons\";\nimport { Button, Typography } from \"neetoui\";\nimport { Form } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport EmailPreview from \"components/EmailPreview\";\n\nimport EmailForm from \"./Form\";\nimport { emailFormValidationSchema, generateInitialValues } from \"./utils\";\n\nconst ShareViaEmail = ({\n showSendFromField = false,\n backToUrl,\n handleSubmit,\n children,\n description,\n defaultValues,\n disableReplyTo,\n productName,\n showVideoEmbedInEditor,\n title = \"\",\n}) => {\n const { t } = useTranslation();\n\n const shareViaEmailTitle = title || t(\"neetoMolecules.shareViaEmail.title\");\n const sendToEmails = notifyEmails => notifyEmails.map(email => email?.value);\n\n return (\n <div className=\"neeto-ui-bg-gray-100 flex w-full flex-1 flex-col p-6 md:p-8\">\n <div className=\"mx-auto flex w-full max-w-7xl flex-col\">\n <Form\n scrollToErrorField\n formProps={{ noValidate: true }}\n formikProps={{\n enableReinitialize: true,\n validateOnMount: true,\n initialValues: generateInitialValues(defaultValues),\n validationSchema: emailFormValidationSchema(disableReplyTo),\n onSubmit: handleSubmit,\n }}\n >\n {({ values }) => (\n <div className=\"grid grid-cols-1 gap-8 md:grid-cols-12\">\n <div className=\"col-span-1 md:col-span-6 lg:col-span-5\">\n {backToUrl && (\n <Button\n className=\"mb-4\"\n data-testid=\"back-to-url-button\"\n icon={LeftArrow}\n iconPosition=\"left\"\n label={t(\"neetoMolecules.shareViaEmail.backToShare\")}\n size=\"small\"\n style=\"link\"\n to={backToUrl}\n />\n )}\n <div className=\"mb-6\">\n <Typography\n className=\"mb-0.5 break-words\"\n data-cy=\"share-via-email-heading\"\n lineHeight=\"normal\"\n style=\"h2\"\n weight=\"semibold\"\n >\n {shareViaEmailTitle}\n </Typography>\n {description && (\n <Typography\n className=\"neeto-ui-text-gray-700\"\n data-cy=\"share-via-email-sub-heading\"\n lineHeight=\"normal\"\n style=\"body2\"\n >\n {description}\n </Typography>\n )}\n </div>\n <EmailForm\n {...{\n disableReplyTo,\n showSendFromField,\n showVideoEmbedInEditor,\n }}\n >\n {children}\n </EmailForm>\n </div>\n <div className=\"col-span-1 md:col-span-6 lg:col-span-7\">\n <EmailPreview\n {...{ productName }}\n actionButtonText={values.actionButtonText}\n body={values.emailBody}\n className=\"sticky pt-1 md:mt-28\"\n subject={values.emailSubject}\n to={sendToEmails(values.notifyEmails)}\n />\n </div>\n </div>\n )}\n </Form>\n </div>\n </div>\n );\n};\n\nShareViaEmail.propTypes = {\n /**\n * The path to navigate back to the required page on clicking the 'Back to share' button.\n */\n backToUrl: PropTypes.string,\n /**\n * The function that handles submitting of values to the API.\n */\n handleSubmit: PropTypes.func,\n /**\n * React components that can be passed on as children, to add optional fields.\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n /**\n * Description text to be displayed under the component title.\n */\n description: PropTypes.string,\n /**\n * An object to assign default values to the email form.\n */\n defaultValues: PropTypes.shape({\n sendFromEmail: PropTypes.string,\n replyToEmail: PropTypes.string,\n actionButtonText: PropTypes.string,\n emailSubject: PropTypes.string,\n emailBody: PropTypes.string,\n }),\n /**\n * Boolean value to show the \"Send From\" field if needed.\n */\n showSendFromField: PropTypes.bool,\n /**\n * Boolean value to hide the \"Reply to\" field if not needed.\n */\n disableReplyTo: PropTypes.bool,\n /**\n * product name for the `<EmailPreview />` component can be passed.\n */\n productName: PropTypes.string,\n /**\n * Boolean value to show video url as embed video in email body.\n */\n showVideoEmbedInEditor: PropTypes.bool,\n /**\n * To specify the title of the component. Defaults to \"Share via email\"\n */\n title: PropTypes.string,\n};\n\nexport default ShareViaEmail;\n"],"names":["INITIAL_VALUES","sendFromEmail","replyToEmail","notifyEmails","emailSubject","emailBody","isSendLaterEnabled","sendEmailDatetime","undefined","category","actionButtonText","EDITOR_ADDONS","EmailBody","_ref","ref","id","showVideoEmbedInEditor","_useTranslation","useTranslation","t","React","createElement","FormikEditor","required","className","label","name","addons","concat","_toConsumableArray","forwardRef","FormikDatePicker","props","_objectWithoutProperties","_excluded","_useField","useField","_useField2","_slicedToArray","field","meta","setValue","DatePicker","_extends","onChange","date","isPastDate","dayjs","isBefore","subtract","generateInitialValues","defaultValues","_objectSpread","emailFormValidationSchema","disableReplyTo","yup","object","shape","string","test","value","isEditorEmpty","trim","email","array","min","emails","every","prop","when","is","then","Form","showSendFromField","children","_useFormikContext","useFormikContext","values","initialValues","editorRef","useRef","handleReset","current","editor","commands","setContent","Fragment","SendToFields","showUploadCsvButton","emailInputProps","Input","Label","Switch","Typography","component","lineHeight","style","weight","autoFocus","showTime","disabledDate","picker","size","type","classnames","ActionBlock","cancelButtonProps","onClick","submitButtonProps","ShareViaEmail","_ref$showSendFromFiel","backToUrl","handleSubmit","description","productName","_ref$title","title","shareViaEmailTitle","sendToEmails","map","scrollToErrorField","formProps","noValidate","formikProps","enableReinitialize","validateOnMount","validationSchema","onSubmit","_ref2","Button","icon","LeftArrow","iconPosition","to","EmailForm","EmailPreview","body","subject"],"mappings":"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"}
1
+ {"version":3,"file":"ShareViaEmail.js","sources":["../src/components/ShareViaEmail/constants.js","../src/components/ShareViaEmail/EmailBodyEditor.jsx","../src/components/ShareViaEmail/utils.js","../src/components/ShareViaEmail/FormikDatePicker.jsx","../src/components/ShareViaEmail/Form.jsx","../src/components/ShareViaEmail/index.jsx"],"sourcesContent":["export const ONE_MEGABYTE = 1_048_576;\n\nexport const INITIAL_VALUES = {\n sendFromEmail: \"\",\n replyToEmail: \"\",\n notifyEmails: [],\n emailSubject: \"\",\n emailBody: \"\",\n isSendLaterEnabled: false,\n sendEmailDatetime: undefined,\n category: \"email_share\",\n actionButtonText: \"\",\n};\n\nexport const EDITOR_ADDONS = [\n \"emoji\",\n \"block-quote\",\n \"image-upload\",\n \"divider\",\n];\n\nexport const ALLOWED_FILE_PICKER_TYPES = [\".csv\"];\n","import React, { forwardRef } from \"react\";\n\nimport { FormikEditor } from \"neetoeditor\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { EDITOR_ADDONS } from \"./constants\";\n\nconst EmailBody = ({ id, showVideoEmbedInEditor }, ref) => {\n const { t } = useTranslation();\n\n return (\n <FormikEditor\n required\n className=\"mb-6\"\n data-cy=\"email-body\"\n id={id}\n label={t(\"neetoMolecules.shareViaEmail.emailBody\")}\n name=\"emailBody\"\n ref={ref}\n addons={\n showVideoEmbedInEditor\n ? [...EDITOR_ADDONS, \"video-embed\"]\n : EDITOR_ADDONS\n }\n />\n );\n};\n\nexport default forwardRef(EmailBody);\n","import dayjs from \"dayjs\";\nimport { t } from \"i18next\";\nimport { isNot } from \"neetocist\";\nimport { isEditorEmpty } from \"neetoeditor\";\nimport Papa from \"papaparse\";\nimport { prop } from \"ramda\";\nimport { string } from \"yup\";\nimport * as yup from \"yup\";\n\nimport { INITIAL_VALUES } from \"./constants\";\n\nconst isValidEmail = email => string().email().isValidSync(email);\n\nexport const isPastDate = date =>\n dayjs(date).isBefore(dayjs().subtract(1, \"days\"));\n\nexport const createEmailOptions = (emails = []) =>\n emails.map(email => ({\n label: email,\n value: email,\n valid: isValidEmail(email),\n }));\n\nexport const parseCsvEmails = file =>\n new Promise(resolve => {\n Papa.parse(file, {\n header: true,\n skipEmptyLines: true,\n transformHeader: h => h.toLowerCase().replace(/\\W/g, \"\"),\n complete: results => {\n const isEmailFieldPresent = results.meta.fields?.includes(\"email\");\n if (!isEmailFieldPresent) return resolve([]);\n\n const emails = results.data\n .map(item => item.email?.trim())\n .filter(isNot(undefined));\n\n return resolve(createEmailOptions(emails));\n },\n });\n });\n\nexport const generateInitialValues = defaultValues => ({\n ...INITIAL_VALUES,\n ...defaultValues,\n});\n\nexport const emailFormValidationSchema = disableReplyTo =>\n yup.object().shape({\n emailSubject: yup\n .string()\n .required(\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.subject\")\n ),\n emailBody: yup\n .string()\n .test(\n \"emailBody\",\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.emailBody\"),\n value => !isEditorEmpty(value)\n ),\n sendFromEmail: yup\n .string()\n .trim()\n .email(\n t(\"neetoMolecules.shareViaEmail.validations.invalidField.emailAddress\")\n )\n .required(\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.sendFrom\")\n ),\n replyToEmail:\n !disableReplyTo &&\n yup\n .string()\n .trim()\n .email(\n t(\n \"neetoMolecules.shareViaEmail.validations.invalidField.emailAddress\"\n )\n )\n .required(\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.replyTo\")\n ),\n notifyEmails: yup\n .array()\n .min(\n 1,\n t(\n \"neetoMolecules.shareViaEmail.validations.atleastOneIsRequired.emailAddress\"\n )\n )\n .test(\n \"are-all-emails-valid\",\n t(\"neetoMolecules.shareViaEmail.validations.invalidField.emailAddress\"),\n emails => emails.every(prop(\"valid\"))\n ),\n isSendLaterEnabled: yup.boolean(),\n sendEmailDatetime: yup.date().when(\"isSendLaterEnabled\", {\n is: true,\n then: yup\n .date()\n .required(\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.sendLater\")\n ),\n }),\n name: yup.string(),\n actionButtonText: yup\n .string()\n .required(\n t(\n \"neetoMolecules.shareViaEmail.validations.requiredField.startButtonText\"\n )\n ),\n });\n\nexport const disabledTime = selectedDate => {\n const current = selectedDate ? dayjs(selectedDate).startOf(\"day\") : null;\n\n if (!current) return {};\n\n const today = dayjs().startOf(\"day\");\n const isAfterToday = current.isAfter(today, \"day\");\n const isBeforeToday = current.isBefore(today, \"day\");\n\n if (isAfterToday) {\n return { minTime: null, maxTime: null };\n } else if (isBeforeToday) {\n return { minTime: \"0:00\", maxTime: \"24:00\" };\n }\n\n // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats\n const currentTime = dayjs().format(\"HH:mm\");\n const endOfDay = \"23:59\";\n\n return { minTime: currentTime, maxTime: endOfDay };\n};\n","import React, { useMemo } from \"react\";\n\nimport { useField } from \"formik\";\nimport { DateTimePicker } from \"neetoui\";\n\nimport { disabledTime } from \"./utils\";\n\nconst FormikDatePicker = ({ name, disabledDate, ...props }) => {\n const [field, meta, { setValue }] = useField(name);\n\n const disabledTimeFrame = useMemo(\n () => disabledTime(field?.value),\n [field?.value]\n );\n\n return (\n <DateTimePicker\n {...field}\n {...meta}\n timePickerProps={disabledTimeFrame}\n datePickerProps={{\n disabledDate,\n \"data-cy\": props[\"data-cy\"],\n \"data-testid\": props[\"data-testid\"],\n }}\n onChange={date => setValue(date || undefined)}\n {...props}\n />\n );\n};\n\nexport default FormikDatePicker;\n","import React, { useRef } from \"react\";\n\nimport classnames from \"classnames\";\nimport { useFormikContext } from \"formik\";\nimport { Typography, Label } from \"neetoui\";\nimport { Input, Switch, ActionBlock } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport SendToFields from \"components/SendToFields\";\n\nimport EmailBody from \"./EmailBodyEditor\";\nimport FormikDatePicker from \"./FormikDatePicker\";\nimport { isPastDate } from \"./utils\";\n\nconst Form = ({\n showSendFromField,\n disableReplyTo,\n showVideoEmbedInEditor,\n children,\n}) => {\n const { values, initialValues } = useFormikContext();\n const editorRef = useRef();\n const { t } = useTranslation();\n\n const handleReset = () =>\n editorRef.current.editor.commands.setContent(initialValues.emailBody);\n\n return (\n <>\n <div className=\"space-y-4\">\n <SendToFields\n showUploadCsvButton\n emailInputProps={{\n label: t(\"neetoMolecules.shareViaEmail.sendTo\"),\n name: \"notifyEmails\",\n required: true,\n }}\n />\n <Input\n required\n className=\"col-span-1\"\n label={t(\"neetoMolecules.shareViaEmail.subject\")}\n name=\"emailSubject\"\n />\n <EmailBody\n {...{ showVideoEmbedInEditor }}\n id=\"emailBody\"\n ref={editorRef}\n />\n <div ref={editorRef} />\n <div>\n <Label className=\"flex items-center gap-2\">\n <Switch\n data-cy=\"send-later-switch\"\n data-testid=\"send-later-switch\"\n name=\"isSendLaterEnabled\"\n />\n <Typography\n component=\"span\"\n data-cy=\"send-later-label\"\n lineHeight=\"normal\"\n style=\"h4\"\n weight=\"semibold\"\n >\n {t(\"neetoMolecules.shareViaEmail.sendLater\")}\n </Typography>\n </Label>\n </div>\n {values.isSendLaterEnabled && (\n <FormikDatePicker\n autoFocus\n data-cy=\"email-share-date-input\"\n data-testid=\"formik-date-picker\"\n disabledDate={isPastDate}\n name=\"sendEmailDatetime\"\n size=\"large\"\n />\n )}\n <Input\n required\n label={t(\"neetoMolecules.shareViaEmail.startButtonText\")}\n name=\"actionButtonText\"\n />\n <div className=\"flex flex-col gap-4 sm:flex-row sm:gap-6\">\n {showSendFromField && (\n <Input\n required\n className={classnames({ \"w-full flex-grow-0\": !disableReplyTo })}\n data-testid=\"neeto-molecules-share-via-email-send-from\"\n label={t(\"neetoMolecules.shareViaEmail.sendFrom\")}\n name=\"sendFromEmail\"\n />\n )}\n {!disableReplyTo && (\n <Input\n required\n data-testid=\"replyTo-field\"\n label={t(\"neetoMolecules.shareViaEmail.replyTo\")}\n name=\"replyToEmail\"\n className={classnames({\n \"w-full flex-grow-0\": showSendFromField,\n })}\n />\n )}\n </div>\n </div>\n {children && (\n <div className=\"neeto-ui-border-gray-300 mt-4 border-t py-4\">\n <h3 className=\"mb-4\">\n {t(\"neetoMolecules.shareViaEmail.additionalOptions\")}\n </h3>\n {children}\n </div>\n )}\n <div className=\"mt-6\">\n <ActionBlock\n cancelButtonProps={{\n label: t(\"neetoMolecules.shareViaEmail.reset\"),\n type: \"reset\",\n onClick: handleReset,\n }}\n submitButtonProps={{\n label: t(\"neetoMolecules.shareViaEmail.sendEmail\"),\n }}\n />\n </div>\n </>\n );\n};\n\nexport default Form;\n","import React from \"react\";\n\nimport { LeftArrow } from \"neetoicons\";\nimport { Button, Typography } from \"neetoui\";\nimport { Form } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport EmailPreview from \"components/EmailPreview\";\n\nimport EmailForm from \"./Form\";\nimport { emailFormValidationSchema, generateInitialValues } from \"./utils\";\n\nconst ShareViaEmail = ({\n showSendFromField = false,\n backToUrl,\n handleSubmit,\n children,\n description,\n defaultValues,\n disableReplyTo,\n productName,\n showVideoEmbedInEditor,\n title = \"\",\n}) => {\n const { t } = useTranslation();\n\n const shareViaEmailTitle = title || t(\"neetoMolecules.shareViaEmail.title\");\n const sendToEmails = notifyEmails => notifyEmails.map(email => email?.value);\n\n return (\n <div className=\"neeto-ui-bg-gray-100 flex w-full flex-1 flex-col p-6 md:p-8\">\n <div className=\"mx-auto flex w-full max-w-7xl flex-col\">\n <Form\n scrollToErrorField\n formProps={{ noValidate: true }}\n formikProps={{\n enableReinitialize: true,\n validateOnMount: true,\n initialValues: generateInitialValues(defaultValues),\n validationSchema: emailFormValidationSchema(disableReplyTo),\n onSubmit: handleSubmit,\n }}\n >\n {({ values }) => (\n <div className=\"grid grid-cols-1 gap-8 md:grid-cols-12\">\n <div className=\"col-span-1 md:col-span-6 lg:col-span-5\">\n {backToUrl && (\n <Button\n className=\"mb-4\"\n data-testid=\"back-to-url-button\"\n icon={LeftArrow}\n iconPosition=\"left\"\n label={t(\"neetoMolecules.shareViaEmail.backToShare\")}\n size=\"small\"\n style=\"link\"\n to={backToUrl}\n />\n )}\n <div className=\"mb-6\">\n <Typography\n className=\"mb-0.5 break-words\"\n data-cy=\"share-via-email-heading\"\n lineHeight=\"normal\"\n style=\"h2\"\n weight=\"semibold\"\n >\n {shareViaEmailTitle}\n </Typography>\n {description && (\n <Typography\n className=\"neeto-ui-text-gray-700\"\n data-cy=\"share-via-email-sub-heading\"\n lineHeight=\"normal\"\n style=\"body2\"\n >\n {description}\n </Typography>\n )}\n </div>\n <EmailForm\n {...{\n disableReplyTo,\n showSendFromField,\n showVideoEmbedInEditor,\n }}\n >\n {children}\n </EmailForm>\n </div>\n <div className=\"col-span-1 md:col-span-6 lg:col-span-7\">\n <EmailPreview\n {...{ productName }}\n actionButtonText={values.actionButtonText}\n body={values.emailBody}\n className=\"sticky pt-1 md:mt-28\"\n subject={values.emailSubject}\n to={sendToEmails(values.notifyEmails)}\n />\n </div>\n </div>\n )}\n </Form>\n </div>\n </div>\n );\n};\n\nShareViaEmail.propTypes = {\n /**\n * The path to navigate back to the required page on clicking the 'Back to share' button.\n */\n backToUrl: PropTypes.string,\n /**\n * The function that handles submitting of values to the API.\n */\n handleSubmit: PropTypes.func,\n /**\n * React components that can be passed on as children, to add optional fields.\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n /**\n * Description text to be displayed under the component title.\n */\n description: PropTypes.string,\n /**\n * An object to assign default values to the email form.\n */\n defaultValues: PropTypes.shape({\n sendFromEmail: PropTypes.string,\n replyToEmail: PropTypes.string,\n actionButtonText: PropTypes.string,\n emailSubject: PropTypes.string,\n emailBody: PropTypes.string,\n }),\n /**\n * Boolean value to show the \"Send From\" field if needed.\n */\n showSendFromField: PropTypes.bool,\n /**\n * Boolean value to hide the \"Reply to\" field if not needed.\n */\n disableReplyTo: PropTypes.bool,\n /**\n * product name for the `<EmailPreview />` component can be passed.\n */\n productName: PropTypes.string,\n /**\n * Boolean value to show video url as embed video in email body.\n */\n showVideoEmbedInEditor: PropTypes.bool,\n /**\n * To specify the title of the component. Defaults to \"Share via email\"\n */\n title: PropTypes.string,\n};\n\nexport default ShareViaEmail;\n"],"names":["INITIAL_VALUES","sendFromEmail","replyToEmail","notifyEmails","emailSubject","emailBody","isSendLaterEnabled","sendEmailDatetime","undefined","category","actionButtonText","EDITOR_ADDONS","EmailBody","_ref","ref","id","showVideoEmbedInEditor","_useTranslation","useTranslation","t","React","createElement","FormikEditor","required","className","label","name","addons","concat","_toConsumableArray","forwardRef","isPastDate","date","dayjs","isBefore","subtract","generateInitialValues","defaultValues","_objectSpread","emailFormValidationSchema","disableReplyTo","yup","object","shape","string","test","value","isEditorEmpty","trim","email","array","min","emails","every","prop","when","is","then","disabledTime","selectedDate","current","startOf","today","isAfterToday","isAfter","isBeforeToday","minTime","maxTime","currentTime","format","endOfDay","FormikDatePicker","disabledDate","props","_objectWithoutProperties","_excluded","_useField","useField","_useField2","_slicedToArray","field","meta","setValue","disabledTimeFrame","useMemo","DateTimePicker","_extends","timePickerProps","datePickerProps","onChange","Form","showSendFromField","children","_useFormikContext","useFormikContext","values","initialValues","editorRef","useRef","handleReset","editor","commands","setContent","Fragment","SendToFields","showUploadCsvButton","emailInputProps","Input","Label","Switch","Typography","component","lineHeight","style","weight","autoFocus","size","classnames","ActionBlock","cancelButtonProps","type","onClick","submitButtonProps","ShareViaEmail","_ref$showSendFromFiel","backToUrl","handleSubmit","description","productName","_ref$title","title","shareViaEmailTitle","sendToEmails","map","scrollToErrorField","formProps","noValidate","formikProps","enableReinitialize","validateOnMount","validationSchema","onSubmit","_ref2","Button","icon","LeftArrow","iconPosition","to","EmailForm","EmailPreview","body","subject"],"mappings":"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"}
@@ -5,6 +5,8 @@ import { useTranslation } from 'react-i18next';
5
5
  import { useMutation } from 'react-query';
6
6
  import axios from 'axios';
7
7
  import dayjs from 'dayjs';
8
+ import timezone from 'dayjs/plugin/timezone';
9
+ import utc from 'dayjs/plugin/utc';
8
10
  import { globalProps as globalProps$1 } from '@bigbinary/neeto-commons-frontend/initializers';
9
11
 
10
12
  var timeZoneUrl = "api/v1/time_zone";
@@ -23,6 +25,8 @@ var useUpdateTimeZone = function useUpdateTimeZone() {
23
25
  });
24
26
  };
25
27
 
28
+ dayjs.extend(utc);
29
+ dayjs.extend(timezone);
26
30
  var getBrowserTimeZone = function getBrowserTimeZone() {
27
31
  return dayjs.tz.guess();
28
32
  };
@@ -31,7 +35,10 @@ var getUserTimeZone = function getUserTimeZone() {
31
35
  return (_globalProps$user = globalProps$1.user) === null || _globalProps$user === void 0 ? void 0 : _globalProps$user.timeZone;
32
36
  };
33
37
  var checkIfTwoTimeZonesAreSame = function checkIfTwoTimeZonesAreSame(timeZone1, timeZone2) {
34
- return dayjs().tz(timeZone1).format("Z") === dayjs().tz(timeZone2).format("Z");
38
+ return (
39
+ // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats
40
+ dayjs().tz(timeZone1).format("Z") === dayjs().tz(timeZone2).format("Z")
41
+ );
35
42
  };
36
43
 
37
44
  var TimezoneMismatchModal = function TimezoneMismatchModal(_ref) {
@@ -1 +1 @@
1
- {"version":3,"file":"TimezoneMismatchModal.js","sources":["../src/components/TimezoneMismatchModal/apis/time_zone.js","../src/components/TimezoneMismatchModal/useTimeZoneApi.js","../src/components/TimezoneMismatchModal/utils.js","../src/components/TimezoneMismatchModal/index.jsx"],"sourcesContent":["import axios from \"axios\";\n\nconst timeZoneUrl = \"api/v1/time_zone\";\n\nconst updateTimeZone = payload => axios.patch(timeZoneUrl, payload);\n\nconst timeZoneApi = { updateTimeZone };\n\nexport default timeZoneApi;\n","import { useMutation } from \"react-query\";\n\nimport timeZoneApi from \"./apis/time_zone\";\n\nconst useUpdateTimeZone = () =>\n useMutation(timeZoneApi.updateTimeZone, {\n onSuccess: () => window.location.reload(),\n });\n\nexport { useUpdateTimeZone };\n","import dayjs from \"dayjs\";\nimport { globalProps } from \"neetocommons/initializers\";\n\nexport const getBrowserTimeZone = () => dayjs.tz.guess();\n\nexport const getUserTimeZone = () => globalProps.user?.timeZone;\n\nexport const checkIfTwoTimeZonesAreSame = (timeZone1, timeZone2) =>\n dayjs().tz(timeZone1).format(\"Z\") === dayjs().tz(timeZone2).format(\"Z\");\n","/* eslint-disable @bigbinary/neeto/use-webpack-alias */\nimport React, { useEffect, useState } from \"react\";\n\nimport { Button, Modal, Typography } from \"@bigbinary/neetoui\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useUpdateTimeZone } from \"./useTimeZoneApi\";\nimport {\n checkIfTwoTimeZonesAreSame,\n getBrowserTimeZone,\n getUserTimeZone,\n} from \"./utils\";\n\nconst TimezoneMismatchModal = ({ isOpen = false, onClose = () => {} }) => {\n const { t } = useTranslation();\n const [isTimezoneModalOpen, setIsTimezoneModalOpen] = useState(false);\n const { isLoading, mutate: updateTimeZone } = useUpdateTimeZone();\n const isUserAndBrowserTimeZoneSame = checkIfTwoTimeZonesAreSame(\n getUserTimeZone(),\n getBrowserTimeZone()\n );\n\n const handleUpdateTimeZone = () => {\n const payload = { timeZone: getBrowserTimeZone() };\n\n updateTimeZone(payload, {\n onSuccess: () => {\n setIsTimezoneModalOpen(false);\n onClose();\n },\n });\n };\n\n const handleCancel = () => {\n setIsTimezoneModalOpen(false);\n onClose();\n };\n\n useEffect(() => {\n if (process.env.RAILS_ENV !== \"heroku\") {\n setIsTimezoneModalOpen(!isUserAndBrowserTimeZoneSame);\n }\n }, []);\n\n return (\n <Modal\n closeOnOutsideClick={false}\n isOpen={isTimezoneModalOpen || isOpen}\n size=\"large\"\n onClose={handleCancel}\n >\n <Modal.Header>\n <Typography style=\"h2\" weight=\"normal\">\n {t(\"neetoMolecules.alert.timezone.title\")}\n </Typography>\n </Modal.Header>\n <Modal.Body>\n <span className=\"flex flex-col space-y-4\">\n <Typography component=\"span\" style=\"body2\">\n {t(\"neetoMolecules.alert.timezone.message\", {\n entity: globalProps.appName,\n })}\n </Typography>\n <Typography component=\"span\" style=\"h4\">\n {t(\"neetoMolecules.alert.timezone.userTimezone\", {\n entity: getUserTimeZone(),\n })}\n </Typography>\n <Typography component=\"span\" style=\"h4\">\n {t(\"neetoMolecules.alert.timezone.browserTimezone\", {\n entity: getBrowserTimeZone(),\n })}\n </Typography>\n </span>\n </Modal.Body>\n <Modal.Footer className=\"space-x-2\">\n <Button\n data-testid=\"update-timezone-button\"\n disabled={isLoading}\n label={t(\"neetoMolecules.alert.timezone.updateProfile\")}\n loading={isLoading}\n style=\"primary\"\n onClick={handleUpdateTimeZone}\n />\n <Button\n label={t(\"neetoMolecules.common.actions.cancel\")}\n style=\"text\"\n onClick={handleCancel}\n />\n </Modal.Footer>\n </Modal>\n );\n};\n\nTimezoneMismatchModal.propTypes = {\n /**\n * Boolean value to toggle the modal.\n */\n isOpen: PropTypes.bool,\n /**\n * The function that's called after the modal is closed.\n */\n onClose: PropTypes.func,\n};\n\nexport default TimezoneMismatchModal;\n"],"names":["timeZoneUrl","updateTimeZone","payload","axios","patch","timeZoneApi","useUpdateTimeZone","useMutation","onSuccess","window","location","reload","getBrowserTimeZone","dayjs","tz","guess","getUserTimeZone","_globalProps$user","globalProps","user","timeZone","checkIfTwoTimeZonesAreSame","timeZone1","timeZone2","format","TimezoneMismatchModal","_ref","_ref$isOpen","isOpen","_ref$onClose","onClose","_useTranslation","useTranslation","t","_useState","useState","_useState2","_slicedToArray","isTimezoneModalOpen","setIsTimezoneModalOpen","_useUpdateTimeZone","isLoading","mutate","isUserAndBrowserTimeZoneSame","handleUpdateTimeZone","handleCancel","useEffect","process","env","RAILS_ENV","React","createElement","Modal","closeOnOutsideClick","size","Header","Typography","style","weight","Body","className","component","entity","appName","Footer","Button","disabled","label","loading","onClick"],"mappings":"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"}
1
+ {"version":3,"file":"TimezoneMismatchModal.js","sources":["../src/components/TimezoneMismatchModal/apis/time_zone.js","../src/components/TimezoneMismatchModal/useTimeZoneApi.js","../src/components/TimezoneMismatchModal/utils.js","../src/components/TimezoneMismatchModal/index.jsx"],"sourcesContent":["import axios from \"axios\";\n\nconst timeZoneUrl = \"api/v1/time_zone\";\n\nconst updateTimeZone = payload => axios.patch(timeZoneUrl, payload);\n\nconst timeZoneApi = { updateTimeZone };\n\nexport default timeZoneApi;\n","import { useMutation } from \"react-query\";\n\nimport timeZoneApi from \"./apis/time_zone\";\n\nconst useUpdateTimeZone = () =>\n useMutation(timeZoneApi.updateTimeZone, {\n onSuccess: () => window.location.reload(),\n });\n\nexport { useUpdateTimeZone };\n","import dayjs from \"dayjs\";\nimport timezone from \"dayjs/plugin/timezone\";\nimport utc from \"dayjs/plugin/utc\";\nimport { globalProps } from \"neetocommons/initializers\";\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\nexport const getBrowserTimeZone = () => dayjs.tz.guess();\n\nexport const getUserTimeZone = () => globalProps.user?.timeZone;\n\nexport const checkIfTwoTimeZonesAreSame = (timeZone1, timeZone2) =>\n // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats\n dayjs().tz(timeZone1).format(\"Z\") === dayjs().tz(timeZone2).format(\"Z\");\n","/* eslint-disable @bigbinary/neeto/use-webpack-alias */\nimport React, { useEffect, useState } from \"react\";\n\nimport { Button, Modal, Typography } from \"@bigbinary/neetoui\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useUpdateTimeZone } from \"./useTimeZoneApi\";\nimport {\n checkIfTwoTimeZonesAreSame,\n getBrowserTimeZone,\n getUserTimeZone,\n} from \"./utils\";\n\nconst TimezoneMismatchModal = ({ isOpen = false, onClose = () => {} }) => {\n const { t } = useTranslation();\n const [isTimezoneModalOpen, setIsTimezoneModalOpen] = useState(false);\n const { isLoading, mutate: updateTimeZone } = useUpdateTimeZone();\n const isUserAndBrowserTimeZoneSame = checkIfTwoTimeZonesAreSame(\n getUserTimeZone(),\n getBrowserTimeZone()\n );\n\n const handleUpdateTimeZone = () => {\n const payload = { timeZone: getBrowserTimeZone() };\n\n updateTimeZone(payload, {\n onSuccess: () => {\n setIsTimezoneModalOpen(false);\n onClose();\n },\n });\n };\n\n const handleCancel = () => {\n setIsTimezoneModalOpen(false);\n onClose();\n };\n\n useEffect(() => {\n if (process.env.RAILS_ENV !== \"heroku\") {\n setIsTimezoneModalOpen(!isUserAndBrowserTimeZoneSame);\n }\n }, []);\n\n return (\n <Modal\n closeOnOutsideClick={false}\n isOpen={isTimezoneModalOpen || isOpen}\n size=\"large\"\n onClose={handleCancel}\n >\n <Modal.Header>\n <Typography style=\"h2\" weight=\"normal\">\n {t(\"neetoMolecules.alert.timezone.title\")}\n </Typography>\n </Modal.Header>\n <Modal.Body>\n <span className=\"flex flex-col space-y-4\">\n <Typography component=\"span\" style=\"body2\">\n {t(\"neetoMolecules.alert.timezone.message\", {\n entity: globalProps.appName,\n })}\n </Typography>\n <Typography component=\"span\" style=\"h4\">\n {t(\"neetoMolecules.alert.timezone.userTimezone\", {\n entity: getUserTimeZone(),\n })}\n </Typography>\n <Typography component=\"span\" style=\"h4\">\n {t(\"neetoMolecules.alert.timezone.browserTimezone\", {\n entity: getBrowserTimeZone(),\n })}\n </Typography>\n </span>\n </Modal.Body>\n <Modal.Footer className=\"space-x-2\">\n <Button\n data-testid=\"update-timezone-button\"\n disabled={isLoading}\n label={t(\"neetoMolecules.alert.timezone.updateProfile\")}\n loading={isLoading}\n style=\"primary\"\n onClick={handleUpdateTimeZone}\n />\n <Button\n label={t(\"neetoMolecules.common.actions.cancel\")}\n style=\"text\"\n onClick={handleCancel}\n />\n </Modal.Footer>\n </Modal>\n );\n};\n\nTimezoneMismatchModal.propTypes = {\n /**\n * Boolean value to toggle the modal.\n */\n isOpen: PropTypes.bool,\n /**\n * The function that's called after the modal is closed.\n */\n onClose: PropTypes.func,\n};\n\nexport default TimezoneMismatchModal;\n"],"names":["timeZoneUrl","updateTimeZone","payload","axios","patch","timeZoneApi","useUpdateTimeZone","useMutation","onSuccess","window","location","reload","dayjs","extend","utc","timezone","getBrowserTimeZone","tz","guess","getUserTimeZone","_globalProps$user","globalProps","user","timeZone","checkIfTwoTimeZonesAreSame","timeZone1","timeZone2","format","TimezoneMismatchModal","_ref","_ref$isOpen","isOpen","_ref$onClose","onClose","_useTranslation","useTranslation","t","_useState","useState","_useState2","_slicedToArray","isTimezoneModalOpen","setIsTimezoneModalOpen","_useUpdateTimeZone","isLoading","mutate","isUserAndBrowserTimeZoneSame","handleUpdateTimeZone","handleCancel","useEffect","process","env","RAILS_ENV","React","createElement","Modal","closeOnOutsideClick","size","Header","Typography","style","weight","Body","className","component","entity","appName","Footer","Button","disabled","label","loading","onClick"],"mappings":"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"}
@@ -1,12 +1,14 @@
1
1
  'use strict';
2
2
 
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
3
5
  var _extends = require('./extends-1b35a664.js');
4
6
  var objectWithoutProperties = require('./objectWithoutProperties-2fed2d7d.js');
5
7
  var React = require('react');
6
- var neetoCist = require('@bigbinary/neeto-cist');
7
8
  var neetoui = require('@bigbinary/neetoui');
8
- var formik = require('@bigbinary/neetoui/formik');
9
9
  var reactI18next = require('react-i18next');
10
+ var neetoCist = require('@bigbinary/neeto-cist');
11
+ var formik = require('@bigbinary/neetoui/formik');
10
12
 
11
13
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
14
 
@@ -870,32 +872,50 @@ var currencyData = [
870
872
  }
871
873
  ];
872
874
 
873
- var _excluded = ["label", "name", "standalone", "allowedCurrencies"];
875
+ var getCurrencies = function getCurrencies(allowedCurrencies) {
876
+ if (neetoCist.isPresent(allowedCurrencies) && neetoCist.isNotEmpty(allowedCurrencies)) {
877
+ return currencyData.filter(function (item) {
878
+ return allowedCurrencies.includes(item.value);
879
+ });
880
+ }
881
+ return currencyData;
882
+ };
883
+
884
+ var _excluded$1 = ["label", "allowedCurrencies"];
874
885
  var Currency = function Currency(_ref) {
886
+ var label = _ref.label,
887
+ allowedCurrencies = _ref.allowedCurrencies,
888
+ otherSelectProps = objectWithoutProperties._objectWithoutProperties(_ref, _excluded$1);
889
+ var _useTranslation = reactI18next.useTranslation(),
890
+ t = _useTranslation.t;
891
+ var data = React.useMemo(function () {
892
+ return getCurrencies(allowedCurrencies);
893
+ }, [allowedCurrencies]);
894
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.Select, _extends._extends({
895
+ label: label || t("neetoMolecules.common.currency"),
896
+ options: data
897
+ }, otherSelectProps));
898
+ };
899
+
900
+ var _excluded = ["label", "name", "allowedCurrencies"];
901
+ var FormikCurrency = function FormikCurrency(_ref) {
875
902
  var label = _ref.label,
876
903
  _ref$name = _ref.name,
877
904
  name = _ref$name === void 0 ? "currency" : _ref$name,
878
- _ref$standalone = _ref.standalone,
879
- standalone = _ref$standalone === void 0 ? false : _ref$standalone,
880
905
  allowedCurrencies = _ref.allowedCurrencies,
881
906
  otherSelectProps = objectWithoutProperties._objectWithoutProperties(_ref, _excluded);
882
907
  var _useTranslation = reactI18next.useTranslation(),
883
908
  t = _useTranslation.t;
884
909
  var data = React.useMemo(function () {
885
- if (neetoCist.isPresent(allowedCurrencies) && neetoCist.isNotEmpty(allowedCurrencies)) {
886
- return currencyData.filter(function (item) {
887
- return allowedCurrencies.includes(item.value);
888
- });
889
- }
890
- return currencyData;
910
+ return getCurrencies(allowedCurrencies);
891
911
  }, [allowedCurrencies]);
892
- var Component = standalone ? neetoui.Select : formik.Select;
893
- return /*#__PURE__*/React__default["default"].createElement(Component, _extends._extends({
912
+ return /*#__PURE__*/React__default["default"].createElement(formik.Select, _extends._extends({
894
913
  name: name,
895
914
  label: label || t("neetoMolecules.common.currency"),
896
915
  options: data
897
916
  }, otherSelectProps));
898
917
  };
899
918
 
900
- module.exports = Currency;
919
+ exports.Currency = Currency;
920
+ exports.FormikCurrency = FormikCurrency;
901
921
  //# sourceMappingURL=Currency.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Currency.js","sources":["../../src/components/Currency/index.jsx"],"sourcesContent":["import React, { useMemo } from \"react\";\n\nimport { isPresent, isNotEmpty } from \"neetocist\";\nimport { Select } from \"neetoui\";\nimport { Select as FormSelect } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport currencyData from \"./currencyData.json\";\n\nconst Currency = ({\n label,\n name = \"currency\",\n standalone = false,\n allowedCurrencies,\n ...otherSelectProps\n}) => {\n const { t } = useTranslation();\n\n const data = useMemo(() => {\n if (isPresent(allowedCurrencies) && isNotEmpty(allowedCurrencies)) {\n return currencyData.filter(item =>\n allowedCurrencies.includes(item.value)\n );\n }\n\n return currencyData;\n }, [allowedCurrencies]);\n\n const Component = standalone ? Select : FormSelect;\n\n return (\n <Component\n {...{ name }}\n label={label || t(\"neetoMolecules.common.currency\")}\n options={data}\n {...otherSelectProps}\n />\n );\n};\n\nCurrency.propTypes = {\n /**\n * Label for the currency input.\n */\n label: PropTypes.string,\n /**\n * Name for the currency input.\n */\n name: PropTypes.string,\n /**\n * To specify whether Currency can be used outside of formik.\n */\n standalone: PropTypes.bool,\n /**\n * To specify only a selected list of currencies to be used.\n */\n allowedCurrencies: PropTypes.arrayOf(PropTypes.string),\n};\n\nexport default Currency;\n"],"names":["Currency","_ref","label","_ref$name","name","_ref$standalone","standalone","allowedCurrencies","otherSelectProps","_objectWithoutProperties","_excluded","_useTranslation","useTranslation","t","data","useMemo","isPresent","isNotEmpty","currencyData","filter","item","includes","value","Component","Select","FormSelect","React","createElement","_extends","options"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAMA,QAAQ,GAAG,SAAXA,QAAQA,CAAAC,IAAA,EAMR;AAAA,EAAA,IALJC,KAAK,GAAAD,IAAA,CAALC,KAAK;IAAAC,SAAA,GAAAF,IAAA,CACLG,IAAI;AAAJA,IAAAA,IAAI,GAAAD,SAAA,KAAG,KAAA,CAAA,GAAA,UAAU,GAAAA,SAAA;IAAAE,eAAA,GAAAJ,IAAA,CACjBK,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,eAAA;IAClBE,iBAAiB,GAAAN,IAAA,CAAjBM,iBAAiB;AACdC,IAAAA,gBAAgB,GAAAC,gDAAA,CAAAR,IAAA,EAAAS,SAAA,CAAA,CAAA;AAEnB,EAAA,IAAAC,eAAA,GAAcC,2BAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC,CAAA;AAET,EAAA,IAAMC,IAAI,GAAGC,aAAO,CAAC,YAAM;IACzB,IAAIC,mBAAS,CAACT,iBAAiB,CAAC,IAAIU,oBAAU,CAACV,iBAAiB,CAAC,EAAE;AACjE,MAAA,OAAOW,YAAY,CAACC,MAAM,CAAC,UAAAC,IAAI,EAAA;AAAA,QAAA,OAC7Bb,iBAAiB,CAACc,QAAQ,CAACD,IAAI,CAACE,KAAK,CAAC,CAAA;AAAA,OACxC,CAAC,CAAA;AACH,KAAA;AAEA,IAAA,OAAOJ,YAAY,CAAA;AACrB,GAAC,EAAE,CAACX,iBAAiB,CAAC,CAAC,CAAA;AAEvB,EAAA,IAAMgB,SAAS,GAAGjB,UAAU,GAAGkB,cAAM,GAAGC,aAAU,CAAA;AAElD,EAAA,oBACEC,yBAAA,CAAAC,aAAA,CAACJ,SAAS,EAAAK,iBAAA,CAAA;AACFxB,IAAAA,IAAI,EAAJA,IAAI;AACVF,IAAAA,KAAK,EAAEA,KAAK,IAAIW,CAAC,CAAC,gCAAgC,CAAE;AACpDgB,IAAAA,OAAO,EAAEf,IAAAA;GACLN,EAAAA,gBAAgB,CACrB,CAAC,CAAA;AAEN;;;;"}
1
+ {"version":3,"file":"Currency.js","sources":["../../src/components/Currency/utils.js","../../src/components/Currency/Currency.jsx","../../src/components/Currency/FormikCurrency.jsx"],"sourcesContent":["import { isPresent, isNotEmpty } from \"neetocist\";\n\nimport currencyData from \"./currencyData.json\";\n\nexport const getCurrencies = allowedCurrencies => {\n if (isPresent(allowedCurrencies) && isNotEmpty(allowedCurrencies)) {\n return currencyData.filter(item => allowedCurrencies.includes(item.value));\n }\n\n return currencyData;\n};\n","import React, { useMemo } from \"react\";\n\nimport { Select } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getCurrencies } from \"./utils\";\n\nconst Currency = ({ label, allowedCurrencies, ...otherSelectProps }) => {\n const { t } = useTranslation();\n\n const data = useMemo(\n () => getCurrencies(allowedCurrencies),\n [allowedCurrencies]\n );\n\n return (\n <Select\n label={label || t(\"neetoMolecules.common.currency\")}\n options={data}\n {...otherSelectProps}\n />\n );\n};\n\nCurrency.propTypes = {\n /**\n * Label for the currency input.\n */\n label: PropTypes.string,\n /**\n * To specify only a selected list of currencies to be used.\n */\n allowedCurrencies: PropTypes.arrayOf(PropTypes.string),\n};\n\nexport default Currency;\n","import React, { useMemo } from \"react\";\n\nimport { Select } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getCurrencies } from \"./utils\";\n\nconst FormikCurrency = ({\n label,\n name = \"currency\",\n allowedCurrencies,\n ...otherSelectProps\n}) => {\n const { t } = useTranslation();\n\n const data = useMemo(\n () => getCurrencies(allowedCurrencies),\n [allowedCurrencies]\n );\n\n return (\n <Select\n {...{ name }}\n label={label || t(\"neetoMolecules.common.currency\")}\n options={data}\n {...otherSelectProps}\n />\n );\n};\n\nFormikCurrency.propTypes = {\n /**\n * Label for the currency input.\n */\n label: PropTypes.string,\n /**\n * Name for the currency input.\n */\n name: PropTypes.string,\n /**\n * To specify only a selected list of currencies to be used.\n */\n allowedCurrencies: PropTypes.arrayOf(PropTypes.string),\n};\n\nexport default FormikCurrency;\n"],"names":["getCurrencies","allowedCurrencies","isPresent","isNotEmpty","currencyData","filter","item","includes","value","Currency","_ref","label","otherSelectProps","_objectWithoutProperties","_excluded","_useTranslation","useTranslation","t","data","useMemo","React","createElement","Select","_extends","options","FormikCurrency","_ref$name","name"],"mappings":"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"}
@@ -81,24 +81,6 @@ var EmailBody = function EmailBody(_ref, ref) {
81
81
  };
82
82
  var EmailBody$1 = /*#__PURE__*/React.forwardRef(EmailBody);
83
83
 
84
- var _excluded = ["name"];
85
- var FormikDatePicker = function FormikDatePicker(_ref) {
86
- var name = _ref.name,
87
- props = objectWithoutProperties._objectWithoutProperties(_ref, _excluded);
88
- var _useField = formik.useField(name),
89
- _useField2 = slicedToArray._slicedToArray(_useField, 3),
90
- field = _useField2[0],
91
- meta = _useField2[1],
92
- setValue = _useField2[2].setValue;
93
- return /*#__PURE__*/React__default["default"].createElement(neetoui.DatePicker, _extends._extends({}, field, meta, {
94
- onChange: function onChange(date) {
95
- return setValue(date || undefined);
96
- }
97
- }, props, {
98
- "data-cy": "email-share-date-input"
99
- }));
100
- };
101
-
102
84
  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; }
103
85
  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._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; }
104
86
  var isPastDate = function isPastDate(date) {
@@ -127,6 +109,58 @@ var emailFormValidationSchema = function emailFormValidationSchema(disableReplyT
127
109
  actionButtonText: yup__namespace.string().required(i18next.t("neetoMolecules.shareViaEmail.validations.requiredField.startButtonText"))
128
110
  });
129
111
  };
112
+ var disabledTime = function disabledTime(selectedDate) {
113
+ var current = selectedDate ? dayjs__default["default"](selectedDate).startOf("day") : null;
114
+ if (!current) return {};
115
+ var today = dayjs__default["default"]().startOf("day");
116
+ var isAfterToday = current.isAfter(today, "day");
117
+ var isBeforeToday = current.isBefore(today, "day");
118
+ if (isAfterToday) {
119
+ return {
120
+ minTime: null,
121
+ maxTime: null
122
+ };
123
+ } else if (isBeforeToday) {
124
+ return {
125
+ minTime: "0:00",
126
+ maxTime: "24:00"
127
+ };
128
+ }
129
+
130
+ // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats
131
+ var currentTime = dayjs__default["default"]().format("HH:mm");
132
+ var endOfDay = "23:59";
133
+ return {
134
+ minTime: currentTime,
135
+ maxTime: endOfDay
136
+ };
137
+ };
138
+
139
+ var _excluded = ["name", "disabledDate"];
140
+ var FormikDatePicker = function FormikDatePicker(_ref) {
141
+ var name = _ref.name,
142
+ disabledDate = _ref.disabledDate,
143
+ props = objectWithoutProperties._objectWithoutProperties(_ref, _excluded);
144
+ var _useField = formik.useField(name),
145
+ _useField2 = slicedToArray._slicedToArray(_useField, 3),
146
+ field = _useField2[0],
147
+ meta = _useField2[1],
148
+ setValue = _useField2[2].setValue;
149
+ var disabledTimeFrame = React.useMemo(function () {
150
+ return disabledTime(field === null || field === void 0 ? void 0 : field.value);
151
+ }, [field === null || field === void 0 ? void 0 : field.value]);
152
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.DateTimePicker, _extends._extends({}, field, meta, {
153
+ timePickerProps: disabledTimeFrame,
154
+ datePickerProps: {
155
+ disabledDate: disabledDate,
156
+ "data-cy": props["data-cy"],
157
+ "data-testid": props["data-testid"]
158
+ },
159
+ onChange: function onChange(date) {
160
+ return setValue(date || undefined);
161
+ }
162
+ }, props));
163
+ };
130
164
 
131
165
  var Form = function Form(_ref) {
132
166
  var showSendFromField = _ref.showSendFromField,
@@ -176,14 +210,11 @@ var Form = function Form(_ref) {
176
210
  weight: "semibold"
177
211
  }, t("neetoMolecules.shareViaEmail.sendLater")))), values.isSendLaterEnabled && /*#__PURE__*/React__default["default"].createElement(FormikDatePicker, {
178
212
  autoFocus: true,
179
- showTime: true,
180
213
  "data-cy": "email-share-date-input",
181
214
  "data-testid": "formik-date-picker",
182
215
  disabledDate: isPastDate,
183
216
  name: "sendEmailDatetime",
184
- picker: "date",
185
- size: "large",
186
- type: "date"
217
+ size: "large"
187
218
  }), /*#__PURE__*/React__default["default"].createElement(formik$1.Input, {
188
219
  required: true,
189
220
  label: t("neetoMolecules.shareViaEmail.startButtonText"),
@@ -1 +1 @@
1
- {"version":3,"file":"ShareViaEmail.js","sources":["../../src/components/ShareViaEmail/constants.js","../../src/components/ShareViaEmail/EmailBodyEditor.jsx","../../src/components/ShareViaEmail/FormikDatePicker.jsx","../../src/components/ShareViaEmail/utils.js","../../src/components/ShareViaEmail/Form.jsx","../../src/components/ShareViaEmail/index.jsx"],"sourcesContent":["export const ONE_MEGABYTE = 1_048_576;\n\nexport const INITIAL_VALUES = {\n sendFromEmail: \"\",\n replyToEmail: \"\",\n notifyEmails: [],\n emailSubject: \"\",\n emailBody: \"\",\n isSendLaterEnabled: false,\n sendEmailDatetime: undefined,\n category: \"email_share\",\n actionButtonText: \"\",\n};\n\nexport const EDITOR_ADDONS = [\n \"emoji\",\n \"block-quote\",\n \"image-upload\",\n \"divider\",\n];\n\nexport const ALLOWED_FILE_PICKER_TYPES = [\".csv\"];\n","import React, { forwardRef } from \"react\";\n\nimport { FormikEditor } from \"neetoeditor\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { EDITOR_ADDONS } from \"./constants\";\n\nconst EmailBody = ({ id, showVideoEmbedInEditor }, ref) => {\n const { t } = useTranslation();\n\n return (\n <FormikEditor\n required\n className=\"mb-6\"\n data-cy=\"email-body\"\n id={id}\n label={t(\"neetoMolecules.shareViaEmail.emailBody\")}\n name=\"emailBody\"\n ref={ref}\n addons={\n showVideoEmbedInEditor\n ? [...EDITOR_ADDONS, \"video-embed\"]\n : EDITOR_ADDONS\n }\n />\n );\n};\n\nexport default forwardRef(EmailBody);\n","import React from \"react\";\n\nimport { useField } from \"formik\";\nimport { DatePicker } from \"neetoui\";\n\nconst FormikDatePicker = ({ name, ...props }) => {\n const [field, meta, { setValue }] = useField(name);\n\n return (\n <DatePicker\n {...field}\n {...meta}\n onChange={date => setValue(date || undefined)}\n {...props}\n data-cy=\"email-share-date-input\"\n />\n );\n};\n\nexport default FormikDatePicker;\n","import dayjs from \"dayjs\";\nimport { t } from \"i18next\";\nimport { isNot } from \"neetocist\";\nimport { isEditorEmpty } from \"neetoeditor\";\nimport Papa from \"papaparse\";\nimport { prop } from \"ramda\";\nimport { string } from \"yup\";\nimport * as yup from \"yup\";\n\nimport { INITIAL_VALUES } from \"./constants\";\n\nconst isValidEmail = email => string().email().isValidSync(email);\n\nexport const isPastDate = date =>\n dayjs(date).isBefore(dayjs().subtract(1, \"days\"));\n\nexport const createEmailOptions = (emails = []) =>\n emails.map(email => ({\n label: email,\n value: email,\n valid: isValidEmail(email),\n }));\n\nexport const parseCsvEmails = file =>\n new Promise(resolve => {\n Papa.parse(file, {\n header: true,\n skipEmptyLines: true,\n transformHeader: h => h.toLowerCase().replace(/\\W/g, \"\"),\n complete: results => {\n const isEmailFieldPresent = results.meta.fields?.includes(\"email\");\n if (!isEmailFieldPresent) return resolve([]);\n\n const emails = results.data\n .map(item => item.email?.trim())\n .filter(isNot(undefined));\n\n return resolve(createEmailOptions(emails));\n },\n });\n });\n\nexport const generateInitialValues = defaultValues => ({\n ...INITIAL_VALUES,\n ...defaultValues,\n});\n\nexport const emailFormValidationSchema = disableReplyTo =>\n yup.object().shape({\n emailSubject: yup\n .string()\n .required(\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.subject\")\n ),\n emailBody: yup\n .string()\n .test(\n \"emailBody\",\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.emailBody\"),\n value => !isEditorEmpty(value)\n ),\n sendFromEmail: yup\n .string()\n .trim()\n .email(\n t(\"neetoMolecules.shareViaEmail.validations.invalidField.emailAddress\")\n )\n .required(\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.sendFrom\")\n ),\n replyToEmail:\n !disableReplyTo &&\n yup\n .string()\n .trim()\n .email(\n t(\n \"neetoMolecules.shareViaEmail.validations.invalidField.emailAddress\"\n )\n )\n .required(\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.replyTo\")\n ),\n notifyEmails: yup\n .array()\n .min(\n 1,\n t(\n \"neetoMolecules.shareViaEmail.validations.atleastOneIsRequired.emailAddress\"\n )\n )\n .test(\n \"are-all-emails-valid\",\n t(\"neetoMolecules.shareViaEmail.validations.invalidField.emailAddress\"),\n emails => emails.every(prop(\"valid\"))\n ),\n isSendLaterEnabled: yup.boolean(),\n sendEmailDatetime: yup.date().when(\"isSendLaterEnabled\", {\n is: true,\n then: yup\n .date()\n .required(\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.sendLater\")\n ),\n }),\n name: yup.string(),\n actionButtonText: yup\n .string()\n .required(\n t(\n \"neetoMolecules.shareViaEmail.validations.requiredField.startButtonText\"\n )\n ),\n });\n","import React, { useRef } from \"react\";\n\nimport classnames from \"classnames\";\nimport { useFormikContext } from \"formik\";\nimport { Typography, Label } from \"neetoui\";\nimport { Input, Switch, ActionBlock } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport SendToFields from \"components/SendToFields\";\n\nimport EmailBody from \"./EmailBodyEditor\";\nimport FormikDatePicker from \"./FormikDatePicker\";\nimport { isPastDate } from \"./utils\";\n\nconst Form = ({\n showSendFromField,\n disableReplyTo,\n showVideoEmbedInEditor,\n children,\n}) => {\n const { values, initialValues } = useFormikContext();\n const editorRef = useRef();\n const { t } = useTranslation();\n\n const handleReset = () =>\n editorRef.current.editor.commands.setContent(initialValues.emailBody);\n\n return (\n <>\n <div className=\"space-y-4\">\n <SendToFields\n showUploadCsvButton\n emailInputProps={{\n label: t(\"neetoMolecules.shareViaEmail.sendTo\"),\n name: \"notifyEmails\",\n required: true,\n }}\n />\n <Input\n required\n className=\"col-span-1\"\n label={t(\"neetoMolecules.shareViaEmail.subject\")}\n name=\"emailSubject\"\n />\n <EmailBody\n {...{ showVideoEmbedInEditor }}\n id=\"emailBody\"\n ref={editorRef}\n />\n <div ref={editorRef} />\n <div>\n <Label className=\"flex items-center gap-2\">\n <Switch\n data-cy=\"send-later-switch\"\n data-testid=\"send-later-switch\"\n name=\"isSendLaterEnabled\"\n />\n <Typography\n component=\"span\"\n data-cy=\"send-later-label\"\n lineHeight=\"normal\"\n style=\"h4\"\n weight=\"semibold\"\n >\n {t(\"neetoMolecules.shareViaEmail.sendLater\")}\n </Typography>\n </Label>\n </div>\n {values.isSendLaterEnabled && (\n <FormikDatePicker\n autoFocus\n showTime\n data-cy=\"email-share-date-input\"\n data-testid=\"formik-date-picker\"\n disabledDate={isPastDate}\n name=\"sendEmailDatetime\"\n picker=\"date\"\n size=\"large\"\n type=\"date\"\n />\n )}\n <Input\n required\n label={t(\"neetoMolecules.shareViaEmail.startButtonText\")}\n name=\"actionButtonText\"\n />\n <div className=\"flex flex-col gap-4 sm:flex-row sm:gap-6\">\n {showSendFromField && (\n <Input\n required\n className={classnames({ \"w-full flex-grow-0\": !disableReplyTo })}\n data-testid=\"neeto-molecules-share-via-email-send-from\"\n label={t(\"neetoMolecules.shareViaEmail.sendFrom\")}\n name=\"sendFromEmail\"\n />\n )}\n {!disableReplyTo && (\n <Input\n required\n data-testid=\"replyTo-field\"\n label={t(\"neetoMolecules.shareViaEmail.replyTo\")}\n name=\"replyToEmail\"\n className={classnames({\n \"w-full flex-grow-0\": showSendFromField,\n })}\n />\n )}\n </div>\n </div>\n {children && (\n <div className=\"neeto-ui-border-gray-300 mt-4 border-t py-4\">\n <h3 className=\"mb-4\">\n {t(\"neetoMolecules.shareViaEmail.additionalOptions\")}\n </h3>\n {children}\n </div>\n )}\n <div className=\"mt-6\">\n <ActionBlock\n cancelButtonProps={{\n label: t(\"neetoMolecules.shareViaEmail.reset\"),\n type: \"reset\",\n onClick: handleReset,\n }}\n submitButtonProps={{\n label: t(\"neetoMolecules.shareViaEmail.sendEmail\"),\n }}\n />\n </div>\n </>\n );\n};\n\nexport default Form;\n","import React from \"react\";\n\nimport { LeftArrow } from \"neetoicons\";\nimport { Button, Typography } from \"neetoui\";\nimport { Form } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport EmailPreview from \"components/EmailPreview\";\n\nimport EmailForm from \"./Form\";\nimport { emailFormValidationSchema, generateInitialValues } from \"./utils\";\n\nconst ShareViaEmail = ({\n showSendFromField = false,\n backToUrl,\n handleSubmit,\n children,\n description,\n defaultValues,\n disableReplyTo,\n productName,\n showVideoEmbedInEditor,\n title = \"\",\n}) => {\n const { t } = useTranslation();\n\n const shareViaEmailTitle = title || t(\"neetoMolecules.shareViaEmail.title\");\n const sendToEmails = notifyEmails => notifyEmails.map(email => email?.value);\n\n return (\n <div className=\"neeto-ui-bg-gray-100 flex w-full flex-1 flex-col p-6 md:p-8\">\n <div className=\"mx-auto flex w-full max-w-7xl flex-col\">\n <Form\n scrollToErrorField\n formProps={{ noValidate: true }}\n formikProps={{\n enableReinitialize: true,\n validateOnMount: true,\n initialValues: generateInitialValues(defaultValues),\n validationSchema: emailFormValidationSchema(disableReplyTo),\n onSubmit: handleSubmit,\n }}\n >\n {({ values }) => (\n <div className=\"grid grid-cols-1 gap-8 md:grid-cols-12\">\n <div className=\"col-span-1 md:col-span-6 lg:col-span-5\">\n {backToUrl && (\n <Button\n className=\"mb-4\"\n data-testid=\"back-to-url-button\"\n icon={LeftArrow}\n iconPosition=\"left\"\n label={t(\"neetoMolecules.shareViaEmail.backToShare\")}\n size=\"small\"\n style=\"link\"\n to={backToUrl}\n />\n )}\n <div className=\"mb-6\">\n <Typography\n className=\"mb-0.5 break-words\"\n data-cy=\"share-via-email-heading\"\n lineHeight=\"normal\"\n style=\"h2\"\n weight=\"semibold\"\n >\n {shareViaEmailTitle}\n </Typography>\n {description && (\n <Typography\n className=\"neeto-ui-text-gray-700\"\n data-cy=\"share-via-email-sub-heading\"\n lineHeight=\"normal\"\n style=\"body2\"\n >\n {description}\n </Typography>\n )}\n </div>\n <EmailForm\n {...{\n disableReplyTo,\n showSendFromField,\n showVideoEmbedInEditor,\n }}\n >\n {children}\n </EmailForm>\n </div>\n <div className=\"col-span-1 md:col-span-6 lg:col-span-7\">\n <EmailPreview\n {...{ productName }}\n actionButtonText={values.actionButtonText}\n body={values.emailBody}\n className=\"sticky pt-1 md:mt-28\"\n subject={values.emailSubject}\n to={sendToEmails(values.notifyEmails)}\n />\n </div>\n </div>\n )}\n </Form>\n </div>\n </div>\n );\n};\n\nShareViaEmail.propTypes = {\n /**\n * The path to navigate back to the required page on clicking the 'Back to share' button.\n */\n backToUrl: PropTypes.string,\n /**\n * The function that handles submitting of values to the API.\n */\n handleSubmit: PropTypes.func,\n /**\n * React components that can be passed on as children, to add optional fields.\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n /**\n * Description text to be displayed under the component title.\n */\n description: PropTypes.string,\n /**\n * An object to assign default values to the email form.\n */\n defaultValues: PropTypes.shape({\n sendFromEmail: PropTypes.string,\n replyToEmail: PropTypes.string,\n actionButtonText: PropTypes.string,\n emailSubject: PropTypes.string,\n emailBody: PropTypes.string,\n }),\n /**\n * Boolean value to show the \"Send From\" field if needed.\n */\n showSendFromField: PropTypes.bool,\n /**\n * Boolean value to hide the \"Reply to\" field if not needed.\n */\n disableReplyTo: PropTypes.bool,\n /**\n * product name for the `<EmailPreview />` component can be passed.\n */\n productName: PropTypes.string,\n /**\n * Boolean value to show video url as embed video in email body.\n */\n showVideoEmbedInEditor: PropTypes.bool,\n /**\n * To specify the title of the component. Defaults to \"Share via email\"\n */\n title: PropTypes.string,\n};\n\nexport default ShareViaEmail;\n"],"names":["INITIAL_VALUES","sendFromEmail","replyToEmail","notifyEmails","emailSubject","emailBody","isSendLaterEnabled","sendEmailDatetime","undefined","category","actionButtonText","EDITOR_ADDONS","EmailBody","_ref","ref","id","showVideoEmbedInEditor","_useTranslation","useTranslation","t","React","createElement","FormikEditor","required","className","label","name","addons","concat","_toConsumableArray","forwardRef","FormikDatePicker","props","_objectWithoutProperties","_excluded","_useField","useField","_useField2","_slicedToArray","field","meta","setValue","DatePicker","_extends","onChange","date","isPastDate","dayjs","isBefore","subtract","generateInitialValues","defaultValues","_objectSpread","emailFormValidationSchema","disableReplyTo","yup","object","shape","string","test","value","isEditorEmpty","trim","email","array","min","emails","every","prop","when","is","then","Form","showSendFromField","children","_useFormikContext","useFormikContext","values","initialValues","editorRef","useRef","handleReset","current","editor","commands","setContent","Fragment","SendToFields","showUploadCsvButton","emailInputProps","Input","Label","Switch","Typography","component","lineHeight","style","weight","autoFocus","showTime","disabledDate","picker","size","type","classnames","ActionBlock","cancelButtonProps","onClick","submitButtonProps","ShareViaEmail","_ref$showSendFromFiel","backToUrl","handleSubmit","description","productName","_ref$title","title","shareViaEmailTitle","sendToEmails","map","scrollToErrorField","formProps","noValidate","formikProps","enableReinitialize","validateOnMount","validationSchema","onSubmit","_ref2","Button","icon","LeftArrow","iconPosition","to","EmailForm","EmailPreview","body","subject"],"mappings":"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"}
1
+ {"version":3,"file":"ShareViaEmail.js","sources":["../../src/components/ShareViaEmail/constants.js","../../src/components/ShareViaEmail/EmailBodyEditor.jsx","../../src/components/ShareViaEmail/utils.js","../../src/components/ShareViaEmail/FormikDatePicker.jsx","../../src/components/ShareViaEmail/Form.jsx","../../src/components/ShareViaEmail/index.jsx"],"sourcesContent":["export const ONE_MEGABYTE = 1_048_576;\n\nexport const INITIAL_VALUES = {\n sendFromEmail: \"\",\n replyToEmail: \"\",\n notifyEmails: [],\n emailSubject: \"\",\n emailBody: \"\",\n isSendLaterEnabled: false,\n sendEmailDatetime: undefined,\n category: \"email_share\",\n actionButtonText: \"\",\n};\n\nexport const EDITOR_ADDONS = [\n \"emoji\",\n \"block-quote\",\n \"image-upload\",\n \"divider\",\n];\n\nexport const ALLOWED_FILE_PICKER_TYPES = [\".csv\"];\n","import React, { forwardRef } from \"react\";\n\nimport { FormikEditor } from \"neetoeditor\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { EDITOR_ADDONS } from \"./constants\";\n\nconst EmailBody = ({ id, showVideoEmbedInEditor }, ref) => {\n const { t } = useTranslation();\n\n return (\n <FormikEditor\n required\n className=\"mb-6\"\n data-cy=\"email-body\"\n id={id}\n label={t(\"neetoMolecules.shareViaEmail.emailBody\")}\n name=\"emailBody\"\n ref={ref}\n addons={\n showVideoEmbedInEditor\n ? [...EDITOR_ADDONS, \"video-embed\"]\n : EDITOR_ADDONS\n }\n />\n );\n};\n\nexport default forwardRef(EmailBody);\n","import dayjs from \"dayjs\";\nimport { t } from \"i18next\";\nimport { isNot } from \"neetocist\";\nimport { isEditorEmpty } from \"neetoeditor\";\nimport Papa from \"papaparse\";\nimport { prop } from \"ramda\";\nimport { string } from \"yup\";\nimport * as yup from \"yup\";\n\nimport { INITIAL_VALUES } from \"./constants\";\n\nconst isValidEmail = email => string().email().isValidSync(email);\n\nexport const isPastDate = date =>\n dayjs(date).isBefore(dayjs().subtract(1, \"days\"));\n\nexport const createEmailOptions = (emails = []) =>\n emails.map(email => ({\n label: email,\n value: email,\n valid: isValidEmail(email),\n }));\n\nexport const parseCsvEmails = file =>\n new Promise(resolve => {\n Papa.parse(file, {\n header: true,\n skipEmptyLines: true,\n transformHeader: h => h.toLowerCase().replace(/\\W/g, \"\"),\n complete: results => {\n const isEmailFieldPresent = results.meta.fields?.includes(\"email\");\n if (!isEmailFieldPresent) return resolve([]);\n\n const emails = results.data\n .map(item => item.email?.trim())\n .filter(isNot(undefined));\n\n return resolve(createEmailOptions(emails));\n },\n });\n });\n\nexport const generateInitialValues = defaultValues => ({\n ...INITIAL_VALUES,\n ...defaultValues,\n});\n\nexport const emailFormValidationSchema = disableReplyTo =>\n yup.object().shape({\n emailSubject: yup\n .string()\n .required(\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.subject\")\n ),\n emailBody: yup\n .string()\n .test(\n \"emailBody\",\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.emailBody\"),\n value => !isEditorEmpty(value)\n ),\n sendFromEmail: yup\n .string()\n .trim()\n .email(\n t(\"neetoMolecules.shareViaEmail.validations.invalidField.emailAddress\")\n )\n .required(\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.sendFrom\")\n ),\n replyToEmail:\n !disableReplyTo &&\n yup\n .string()\n .trim()\n .email(\n t(\n \"neetoMolecules.shareViaEmail.validations.invalidField.emailAddress\"\n )\n )\n .required(\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.replyTo\")\n ),\n notifyEmails: yup\n .array()\n .min(\n 1,\n t(\n \"neetoMolecules.shareViaEmail.validations.atleastOneIsRequired.emailAddress\"\n )\n )\n .test(\n \"are-all-emails-valid\",\n t(\"neetoMolecules.shareViaEmail.validations.invalidField.emailAddress\"),\n emails => emails.every(prop(\"valid\"))\n ),\n isSendLaterEnabled: yup.boolean(),\n sendEmailDatetime: yup.date().when(\"isSendLaterEnabled\", {\n is: true,\n then: yup\n .date()\n .required(\n t(\"neetoMolecules.shareViaEmail.validations.requiredField.sendLater\")\n ),\n }),\n name: yup.string(),\n actionButtonText: yup\n .string()\n .required(\n t(\n \"neetoMolecules.shareViaEmail.validations.requiredField.startButtonText\"\n )\n ),\n });\n\nexport const disabledTime = selectedDate => {\n const current = selectedDate ? dayjs(selectedDate).startOf(\"day\") : null;\n\n if (!current) return {};\n\n const today = dayjs().startOf(\"day\");\n const isAfterToday = current.isAfter(today, \"day\");\n const isBeforeToday = current.isBefore(today, \"day\");\n\n if (isAfterToday) {\n return { minTime: null, maxTime: null };\n } else if (isBeforeToday) {\n return { minTime: \"0:00\", maxTime: \"24:00\" };\n }\n\n // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats\n const currentTime = dayjs().format(\"HH:mm\");\n const endOfDay = \"23:59\";\n\n return { minTime: currentTime, maxTime: endOfDay };\n};\n","import React, { useMemo } from \"react\";\n\nimport { useField } from \"formik\";\nimport { DateTimePicker } from \"neetoui\";\n\nimport { disabledTime } from \"./utils\";\n\nconst FormikDatePicker = ({ name, disabledDate, ...props }) => {\n const [field, meta, { setValue }] = useField(name);\n\n const disabledTimeFrame = useMemo(\n () => disabledTime(field?.value),\n [field?.value]\n );\n\n return (\n <DateTimePicker\n {...field}\n {...meta}\n timePickerProps={disabledTimeFrame}\n datePickerProps={{\n disabledDate,\n \"data-cy\": props[\"data-cy\"],\n \"data-testid\": props[\"data-testid\"],\n }}\n onChange={date => setValue(date || undefined)}\n {...props}\n />\n );\n};\n\nexport default FormikDatePicker;\n","import React, { useRef } from \"react\";\n\nimport classnames from \"classnames\";\nimport { useFormikContext } from \"formik\";\nimport { Typography, Label } from \"neetoui\";\nimport { Input, Switch, ActionBlock } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport SendToFields from \"components/SendToFields\";\n\nimport EmailBody from \"./EmailBodyEditor\";\nimport FormikDatePicker from \"./FormikDatePicker\";\nimport { isPastDate } from \"./utils\";\n\nconst Form = ({\n showSendFromField,\n disableReplyTo,\n showVideoEmbedInEditor,\n children,\n}) => {\n const { values, initialValues } = useFormikContext();\n const editorRef = useRef();\n const { t } = useTranslation();\n\n const handleReset = () =>\n editorRef.current.editor.commands.setContent(initialValues.emailBody);\n\n return (\n <>\n <div className=\"space-y-4\">\n <SendToFields\n showUploadCsvButton\n emailInputProps={{\n label: t(\"neetoMolecules.shareViaEmail.sendTo\"),\n name: \"notifyEmails\",\n required: true,\n }}\n />\n <Input\n required\n className=\"col-span-1\"\n label={t(\"neetoMolecules.shareViaEmail.subject\")}\n name=\"emailSubject\"\n />\n <EmailBody\n {...{ showVideoEmbedInEditor }}\n id=\"emailBody\"\n ref={editorRef}\n />\n <div ref={editorRef} />\n <div>\n <Label className=\"flex items-center gap-2\">\n <Switch\n data-cy=\"send-later-switch\"\n data-testid=\"send-later-switch\"\n name=\"isSendLaterEnabled\"\n />\n <Typography\n component=\"span\"\n data-cy=\"send-later-label\"\n lineHeight=\"normal\"\n style=\"h4\"\n weight=\"semibold\"\n >\n {t(\"neetoMolecules.shareViaEmail.sendLater\")}\n </Typography>\n </Label>\n </div>\n {values.isSendLaterEnabled && (\n <FormikDatePicker\n autoFocus\n data-cy=\"email-share-date-input\"\n data-testid=\"formik-date-picker\"\n disabledDate={isPastDate}\n name=\"sendEmailDatetime\"\n size=\"large\"\n />\n )}\n <Input\n required\n label={t(\"neetoMolecules.shareViaEmail.startButtonText\")}\n name=\"actionButtonText\"\n />\n <div className=\"flex flex-col gap-4 sm:flex-row sm:gap-6\">\n {showSendFromField && (\n <Input\n required\n className={classnames({ \"w-full flex-grow-0\": !disableReplyTo })}\n data-testid=\"neeto-molecules-share-via-email-send-from\"\n label={t(\"neetoMolecules.shareViaEmail.sendFrom\")}\n name=\"sendFromEmail\"\n />\n )}\n {!disableReplyTo && (\n <Input\n required\n data-testid=\"replyTo-field\"\n label={t(\"neetoMolecules.shareViaEmail.replyTo\")}\n name=\"replyToEmail\"\n className={classnames({\n \"w-full flex-grow-0\": showSendFromField,\n })}\n />\n )}\n </div>\n </div>\n {children && (\n <div className=\"neeto-ui-border-gray-300 mt-4 border-t py-4\">\n <h3 className=\"mb-4\">\n {t(\"neetoMolecules.shareViaEmail.additionalOptions\")}\n </h3>\n {children}\n </div>\n )}\n <div className=\"mt-6\">\n <ActionBlock\n cancelButtonProps={{\n label: t(\"neetoMolecules.shareViaEmail.reset\"),\n type: \"reset\",\n onClick: handleReset,\n }}\n submitButtonProps={{\n label: t(\"neetoMolecules.shareViaEmail.sendEmail\"),\n }}\n />\n </div>\n </>\n );\n};\n\nexport default Form;\n","import React from \"react\";\n\nimport { LeftArrow } from \"neetoicons\";\nimport { Button, Typography } from \"neetoui\";\nimport { Form } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport EmailPreview from \"components/EmailPreview\";\n\nimport EmailForm from \"./Form\";\nimport { emailFormValidationSchema, generateInitialValues } from \"./utils\";\n\nconst ShareViaEmail = ({\n showSendFromField = false,\n backToUrl,\n handleSubmit,\n children,\n description,\n defaultValues,\n disableReplyTo,\n productName,\n showVideoEmbedInEditor,\n title = \"\",\n}) => {\n const { t } = useTranslation();\n\n const shareViaEmailTitle = title || t(\"neetoMolecules.shareViaEmail.title\");\n const sendToEmails = notifyEmails => notifyEmails.map(email => email?.value);\n\n return (\n <div className=\"neeto-ui-bg-gray-100 flex w-full flex-1 flex-col p-6 md:p-8\">\n <div className=\"mx-auto flex w-full max-w-7xl flex-col\">\n <Form\n scrollToErrorField\n formProps={{ noValidate: true }}\n formikProps={{\n enableReinitialize: true,\n validateOnMount: true,\n initialValues: generateInitialValues(defaultValues),\n validationSchema: emailFormValidationSchema(disableReplyTo),\n onSubmit: handleSubmit,\n }}\n >\n {({ values }) => (\n <div className=\"grid grid-cols-1 gap-8 md:grid-cols-12\">\n <div className=\"col-span-1 md:col-span-6 lg:col-span-5\">\n {backToUrl && (\n <Button\n className=\"mb-4\"\n data-testid=\"back-to-url-button\"\n icon={LeftArrow}\n iconPosition=\"left\"\n label={t(\"neetoMolecules.shareViaEmail.backToShare\")}\n size=\"small\"\n style=\"link\"\n to={backToUrl}\n />\n )}\n <div className=\"mb-6\">\n <Typography\n className=\"mb-0.5 break-words\"\n data-cy=\"share-via-email-heading\"\n lineHeight=\"normal\"\n style=\"h2\"\n weight=\"semibold\"\n >\n {shareViaEmailTitle}\n </Typography>\n {description && (\n <Typography\n className=\"neeto-ui-text-gray-700\"\n data-cy=\"share-via-email-sub-heading\"\n lineHeight=\"normal\"\n style=\"body2\"\n >\n {description}\n </Typography>\n )}\n </div>\n <EmailForm\n {...{\n disableReplyTo,\n showSendFromField,\n showVideoEmbedInEditor,\n }}\n >\n {children}\n </EmailForm>\n </div>\n <div className=\"col-span-1 md:col-span-6 lg:col-span-7\">\n <EmailPreview\n {...{ productName }}\n actionButtonText={values.actionButtonText}\n body={values.emailBody}\n className=\"sticky pt-1 md:mt-28\"\n subject={values.emailSubject}\n to={sendToEmails(values.notifyEmails)}\n />\n </div>\n </div>\n )}\n </Form>\n </div>\n </div>\n );\n};\n\nShareViaEmail.propTypes = {\n /**\n * The path to navigate back to the required page on clicking the 'Back to share' button.\n */\n backToUrl: PropTypes.string,\n /**\n * The function that handles submitting of values to the API.\n */\n handleSubmit: PropTypes.func,\n /**\n * React components that can be passed on as children, to add optional fields.\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n /**\n * Description text to be displayed under the component title.\n */\n description: PropTypes.string,\n /**\n * An object to assign default values to the email form.\n */\n defaultValues: PropTypes.shape({\n sendFromEmail: PropTypes.string,\n replyToEmail: PropTypes.string,\n actionButtonText: PropTypes.string,\n emailSubject: PropTypes.string,\n emailBody: PropTypes.string,\n }),\n /**\n * Boolean value to show the \"Send From\" field if needed.\n */\n showSendFromField: PropTypes.bool,\n /**\n * Boolean value to hide the \"Reply to\" field if not needed.\n */\n disableReplyTo: PropTypes.bool,\n /**\n * product name for the `<EmailPreview />` component can be passed.\n */\n productName: PropTypes.string,\n /**\n * Boolean value to show video url as embed video in email body.\n */\n showVideoEmbedInEditor: PropTypes.bool,\n /**\n * To specify the title of the component. Defaults to \"Share via email\"\n */\n title: PropTypes.string,\n};\n\nexport default ShareViaEmail;\n"],"names":["INITIAL_VALUES","sendFromEmail","replyToEmail","notifyEmails","emailSubject","emailBody","isSendLaterEnabled","sendEmailDatetime","undefined","category","actionButtonText","EDITOR_ADDONS","EmailBody","_ref","ref","id","showVideoEmbedInEditor","_useTranslation","useTranslation","t","React","createElement","FormikEditor","required","className","label","name","addons","concat","_toConsumableArray","forwardRef","isPastDate","date","dayjs","isBefore","subtract","generateInitialValues","defaultValues","_objectSpread","emailFormValidationSchema","disableReplyTo","yup","object","shape","string","test","value","isEditorEmpty","trim","email","array","min","emails","every","prop","when","is","then","disabledTime","selectedDate","current","startOf","today","isAfterToday","isAfter","isBeforeToday","minTime","maxTime","currentTime","format","endOfDay","FormikDatePicker","disabledDate","props","_objectWithoutProperties","_excluded","_useField","useField","_useField2","_slicedToArray","field","meta","setValue","disabledTimeFrame","useMemo","DateTimePicker","_extends","timePickerProps","datePickerProps","onChange","Form","showSendFromField","children","_useFormikContext","useFormikContext","values","initialValues","editorRef","useRef","handleReset","editor","commands","setContent","Fragment","SendToFields","showUploadCsvButton","emailInputProps","Input","Label","Switch","Typography","component","lineHeight","style","weight","autoFocus","size","classnames","ActionBlock","cancelButtonProps","type","onClick","submitButtonProps","ShareViaEmail","_ref$showSendFromFiel","backToUrl","handleSubmit","description","productName","_ref$title","title","shareViaEmailTitle","sendToEmails","map","scrollToErrorField","formProps","noValidate","formikProps","enableReinitialize","validateOnMount","validationSchema","onSubmit","_ref2","Button","icon","LeftArrow","iconPosition","to","EmailForm","EmailPreview","body","subject"],"mappings":"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"}
@@ -7,6 +7,8 @@ var reactI18next = require('react-i18next');
7
7
  var reactQuery = require('react-query');
8
8
  var axios = require('axios');
9
9
  var dayjs = require('dayjs');
10
+ var timezone = require('dayjs/plugin/timezone');
11
+ var utc = require('dayjs/plugin/utc');
10
12
  var initializers = require('@bigbinary/neeto-commons-frontend/initializers');
11
13
 
12
14
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -14,6 +16,8 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
14
16
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
15
17
  var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
16
18
  var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
19
+ var timezone__default = /*#__PURE__*/_interopDefaultLegacy(timezone);
20
+ var utc__default = /*#__PURE__*/_interopDefaultLegacy(utc);
17
21
 
18
22
  var timeZoneUrl = "api/v1/time_zone";
19
23
  var updateTimeZone = function updateTimeZone(payload) {
@@ -31,6 +35,8 @@ var useUpdateTimeZone = function useUpdateTimeZone() {
31
35
  });
32
36
  };
33
37
 
38
+ dayjs__default["default"].extend(utc__default["default"]);
39
+ dayjs__default["default"].extend(timezone__default["default"]);
34
40
  var getBrowserTimeZone = function getBrowserTimeZone() {
35
41
  return dayjs__default["default"].tz.guess();
36
42
  };
@@ -39,7 +45,10 @@ var getUserTimeZone = function getUserTimeZone() {
39
45
  return (_globalProps$user = initializers.globalProps.user) === null || _globalProps$user === void 0 ? void 0 : _globalProps$user.timeZone;
40
46
  };
41
47
  var checkIfTwoTimeZonesAreSame = function checkIfTwoTimeZonesAreSame(timeZone1, timeZone2) {
42
- return dayjs__default["default"]().tz(timeZone1).format("Z") === dayjs__default["default"]().tz(timeZone2).format("Z");
48
+ return (
49
+ // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats
50
+ dayjs__default["default"]().tz(timeZone1).format("Z") === dayjs__default["default"]().tz(timeZone2).format("Z")
51
+ );
43
52
  };
44
53
 
45
54
  var TimezoneMismatchModal = function TimezoneMismatchModal(_ref) {
@@ -1 +1 @@
1
- {"version":3,"file":"TimezoneMismatchModal.js","sources":["../../src/components/TimezoneMismatchModal/apis/time_zone.js","../../src/components/TimezoneMismatchModal/useTimeZoneApi.js","../../src/components/TimezoneMismatchModal/utils.js","../../src/components/TimezoneMismatchModal/index.jsx"],"sourcesContent":["import axios from \"axios\";\n\nconst timeZoneUrl = \"api/v1/time_zone\";\n\nconst updateTimeZone = payload => axios.patch(timeZoneUrl, payload);\n\nconst timeZoneApi = { updateTimeZone };\n\nexport default timeZoneApi;\n","import { useMutation } from \"react-query\";\n\nimport timeZoneApi from \"./apis/time_zone\";\n\nconst useUpdateTimeZone = () =>\n useMutation(timeZoneApi.updateTimeZone, {\n onSuccess: () => window.location.reload(),\n });\n\nexport { useUpdateTimeZone };\n","import dayjs from \"dayjs\";\nimport { globalProps } from \"neetocommons/initializers\";\n\nexport const getBrowserTimeZone = () => dayjs.tz.guess();\n\nexport const getUserTimeZone = () => globalProps.user?.timeZone;\n\nexport const checkIfTwoTimeZonesAreSame = (timeZone1, timeZone2) =>\n dayjs().tz(timeZone1).format(\"Z\") === dayjs().tz(timeZone2).format(\"Z\");\n","/* eslint-disable @bigbinary/neeto/use-webpack-alias */\nimport React, { useEffect, useState } from \"react\";\n\nimport { Button, Modal, Typography } from \"@bigbinary/neetoui\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useUpdateTimeZone } from \"./useTimeZoneApi\";\nimport {\n checkIfTwoTimeZonesAreSame,\n getBrowserTimeZone,\n getUserTimeZone,\n} from \"./utils\";\n\nconst TimezoneMismatchModal = ({ isOpen = false, onClose = () => {} }) => {\n const { t } = useTranslation();\n const [isTimezoneModalOpen, setIsTimezoneModalOpen] = useState(false);\n const { isLoading, mutate: updateTimeZone } = useUpdateTimeZone();\n const isUserAndBrowserTimeZoneSame = checkIfTwoTimeZonesAreSame(\n getUserTimeZone(),\n getBrowserTimeZone()\n );\n\n const handleUpdateTimeZone = () => {\n const payload = { timeZone: getBrowserTimeZone() };\n\n updateTimeZone(payload, {\n onSuccess: () => {\n setIsTimezoneModalOpen(false);\n onClose();\n },\n });\n };\n\n const handleCancel = () => {\n setIsTimezoneModalOpen(false);\n onClose();\n };\n\n useEffect(() => {\n if (process.env.RAILS_ENV !== \"heroku\") {\n setIsTimezoneModalOpen(!isUserAndBrowserTimeZoneSame);\n }\n }, []);\n\n return (\n <Modal\n closeOnOutsideClick={false}\n isOpen={isTimezoneModalOpen || isOpen}\n size=\"large\"\n onClose={handleCancel}\n >\n <Modal.Header>\n <Typography style=\"h2\" weight=\"normal\">\n {t(\"neetoMolecules.alert.timezone.title\")}\n </Typography>\n </Modal.Header>\n <Modal.Body>\n <span className=\"flex flex-col space-y-4\">\n <Typography component=\"span\" style=\"body2\">\n {t(\"neetoMolecules.alert.timezone.message\", {\n entity: globalProps.appName,\n })}\n </Typography>\n <Typography component=\"span\" style=\"h4\">\n {t(\"neetoMolecules.alert.timezone.userTimezone\", {\n entity: getUserTimeZone(),\n })}\n </Typography>\n <Typography component=\"span\" style=\"h4\">\n {t(\"neetoMolecules.alert.timezone.browserTimezone\", {\n entity: getBrowserTimeZone(),\n })}\n </Typography>\n </span>\n </Modal.Body>\n <Modal.Footer className=\"space-x-2\">\n <Button\n data-testid=\"update-timezone-button\"\n disabled={isLoading}\n label={t(\"neetoMolecules.alert.timezone.updateProfile\")}\n loading={isLoading}\n style=\"primary\"\n onClick={handleUpdateTimeZone}\n />\n <Button\n label={t(\"neetoMolecules.common.actions.cancel\")}\n style=\"text\"\n onClick={handleCancel}\n />\n </Modal.Footer>\n </Modal>\n );\n};\n\nTimezoneMismatchModal.propTypes = {\n /**\n * Boolean value to toggle the modal.\n */\n isOpen: PropTypes.bool,\n /**\n * The function that's called after the modal is closed.\n */\n onClose: PropTypes.func,\n};\n\nexport default TimezoneMismatchModal;\n"],"names":["timeZoneUrl","updateTimeZone","payload","axios","patch","timeZoneApi","useUpdateTimeZone","useMutation","onSuccess","window","location","reload","getBrowserTimeZone","dayjs","tz","guess","getUserTimeZone","_globalProps$user","globalProps","user","timeZone","checkIfTwoTimeZonesAreSame","timeZone1","timeZone2","format","TimezoneMismatchModal","_ref","_ref$isOpen","isOpen","_ref$onClose","onClose","_useTranslation","useTranslation","t","_useState","useState","_useState2","_slicedToArray","isTimezoneModalOpen","setIsTimezoneModalOpen","_useUpdateTimeZone","isLoading","mutate","isUserAndBrowserTimeZoneSame","handleUpdateTimeZone","handleCancel","useEffect","process","env","RAILS_ENV","React","createElement","Modal","closeOnOutsideClick","size","Header","Typography","style","weight","Body","className","component","entity","appName","Footer","Button","disabled","label","loading","onClick"],"mappings":"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"}
1
+ {"version":3,"file":"TimezoneMismatchModal.js","sources":["../../src/components/TimezoneMismatchModal/apis/time_zone.js","../../src/components/TimezoneMismatchModal/useTimeZoneApi.js","../../src/components/TimezoneMismatchModal/utils.js","../../src/components/TimezoneMismatchModal/index.jsx"],"sourcesContent":["import axios from \"axios\";\n\nconst timeZoneUrl = \"api/v1/time_zone\";\n\nconst updateTimeZone = payload => axios.patch(timeZoneUrl, payload);\n\nconst timeZoneApi = { updateTimeZone };\n\nexport default timeZoneApi;\n","import { useMutation } from \"react-query\";\n\nimport timeZoneApi from \"./apis/time_zone\";\n\nconst useUpdateTimeZone = () =>\n useMutation(timeZoneApi.updateTimeZone, {\n onSuccess: () => window.location.reload(),\n });\n\nexport { useUpdateTimeZone };\n","import dayjs from \"dayjs\";\nimport timezone from \"dayjs/plugin/timezone\";\nimport utc from \"dayjs/plugin/utc\";\nimport { globalProps } from \"neetocommons/initializers\";\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\nexport const getBrowserTimeZone = () => dayjs.tz.guess();\n\nexport const getUserTimeZone = () => globalProps.user?.timeZone;\n\nexport const checkIfTwoTimeZonesAreSame = (timeZone1, timeZone2) =>\n // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats\n dayjs().tz(timeZone1).format(\"Z\") === dayjs().tz(timeZone2).format(\"Z\");\n","/* eslint-disable @bigbinary/neeto/use-webpack-alias */\nimport React, { useEffect, useState } from \"react\";\n\nimport { Button, Modal, Typography } from \"@bigbinary/neetoui\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useUpdateTimeZone } from \"./useTimeZoneApi\";\nimport {\n checkIfTwoTimeZonesAreSame,\n getBrowserTimeZone,\n getUserTimeZone,\n} from \"./utils\";\n\nconst TimezoneMismatchModal = ({ isOpen = false, onClose = () => {} }) => {\n const { t } = useTranslation();\n const [isTimezoneModalOpen, setIsTimezoneModalOpen] = useState(false);\n const { isLoading, mutate: updateTimeZone } = useUpdateTimeZone();\n const isUserAndBrowserTimeZoneSame = checkIfTwoTimeZonesAreSame(\n getUserTimeZone(),\n getBrowserTimeZone()\n );\n\n const handleUpdateTimeZone = () => {\n const payload = { timeZone: getBrowserTimeZone() };\n\n updateTimeZone(payload, {\n onSuccess: () => {\n setIsTimezoneModalOpen(false);\n onClose();\n },\n });\n };\n\n const handleCancel = () => {\n setIsTimezoneModalOpen(false);\n onClose();\n };\n\n useEffect(() => {\n if (process.env.RAILS_ENV !== \"heroku\") {\n setIsTimezoneModalOpen(!isUserAndBrowserTimeZoneSame);\n }\n }, []);\n\n return (\n <Modal\n closeOnOutsideClick={false}\n isOpen={isTimezoneModalOpen || isOpen}\n size=\"large\"\n onClose={handleCancel}\n >\n <Modal.Header>\n <Typography style=\"h2\" weight=\"normal\">\n {t(\"neetoMolecules.alert.timezone.title\")}\n </Typography>\n </Modal.Header>\n <Modal.Body>\n <span className=\"flex flex-col space-y-4\">\n <Typography component=\"span\" style=\"body2\">\n {t(\"neetoMolecules.alert.timezone.message\", {\n entity: globalProps.appName,\n })}\n </Typography>\n <Typography component=\"span\" style=\"h4\">\n {t(\"neetoMolecules.alert.timezone.userTimezone\", {\n entity: getUserTimeZone(),\n })}\n </Typography>\n <Typography component=\"span\" style=\"h4\">\n {t(\"neetoMolecules.alert.timezone.browserTimezone\", {\n entity: getBrowserTimeZone(),\n })}\n </Typography>\n </span>\n </Modal.Body>\n <Modal.Footer className=\"space-x-2\">\n <Button\n data-testid=\"update-timezone-button\"\n disabled={isLoading}\n label={t(\"neetoMolecules.alert.timezone.updateProfile\")}\n loading={isLoading}\n style=\"primary\"\n onClick={handleUpdateTimeZone}\n />\n <Button\n label={t(\"neetoMolecules.common.actions.cancel\")}\n style=\"text\"\n onClick={handleCancel}\n />\n </Modal.Footer>\n </Modal>\n );\n};\n\nTimezoneMismatchModal.propTypes = {\n /**\n * Boolean value to toggle the modal.\n */\n isOpen: PropTypes.bool,\n /**\n * The function that's called after the modal is closed.\n */\n onClose: PropTypes.func,\n};\n\nexport default TimezoneMismatchModal;\n"],"names":["timeZoneUrl","updateTimeZone","payload","axios","patch","timeZoneApi","useUpdateTimeZone","useMutation","onSuccess","window","location","reload","dayjs","extend","utc","timezone","getBrowserTimeZone","tz","guess","getUserTimeZone","_globalProps$user","globalProps","user","timeZone","checkIfTwoTimeZonesAreSame","timeZone1","timeZone2","format","TimezoneMismatchModal","_ref","_ref$isOpen","isOpen","_ref$onClose","onClose","_useTranslation","useTranslation","t","_useState","useState","_useState2","_slicedToArray","isTimezoneModalOpen","setIsTimezoneModalOpen","_useUpdateTimeZone","isLoading","mutate","isUserAndBrowserTimeZoneSame","handleUpdateTimeZone","handleCancel","useEffect","process","env","RAILS_ENV","React","createElement","Modal","closeOnOutsideClick","size","Header","Typography","style","weight","Body","className","component","entity","appName","Footer","Button","disabled","label","loading","onClick"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neeto-molecules",
3
- "version": "1.13.2",
3
+ "version": "1.13.4",
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>",
@@ -120,7 +120,7 @@
120
120
  "browserify": "^17.0.0",
121
121
  "classnames": "^2.3.2",
122
122
  "css-loader": "4.3.0",
123
- "dayjs": "1.11.1",
123
+ "dayjs": "1.11.10",
124
124
  "emoji-mart": "^5.5.2",
125
125
  "eslint": "8.14.0",
126
126
  "eslint-config-prettier": "8.5.0",
@@ -200,7 +200,7 @@
200
200
  "antd": "5.9.2",
201
201
  "axios": "^0.27.2",
202
202
  "classnames": "^2.3.2",
203
- "dayjs": "1.11.1",
203
+ "dayjs": "1.11.10",
204
204
  "emoji-mart": "^5.5.2",
205
205
  "formik": "2.4.5",
206
206
  "i18next": "^22.5.1",
@@ -1,5 +1,8 @@
1
1
  import React from "react";
2
2
  import { SelectProps } from "@bigbinary/neetoui";
3
+ type CurrencyProps = {
4
+ allowedCurrencies?: string[];
5
+ } & SelectProps;
3
6
  /**
4
7
  *
5
8
  * A component that allows you to select a currency.
@@ -8,10 +11,22 @@ import { SelectProps } from "@bigbinary/neetoui";
8
11
  *
9
12
  * @example
10
13
  *
11
- * import * as yup from "yup";
12
- * import Currency from "@bigbinary/neeto-molecules/Currency";
14
+ * import { useState } from "react";
15
+ * import { Currency } from "@bigbinary/neeto-molecules/Currency";
13
16
  *
14
17
  * const CurrencyContainer = () => {
18
+ * const [currency, setCurrency] = useState();
19
+ * return <Currency onChange={setCurrency} />;
20
+ * };
21
+ * @endexample
22
+ * The Currency component wrapped in Formik.
23
+ *
24
+ * @example
25
+ *
26
+ * import * as yup from "yup";
27
+ * import { FormikCurrency } from "@bigbinary/neeto-molecules/Currency";
28
+ *
29
+ * const FormikCurrencyContainer = () => {
15
30
  * return (
16
31
  * <Form
17
32
  * formikProps={{
@@ -21,15 +36,13 @@ import { SelectProps } from "@bigbinary/neetoui";
21
36
  * }),
22
37
  * }}
23
38
  * >
24
- * <Currency />
39
+ * <FormikCurrency />
25
40
  * <Button className="mt-5" label="Submit" type="submit" />
26
41
  * </Form>
27
42
  * );
28
43
  * };
29
44
  * @endexample
30
45
  */
31
- const Currency: React.FC<{
32
- standalone?: boolean;
33
- allowedCurrencies?: string[];
34
- }> & SelectProps;
35
- export default Currency;
46
+ const Currency: React.FC<CurrencyProps>;
47
+ const FormikCurrency: React.FC<CurrencyProps>;
48
+ export { Currency, FormikCurrency };