@bigbinary/neeto-molecules 1.15.19 → 1.15.21

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/EmailForm.js CHANGED
@@ -41,13 +41,22 @@ var EMAIL_FORM_VALIDATION_SCHEMA = yup.object({
41
41
  return !isEditorEmpty(value);
42
42
  })
43
43
  });
44
- var SEND_TO_FIELD_VALIDATION = yup.object({
45
- sendTo: yup.array().min(1, t("neetoMolecules.emailForm.errors.required", {
46
- entity: t("neetoMolecules.emailForm.fields.sendToEmailAddress")
47
- })).test("all-emails-valid", t("neetoMolecules.emailForm.errors.invalidEmailAddress"), function (emails) {
44
+ var sendToFieldValidation = function sendToFieldValidation(maxEmails) {
45
+ var validation = yup.array().test("all-emails-valid", t("neetoMolecules.emailForm.errors.invalidEmailAddress"), function (emails) {
48
46
  return emails === null || emails === void 0 ? void 0 : emails.every(prop("valid"));
49
- }).nullable()
50
- });
47
+ }).test("max-email-count", t("neetoMolecules.emailForm.errors.maxEmails", {
48
+ count: maxEmails
49
+ }), function (emails) {
50
+ return (emails === null || emails === void 0 ? void 0 : emails.length) <= maxEmails;
51
+ });
52
+ return yup.object({
53
+ sendTo: validation.min(1, t("neetoMolecules.emailForm.errors.required", {
54
+ entity: t("neetoMolecules.emailForm.fields.sendToEmailAddress")
55
+ })).nullable(),
56
+ sendToCc: validation,
57
+ sendToBcc: validation
58
+ });
59
+ };
51
60
  var SEND_TO_ID_FIELD_VALIDATION = yup.object({
52
61
  sendToId: yup.string().required(t("neetoMolecules.emailForm.errors.required", {
53
62
  entity: t("neetoMolecules.emailForm.labels.sendTo")
@@ -114,7 +123,6 @@ var SendToField = withT(function (_ref) {
114
123
  var t = _ref.t;
115
124
  return /*#__PURE__*/React__default.createElement(SendToFields, {
116
125
  showCcBccButton: true,
117
- showUploadCsvButton: true,
118
126
  bccInputProps: {
119
127
  label: t("neetoMolecules.emailForm.labels.bCc"),
120
128
  name: "sendToBcc",
@@ -297,10 +305,11 @@ var getValidationSchema = function getValidationSchema(_ref) {
297
305
  var showSendToField = _ref.showSendToField,
298
306
  showReplyToField = _ref.showReplyToField,
299
307
  showSendToAsRadio = _ref.showSendToAsRadio,
300
- customValidations = _ref.customValidations;
308
+ customValidations = _ref.customValidations,
309
+ maxEmails = _ref.maxEmails;
301
310
  var schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();
302
311
  if (showSendToField) {
303
- schema = schema.concat(showSendToAsRadio ? SEND_TO_ID_FIELD_VALIDATION : SEND_TO_FIELD_VALIDATION);
312
+ schema = schema.concat(showSendToAsRadio ? SEND_TO_ID_FIELD_VALIDATION : sendToFieldValidation(maxEmails));
304
313
  }
305
314
  if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);
306
315
  return schema.shape(customValidations);
@@ -322,7 +331,9 @@ var EmailFormProvider = function EmailFormProvider(_ref) {
322
331
  _ref$showReplyToField = _ref.showReplyToField,
323
332
  showReplyToField = _ref$showReplyToField === void 0 ? false : _ref$showReplyToField,
324
333
  _ref$showSendToAsRadi = _ref.showSendToAsRadio,
325
- showSendToAsRadio = _ref$showSendToAsRadi === void 0 ? false : _ref$showSendToAsRadi;
334
+ showSendToAsRadio = _ref$showSendToAsRadi === void 0 ? false : _ref$showSendToAsRadi,
335
+ _ref$maxEmails = _ref.maxEmails,
336
+ maxEmails = _ref$maxEmails === void 0 ? 10 : _ref$maxEmails;
326
337
  return /*#__PURE__*/React__default.createElement("div", {
327
338
  "data-testid": "email-form-provider"
328
339
  }, /*#__PURE__*/React__default.createElement(EmailFormContext.Provider, {
@@ -338,7 +349,8 @@ var EmailFormProvider = function EmailFormProvider(_ref) {
338
349
  showSendToField: showSendToField,
339
350
  showReplyToField: showReplyToField,
340
351
  showSendToAsRadio: showSendToAsRadio,
341
- customValidations: customValidations
352
+ customValidations: customValidations,
353
+ maxEmails: maxEmails
342
354
  }),
343
355
  initialValues: _objectSpread(_objectSpread({}, initialValues), {}, {
344
356
  replyTo: initialValues.replyTo || globalProps.user.email
@@ -1 +1 @@
1
- {"version":3,"file":"EmailForm.js","sources":["../src/components/EmailForm/constants.js","../src/components/EmailForm/contexts/EmailForm.js","../src/components/EmailForm/ReplyToField.jsx","../src/components/EmailForm/SendToField.jsx","../src/components/EmailForm/SubjectField.jsx","../src/components/EmailForm/EmailForm.jsx","../src/components/EmailForm/utils.js","../src/components/EmailForm/EmailFormProvider.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { isEditorEmpty } from \"neetoeditor\";\nimport { prop } from \"ramda\";\nimport * as yup from \"yup\";\n\nexport const INITIAL_FORM_VALUES = {\n sendTo: [],\n sendToId: \"\",\n sendToCc: [],\n sendToBcc: [],\n replyTo: \"\",\n showCopyEmails: false,\n subject: \"\",\n message: \"\",\n};\n\nexport const EMAIL_FORM_VALIDATION_SCHEMA = yup.object({\n subject: yup\n .string()\n .required(t(\"neetoMolecules.emailForm.errors.subjectRequired\")),\n message: yup\n .string()\n .test(\n \"message\",\n t(\"neetoMolecules.emailForm.errors.messageRequired\"),\n value => !isEditorEmpty(value)\n ),\n});\n\nexport const SEND_TO_FIELD_VALIDATION = yup.object({\n sendTo: yup\n .array()\n .min(\n 1,\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.sendToEmailAddress\"),\n })\n )\n .test(\n \"all-emails-valid\",\n t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"),\n emails => emails?.every(prop(\"valid\"))\n )\n .nullable(),\n});\n\nexport const SEND_TO_ID_FIELD_VALIDATION = yup.object({\n sendToId: yup.string().required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n })\n ),\n});\n\nexport const REPLY_TO_FIELD_VALIDATION = yup.object({\n replyTo: yup\n .string()\n .nullable()\n .email(t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"))\n .required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.replyToEmailAddress\"),\n })\n ),\n});\n\nexport const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"divider\",\n \"video-embed\",\n];\n\nexport const ALLOWED_FILE_PICKER_TYPES = [\".csv\"];\n","/* eslint-disable @bigbinary/neeto/use-zustand-for-global-state-management */\nimport React from \"react\";\n\nconst EmailFormContext = React.createContext({\n showSendToField: false,\n showSendToAsRadio: false,\n showReplyToField: false,\n});\n\nexport { EmailFormContext };\n","import React from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { Select, Input } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ReplyToField = ({ replyToOptions }) => {\n const { t } = useTranslation();\n\n const isDropdownField = isNotEmpty(replyToOptions);\n\n const { setFieldValue } = useFormikContext();\n\n if (isDropdownField) {\n return (\n <Select\n isClearable\n className=\"w-full\"\n data-testid=\"replyToOptions\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n options={replyToOptions}\n labelProps={{\n helpIconProps: {\n [\"data-testid\"]: \"reply-to-tooltip\",\n tooltipProps: {\n content: t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n },\n }}\n onChange={data => setFieldValue(\"replyTo\", data?.value ?? \"\")}\n />\n );\n }\n\n return (\n <Input\n autoFocus\n required\n className=\"w-full\"\n data-testid=\"replyToInput\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.emailPlaceholder\")}\n size=\"large\"\n labelProps={{\n helpIconProps: {\n [\"data-testid\"]: \"reply-to-tooltip\",\n tooltipProps: {\n content: t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n },\n }}\n />\n );\n};\n\nexport default ReplyToField;\n","import React from \"react\";\n\nimport withT from \"neetocommons/react-utils/withT\";\n\nimport SendToFields from \"components/SendToFields\";\n\nconst SendToField = withT(({ t }) => (\n <SendToFields\n showCcBccButton\n showUploadCsvButton\n bccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.bCc\"),\n name: \"sendToBcc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n ccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.cc\"),\n name: \"sendToCc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n emailInputProps={{\n id: \"sendTo\",\n name: \"sendTo\",\n label: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n required: true,\n }}\n />\n));\n\nexport default SendToField;\n","import React, { useState } from \"react\";\n\nimport { withEventTargetValue } from \"neetocommons/utils/general\";\nimport { Input, Typography } from \"neetoui\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport DynamicVariables from \"components/DynamicVariables\";\n\nconst SubjectField = ({\n name,\n text,\n updateText,\n subjectVariables = [],\n error,\n required = false,\n}) => {\n const [isFieldFocusedOnce, setIsFieldFocusedOnce] = useState(false);\n\n const { t } = useTranslation();\n\n const tagClickHandler = ({ key: slug }) => {\n const textAreaElement = document.querySelector(`textarea[name=${name}]`);\n const splitIndex =\n isFieldFocusedOnce && textAreaElement\n ? textAreaElement.selectionEnd\n : text.length;\n\n const updatedSubject = [\n text.slice(0, splitIndex),\n ` {{${slug}}}`,\n text.slice(splitIndex),\n ].join(\"\");\n updateText(updatedSubject);\n };\n\n return (\n <>\n <Input\n {...{ error, name, required }}\n label={t(\"neetoMolecules.emailForm.labels.subject\")}\n size=\"large\"\n value={text}\n suffix={\n <DynamicVariables\n variables={subjectVariables}\n dropdownProps={{\n className: \"neeto-ui-dropdown__popup overflow-y-auto\",\n buttonSize: \"small\",\n }}\n onVariableClick={tagClickHandler}\n />\n }\n onChange={withEventTargetValue(updateText)}\n onFocus={() => setIsFieldFocusedOnce(true)}\n />\n <Typography\n className=\"neeto-ui-text-gray-600 mt-2\"\n data-cy=\"subject-input-variable-label\"\n style=\"body3\"\n >\n <Trans\n components={{ span: <span className=\"font-semibold\" /> }}\n i18nKey=\"neetoMolecules.emailForm.helpText\"\n values={{ type: \"subject\" }}\n />\n </Typography>\n </>\n );\n};\n\nexport default SubjectField;\n","import React, { useContext } from \"react\";\n\nimport classnames from \"classnames\";\nimport { Field, useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor\";\nimport { Typography } from \"neetoui\";\nimport { ActionBlock, Radio } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport { EDITOR_ADDONS } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport ReplyToField from \"./ReplyToField\";\nimport SendToField from \"./SendToField\";\nimport SubjectField from \"./SubjectField\";\n\nconst EmailForm = ({\n messageVariables = [],\n subjectVariables = [],\n handleCancel,\n isLoading,\n replyToOptions = [],\n sendToOptions = [],\n isUpdating = false,\n showFields = true,\n className = \"\",\n}) => {\n const { t } = useTranslation();\n\n const { showSendToField, showSendToAsRadio, showReplyToField } =\n useContext(EmailFormContext);\n\n const { setFieldValue } = useFormikContext();\n const showSendToRadioField =\n showSendToField && showSendToAsRadio && isNotEmpty(sendToOptions);\n\n const showSendToTextField = showSendToField && !showSendToRadioField;\n\n return (\n <div\n data-testid=\"email-form\"\n className={classnames(\"flex flex-1 flex-col items-start gap-2\", {\n [className]: className,\n })}\n >\n {showFields && (\n <div className=\"flex w-full flex-col items-start justify-start gap-6\">\n <Field name=\"subject\">\n {({ field: { value }, meta: { error } }) => (\n <div className=\"w-full\">\n <SubjectField\n {...{ subjectVariables }}\n required\n error={t(error)}\n name=\"subject\"\n text={value}\n updateText={text => setFieldValue(\"subject\", text)}\n />\n </div>\n )}\n </Field>\n {showSendToRadioField && (\n <Radio\n data-testid=\"send-to-id\"\n label={t(\"neetoMolecules.emailForm.labels.sendTo\")}\n labelProps={{ required: true }}\n name=\"sendToId\"\n >\n {sendToOptions.map(({ label, value }) => (\n <Radio.Item {...{ label, value }} key={value} />\n ))}\n </Radio>\n )}\n {showSendToTextField && <SendToField />}\n {showReplyToField && <ReplyToField {...{ replyToOptions }} />}\n <div className=\"w-full\">\n <FormikEditor\n isMenuCollapsible\n required\n addons={EDITOR_ADDONS}\n data-cy=\"message-input-field\"\n id=\"form_message\"\n label={t(\"neetoMolecules.emailForm.labels.message\")}\n name=\"message\"\n variables={messageVariables}\n />\n <Typography\n className=\"neeto-ui-text-gray-500 mt-2\"\n data-cy=\"message-input-variable-label\"\n style=\"body3\"\n >\n <Trans\n i18nKey=\"neetoMolecules.emailForm.helpText\"\n values={{ type: \"message\" }}\n components={{\n span: <span className=\"font-semibold\" />,\n }}\n />\n </Typography>\n </div>\n </div>\n )}\n <ActionBlock\n cancelButtonProps={{ onClick: handleCancel }}\n className=\"mt-6 w-full justify-start\"\n isSubmitting={isLoading || isUpdating}\n />\n </div>\n );\n};\n\nEmailForm.propTypes = {\n /**\n * This is an array of objects used for templating within the message field. Each object in the array has a **label** and a **key**.\n */\n messageVariables: PropTypes.array,\n /**\n * This is an array of objects used for templating within the subject field. Each object in the array has a **label** and a **key**.\n */\n subjectVariables: PropTypes.array,\n /**\n * This function that gets triggered when the 'Cancel' button is clicked.\n */\n handleCancel: PropTypes.func,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Reply To' field into a dropdown menu with given options. Without this prop, 'Reply To' will be a text input field.\n */\n replyToOptions: PropTypes.array,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Send To' field into a radio group with given options. Without this prop, 'Send To' will be a multi email input field.\n */\n sendToOptions: PropTypes.array,\n /**\n * A Boolean flag indicating whether an update operation is currently in progress. When set to `true`, the 'Save changes' button is disabled.\n */\n isUpdating: PropTypes.bool,\n /**\n * To provide additional classnames to the button.\n */\n className: PropTypes.string,\n};\n\nexport default EmailForm;\n","import {\n EMAIL_FORM_VALIDATION_SCHEMA,\n REPLY_TO_FIELD_VALIDATION,\n SEND_TO_FIELD_VALIDATION,\n SEND_TO_ID_FIELD_VALIDATION,\n} from \"./constants\";\n\nexport const getValidationSchema = ({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n}) => {\n let schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();\n\n if (showSendToField) {\n schema = schema.concat(\n showSendToAsRadio ? SEND_TO_ID_FIELD_VALIDATION : SEND_TO_FIELD_VALIDATION\n );\n }\n\n if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);\n\n return schema.shape(customValidations);\n};\n","import React from \"react\";\n\nimport { noop } from \"neetocist\";\nimport { Form } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\n\nimport { INITIAL_FORM_VALUES } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport { getValidationSchema } from \"./utils\";\n\nconst EmailFormProvider = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema: customValidations = {},\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n}) => (\n <div data-testid=\"email-form-provider\">\n <EmailFormContext.Provider\n value={{ showSendToField, showSendToAsRadio, showReplyToField }}\n >\n <Form\n formikProps={{\n enableReinitialize: true,\n validationSchema: getValidationSchema({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n }),\n initialValues: {\n ...initialValues,\n replyTo: initialValues.replyTo || globalProps.user.email,\n },\n onSubmit,\n ...formikProps,\n }}\n >\n {children}\n </Form>\n </EmailFormContext.Provider>\n </div>\n);\n\nEmailFormProvider.propTypes = {\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n }),\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n};\n\nexport default EmailFormProvider;\n"],"names":["INITIAL_FORM_VALUES","sendTo","sendToId","sendToCc","sendToBcc","replyTo","showCopyEmails","subject","message","EMAIL_FORM_VALIDATION_SCHEMA","yup","object","string","required","t","test","value","isEditorEmpty","SEND_TO_FIELD_VALIDATION","array","min","entity","emails","every","prop","nullable","SEND_TO_ID_FIELD_VALIDATION","REPLY_TO_FIELD_VALIDATION","email","EDITOR_ADDONS","EmailFormContext","React","createContext","showSendToField","showSendToAsRadio","showReplyToField","ReplyToField","_ref","replyToOptions","_useTranslation","useTranslation","isDropdownField","isNotEmpty","_useFormikContext","useFormikContext","setFieldValue","createElement","Select","isClearable","className","label","name","options","labelProps","helpIconProps","_defineProperty","content","onChange","data","_data$value","Input","autoFocus","placeholder","size","SendToField","withT","SendToFields","showCcBccButton","showUploadCsvButton","bccInputProps","ccInputProps","emailInputProps","id","SubjectField","text","updateText","_ref$subjectVariables","subjectVariables","error","_ref$required","_useState","useState","_useState2","_slicedToArray","isFieldFocusedOnce","setIsFieldFocusedOnce","tagClickHandler","_ref2","slug","key","textAreaElement","document","querySelector","concat","splitIndex","selectionEnd","length","updatedSubject","slice","join","Fragment","suffix","DynamicVariables","variables","dropdownProps","buttonSize","onVariableClick","withEventTargetValue","onFocus","Typography","style","Trans","components","span","i18nKey","values","type","EmailForm","_ref$messageVariables","messageVariables","handleCancel","isLoading","_ref$replyToOptions","_ref$sendToOptions","sendToOptions","_ref$isUpdating","isUpdating","_ref$showFields","showFields","_ref$className","_useContext","useContext","showSendToRadioField","showSendToTextField","classnames","Field","field","meta","Radio","map","_ref3","Item","FormikEditor","isMenuCollapsible","addons","ActionBlock","cancelButtonProps","onClick","isSubmitting","getValidationSchema","customValidations","schema","clone","shape","EmailFormProvider","_ref$onSubmit","onSubmit","noop","_ref$initialValues","initialValues","children","formikProps","_ref$validationSchema","validationSchema","_ref$showSendToField","_ref$showReplyToField","_ref$showSendToAsRadi","Provider","Form","_objectSpread","enableReinitialize","globalProps","user"],"mappings":"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"}
1
+ {"version":3,"file":"EmailForm.js","sources":["../src/components/EmailForm/constants.js","../src/components/EmailForm/contexts/EmailForm.js","../src/components/EmailForm/ReplyToField.jsx","../src/components/EmailForm/SendToField.jsx","../src/components/EmailForm/SubjectField.jsx","../src/components/EmailForm/EmailForm.jsx","../src/components/EmailForm/utils.js","../src/components/EmailForm/EmailFormProvider.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { isEditorEmpty } from \"neetoeditor\";\nimport { prop } from \"ramda\";\nimport * as yup from \"yup\";\n\nexport const INITIAL_FORM_VALUES = {\n sendTo: [],\n sendToId: \"\",\n sendToCc: [],\n sendToBcc: [],\n replyTo: \"\",\n showCopyEmails: false,\n subject: \"\",\n message: \"\",\n};\n\nexport const EMAIL_FORM_VALIDATION_SCHEMA = yup.object({\n subject: yup\n .string()\n .required(t(\"neetoMolecules.emailForm.errors.subjectRequired\")),\n message: yup\n .string()\n .test(\n \"message\",\n t(\"neetoMolecules.emailForm.errors.messageRequired\"),\n value => !isEditorEmpty(value)\n ),\n});\n\nexport const sendToFieldValidation = maxEmails => {\n const validation = yup\n .array()\n .test(\n \"all-emails-valid\",\n t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"),\n emails => emails?.every(prop(\"valid\"))\n )\n .test(\n \"max-email-count\",\n t(\"neetoMolecules.emailForm.errors.maxEmails\", { count: maxEmails }),\n emails => emails?.length <= maxEmails\n );\n\n return yup.object({\n sendTo: validation\n .min(\n 1,\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.sendToEmailAddress\"),\n })\n )\n .nullable(),\n sendToCc: validation,\n sendToBcc: validation,\n });\n};\n\nexport const SEND_TO_ID_FIELD_VALIDATION = yup.object({\n sendToId: yup.string().required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n })\n ),\n});\n\nexport const REPLY_TO_FIELD_VALIDATION = yup.object({\n replyTo: yup\n .string()\n .nullable()\n .email(t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"))\n .required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.replyToEmailAddress\"),\n })\n ),\n});\n\nexport const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"divider\",\n \"video-embed\",\n];\n\nexport const ALLOWED_FILE_PICKER_TYPES = [\".csv\"];\n","/* eslint-disable @bigbinary/neeto/use-zustand-for-global-state-management */\nimport React from \"react\";\n\nconst EmailFormContext = React.createContext({\n showSendToField: false,\n showSendToAsRadio: false,\n showReplyToField: false,\n});\n\nexport { EmailFormContext };\n","import React from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { Select, Input } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ReplyToField = ({ replyToOptions }) => {\n const { t } = useTranslation();\n\n const isDropdownField = isNotEmpty(replyToOptions);\n\n const { setFieldValue } = useFormikContext();\n\n if (isDropdownField) {\n return (\n <Select\n isClearable\n className=\"w-full\"\n data-testid=\"replyToOptions\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n options={replyToOptions}\n labelProps={{\n helpIconProps: {\n [\"data-testid\"]: \"reply-to-tooltip\",\n tooltipProps: {\n content: t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n },\n }}\n onChange={data => setFieldValue(\"replyTo\", data?.value ?? \"\")}\n />\n );\n }\n\n return (\n <Input\n autoFocus\n required\n className=\"w-full\"\n data-testid=\"replyToInput\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.emailPlaceholder\")}\n size=\"large\"\n labelProps={{\n helpIconProps: {\n [\"data-testid\"]: \"reply-to-tooltip\",\n tooltipProps: {\n content: t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n },\n }}\n />\n );\n};\n\nexport default ReplyToField;\n","import React from \"react\";\n\nimport withT from \"neetocommons/react-utils/withT\";\n\nimport SendToFields from \"components/SendToFields\";\n\nconst SendToField = withT(({ t }) => (\n <SendToFields\n showCcBccButton\n bccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.bCc\"),\n name: \"sendToBcc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n ccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.cc\"),\n name: \"sendToCc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n emailInputProps={{\n id: \"sendTo\",\n name: \"sendTo\",\n label: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n required: true,\n }}\n />\n));\n\nexport default SendToField;\n","import React, { useState } from \"react\";\n\nimport { withEventTargetValue } from \"neetocommons/utils/general\";\nimport { Input, Typography } from \"neetoui\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport DynamicVariables from \"components/DynamicVariables\";\n\nconst SubjectField = ({\n name,\n text,\n updateText,\n subjectVariables = [],\n error,\n required = false,\n}) => {\n const [isFieldFocusedOnce, setIsFieldFocusedOnce] = useState(false);\n\n const { t } = useTranslation();\n\n const tagClickHandler = ({ key: slug }) => {\n const textAreaElement = document.querySelector(`textarea[name=${name}]`);\n const splitIndex =\n isFieldFocusedOnce && textAreaElement\n ? textAreaElement.selectionEnd\n : text.length;\n\n const updatedSubject = [\n text.slice(0, splitIndex),\n ` {{${slug}}}`,\n text.slice(splitIndex),\n ].join(\"\");\n updateText(updatedSubject);\n };\n\n return (\n <>\n <Input\n {...{ error, name, required }}\n label={t(\"neetoMolecules.emailForm.labels.subject\")}\n size=\"large\"\n value={text}\n suffix={\n <DynamicVariables\n variables={subjectVariables}\n dropdownProps={{\n className: \"neeto-ui-dropdown__popup overflow-y-auto\",\n buttonSize: \"small\",\n }}\n onVariableClick={tagClickHandler}\n />\n }\n onChange={withEventTargetValue(updateText)}\n onFocus={() => setIsFieldFocusedOnce(true)}\n />\n <Typography\n className=\"neeto-ui-text-gray-600 mt-2\"\n data-cy=\"subject-input-variable-label\"\n style=\"body3\"\n >\n <Trans\n components={{ span: <span className=\"font-semibold\" /> }}\n i18nKey=\"neetoMolecules.emailForm.helpText\"\n values={{ type: \"subject\" }}\n />\n </Typography>\n </>\n );\n};\n\nexport default SubjectField;\n","import React, { useContext } from \"react\";\n\nimport classnames from \"classnames\";\nimport { Field, useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor\";\nimport { Typography } from \"neetoui\";\nimport { ActionBlock, Radio } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport { EDITOR_ADDONS } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport ReplyToField from \"./ReplyToField\";\nimport SendToField from \"./SendToField\";\nimport SubjectField from \"./SubjectField\";\n\nconst EmailForm = ({\n messageVariables = [],\n subjectVariables = [],\n handleCancel,\n isLoading,\n replyToOptions = [],\n sendToOptions = [],\n isUpdating = false,\n showFields = true,\n className = \"\",\n}) => {\n const { t } = useTranslation();\n\n const { showSendToField, showSendToAsRadio, showReplyToField } =\n useContext(EmailFormContext);\n\n const { setFieldValue } = useFormikContext();\n const showSendToRadioField =\n showSendToField && showSendToAsRadio && isNotEmpty(sendToOptions);\n\n const showSendToTextField = showSendToField && !showSendToRadioField;\n\n return (\n <div\n data-testid=\"email-form\"\n className={classnames(\"flex flex-1 flex-col items-start gap-2\", {\n [className]: className,\n })}\n >\n {showFields && (\n <div className=\"flex w-full flex-col items-start justify-start gap-6\">\n <Field name=\"subject\">\n {({ field: { value }, meta: { error } }) => (\n <div className=\"w-full\">\n <SubjectField\n {...{ subjectVariables }}\n required\n error={t(error)}\n name=\"subject\"\n text={value}\n updateText={text => setFieldValue(\"subject\", text)}\n />\n </div>\n )}\n </Field>\n {showSendToRadioField && (\n <Radio\n data-testid=\"send-to-id\"\n label={t(\"neetoMolecules.emailForm.labels.sendTo\")}\n labelProps={{ required: true }}\n name=\"sendToId\"\n >\n {sendToOptions.map(({ label, value }) => (\n <Radio.Item {...{ label, value }} key={value} />\n ))}\n </Radio>\n )}\n {showSendToTextField && <SendToField />}\n {showReplyToField && <ReplyToField {...{ replyToOptions }} />}\n <div className=\"w-full\">\n <FormikEditor\n isMenuCollapsible\n required\n addons={EDITOR_ADDONS}\n data-cy=\"message-input-field\"\n id=\"form_message\"\n label={t(\"neetoMolecules.emailForm.labels.message\")}\n name=\"message\"\n variables={messageVariables}\n />\n <Typography\n className=\"neeto-ui-text-gray-500 mt-2\"\n data-cy=\"message-input-variable-label\"\n style=\"body3\"\n >\n <Trans\n i18nKey=\"neetoMolecules.emailForm.helpText\"\n values={{ type: \"message\" }}\n components={{\n span: <span className=\"font-semibold\" />,\n }}\n />\n </Typography>\n </div>\n </div>\n )}\n <ActionBlock\n cancelButtonProps={{ onClick: handleCancel }}\n className=\"mt-6 w-full justify-start\"\n isSubmitting={isLoading || isUpdating}\n />\n </div>\n );\n};\n\nEmailForm.propTypes = {\n /**\n * This is an array of objects used for templating within the message field. Each object in the array has a **label** and a **key**.\n */\n messageVariables: PropTypes.array,\n /**\n * This is an array of objects used for templating within the subject field. Each object in the array has a **label** and a **key**.\n */\n subjectVariables: PropTypes.array,\n /**\n * This function that gets triggered when the 'Cancel' button is clicked.\n */\n handleCancel: PropTypes.func,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Reply To' field into a dropdown menu with given options. Without this prop, 'Reply To' will be a text input field.\n */\n replyToOptions: PropTypes.array,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Send To' field into a radio group with given options. Without this prop, 'Send To' will be a multi email input field.\n */\n sendToOptions: PropTypes.array,\n /**\n * A Boolean flag indicating whether an update operation is currently in progress. When set to `true`, the 'Save changes' button is disabled.\n */\n isUpdating: PropTypes.bool,\n /**\n * To provide additional classnames to the button.\n */\n className: PropTypes.string,\n};\n\nexport default EmailForm;\n","import {\n EMAIL_FORM_VALIDATION_SCHEMA,\n REPLY_TO_FIELD_VALIDATION,\n sendToFieldValidation,\n SEND_TO_ID_FIELD_VALIDATION,\n} from \"./constants\";\n\nexport const getValidationSchema = ({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n}) => {\n let schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();\n\n if (showSendToField) {\n schema = schema.concat(\n showSendToAsRadio\n ? SEND_TO_ID_FIELD_VALIDATION\n : sendToFieldValidation(maxEmails)\n );\n }\n\n if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);\n\n return schema.shape(customValidations);\n};\n","import React from \"react\";\n\nimport { noop } from \"neetocist\";\nimport { Form } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\n\nimport { INITIAL_FORM_VALUES } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport { getValidationSchema } from \"./utils\";\n\nconst EmailFormProvider = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema: customValidations = {},\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n maxEmails = 10,\n}) => (\n <div data-testid=\"email-form-provider\">\n <EmailFormContext.Provider\n value={{ showSendToField, showSendToAsRadio, showReplyToField }}\n >\n <Form\n formikProps={{\n enableReinitialize: true,\n validationSchema: getValidationSchema({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n }),\n initialValues: {\n ...initialValues,\n replyTo: initialValues.replyTo || globalProps.user.email,\n },\n onSubmit,\n ...formikProps,\n }}\n >\n {children}\n </Form>\n </EmailFormContext.Provider>\n </div>\n);\n\nEmailFormProvider.propTypes = {\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n }),\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n};\n\nexport default EmailFormProvider;\n"],"names":["INITIAL_FORM_VALUES","sendTo","sendToId","sendToCc","sendToBcc","replyTo","showCopyEmails","subject","message","EMAIL_FORM_VALIDATION_SCHEMA","yup","object","string","required","t","test","value","isEditorEmpty","sendToFieldValidation","maxEmails","validation","array","emails","every","prop","count","length","min","entity","nullable","SEND_TO_ID_FIELD_VALIDATION","REPLY_TO_FIELD_VALIDATION","email","EDITOR_ADDONS","EmailFormContext","React","createContext","showSendToField","showSendToAsRadio","showReplyToField","ReplyToField","_ref","replyToOptions","_useTranslation","useTranslation","isDropdownField","isNotEmpty","_useFormikContext","useFormikContext","setFieldValue","createElement","Select","isClearable","className","label","name","options","labelProps","helpIconProps","_defineProperty","content","onChange","data","_data$value","Input","autoFocus","placeholder","size","SendToField","withT","SendToFields","showCcBccButton","bccInputProps","ccInputProps","emailInputProps","id","SubjectField","text","updateText","_ref$subjectVariables","subjectVariables","error","_ref$required","_useState","useState","_useState2","_slicedToArray","isFieldFocusedOnce","setIsFieldFocusedOnce","tagClickHandler","_ref2","slug","key","textAreaElement","document","querySelector","concat","splitIndex","selectionEnd","updatedSubject","slice","join","Fragment","suffix","DynamicVariables","variables","dropdownProps","buttonSize","onVariableClick","withEventTargetValue","onFocus","Typography","style","Trans","components","span","i18nKey","values","type","EmailForm","_ref$messageVariables","messageVariables","handleCancel","isLoading","_ref$replyToOptions","_ref$sendToOptions","sendToOptions","_ref$isUpdating","isUpdating","_ref$showFields","showFields","_ref$className","_useContext","useContext","showSendToRadioField","showSendToTextField","classnames","Field","field","meta","Radio","map","_ref3","Item","FormikEditor","isMenuCollapsible","addons","ActionBlock","cancelButtonProps","onClick","isSubmitting","getValidationSchema","customValidations","schema","clone","shape","EmailFormProvider","_ref$onSubmit","onSubmit","noop","_ref$initialValues","initialValues","children","formikProps","_ref$validationSchema","validationSchema","_ref$showSendToField","_ref$showReplyToField","_ref$showSendToAsRadi","_ref$maxEmails","Provider","Form","_objectSpread","enableReinitialize","globalProps","user"],"mappings":"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"}
@@ -39,11 +39,10 @@ var HelpPopover = function HelpPopover(_ref) {
39
39
  });
40
40
  };
41
41
  return /*#__PURE__*/React__default.createElement(Tooltip, _extends({
42
+ interactive: true,
42
43
  appendTo: function appendTo() {
43
44
  return document.body;
44
- }
45
- }, popoverProps, {
46
- interactive: true,
45
+ },
47
46
  arrow: isCompact ? undefined : true,
48
47
  className: classnames(_defineProperty({}, "neeto-ui-popover", !isCompact)),
49
48
  role: "tooltip",
@@ -68,7 +67,7 @@ var HelpPopover = function HelpPopover(_ref) {
68
67
  style: "link",
69
68
  target: "_blank"
70
69
  })))
71
- }), /*#__PURE__*/React__default.createElement(Button, _extends({}, otherProps, {
70
+ }, popoverProps), /*#__PURE__*/React__default.createElement(Button, _extends({}, otherProps, {
72
71
  "data-cy": "help-popover-button",
73
72
  "data-testid": "help-popover-button",
74
73
  icon: Icon,
@@ -1 +1 @@
1
- {"version":3,"file":"HelpPopover.js","sources":["../src/components/HelpPopover/constants.js","../src/components/HelpPopover/index.jsx"],"sourcesContent":["export const SIZE = { default: 16, large: 20 };\n","import React from \"react\";\n\nimport classNames from \"classnames\";\nimport { isNotPresent } from \"neetocist\";\nimport { Help } from \"neetoicons\";\nimport { Button, Popover, Tooltip, Typography } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { SIZE } from \"./constants\";\n\nconst { Title } = Popover;\n\nconst HelpPopover = ({\n title,\n size = \"default\",\n description,\n helpLinkProps,\n popoverProps,\n className,\n iconColor = \"#1f1f1f\",\n icon = Help,\n ...otherProps\n}) => {\n const { t } = useTranslation();\n const isCompact = isNotPresent(title) && isNotPresent(helpLinkProps);\n\n const Icon = () => {\n const Component = icon;\n\n return <Component color={iconColor} size={SIZE[size]} />;\n };\n\n return (\n <Tooltip\n appendTo={() => document.body}\n {...popoverProps}\n interactive\n arrow={isCompact ? undefined : true}\n className={classNames({ [\"neeto-ui-popover\"]: !isCompact })}\n role=\"tooltip\"\n theme={isCompact ? \"dark\" : \"light\"}\n content={\n <div className=\"flex flex-col\">\n {title && (\n <Title\n data-cy=\"help-popover-title\"\n data-testid=\"help-popover-title\"\n >\n {title}\n </Title>\n )}\n {typeof description === \"string\" && !isCompact ? (\n <Typography\n data-cy=\"help-popover-description\"\n data-testid=\"help-popover-description\"\n lineHeight=\"normal\"\n style=\"body2\"\n >\n {description}\n </Typography>\n ) : (\n description\n )}\n {helpLinkProps && (\n <Button\n className=\"neeto-ui-mt-3\"\n data-cy=\"help-popover-link-button\"\n label={t(\"neetoMolecules.common.viewHelpArticle\")}\n size=\"small\"\n {...helpLinkProps}\n data-testid=\"help-popover-link-button\"\n style=\"link\"\n target=\"_blank\"\n />\n )}\n </div>\n }\n >\n <Button\n {...otherProps}\n data-cy=\"help-popover-button\"\n data-testid=\"help-popover-button\"\n icon={Icon}\n style=\"text\"\n className={classNames(\n \"neeto-molecule-help-popover-trigger neeto-ui-rounded-full bg-transparent p-0\",\n className\n )}\n />\n </Tooltip>\n );\n};\n\nHelpPopover.propTypes = {\n /**\n * To set the title of the help popover.\n */\n title: PropTypes.string,\n /**\n * To set the size of the popover help icon.\n */\n size: PropTypes.oneOf([\"default\", \"large\"]),\n /**\n * To set the description of the popover, this can be a string or a custom component.\n */\n description: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n /**\n * To set the props of the help link which is displayed below the description.\n */\n helpLinkProps: PropTypes.object,\n /**\n * To set the props of the popover to customize it further.\n */\n popoverProps: PropTypes.object,\n /**\n * Additional classes passed on to the help button element.\n */\n className: PropTypes.string,\n /**\n * To set the default icon color of the help icon.\n */\n iconColor: PropTypes.string,\n /**\n * To customize the icon of the help popover.\n */\n icon: PropTypes.node,\n};\n\nexport default HelpPopover;\n"],"names":["SIZE","large","Title","Popover","HelpPopover","_ref","title","_ref$size","size","description","helpLinkProps","popoverProps","className","_ref$iconColor","iconColor","_ref$icon","icon","Help","otherProps","_objectWithoutProperties","_excluded","_useTranslation","useTranslation","t","isCompact","isNotPresent","Icon","Component","React","createElement","color","Tooltip","_extends","appendTo","document","body","interactive","arrow","undefined","classNames","_defineProperty","role","theme","content","Typography","lineHeight","style","Button","label","target"],"mappings":"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"}
1
+ {"version":3,"file":"HelpPopover.js","sources":["../src/components/HelpPopover/constants.js","../src/components/HelpPopover/index.jsx"],"sourcesContent":["export const SIZE = { default: 16, large: 20 };\n","import React from \"react\";\n\nimport classNames from \"classnames\";\nimport { isNotPresent } from \"neetocist\";\nimport { Help } from \"neetoicons\";\nimport { Button, Popover, Tooltip, Typography } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { SIZE } from \"./constants\";\n\nconst { Title } = Popover;\n\nconst HelpPopover = ({\n title,\n size = \"default\",\n description,\n helpLinkProps,\n popoverProps,\n className,\n iconColor = \"#1f1f1f\",\n icon = Help,\n ...otherProps\n}) => {\n const { t } = useTranslation();\n const isCompact = isNotPresent(title) && isNotPresent(helpLinkProps);\n\n const Icon = () => {\n const Component = icon;\n\n return <Component color={iconColor} size={SIZE[size]} />;\n };\n\n return (\n <Tooltip\n interactive\n appendTo={() => document.body}\n arrow={isCompact ? undefined : true}\n className={classNames({ [\"neeto-ui-popover\"]: !isCompact })}\n role=\"tooltip\"\n theme={isCompact ? \"dark\" : \"light\"}\n content={\n <div className=\"flex flex-col\">\n {title && (\n <Title\n data-cy=\"help-popover-title\"\n data-testid=\"help-popover-title\"\n >\n {title}\n </Title>\n )}\n {typeof description === \"string\" && !isCompact ? (\n <Typography\n data-cy=\"help-popover-description\"\n data-testid=\"help-popover-description\"\n lineHeight=\"normal\"\n style=\"body2\"\n >\n {description}\n </Typography>\n ) : (\n description\n )}\n {helpLinkProps && (\n <Button\n className=\"neeto-ui-mt-3\"\n data-cy=\"help-popover-link-button\"\n label={t(\"neetoMolecules.common.viewHelpArticle\")}\n size=\"small\"\n {...helpLinkProps}\n data-testid=\"help-popover-link-button\"\n style=\"link\"\n target=\"_blank\"\n />\n )}\n </div>\n }\n {...popoverProps}\n >\n <Button\n {...otherProps}\n data-cy=\"help-popover-button\"\n data-testid=\"help-popover-button\"\n icon={Icon}\n style=\"text\"\n className={classNames(\n \"neeto-molecule-help-popover-trigger neeto-ui-rounded-full bg-transparent p-0\",\n className\n )}\n />\n </Tooltip>\n );\n};\n\nHelpPopover.propTypes = {\n /**\n * To set the title of the help popover.\n */\n title: PropTypes.string,\n /**\n * To set the size of the popover help icon.\n */\n size: PropTypes.oneOf([\"default\", \"large\"]),\n /**\n * To set the description of the popover, this can be a string or a custom component.\n */\n description: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n /**\n * To set the props of the help link which is displayed below the description.\n */\n helpLinkProps: PropTypes.object,\n /**\n * To set the props of the popover to customize it further.\n */\n popoverProps: PropTypes.object,\n /**\n * Additional classes passed on to the help button element.\n */\n className: PropTypes.string,\n /**\n * To set the default icon color of the help icon.\n */\n iconColor: PropTypes.string,\n /**\n * To customize the icon of the help popover.\n */\n icon: PropTypes.node,\n};\n\nexport default HelpPopover;\n"],"names":["SIZE","large","Title","Popover","HelpPopover","_ref","title","_ref$size","size","description","helpLinkProps","popoverProps","className","_ref$iconColor","iconColor","_ref$icon","icon","Help","otherProps","_objectWithoutProperties","_excluded","_useTranslation","useTranslation","t","isCompact","isNotPresent","Icon","Component","React","createElement","color","Tooltip","_extends","interactive","appendTo","document","body","arrow","undefined","classNames","_defineProperty","role","theme","content","Typography","lineHeight","style","Button","label","target"],"mappings":"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"}
@@ -70,13 +70,22 @@ var EMAIL_FORM_VALIDATION_SCHEMA = yup__namespace.object({
70
70
  return !neetoEditor.isEditorEmpty(value);
71
71
  })
72
72
  });
73
- var SEND_TO_FIELD_VALIDATION = yup__namespace.object({
74
- sendTo: yup__namespace.array().min(1, i18next.t("neetoMolecules.emailForm.errors.required", {
75
- entity: i18next.t("neetoMolecules.emailForm.fields.sendToEmailAddress")
76
- })).test("all-emails-valid", i18next.t("neetoMolecules.emailForm.errors.invalidEmailAddress"), function (emails) {
73
+ var sendToFieldValidation = function sendToFieldValidation(maxEmails) {
74
+ var validation = yup__namespace.array().test("all-emails-valid", i18next.t("neetoMolecules.emailForm.errors.invalidEmailAddress"), function (emails) {
77
75
  return emails === null || emails === void 0 ? void 0 : emails.every(ramda.prop("valid"));
78
- }).nullable()
79
- });
76
+ }).test("max-email-count", i18next.t("neetoMolecules.emailForm.errors.maxEmails", {
77
+ count: maxEmails
78
+ }), function (emails) {
79
+ return (emails === null || emails === void 0 ? void 0 : emails.length) <= maxEmails;
80
+ });
81
+ return yup__namespace.object({
82
+ sendTo: validation.min(1, i18next.t("neetoMolecules.emailForm.errors.required", {
83
+ entity: i18next.t("neetoMolecules.emailForm.fields.sendToEmailAddress")
84
+ })).nullable(),
85
+ sendToCc: validation,
86
+ sendToBcc: validation
87
+ });
88
+ };
80
89
  var SEND_TO_ID_FIELD_VALIDATION = yup__namespace.object({
81
90
  sendToId: yup__namespace.string().required(i18next.t("neetoMolecules.emailForm.errors.required", {
82
91
  entity: i18next.t("neetoMolecules.emailForm.labels.sendTo")
@@ -143,7 +152,6 @@ var SendToField = withT__default["default"](function (_ref) {
143
152
  var t = _ref.t;
144
153
  return /*#__PURE__*/React__default["default"].createElement(SendToFields, {
145
154
  showCcBccButton: true,
146
- showUploadCsvButton: true,
147
155
  bccInputProps: {
148
156
  label: t("neetoMolecules.emailForm.labels.bCc"),
149
157
  name: "sendToBcc",
@@ -326,10 +334,11 @@ var getValidationSchema = function getValidationSchema(_ref) {
326
334
  var showSendToField = _ref.showSendToField,
327
335
  showReplyToField = _ref.showReplyToField,
328
336
  showSendToAsRadio = _ref.showSendToAsRadio,
329
- customValidations = _ref.customValidations;
337
+ customValidations = _ref.customValidations,
338
+ maxEmails = _ref.maxEmails;
330
339
  var schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();
331
340
  if (showSendToField) {
332
- schema = schema.concat(showSendToAsRadio ? SEND_TO_ID_FIELD_VALIDATION : SEND_TO_FIELD_VALIDATION);
341
+ schema = schema.concat(showSendToAsRadio ? SEND_TO_ID_FIELD_VALIDATION : sendToFieldValidation(maxEmails));
333
342
  }
334
343
  if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);
335
344
  return schema.shape(customValidations);
@@ -351,7 +360,9 @@ var EmailFormProvider = function EmailFormProvider(_ref) {
351
360
  _ref$showReplyToField = _ref.showReplyToField,
352
361
  showReplyToField = _ref$showReplyToField === void 0 ? false : _ref$showReplyToField,
353
362
  _ref$showSendToAsRadi = _ref.showSendToAsRadio,
354
- showSendToAsRadio = _ref$showSendToAsRadi === void 0 ? false : _ref$showSendToAsRadi;
363
+ showSendToAsRadio = _ref$showSendToAsRadi === void 0 ? false : _ref$showSendToAsRadi,
364
+ _ref$maxEmails = _ref.maxEmails,
365
+ maxEmails = _ref$maxEmails === void 0 ? 10 : _ref$maxEmails;
355
366
  return /*#__PURE__*/React__default["default"].createElement("div", {
356
367
  "data-testid": "email-form-provider"
357
368
  }, /*#__PURE__*/React__default["default"].createElement(EmailFormContext.Provider, {
@@ -367,7 +378,8 @@ var EmailFormProvider = function EmailFormProvider(_ref) {
367
378
  showSendToField: showSendToField,
368
379
  showReplyToField: showReplyToField,
369
380
  showSendToAsRadio: showSendToAsRadio,
370
- customValidations: customValidations
381
+ customValidations: customValidations,
382
+ maxEmails: maxEmails
371
383
  }),
372
384
  initialValues: _objectSpread(_objectSpread({}, initialValues), {}, {
373
385
  replyTo: initialValues.replyTo || globalProps.user.email
@@ -1 +1 @@
1
- {"version":3,"file":"EmailForm.js","sources":["../../src/components/EmailForm/constants.js","../../src/components/EmailForm/contexts/EmailForm.js","../../src/components/EmailForm/ReplyToField.jsx","../../src/components/EmailForm/SendToField.jsx","../../src/components/EmailForm/SubjectField.jsx","../../src/components/EmailForm/EmailForm.jsx","../../src/components/EmailForm/utils.js","../../src/components/EmailForm/EmailFormProvider.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { isEditorEmpty } from \"neetoeditor\";\nimport { prop } from \"ramda\";\nimport * as yup from \"yup\";\n\nexport const INITIAL_FORM_VALUES = {\n sendTo: [],\n sendToId: \"\",\n sendToCc: [],\n sendToBcc: [],\n replyTo: \"\",\n showCopyEmails: false,\n subject: \"\",\n message: \"\",\n};\n\nexport const EMAIL_FORM_VALIDATION_SCHEMA = yup.object({\n subject: yup\n .string()\n .required(t(\"neetoMolecules.emailForm.errors.subjectRequired\")),\n message: yup\n .string()\n .test(\n \"message\",\n t(\"neetoMolecules.emailForm.errors.messageRequired\"),\n value => !isEditorEmpty(value)\n ),\n});\n\nexport const SEND_TO_FIELD_VALIDATION = yup.object({\n sendTo: yup\n .array()\n .min(\n 1,\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.sendToEmailAddress\"),\n })\n )\n .test(\n \"all-emails-valid\",\n t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"),\n emails => emails?.every(prop(\"valid\"))\n )\n .nullable(),\n});\n\nexport const SEND_TO_ID_FIELD_VALIDATION = yup.object({\n sendToId: yup.string().required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n })\n ),\n});\n\nexport const REPLY_TO_FIELD_VALIDATION = yup.object({\n replyTo: yup\n .string()\n .nullable()\n .email(t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"))\n .required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.replyToEmailAddress\"),\n })\n ),\n});\n\nexport const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"divider\",\n \"video-embed\",\n];\n\nexport const ALLOWED_FILE_PICKER_TYPES = [\".csv\"];\n","/* eslint-disable @bigbinary/neeto/use-zustand-for-global-state-management */\nimport React from \"react\";\n\nconst EmailFormContext = React.createContext({\n showSendToField: false,\n showSendToAsRadio: false,\n showReplyToField: false,\n});\n\nexport { EmailFormContext };\n","import React from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { Select, Input } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ReplyToField = ({ replyToOptions }) => {\n const { t } = useTranslation();\n\n const isDropdownField = isNotEmpty(replyToOptions);\n\n const { setFieldValue } = useFormikContext();\n\n if (isDropdownField) {\n return (\n <Select\n isClearable\n className=\"w-full\"\n data-testid=\"replyToOptions\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n options={replyToOptions}\n labelProps={{\n helpIconProps: {\n [\"data-testid\"]: \"reply-to-tooltip\",\n tooltipProps: {\n content: t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n },\n }}\n onChange={data => setFieldValue(\"replyTo\", data?.value ?? \"\")}\n />\n );\n }\n\n return (\n <Input\n autoFocus\n required\n className=\"w-full\"\n data-testid=\"replyToInput\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.emailPlaceholder\")}\n size=\"large\"\n labelProps={{\n helpIconProps: {\n [\"data-testid\"]: \"reply-to-tooltip\",\n tooltipProps: {\n content: t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n },\n }}\n />\n );\n};\n\nexport default ReplyToField;\n","import React from \"react\";\n\nimport withT from \"neetocommons/react-utils/withT\";\n\nimport SendToFields from \"components/SendToFields\";\n\nconst SendToField = withT(({ t }) => (\n <SendToFields\n showCcBccButton\n showUploadCsvButton\n bccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.bCc\"),\n name: \"sendToBcc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n ccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.cc\"),\n name: \"sendToCc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n emailInputProps={{\n id: \"sendTo\",\n name: \"sendTo\",\n label: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n required: true,\n }}\n />\n));\n\nexport default SendToField;\n","import React, { useState } from \"react\";\n\nimport { withEventTargetValue } from \"neetocommons/utils/general\";\nimport { Input, Typography } from \"neetoui\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport DynamicVariables from \"components/DynamicVariables\";\n\nconst SubjectField = ({\n name,\n text,\n updateText,\n subjectVariables = [],\n error,\n required = false,\n}) => {\n const [isFieldFocusedOnce, setIsFieldFocusedOnce] = useState(false);\n\n const { t } = useTranslation();\n\n const tagClickHandler = ({ key: slug }) => {\n const textAreaElement = document.querySelector(`textarea[name=${name}]`);\n const splitIndex =\n isFieldFocusedOnce && textAreaElement\n ? textAreaElement.selectionEnd\n : text.length;\n\n const updatedSubject = [\n text.slice(0, splitIndex),\n ` {{${slug}}}`,\n text.slice(splitIndex),\n ].join(\"\");\n updateText(updatedSubject);\n };\n\n return (\n <>\n <Input\n {...{ error, name, required }}\n label={t(\"neetoMolecules.emailForm.labels.subject\")}\n size=\"large\"\n value={text}\n suffix={\n <DynamicVariables\n variables={subjectVariables}\n dropdownProps={{\n className: \"neeto-ui-dropdown__popup overflow-y-auto\",\n buttonSize: \"small\",\n }}\n onVariableClick={tagClickHandler}\n />\n }\n onChange={withEventTargetValue(updateText)}\n onFocus={() => setIsFieldFocusedOnce(true)}\n />\n <Typography\n className=\"neeto-ui-text-gray-600 mt-2\"\n data-cy=\"subject-input-variable-label\"\n style=\"body3\"\n >\n <Trans\n components={{ span: <span className=\"font-semibold\" /> }}\n i18nKey=\"neetoMolecules.emailForm.helpText\"\n values={{ type: \"subject\" }}\n />\n </Typography>\n </>\n );\n};\n\nexport default SubjectField;\n","import React, { useContext } from \"react\";\n\nimport classnames from \"classnames\";\nimport { Field, useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor\";\nimport { Typography } from \"neetoui\";\nimport { ActionBlock, Radio } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport { EDITOR_ADDONS } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport ReplyToField from \"./ReplyToField\";\nimport SendToField from \"./SendToField\";\nimport SubjectField from \"./SubjectField\";\n\nconst EmailForm = ({\n messageVariables = [],\n subjectVariables = [],\n handleCancel,\n isLoading,\n replyToOptions = [],\n sendToOptions = [],\n isUpdating = false,\n showFields = true,\n className = \"\",\n}) => {\n const { t } = useTranslation();\n\n const { showSendToField, showSendToAsRadio, showReplyToField } =\n useContext(EmailFormContext);\n\n const { setFieldValue } = useFormikContext();\n const showSendToRadioField =\n showSendToField && showSendToAsRadio && isNotEmpty(sendToOptions);\n\n const showSendToTextField = showSendToField && !showSendToRadioField;\n\n return (\n <div\n data-testid=\"email-form\"\n className={classnames(\"flex flex-1 flex-col items-start gap-2\", {\n [className]: className,\n })}\n >\n {showFields && (\n <div className=\"flex w-full flex-col items-start justify-start gap-6\">\n <Field name=\"subject\">\n {({ field: { value }, meta: { error } }) => (\n <div className=\"w-full\">\n <SubjectField\n {...{ subjectVariables }}\n required\n error={t(error)}\n name=\"subject\"\n text={value}\n updateText={text => setFieldValue(\"subject\", text)}\n />\n </div>\n )}\n </Field>\n {showSendToRadioField && (\n <Radio\n data-testid=\"send-to-id\"\n label={t(\"neetoMolecules.emailForm.labels.sendTo\")}\n labelProps={{ required: true }}\n name=\"sendToId\"\n >\n {sendToOptions.map(({ label, value }) => (\n <Radio.Item {...{ label, value }} key={value} />\n ))}\n </Radio>\n )}\n {showSendToTextField && <SendToField />}\n {showReplyToField && <ReplyToField {...{ replyToOptions }} />}\n <div className=\"w-full\">\n <FormikEditor\n isMenuCollapsible\n required\n addons={EDITOR_ADDONS}\n data-cy=\"message-input-field\"\n id=\"form_message\"\n label={t(\"neetoMolecules.emailForm.labels.message\")}\n name=\"message\"\n variables={messageVariables}\n />\n <Typography\n className=\"neeto-ui-text-gray-500 mt-2\"\n data-cy=\"message-input-variable-label\"\n style=\"body3\"\n >\n <Trans\n i18nKey=\"neetoMolecules.emailForm.helpText\"\n values={{ type: \"message\" }}\n components={{\n span: <span className=\"font-semibold\" />,\n }}\n />\n </Typography>\n </div>\n </div>\n )}\n <ActionBlock\n cancelButtonProps={{ onClick: handleCancel }}\n className=\"mt-6 w-full justify-start\"\n isSubmitting={isLoading || isUpdating}\n />\n </div>\n );\n};\n\nEmailForm.propTypes = {\n /**\n * This is an array of objects used for templating within the message field. Each object in the array has a **label** and a **key**.\n */\n messageVariables: PropTypes.array,\n /**\n * This is an array of objects used for templating within the subject field. Each object in the array has a **label** and a **key**.\n */\n subjectVariables: PropTypes.array,\n /**\n * This function that gets triggered when the 'Cancel' button is clicked.\n */\n handleCancel: PropTypes.func,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Reply To' field into a dropdown menu with given options. Without this prop, 'Reply To' will be a text input field.\n */\n replyToOptions: PropTypes.array,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Send To' field into a radio group with given options. Without this prop, 'Send To' will be a multi email input field.\n */\n sendToOptions: PropTypes.array,\n /**\n * A Boolean flag indicating whether an update operation is currently in progress. When set to `true`, the 'Save changes' button is disabled.\n */\n isUpdating: PropTypes.bool,\n /**\n * To provide additional classnames to the button.\n */\n className: PropTypes.string,\n};\n\nexport default EmailForm;\n","import {\n EMAIL_FORM_VALIDATION_SCHEMA,\n REPLY_TO_FIELD_VALIDATION,\n SEND_TO_FIELD_VALIDATION,\n SEND_TO_ID_FIELD_VALIDATION,\n} from \"./constants\";\n\nexport const getValidationSchema = ({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n}) => {\n let schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();\n\n if (showSendToField) {\n schema = schema.concat(\n showSendToAsRadio ? SEND_TO_ID_FIELD_VALIDATION : SEND_TO_FIELD_VALIDATION\n );\n }\n\n if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);\n\n return schema.shape(customValidations);\n};\n","import React from \"react\";\n\nimport { noop } from \"neetocist\";\nimport { Form } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\n\nimport { INITIAL_FORM_VALUES } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport { getValidationSchema } from \"./utils\";\n\nconst EmailFormProvider = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema: customValidations = {},\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n}) => (\n <div data-testid=\"email-form-provider\">\n <EmailFormContext.Provider\n value={{ showSendToField, showSendToAsRadio, showReplyToField }}\n >\n <Form\n formikProps={{\n enableReinitialize: true,\n validationSchema: getValidationSchema({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n }),\n initialValues: {\n ...initialValues,\n replyTo: initialValues.replyTo || globalProps.user.email,\n },\n onSubmit,\n ...formikProps,\n }}\n >\n {children}\n </Form>\n </EmailFormContext.Provider>\n </div>\n);\n\nEmailFormProvider.propTypes = {\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n }),\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n};\n\nexport default EmailFormProvider;\n"],"names":["INITIAL_FORM_VALUES","sendTo","sendToId","sendToCc","sendToBcc","replyTo","showCopyEmails","subject","message","EMAIL_FORM_VALIDATION_SCHEMA","yup","object","string","required","t","test","value","isEditorEmpty","SEND_TO_FIELD_VALIDATION","array","min","entity","emails","every","prop","nullable","SEND_TO_ID_FIELD_VALIDATION","REPLY_TO_FIELD_VALIDATION","email","EDITOR_ADDONS","EmailFormContext","React","createContext","showSendToField","showSendToAsRadio","showReplyToField","ReplyToField","_ref","replyToOptions","_useTranslation","useTranslation","isDropdownField","isNotEmpty","_useFormikContext","useFormikContext","setFieldValue","createElement","Select","isClearable","className","label","name","options","labelProps","helpIconProps","_defineProperty","content","onChange","data","_data$value","Input","autoFocus","placeholder","size","SendToField","withT","SendToFields","showCcBccButton","showUploadCsvButton","bccInputProps","ccInputProps","emailInputProps","id","SubjectField","text","updateText","_ref$subjectVariables","subjectVariables","error","_ref$required","_useState","useState","_useState2","_slicedToArray","isFieldFocusedOnce","setIsFieldFocusedOnce","tagClickHandler","_ref2","slug","key","textAreaElement","document","querySelector","concat","splitIndex","selectionEnd","length","updatedSubject","slice","join","Fragment","suffix","DynamicVariables","variables","dropdownProps","buttonSize","onVariableClick","withEventTargetValue","onFocus","Typography","style","Trans","components","span","i18nKey","values","type","EmailForm","_ref$messageVariables","messageVariables","handleCancel","isLoading","_ref$replyToOptions","_ref$sendToOptions","sendToOptions","_ref$isUpdating","isUpdating","_ref$showFields","showFields","_ref$className","_useContext","useContext","showSendToRadioField","showSendToTextField","classnames","Field","field","meta","Radio","map","_ref3","Item","FormikEditor","isMenuCollapsible","addons","ActionBlock","cancelButtonProps","onClick","isSubmitting","getValidationSchema","customValidations","schema","clone","shape","EmailFormProvider","_ref$onSubmit","onSubmit","noop","_ref$initialValues","initialValues","children","formikProps","_ref$validationSchema","validationSchema","_ref$showSendToField","_ref$showReplyToField","_ref$showSendToAsRadi","Provider","Form","_objectSpread","enableReinitialize","globalProps","user"],"mappings":"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"}
1
+ {"version":3,"file":"EmailForm.js","sources":["../../src/components/EmailForm/constants.js","../../src/components/EmailForm/contexts/EmailForm.js","../../src/components/EmailForm/ReplyToField.jsx","../../src/components/EmailForm/SendToField.jsx","../../src/components/EmailForm/SubjectField.jsx","../../src/components/EmailForm/EmailForm.jsx","../../src/components/EmailForm/utils.js","../../src/components/EmailForm/EmailFormProvider.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { isEditorEmpty } from \"neetoeditor\";\nimport { prop } from \"ramda\";\nimport * as yup from \"yup\";\n\nexport const INITIAL_FORM_VALUES = {\n sendTo: [],\n sendToId: \"\",\n sendToCc: [],\n sendToBcc: [],\n replyTo: \"\",\n showCopyEmails: false,\n subject: \"\",\n message: \"\",\n};\n\nexport const EMAIL_FORM_VALIDATION_SCHEMA = yup.object({\n subject: yup\n .string()\n .required(t(\"neetoMolecules.emailForm.errors.subjectRequired\")),\n message: yup\n .string()\n .test(\n \"message\",\n t(\"neetoMolecules.emailForm.errors.messageRequired\"),\n value => !isEditorEmpty(value)\n ),\n});\n\nexport const sendToFieldValidation = maxEmails => {\n const validation = yup\n .array()\n .test(\n \"all-emails-valid\",\n t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"),\n emails => emails?.every(prop(\"valid\"))\n )\n .test(\n \"max-email-count\",\n t(\"neetoMolecules.emailForm.errors.maxEmails\", { count: maxEmails }),\n emails => emails?.length <= maxEmails\n );\n\n return yup.object({\n sendTo: validation\n .min(\n 1,\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.sendToEmailAddress\"),\n })\n )\n .nullable(),\n sendToCc: validation,\n sendToBcc: validation,\n });\n};\n\nexport const SEND_TO_ID_FIELD_VALIDATION = yup.object({\n sendToId: yup.string().required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n })\n ),\n});\n\nexport const REPLY_TO_FIELD_VALIDATION = yup.object({\n replyTo: yup\n .string()\n .nullable()\n .email(t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"))\n .required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.replyToEmailAddress\"),\n })\n ),\n});\n\nexport const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"divider\",\n \"video-embed\",\n];\n\nexport const ALLOWED_FILE_PICKER_TYPES = [\".csv\"];\n","/* eslint-disable @bigbinary/neeto/use-zustand-for-global-state-management */\nimport React from \"react\";\n\nconst EmailFormContext = React.createContext({\n showSendToField: false,\n showSendToAsRadio: false,\n showReplyToField: false,\n});\n\nexport { EmailFormContext };\n","import React from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { Select, Input } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ReplyToField = ({ replyToOptions }) => {\n const { t } = useTranslation();\n\n const isDropdownField = isNotEmpty(replyToOptions);\n\n const { setFieldValue } = useFormikContext();\n\n if (isDropdownField) {\n return (\n <Select\n isClearable\n className=\"w-full\"\n data-testid=\"replyToOptions\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n options={replyToOptions}\n labelProps={{\n helpIconProps: {\n [\"data-testid\"]: \"reply-to-tooltip\",\n tooltipProps: {\n content: t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n },\n }}\n onChange={data => setFieldValue(\"replyTo\", data?.value ?? \"\")}\n />\n );\n }\n\n return (\n <Input\n autoFocus\n required\n className=\"w-full\"\n data-testid=\"replyToInput\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.emailPlaceholder\")}\n size=\"large\"\n labelProps={{\n helpIconProps: {\n [\"data-testid\"]: \"reply-to-tooltip\",\n tooltipProps: {\n content: t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n },\n }}\n />\n );\n};\n\nexport default ReplyToField;\n","import React from \"react\";\n\nimport withT from \"neetocommons/react-utils/withT\";\n\nimport SendToFields from \"components/SendToFields\";\n\nconst SendToField = withT(({ t }) => (\n <SendToFields\n showCcBccButton\n bccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.bCc\"),\n name: \"sendToBcc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n ccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.cc\"),\n name: \"sendToCc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n emailInputProps={{\n id: \"sendTo\",\n name: \"sendTo\",\n label: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n required: true,\n }}\n />\n));\n\nexport default SendToField;\n","import React, { useState } from \"react\";\n\nimport { withEventTargetValue } from \"neetocommons/utils/general\";\nimport { Input, Typography } from \"neetoui\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport DynamicVariables from \"components/DynamicVariables\";\n\nconst SubjectField = ({\n name,\n text,\n updateText,\n subjectVariables = [],\n error,\n required = false,\n}) => {\n const [isFieldFocusedOnce, setIsFieldFocusedOnce] = useState(false);\n\n const { t } = useTranslation();\n\n const tagClickHandler = ({ key: slug }) => {\n const textAreaElement = document.querySelector(`textarea[name=${name}]`);\n const splitIndex =\n isFieldFocusedOnce && textAreaElement\n ? textAreaElement.selectionEnd\n : text.length;\n\n const updatedSubject = [\n text.slice(0, splitIndex),\n ` {{${slug}}}`,\n text.slice(splitIndex),\n ].join(\"\");\n updateText(updatedSubject);\n };\n\n return (\n <>\n <Input\n {...{ error, name, required }}\n label={t(\"neetoMolecules.emailForm.labels.subject\")}\n size=\"large\"\n value={text}\n suffix={\n <DynamicVariables\n variables={subjectVariables}\n dropdownProps={{\n className: \"neeto-ui-dropdown__popup overflow-y-auto\",\n buttonSize: \"small\",\n }}\n onVariableClick={tagClickHandler}\n />\n }\n onChange={withEventTargetValue(updateText)}\n onFocus={() => setIsFieldFocusedOnce(true)}\n />\n <Typography\n className=\"neeto-ui-text-gray-600 mt-2\"\n data-cy=\"subject-input-variable-label\"\n style=\"body3\"\n >\n <Trans\n components={{ span: <span className=\"font-semibold\" /> }}\n i18nKey=\"neetoMolecules.emailForm.helpText\"\n values={{ type: \"subject\" }}\n />\n </Typography>\n </>\n );\n};\n\nexport default SubjectField;\n","import React, { useContext } from \"react\";\n\nimport classnames from \"classnames\";\nimport { Field, useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor\";\nimport { Typography } from \"neetoui\";\nimport { ActionBlock, Radio } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport { EDITOR_ADDONS } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport ReplyToField from \"./ReplyToField\";\nimport SendToField from \"./SendToField\";\nimport SubjectField from \"./SubjectField\";\n\nconst EmailForm = ({\n messageVariables = [],\n subjectVariables = [],\n handleCancel,\n isLoading,\n replyToOptions = [],\n sendToOptions = [],\n isUpdating = false,\n showFields = true,\n className = \"\",\n}) => {\n const { t } = useTranslation();\n\n const { showSendToField, showSendToAsRadio, showReplyToField } =\n useContext(EmailFormContext);\n\n const { setFieldValue } = useFormikContext();\n const showSendToRadioField =\n showSendToField && showSendToAsRadio && isNotEmpty(sendToOptions);\n\n const showSendToTextField = showSendToField && !showSendToRadioField;\n\n return (\n <div\n data-testid=\"email-form\"\n className={classnames(\"flex flex-1 flex-col items-start gap-2\", {\n [className]: className,\n })}\n >\n {showFields && (\n <div className=\"flex w-full flex-col items-start justify-start gap-6\">\n <Field name=\"subject\">\n {({ field: { value }, meta: { error } }) => (\n <div className=\"w-full\">\n <SubjectField\n {...{ subjectVariables }}\n required\n error={t(error)}\n name=\"subject\"\n text={value}\n updateText={text => setFieldValue(\"subject\", text)}\n />\n </div>\n )}\n </Field>\n {showSendToRadioField && (\n <Radio\n data-testid=\"send-to-id\"\n label={t(\"neetoMolecules.emailForm.labels.sendTo\")}\n labelProps={{ required: true }}\n name=\"sendToId\"\n >\n {sendToOptions.map(({ label, value }) => (\n <Radio.Item {...{ label, value }} key={value} />\n ))}\n </Radio>\n )}\n {showSendToTextField && <SendToField />}\n {showReplyToField && <ReplyToField {...{ replyToOptions }} />}\n <div className=\"w-full\">\n <FormikEditor\n isMenuCollapsible\n required\n addons={EDITOR_ADDONS}\n data-cy=\"message-input-field\"\n id=\"form_message\"\n label={t(\"neetoMolecules.emailForm.labels.message\")}\n name=\"message\"\n variables={messageVariables}\n />\n <Typography\n className=\"neeto-ui-text-gray-500 mt-2\"\n data-cy=\"message-input-variable-label\"\n style=\"body3\"\n >\n <Trans\n i18nKey=\"neetoMolecules.emailForm.helpText\"\n values={{ type: \"message\" }}\n components={{\n span: <span className=\"font-semibold\" />,\n }}\n />\n </Typography>\n </div>\n </div>\n )}\n <ActionBlock\n cancelButtonProps={{ onClick: handleCancel }}\n className=\"mt-6 w-full justify-start\"\n isSubmitting={isLoading || isUpdating}\n />\n </div>\n );\n};\n\nEmailForm.propTypes = {\n /**\n * This is an array of objects used for templating within the message field. Each object in the array has a **label** and a **key**.\n */\n messageVariables: PropTypes.array,\n /**\n * This is an array of objects used for templating within the subject field. Each object in the array has a **label** and a **key**.\n */\n subjectVariables: PropTypes.array,\n /**\n * This function that gets triggered when the 'Cancel' button is clicked.\n */\n handleCancel: PropTypes.func,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Reply To' field into a dropdown menu with given options. Without this prop, 'Reply To' will be a text input field.\n */\n replyToOptions: PropTypes.array,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Send To' field into a radio group with given options. Without this prop, 'Send To' will be a multi email input field.\n */\n sendToOptions: PropTypes.array,\n /**\n * A Boolean flag indicating whether an update operation is currently in progress. When set to `true`, the 'Save changes' button is disabled.\n */\n isUpdating: PropTypes.bool,\n /**\n * To provide additional classnames to the button.\n */\n className: PropTypes.string,\n};\n\nexport default EmailForm;\n","import {\n EMAIL_FORM_VALIDATION_SCHEMA,\n REPLY_TO_FIELD_VALIDATION,\n sendToFieldValidation,\n SEND_TO_ID_FIELD_VALIDATION,\n} from \"./constants\";\n\nexport const getValidationSchema = ({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n}) => {\n let schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();\n\n if (showSendToField) {\n schema = schema.concat(\n showSendToAsRadio\n ? SEND_TO_ID_FIELD_VALIDATION\n : sendToFieldValidation(maxEmails)\n );\n }\n\n if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);\n\n return schema.shape(customValidations);\n};\n","import React from \"react\";\n\nimport { noop } from \"neetocist\";\nimport { Form } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\n\nimport { INITIAL_FORM_VALUES } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport { getValidationSchema } from \"./utils\";\n\nconst EmailFormProvider = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema: customValidations = {},\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n maxEmails = 10,\n}) => (\n <div data-testid=\"email-form-provider\">\n <EmailFormContext.Provider\n value={{ showSendToField, showSendToAsRadio, showReplyToField }}\n >\n <Form\n formikProps={{\n enableReinitialize: true,\n validationSchema: getValidationSchema({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n }),\n initialValues: {\n ...initialValues,\n replyTo: initialValues.replyTo || globalProps.user.email,\n },\n onSubmit,\n ...formikProps,\n }}\n >\n {children}\n </Form>\n </EmailFormContext.Provider>\n </div>\n);\n\nEmailFormProvider.propTypes = {\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n }),\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n};\n\nexport default EmailFormProvider;\n"],"names":["INITIAL_FORM_VALUES","sendTo","sendToId","sendToCc","sendToBcc","replyTo","showCopyEmails","subject","message","EMAIL_FORM_VALIDATION_SCHEMA","yup","object","string","required","t","test","value","isEditorEmpty","sendToFieldValidation","maxEmails","validation","array","emails","every","prop","count","length","min","entity","nullable","SEND_TO_ID_FIELD_VALIDATION","REPLY_TO_FIELD_VALIDATION","email","EDITOR_ADDONS","EmailFormContext","React","createContext","showSendToField","showSendToAsRadio","showReplyToField","ReplyToField","_ref","replyToOptions","_useTranslation","useTranslation","isDropdownField","isNotEmpty","_useFormikContext","useFormikContext","setFieldValue","createElement","Select","isClearable","className","label","name","options","labelProps","helpIconProps","_defineProperty","content","onChange","data","_data$value","Input","autoFocus","placeholder","size","SendToField","withT","SendToFields","showCcBccButton","bccInputProps","ccInputProps","emailInputProps","id","SubjectField","text","updateText","_ref$subjectVariables","subjectVariables","error","_ref$required","_useState","useState","_useState2","_slicedToArray","isFieldFocusedOnce","setIsFieldFocusedOnce","tagClickHandler","_ref2","slug","key","textAreaElement","document","querySelector","concat","splitIndex","selectionEnd","updatedSubject","slice","join","Fragment","suffix","DynamicVariables","variables","dropdownProps","buttonSize","onVariableClick","withEventTargetValue","onFocus","Typography","style","Trans","components","span","i18nKey","values","type","EmailForm","_ref$messageVariables","messageVariables","handleCancel","isLoading","_ref$replyToOptions","_ref$sendToOptions","sendToOptions","_ref$isUpdating","isUpdating","_ref$showFields","showFields","_ref$className","_useContext","useContext","showSendToRadioField","showSendToTextField","classnames","Field","field","meta","Radio","map","_ref3","Item","FormikEditor","isMenuCollapsible","addons","ActionBlock","cancelButtonProps","onClick","isSubmitting","getValidationSchema","customValidations","schema","clone","shape","EmailFormProvider","_ref$onSubmit","onSubmit","noop","_ref$initialValues","initialValues","children","formikProps","_ref$validationSchema","validationSchema","_ref$showSendToField","_ref$showReplyToField","_ref$showSendToAsRadi","_ref$maxEmails","Provider","Form","_objectSpread","enableReinitialize","globalProps","user"],"mappings":"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"}
@@ -46,11 +46,10 @@ var HelpPopover = function HelpPopover(_ref) {
46
46
  });
47
47
  };
48
48
  return /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, _extends._extends({
49
+ interactive: true,
49
50
  appendTo: function appendTo() {
50
51
  return document.body;
51
- }
52
- }, popoverProps, {
53
- interactive: true,
52
+ },
54
53
  arrow: isCompact ? undefined : true,
55
54
  className: classnames__default["default"](defineProperty._defineProperty({}, "neeto-ui-popover", !isCompact)),
56
55
  role: "tooltip",
@@ -75,7 +74,7 @@ var HelpPopover = function HelpPopover(_ref) {
75
74
  style: "link",
76
75
  target: "_blank"
77
76
  })))
78
- }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, _extends._extends({}, otherProps, {
77
+ }, popoverProps), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, _extends._extends({}, otherProps, {
79
78
  "data-cy": "help-popover-button",
80
79
  "data-testid": "help-popover-button",
81
80
  icon: Icon,
@@ -1 +1 @@
1
- {"version":3,"file":"HelpPopover.js","sources":["../../src/components/HelpPopover/constants.js","../../src/components/HelpPopover/index.jsx"],"sourcesContent":["export const SIZE = { default: 16, large: 20 };\n","import React from \"react\";\n\nimport classNames from \"classnames\";\nimport { isNotPresent } from \"neetocist\";\nimport { Help } from \"neetoicons\";\nimport { Button, Popover, Tooltip, Typography } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { SIZE } from \"./constants\";\n\nconst { Title } = Popover;\n\nconst HelpPopover = ({\n title,\n size = \"default\",\n description,\n helpLinkProps,\n popoverProps,\n className,\n iconColor = \"#1f1f1f\",\n icon = Help,\n ...otherProps\n}) => {\n const { t } = useTranslation();\n const isCompact = isNotPresent(title) && isNotPresent(helpLinkProps);\n\n const Icon = () => {\n const Component = icon;\n\n return <Component color={iconColor} size={SIZE[size]} />;\n };\n\n return (\n <Tooltip\n appendTo={() => document.body}\n {...popoverProps}\n interactive\n arrow={isCompact ? undefined : true}\n className={classNames({ [\"neeto-ui-popover\"]: !isCompact })}\n role=\"tooltip\"\n theme={isCompact ? \"dark\" : \"light\"}\n content={\n <div className=\"flex flex-col\">\n {title && (\n <Title\n data-cy=\"help-popover-title\"\n data-testid=\"help-popover-title\"\n >\n {title}\n </Title>\n )}\n {typeof description === \"string\" && !isCompact ? (\n <Typography\n data-cy=\"help-popover-description\"\n data-testid=\"help-popover-description\"\n lineHeight=\"normal\"\n style=\"body2\"\n >\n {description}\n </Typography>\n ) : (\n description\n )}\n {helpLinkProps && (\n <Button\n className=\"neeto-ui-mt-3\"\n data-cy=\"help-popover-link-button\"\n label={t(\"neetoMolecules.common.viewHelpArticle\")}\n size=\"small\"\n {...helpLinkProps}\n data-testid=\"help-popover-link-button\"\n style=\"link\"\n target=\"_blank\"\n />\n )}\n </div>\n }\n >\n <Button\n {...otherProps}\n data-cy=\"help-popover-button\"\n data-testid=\"help-popover-button\"\n icon={Icon}\n style=\"text\"\n className={classNames(\n \"neeto-molecule-help-popover-trigger neeto-ui-rounded-full bg-transparent p-0\",\n className\n )}\n />\n </Tooltip>\n );\n};\n\nHelpPopover.propTypes = {\n /**\n * To set the title of the help popover.\n */\n title: PropTypes.string,\n /**\n * To set the size of the popover help icon.\n */\n size: PropTypes.oneOf([\"default\", \"large\"]),\n /**\n * To set the description of the popover, this can be a string or a custom component.\n */\n description: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n /**\n * To set the props of the help link which is displayed below the description.\n */\n helpLinkProps: PropTypes.object,\n /**\n * To set the props of the popover to customize it further.\n */\n popoverProps: PropTypes.object,\n /**\n * Additional classes passed on to the help button element.\n */\n className: PropTypes.string,\n /**\n * To set the default icon color of the help icon.\n */\n iconColor: PropTypes.string,\n /**\n * To customize the icon of the help popover.\n */\n icon: PropTypes.node,\n};\n\nexport default HelpPopover;\n"],"names":["SIZE","large","Title","Popover","HelpPopover","_ref","title","_ref$size","size","description","helpLinkProps","popoverProps","className","_ref$iconColor","iconColor","_ref$icon","icon","Help","otherProps","_objectWithoutProperties","_excluded","_useTranslation","useTranslation","t","isCompact","isNotPresent","Icon","Component","React","createElement","color","Tooltip","_extends","appendTo","document","body","interactive","arrow","undefined","classNames","_defineProperty","role","theme","content","Typography","lineHeight","style","Button","label","target"],"mappings":"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"}
1
+ {"version":3,"file":"HelpPopover.js","sources":["../../src/components/HelpPopover/constants.js","../../src/components/HelpPopover/index.jsx"],"sourcesContent":["export const SIZE = { default: 16, large: 20 };\n","import React from \"react\";\n\nimport classNames from \"classnames\";\nimport { isNotPresent } from \"neetocist\";\nimport { Help } from \"neetoicons\";\nimport { Button, Popover, Tooltip, Typography } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { SIZE } from \"./constants\";\n\nconst { Title } = Popover;\n\nconst HelpPopover = ({\n title,\n size = \"default\",\n description,\n helpLinkProps,\n popoverProps,\n className,\n iconColor = \"#1f1f1f\",\n icon = Help,\n ...otherProps\n}) => {\n const { t } = useTranslation();\n const isCompact = isNotPresent(title) && isNotPresent(helpLinkProps);\n\n const Icon = () => {\n const Component = icon;\n\n return <Component color={iconColor} size={SIZE[size]} />;\n };\n\n return (\n <Tooltip\n interactive\n appendTo={() => document.body}\n arrow={isCompact ? undefined : true}\n className={classNames({ [\"neeto-ui-popover\"]: !isCompact })}\n role=\"tooltip\"\n theme={isCompact ? \"dark\" : \"light\"}\n content={\n <div className=\"flex flex-col\">\n {title && (\n <Title\n data-cy=\"help-popover-title\"\n data-testid=\"help-popover-title\"\n >\n {title}\n </Title>\n )}\n {typeof description === \"string\" && !isCompact ? (\n <Typography\n data-cy=\"help-popover-description\"\n data-testid=\"help-popover-description\"\n lineHeight=\"normal\"\n style=\"body2\"\n >\n {description}\n </Typography>\n ) : (\n description\n )}\n {helpLinkProps && (\n <Button\n className=\"neeto-ui-mt-3\"\n data-cy=\"help-popover-link-button\"\n label={t(\"neetoMolecules.common.viewHelpArticle\")}\n size=\"small\"\n {...helpLinkProps}\n data-testid=\"help-popover-link-button\"\n style=\"link\"\n target=\"_blank\"\n />\n )}\n </div>\n }\n {...popoverProps}\n >\n <Button\n {...otherProps}\n data-cy=\"help-popover-button\"\n data-testid=\"help-popover-button\"\n icon={Icon}\n style=\"text\"\n className={classNames(\n \"neeto-molecule-help-popover-trigger neeto-ui-rounded-full bg-transparent p-0\",\n className\n )}\n />\n </Tooltip>\n );\n};\n\nHelpPopover.propTypes = {\n /**\n * To set the title of the help popover.\n */\n title: PropTypes.string,\n /**\n * To set the size of the popover help icon.\n */\n size: PropTypes.oneOf([\"default\", \"large\"]),\n /**\n * To set the description of the popover, this can be a string or a custom component.\n */\n description: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n /**\n * To set the props of the help link which is displayed below the description.\n */\n helpLinkProps: PropTypes.object,\n /**\n * To set the props of the popover to customize it further.\n */\n popoverProps: PropTypes.object,\n /**\n * Additional classes passed on to the help button element.\n */\n className: PropTypes.string,\n /**\n * To set the default icon color of the help icon.\n */\n iconColor: PropTypes.string,\n /**\n * To customize the icon of the help popover.\n */\n icon: PropTypes.node,\n};\n\nexport default HelpPopover;\n"],"names":["SIZE","large","Title","Popover","HelpPopover","_ref","title","_ref$size","size","description","helpLinkProps","popoverProps","className","_ref$iconColor","iconColor","_ref$icon","icon","Help","otherProps","_objectWithoutProperties","_excluded","_useTranslation","useTranslation","t","isCompact","isNotPresent","Icon","Component","React","createElement","color","Tooltip","_extends","interactive","appendTo","document","body","arrow","undefined","classNames","_defineProperty","role","theme","content","Typography","lineHeight","style","Button","label","target"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neeto-molecules",
3
- "version": "1.15.19",
3
+ "version": "1.15.21",
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>",
@@ -574,7 +574,8 @@
574
574
  "required": "{{entity}} is required",
575
575
  "invalidEmailAddress": "Please enter a valid email address",
576
576
  "messageRequired": "Message is required",
577
- "subjectRequired": "Subject is required"
577
+ "subjectRequired": "Subject is required",
578
+ "maxEmails": "Maximum of {{count}} emails are allowed"
578
579
  },
579
580
  "fields": {
580
581
  "sendToEmailAddress": "'Send to' email address",