@bigbinary/neeto-message-templates-frontend 0.0.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -5280,6 +5280,7 @@ var template = {
5280
5280
  search: "Search {{what}}",
5281
5281
  markAsActive: "Mark as active",
5282
5282
  markAsInactive: "Mark as inactive",
5283
+ close: "Close",
5283
5284
  "delete": "Delete",
5284
5285
  edit: "Edit",
5285
5286
  saveChanges: "Save changes",
@@ -5303,13 +5304,16 @@ var template = {
5303
5304
  sendTestEmail: "Send test email",
5304
5305
  sendTestSms: "Send test sms",
5305
5306
  filtersEmptyState: "There are no {{type}} to show for applied filters.",
5307
+ preview: "Template Preview",
5308
+ resolveVariable: "Resolve {{type}} variables",
5306
5309
  validation: {
5307
5310
  namePresence: "Name is required",
5308
5311
  subjectPresence: "Subject is required",
5309
5312
  bodyPresence: "Body is required",
5310
5313
  emailAddressPresence: "Email address is required",
5311
5314
  emailAddressFormatValidation: "Invalid email address",
5312
- validPhoneNumber: "Enter valid phone number"
5315
+ validPhoneNumber: "Enter valid phone number",
5316
+ variablePresence: "Variable should not be empty"
5313
5317
  }
5314
5318
  };
5315
5319
  var sendMessage = {
@@ -6086,7 +6090,7 @@ var TestMessage = function TestMessage(_ref) {
6086
6090
 
6087
6091
  function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6088
6092
  function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6089
- var Form$1 = function Form(_ref) {
6093
+ var Form = function Form(_ref) {
6090
6094
  var onClose = _ref.onClose,
6091
6095
  isEdit = _ref.isEdit,
6092
6096
  _ref$template = _ref.template,
@@ -6204,7 +6208,7 @@ var AddEdit = function AddEdit(_ref) {
6204
6208
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
6205
6209
  style: "h2",
6206
6210
  weight: "semibold"
6207
- }, label)), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement(Form$1, {
6211
+ }, label)), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement(Form, {
6208
6212
  createUpdateTemplate: createUpdateTemplate,
6209
6213
  handleSubmitTestTemplate: handleSubmitTestTemplate,
6210
6214
  isEdit: isEdit,
@@ -6475,13 +6479,13 @@ var MessageTemplates = function MessageTemplates(_ref) {
6475
6479
  };
6476
6480
  var index$1 = withReactQuery(MessageTemplates);
6477
6481
 
6482
+ var formatEditorContent = function formatEditorContent(value) {
6483
+ return value === null || value === void 0 ? void 0 : value.replaceAll(/<\/?(?!img)\w*\b[^>]*>/gi, "").trim();
6484
+ };
6478
6485
  var SEND_MESSAGE_INITIAL_VALUES = {
6479
6486
  subject: "",
6480
6487
  body: ""
6481
6488
  };
6482
- var formatEditorContent = function formatEditorContent(value) {
6483
- return value === null || value === void 0 ? void 0 : value.replaceAll(/<\/?(?!img)\w*\b[^>]*>/gi, "").trim();
6484
- };
6485
6489
  var EMAIL_MESSAGE_FORM_SCHEMA = yup__namespace.object().shape({
6486
6490
  subject: yup__namespace.string().trim().required(t$1("template.validation.subjectPresence")),
6487
6491
  body: yup__namespace.string().test("body", t$1("template.validation.bodyPresence"), function (value) {
@@ -6493,10 +6497,15 @@ var SMS_MESSAGE_FORM_VALIDATION_SCHEMA = yup__namespace.object().shape({
6493
6497
  return !!formatEditorContent(value);
6494
6498
  })
6495
6499
  });
6500
+ var WHATSAPP_MESSAGE_FORM_VALIDATIONS_SCHEMA = yup__namespace.object().shape({
6501
+ variableContents: yup__namespace.object().shape({
6502
+ body: yup__namespace.array().of(yup__namespace.string().required(t$1("template.validation.variablePresence")))
6503
+ })
6504
+ });
6496
6505
 
6497
6506
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6498
6507
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6499
- var Form = function Form(_ref) {
6508
+ var EmailAndSms = function EmailAndSms(_ref) {
6500
6509
  var isEmailTemplate = _ref.isEmailTemplate,
6501
6510
  onClose = _ref.onClose,
6502
6511
  templates = _ref.templates,
@@ -6585,6 +6594,125 @@ var Form = function Form(_ref) {
6585
6594
  });
6586
6595
  };
6587
6596
 
6597
+ var Whatsapp = function Whatsapp(_ref) {
6598
+ var _templates$, _templates$2, _templates$3, _templates$4;
6599
+ var templates = _ref.templates,
6600
+ onClose = _ref.onClose,
6601
+ handleSubmit = _ref.handleSubmit;
6602
+ var _useTranslation = useTranslation(),
6603
+ t = _useTranslation.t;
6604
+ var getInitialVariableComponents = function getInitialVariableComponents(variables) {
6605
+ var initialComponents = {};
6606
+ variables.forEach(function (_ref2) {
6607
+ var type = _ref2.type,
6608
+ count = _ref2.count;
6609
+ initialComponents[type] = Array(count).fill("");
6610
+ });
6611
+ return initialComponents;
6612
+ };
6613
+ var getTemplateMessage = function getTemplateMessage(components) {
6614
+ return pure.nullSafe(ramda.pluck)("text", components).join("\n");
6615
+ };
6616
+ if (ramda.isEmpty(templates)) {
6617
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, null, t("template.emptyState", {
6618
+ type: t("template.whatsappTemplates")
6619
+ })), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
6620
+ className: "absolute bottom-0 left-0"
6621
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
6622
+ label: t("template.close"),
6623
+ onClick: onClose
6624
+ })));
6625
+ }
6626
+ var initialFormValues = {
6627
+ selectedTemplate: {
6628
+ label: (_templates$ = templates[0]) === null || _templates$ === void 0 ? void 0 : _templates$.name,
6629
+ value: (_templates$2 = templates[0]) === null || _templates$2 === void 0 ? void 0 : _templates$2.id
6630
+ },
6631
+ templateMessage: getTemplateMessage((_templates$3 = templates[0]) === null || _templates$3 === void 0 ? void 0 : _templates$3.components),
6632
+ variableContents: getInitialVariableComponents((_templates$4 = templates[0]) === null || _templates$4 === void 0 ? void 0 : _templates$4.variableCount)
6633
+ };
6634
+ return /*#__PURE__*/React__default["default"].createElement(formik$1.Form, {
6635
+ formProps: {
6636
+ noValidate: true,
6637
+ className: "flex w-full flex-col gap-y-4 pb-6"
6638
+ },
6639
+ formikProps: {
6640
+ initialValues: initialFormValues,
6641
+ validationSchema: WHATSAPP_MESSAGE_FORM_VALIDATIONS_SCHEMA,
6642
+ onSubmit: handleSubmit
6643
+ }
6644
+ }, function (_ref3) {
6645
+ var dirty = _ref3.dirty,
6646
+ isSubmitting = _ref3.isSubmitting,
6647
+ values = _ref3.values,
6648
+ setValues = _ref3.setValues;
6649
+ var handleTemplateChange = function handleTemplateChange(value) {
6650
+ if (!value) return;
6651
+ var template = pure.findBy({
6652
+ id: value === null || value === void 0 ? void 0 : value.value
6653
+ }, templates);
6654
+ setValues({
6655
+ selectedTemplate: {
6656
+ label: template.name,
6657
+ value: template.id
6658
+ },
6659
+ templateMessage: getTemplateMessage(template.components),
6660
+ variableContents: getInitialVariableComponents(template.variableCount)
6661
+ });
6662
+ };
6663
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(formik$1.Select, {
6664
+ required: true,
6665
+ defaultValue: initialFormValues.selectedTemplate,
6666
+ label: t("template.title"),
6667
+ name: "selectedTemplate",
6668
+ options: templates.map(function (_ref4) {
6669
+ var name = _ref4.name,
6670
+ id = _ref4.id;
6671
+ return {
6672
+ label: name,
6673
+ value: id
6674
+ };
6675
+ }),
6676
+ onChange: handleTemplateChange
6677
+ }), /*#__PURE__*/React__default["default"].createElement(neetoui.Textarea, {
6678
+ disabled: true,
6679
+ nakedTextarea: true,
6680
+ label: t("template.preview"),
6681
+ value: values.templateMessage
6682
+ }), pure.isNotEmpty(values.variableContents) && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, Object.keys(values.variableContents).map(function (group) {
6683
+ return /*#__PURE__*/React__default["default"].createElement("div", {
6684
+ className: "flex flex-col gap-y-2",
6685
+ key: group
6686
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
6687
+ style: "h4"
6688
+ }, t("template.resolveVariable", {
6689
+ type: pure.capitalize(group)
6690
+ })), values.variableContents[group].map(function (_, index) {
6691
+ return /*#__PURE__*/React__default["default"].createElement("div", {
6692
+ key: "".concat(group, "-").concat(index)
6693
+ }, /*#__PURE__*/React__default["default"].createElement(formik$1.Input, {
6694
+ required: true,
6695
+ key: "".concat(group, "-").concat(index),
6696
+ label: "{{".concat(index + 1, "}}"),
6697
+ name: "variableContents.".concat(group, ".").concat(index)
6698
+ }));
6699
+ }));
6700
+ })), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
6701
+ className: "absolute bottom-0 left-0 flex gap-x-2"
6702
+ }, /*#__PURE__*/React__default["default"].createElement(formik$1.Button, {
6703
+ disabled: !dirty || isSubmitting,
6704
+ label: t("template.saveChanges"),
6705
+ loading: isSubmitting,
6706
+ type: "submit"
6707
+ }), /*#__PURE__*/React__default["default"].createElement(formik$1.Button, {
6708
+ label: t("template.cancel"),
6709
+ style: "text",
6710
+ type: "reset",
6711
+ onClick: onClose
6712
+ })));
6713
+ });
6714
+ };
6715
+
6588
6716
  var SendMessagePane = function SendMessagePane(_ref) {
6589
6717
  var _ref$isOpen = _ref.isOpen,
6590
6718
  isOpen = _ref$isOpen === void 0 ? false : _ref$isOpen,
@@ -6619,6 +6747,7 @@ var SendMessagePane = function SendMessagePane(_ref) {
6619
6747
  _useFetchTemplates$da3 = _useFetchTemplates$da2.templates,
6620
6748
  templates = _useFetchTemplates$da3 === void 0 ? [] : _useFetchTemplates$da3;
6621
6749
  var isEmailTemplate = type === "email";
6750
+ var isWhatsappTemplate = type === "whatsapp";
6622
6751
  return /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, {
6623
6752
  initialFocusRef: initialFocusField,
6624
6753
  isOpen: isOpen,
@@ -6626,7 +6755,11 @@ var SendMessagePane = function SendMessagePane(_ref) {
6626
6755
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
6627
6756
  style: "h2",
6628
6757
  weight: "semibold"
6629
- }, t("common.send"), " ", type)), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement(Form, {
6758
+ }, t("common.send"), " ", type)), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, isWhatsappTemplate ? /*#__PURE__*/React__default["default"].createElement(Whatsapp, {
6759
+ handleSubmit: handleSubmit,
6760
+ templates: templates,
6761
+ onClose: onClose
6762
+ }) : /*#__PURE__*/React__default["default"].createElement(EmailAndSms, {
6630
6763
  customFields: customFields,
6631
6764
  customFieldsInitialValues: customFieldsInitialValues,
6632
6765
  customFieldsValidationSchema: customFieldsValidationSchema,