@bigbinary/neeto-message-templates-frontend 0.0.9 → 0.2.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/README.md +19 -2
- package/dist/index.cjs.js +213 -52
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.js +220 -59
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/types.d.ts +2 -0
package/README.md
CHANGED
|
@@ -21,10 +21,10 @@ the creation of SMS, Email and Whatsapp templates.
|
|
|
21
21
|
bundle install
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
3. Configure the
|
|
24
|
+
3. Configure the owner model in the host application.
|
|
25
25
|
|
|
26
26
|
```ruby
|
|
27
|
-
has_many :message_templates, class_name: "NeetoMessageTemplatesEngine::MessageTemplate", dependent: :destroy
|
|
27
|
+
has_many :message_templates, as: :owner, class_name: "NeetoMessageTemplatesEngine::MessageTemplate", dependent: :destroy
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
4. Add this line to your application's `config/routes.rb` file
|
|
@@ -55,6 +55,15 @@ the creation of SMS, Email and Whatsapp templates.
|
|
|
55
55
|
end
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
+
7. Create an initializer file in the host app under
|
|
59
|
+
`configs/initializers/neeto-message-templates.rb` & provide the name of owner
|
|
60
|
+
model for the message templates. The message_templates `belongs_to` this
|
|
61
|
+
`owner`.
|
|
62
|
+
|
|
63
|
+
```ruby
|
|
64
|
+
NeetoMessageTemplatesEngine.owner_class = "Organization"
|
|
65
|
+
```
|
|
66
|
+
|
|
58
67
|
# Frontend Package Installation
|
|
59
68
|
|
|
60
69
|
Install the latest `neetoMessageTemplates` package using the below command:
|
|
@@ -80,6 +89,10 @@ yarn add @bigbinary/neeto-message-templates-frontend
|
|
|
80
89
|
|
|
81
90
|
- `templateVariables`: (optional) To add dynamic variables to form body field.
|
|
82
91
|
|
|
92
|
+
- `ownerId`: (optional) To provide the `id` of the owner if it is not an
|
|
93
|
+
Organization model. If the owner is an Organization, this prop can be left
|
|
94
|
+
unspecified.
|
|
95
|
+
|
|
83
96
|
### Usage
|
|
84
97
|
|
|
85
98
|
```javascript
|
|
@@ -141,6 +154,10 @@ const App = () => {
|
|
|
141
154
|
|
|
142
155
|
- `templateVariables`: (optional) To add dynamic variables to form body field.
|
|
143
156
|
|
|
157
|
+
- `ownerId`: (optional) To provide the `id` of the owner if it is not an
|
|
158
|
+
Organization model. If the owner is an Organization, this prop can be left
|
|
159
|
+
unspecified.
|
|
160
|
+
|
|
144
161
|
### Usage
|
|
145
162
|
|
|
146
163
|
```js
|
package/dist/index.cjs.js
CHANGED
|
@@ -13,8 +13,8 @@ var ramda = require('ramda');
|
|
|
13
13
|
var reactQuery = require('react-query');
|
|
14
14
|
var devtools = require('react-query/devtools');
|
|
15
15
|
var neetoIcons = require('@bigbinary/neeto-icons');
|
|
16
|
-
var axios = require('axios');
|
|
17
16
|
var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
|
|
17
|
+
var axios = require('axios');
|
|
18
18
|
var zustand = require('zustand');
|
|
19
19
|
var neetoEditor = require('@bigbinary/neeto-editor');
|
|
20
20
|
var formik$1 = require('@bigbinary/neetoui/formik');
|
|
@@ -5280,9 +5280,11 @@ 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",
|
|
5287
|
+
send: "Send",
|
|
5286
5288
|
cancel: "Cancel",
|
|
5287
5289
|
emailAddress: "Email address",
|
|
5288
5290
|
phoneNumber: "Phone number",
|
|
@@ -5303,13 +5305,16 @@ var template = {
|
|
|
5303
5305
|
sendTestEmail: "Send test email",
|
|
5304
5306
|
sendTestSms: "Send test sms",
|
|
5305
5307
|
filtersEmptyState: "There are no {{type}} to show for applied filters.",
|
|
5308
|
+
preview: "Template Preview",
|
|
5309
|
+
resolveVariable: "Resolve {{type}} variables",
|
|
5306
5310
|
validation: {
|
|
5307
5311
|
namePresence: "Name is required",
|
|
5308
5312
|
subjectPresence: "Subject is required",
|
|
5309
5313
|
bodyPresence: "Body is required",
|
|
5310
5314
|
emailAddressPresence: "Email address is required",
|
|
5311
5315
|
emailAddressFormatValidation: "Invalid email address",
|
|
5312
|
-
validPhoneNumber: "Enter valid phone number"
|
|
5316
|
+
validPhoneNumber: "Enter valid phone number",
|
|
5317
|
+
variablePresence: "Variable should not be empty"
|
|
5313
5318
|
}
|
|
5314
5319
|
};
|
|
5315
5320
|
var sendMessage = {
|
|
@@ -5422,18 +5427,31 @@ var fetchMessageTemplates = function fetchMessageTemplates(params) {
|
|
|
5422
5427
|
params: params
|
|
5423
5428
|
});
|
|
5424
5429
|
};
|
|
5425
|
-
var createMessageTemplate = function createMessageTemplate(
|
|
5430
|
+
var createMessageTemplate = function createMessageTemplate(_ref) {
|
|
5431
|
+
var messageTemplate = _ref.messageTemplate,
|
|
5432
|
+
ownerId = _ref.ownerId;
|
|
5426
5433
|
return axios__default["default"].post(MESSAGE_TEMPLATE_BASE_URL, {
|
|
5427
|
-
messageTemplate:
|
|
5434
|
+
messageTemplate: messageTemplate,
|
|
5435
|
+
ownerId: ownerId
|
|
5428
5436
|
});
|
|
5429
5437
|
};
|
|
5430
|
-
var updateMessageTemplate = function updateMessageTemplate(
|
|
5438
|
+
var updateMessageTemplate = function updateMessageTemplate(_ref2) {
|
|
5439
|
+
var id = _ref2.id,
|
|
5440
|
+
messageTemplate = _ref2.messageTemplate,
|
|
5441
|
+
ownerId = _ref2.ownerId;
|
|
5431
5442
|
return axios__default["default"].patch("".concat(MESSAGE_TEMPLATE_BASE_URL, "/").concat(id), {
|
|
5432
|
-
messageTemplate:
|
|
5443
|
+
messageTemplate: messageTemplate,
|
|
5444
|
+
ownerId: ownerId
|
|
5433
5445
|
});
|
|
5434
5446
|
};
|
|
5435
|
-
var deleteMessageTemplate = function deleteMessageTemplate(
|
|
5436
|
-
|
|
5447
|
+
var deleteMessageTemplate = function deleteMessageTemplate(_ref3) {
|
|
5448
|
+
var id = _ref3.id,
|
|
5449
|
+
ownerId = _ref3.ownerId;
|
|
5450
|
+
return axios__default["default"]["delete"]("".concat(MESSAGE_TEMPLATE_BASE_URL, "/").concat(id), {
|
|
5451
|
+
data: {
|
|
5452
|
+
ownerId: ownerId
|
|
5453
|
+
}
|
|
5454
|
+
});
|
|
5437
5455
|
};
|
|
5438
5456
|
var messageTemplatesApi = {
|
|
5439
5457
|
fetchAll: fetchMessageTemplates,
|
|
@@ -5446,42 +5464,46 @@ var QUERY_KEYS = {
|
|
|
5446
5464
|
MESSAGE_TEMPLATE: "message-templates"
|
|
5447
5465
|
};
|
|
5448
5466
|
|
|
5467
|
+
var ownerIdValue = function ownerIdValue(ownerId) {
|
|
5468
|
+
return ramda.isEmpty(ownerId) ? undefined : ownerId;
|
|
5469
|
+
};
|
|
5449
5470
|
var useFetchTemplates = function useFetchTemplates(params) {
|
|
5450
5471
|
return reactQuery.useQuery([QUERY_KEYS.MESSAGE_TEMPLATE, params], function () {
|
|
5451
5472
|
return messageTemplatesApi.fetchAll(params);
|
|
5452
5473
|
});
|
|
5453
5474
|
};
|
|
5454
|
-
var useCreateTemplate = function useCreateTemplate(options) {
|
|
5455
|
-
|
|
5456
|
-
|
|
5457
|
-
|
|
5475
|
+
var useCreateTemplate = function useCreateTemplate(ownerId, options) {
|
|
5476
|
+
return reactUtils.useMutationWithInvalidation(function (messageTemplate) {
|
|
5477
|
+
return messageTemplatesApi.create({
|
|
5478
|
+
messageTemplate: messageTemplate,
|
|
5479
|
+
ownerId: ownerIdValue(ownerId)
|
|
5480
|
+
});
|
|
5458
5481
|
}, {
|
|
5459
|
-
|
|
5460
|
-
|
|
5461
|
-
options === null || options === void 0 ? void 0 : options.onSuccess();
|
|
5462
|
-
}
|
|
5482
|
+
keysToInvalidate: [QUERY_KEYS.MESSAGE_TEMPLATE],
|
|
5483
|
+
onSuccess: options === null || options === void 0 ? void 0 : options.onSuccess
|
|
5463
5484
|
});
|
|
5464
5485
|
};
|
|
5465
|
-
var useUpdateTemplate = function useUpdateTemplate() {
|
|
5466
|
-
|
|
5467
|
-
return reactQuery.useMutation(function (_ref) {
|
|
5486
|
+
var useUpdateTemplate = function useUpdateTemplate(ownerId) {
|
|
5487
|
+
return reactUtils.useMutationWithInvalidation(function (_ref) {
|
|
5468
5488
|
var id = _ref.id,
|
|
5469
5489
|
payload = _ref.payload;
|
|
5470
|
-
return messageTemplatesApi.update(
|
|
5490
|
+
return messageTemplatesApi.update({
|
|
5491
|
+
id: id,
|
|
5492
|
+
messageTemplate: payload,
|
|
5493
|
+
ownerId: ownerIdValue(ownerId)
|
|
5494
|
+
});
|
|
5471
5495
|
}, {
|
|
5472
|
-
|
|
5473
|
-
queryClient.invalidateQueries(QUERY_KEYS.MESSAGE_TEMPLATE);
|
|
5474
|
-
}
|
|
5496
|
+
keysToInvalidate: [QUERY_KEYS.MESSAGE_TEMPLATE]
|
|
5475
5497
|
});
|
|
5476
5498
|
};
|
|
5477
|
-
var useDeleteTemplate = function useDeleteTemplate() {
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5499
|
+
var useDeleteTemplate = function useDeleteTemplate(ownerId) {
|
|
5500
|
+
return reactUtils.useMutationWithInvalidation(function (id) {
|
|
5501
|
+
return messageTemplatesApi["delete"]({
|
|
5502
|
+
id: id,
|
|
5503
|
+
ownerId: ownerIdValue(ownerId)
|
|
5504
|
+
});
|
|
5481
5505
|
}, {
|
|
5482
|
-
|
|
5483
|
-
queryClient.invalidateQueries(QUERY_KEYS.MESSAGE_TEMPLATE);
|
|
5484
|
-
}
|
|
5506
|
+
keysToInvalidate: [QUERY_KEYS.MESSAGE_TEMPLATE]
|
|
5485
5507
|
});
|
|
5486
5508
|
};
|
|
5487
5509
|
|
|
@@ -5497,10 +5519,11 @@ function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if
|
|
|
5497
5519
|
function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
5498
5520
|
var RowActions = function RowActions(_ref) {
|
|
5499
5521
|
var template = _ref.template,
|
|
5500
|
-
setManageTemplatePane = _ref.setManageTemplatePane
|
|
5522
|
+
setManageTemplatePane = _ref.setManageTemplatePane,
|
|
5523
|
+
ownerId = _ref.ownerId;
|
|
5501
5524
|
var _useTranslation = useTranslation(),
|
|
5502
5525
|
t = _useTranslation.t;
|
|
5503
|
-
var _useUpdateTemplate = useUpdateTemplate(),
|
|
5526
|
+
var _useUpdateTemplate = useUpdateTemplate(ownerId),
|
|
5504
5527
|
update = _useUpdateTemplate.mutate;
|
|
5505
5528
|
var Menu = neetoui.Dropdown.Menu,
|
|
5506
5529
|
MenuItem = neetoui.Dropdown.MenuItem;
|
|
@@ -5558,7 +5581,7 @@ var renderSearchProps = function renderSearchProps(label, setSearchTerm, searchT
|
|
|
5558
5581
|
value: searchTerm
|
|
5559
5582
|
};
|
|
5560
5583
|
};
|
|
5561
|
-
var buildTableColumnData = function buildTableColumnData(setManageTemplatePane) {
|
|
5584
|
+
var buildTableColumnData = function buildTableColumnData(setManageTemplatePane, ownerId) {
|
|
5562
5585
|
return [{
|
|
5563
5586
|
dataIndex: "name",
|
|
5564
5587
|
key: "name",
|
|
@@ -5572,6 +5595,7 @@ var buildTableColumnData = function buildTableColumnData(setManageTemplatePane)
|
|
|
5572
5595
|
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
|
|
5573
5596
|
style: "body2"
|
|
5574
5597
|
}, name), /*#__PURE__*/React__default["default"].createElement(RowActions, {
|
|
5598
|
+
ownerId: ownerId,
|
|
5575
5599
|
setManageTemplatePane: setManageTemplatePane,
|
|
5576
5600
|
template: template
|
|
5577
5601
|
}));
|
|
@@ -6086,7 +6110,7 @@ var TestMessage = function TestMessage(_ref) {
|
|
|
6086
6110
|
|
|
6087
6111
|
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
6112
|
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
|
|
6113
|
+
var Form = function Form(_ref) {
|
|
6090
6114
|
var onClose = _ref.onClose,
|
|
6091
6115
|
isEdit = _ref.isEdit,
|
|
6092
6116
|
_ref$template = _ref.template,
|
|
@@ -6204,7 +6228,7 @@ var AddEdit = function AddEdit(_ref) {
|
|
|
6204
6228
|
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
|
|
6205
6229
|
style: "h2",
|
|
6206
6230
|
weight: "semibold"
|
|
6207
|
-
}, label)), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement(Form
|
|
6231
|
+
}, label)), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement(Form, {
|
|
6208
6232
|
createUpdateTemplate: createUpdateTemplate,
|
|
6209
6233
|
handleSubmitTestTemplate: handleSubmitTestTemplate,
|
|
6210
6234
|
isEdit: isEdit,
|
|
@@ -6236,7 +6260,7 @@ var useFilters = function useFilters() {
|
|
|
6236
6260
|
};
|
|
6237
6261
|
};
|
|
6238
6262
|
|
|
6239
|
-
var useTemplates = function useTemplates(type) {
|
|
6263
|
+
var useTemplates = function useTemplates(type, ownerId) {
|
|
6240
6264
|
var _useState = React.useState(neetoFiltersFrontend.buildFiltersFromURL(buildTableColumnData().filter(ramda.prop("node")))),
|
|
6241
6265
|
_useState2 = _slicedToArray(_useState, 2),
|
|
6242
6266
|
filters = _useState2[0],
|
|
@@ -6251,16 +6275,17 @@ var useTemplates = function useTemplates(type) {
|
|
|
6251
6275
|
pageIndex: pageIndex,
|
|
6252
6276
|
pageSize: pageSize,
|
|
6253
6277
|
filters: JSON.stringify(filters),
|
|
6254
|
-
templateType: MESSAGE_TEMPLATES[type].value
|
|
6278
|
+
templateType: MESSAGE_TEMPLATES[type].value,
|
|
6279
|
+
ownerId: ramda.isEmpty(ownerId) ? undefined : ownerId
|
|
6255
6280
|
};
|
|
6256
6281
|
var _useFetchTemplates = useFetchTemplates(templateParams),
|
|
6257
6282
|
_useFetchTemplates$da = _useFetchTemplates.data,
|
|
6258
6283
|
templatesData = _useFetchTemplates$da === void 0 ? {} : _useFetchTemplates$da,
|
|
6259
6284
|
isLoadingTemplates = _useFetchTemplates.isLoading,
|
|
6260
6285
|
isFetching = _useFetchTemplates.isFetching;
|
|
6261
|
-
var _useCreateTemplate = useCreateTemplate(),
|
|
6286
|
+
var _useCreateTemplate = useCreateTemplate(ownerId),
|
|
6262
6287
|
create = _useCreateTemplate.mutate;
|
|
6263
|
-
var _useUpdateTemplate = useUpdateTemplate(),
|
|
6288
|
+
var _useUpdateTemplate = useUpdateTemplate(ownerId),
|
|
6264
6289
|
update = _useUpdateTemplate.mutate;
|
|
6265
6290
|
var createUpdateTemplate = function createUpdateTemplate(_ref, options) {
|
|
6266
6291
|
var isEdit = _ref.isEdit,
|
|
@@ -6294,10 +6319,11 @@ var List = function List(_ref) {
|
|
|
6294
6319
|
pageProperties = _ref.pageProperties,
|
|
6295
6320
|
label = _ref.label,
|
|
6296
6321
|
addText = _ref.addText,
|
|
6297
|
-
isFilterApplied = _ref.isFilterApplied
|
|
6322
|
+
isFilterApplied = _ref.isFilterApplied,
|
|
6323
|
+
ownerId = _ref.ownerId;
|
|
6298
6324
|
var _useTranslation = useTranslation(),
|
|
6299
6325
|
t = _useTranslation.t;
|
|
6300
|
-
var _useDeleteTemplate = useDeleteTemplate(),
|
|
6326
|
+
var _useDeleteTemplate = useDeleteTemplate(ownerId),
|
|
6301
6327
|
deleteTemplate = _useDeleteTemplate.mutate,
|
|
6302
6328
|
isDeleting = _useDeleteTemplate.isLoading;
|
|
6303
6329
|
var templates = templatesData.templates,
|
|
@@ -6318,7 +6344,7 @@ var List = function List(_ref) {
|
|
|
6318
6344
|
}, !ramda.isEmpty(templates) ? /*#__PURE__*/React__default["default"].createElement(TableWrapper__default["default"], {
|
|
6319
6345
|
hasPagination: totalCount > pageSize
|
|
6320
6346
|
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Table, {
|
|
6321
|
-
columnData: buildTableColumnData(setManageTemplatePane),
|
|
6347
|
+
columnData: buildTableColumnData(setManageTemplatePane, ownerId),
|
|
6322
6348
|
currentPageNumber: pageIndex,
|
|
6323
6349
|
defaultPageSize: pageSize,
|
|
6324
6350
|
loading: isLoading,
|
|
@@ -6380,7 +6406,9 @@ var MessageTemplates = function MessageTemplates(_ref) {
|
|
|
6380
6406
|
_ref$shouldIncludeTes = _ref.shouldIncludeTestTemplate,
|
|
6381
6407
|
shouldIncludeTestTemplate = _ref$shouldIncludeTes === void 0 ? true : _ref$shouldIncludeTes,
|
|
6382
6408
|
_ref$templateVariable = _ref.templateVariables,
|
|
6383
|
-
templateVariables = _ref$templateVariable === void 0 ? {} : _ref$templateVariable
|
|
6409
|
+
templateVariables = _ref$templateVariable === void 0 ? {} : _ref$templateVariable,
|
|
6410
|
+
_ref$ownerId = _ref.ownerId,
|
|
6411
|
+
ownerId = _ref$ownerId === void 0 ? "" : _ref$ownerId;
|
|
6384
6412
|
var _useState = React.useState(MESSAGE_TEMPLATE_INITIAL_STATE),
|
|
6385
6413
|
_useState2 = _slicedToArray(_useState, 2),
|
|
6386
6414
|
manageTemplatePane = _useState2[0],
|
|
@@ -6394,7 +6422,7 @@ var MessageTemplates = function MessageTemplates(_ref) {
|
|
|
6394
6422
|
filterColumns = _useFilters.filterColumns,
|
|
6395
6423
|
setSearchTerm = _useFilters.setSearchTerm,
|
|
6396
6424
|
searchTerm = _useFilters.searchTerm;
|
|
6397
|
-
var _useTemplates = useTemplates(type),
|
|
6425
|
+
var _useTemplates = useTemplates(type, ownerId),
|
|
6398
6426
|
isLoading = _useTemplates.isLoading,
|
|
6399
6427
|
templatesData = _useTemplates.templatesData,
|
|
6400
6428
|
createUpdateTemplate = _useTemplates.createUpdateTemplate,
|
|
@@ -6455,6 +6483,7 @@ var MessageTemplates = function MessageTemplates(_ref) {
|
|
|
6455
6483
|
label: label,
|
|
6456
6484
|
labelSingular: labelSingular,
|
|
6457
6485
|
manageTemplatePane: manageTemplatePane,
|
|
6486
|
+
ownerId: ownerId,
|
|
6458
6487
|
pageProperties: pageProperties,
|
|
6459
6488
|
setManageTemplatePane: setManageTemplatePane,
|
|
6460
6489
|
setPageProperties: setPageProperties,
|
|
@@ -6475,13 +6504,13 @@ var MessageTemplates = function MessageTemplates(_ref) {
|
|
|
6475
6504
|
};
|
|
6476
6505
|
var index$1 = withReactQuery(MessageTemplates);
|
|
6477
6506
|
|
|
6507
|
+
var formatEditorContent = function formatEditorContent(value) {
|
|
6508
|
+
return value === null || value === void 0 ? void 0 : value.replaceAll(/<\/?(?!img)\w*\b[^>]*>/gi, "").trim();
|
|
6509
|
+
};
|
|
6478
6510
|
var SEND_MESSAGE_INITIAL_VALUES = {
|
|
6479
6511
|
subject: "",
|
|
6480
6512
|
body: ""
|
|
6481
6513
|
};
|
|
6482
|
-
var formatEditorContent = function formatEditorContent(value) {
|
|
6483
|
-
return value === null || value === void 0 ? void 0 : value.replaceAll(/<\/?(?!img)\w*\b[^>]*>/gi, "").trim();
|
|
6484
|
-
};
|
|
6485
6514
|
var EMAIL_MESSAGE_FORM_SCHEMA = yup__namespace.object().shape({
|
|
6486
6515
|
subject: yup__namespace.string().trim().required(t$1("template.validation.subjectPresence")),
|
|
6487
6516
|
body: yup__namespace.string().test("body", t$1("template.validation.bodyPresence"), function (value) {
|
|
@@ -6493,10 +6522,15 @@ var SMS_MESSAGE_FORM_VALIDATION_SCHEMA = yup__namespace.object().shape({
|
|
|
6493
6522
|
return !!formatEditorContent(value);
|
|
6494
6523
|
})
|
|
6495
6524
|
});
|
|
6525
|
+
var WHATSAPP_MESSAGE_FORM_VALIDATIONS_SCHEMA = yup__namespace.object().shape({
|
|
6526
|
+
variableContents: yup__namespace.object().shape({
|
|
6527
|
+
body: yup__namespace.array().of(yup__namespace.string().required(t$1("template.validation.variablePresence")))
|
|
6528
|
+
})
|
|
6529
|
+
});
|
|
6496
6530
|
|
|
6497
6531
|
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
6532
|
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
|
|
6533
|
+
var EmailAndSms = function EmailAndSms(_ref) {
|
|
6500
6534
|
var isEmailTemplate = _ref.isEmailTemplate,
|
|
6501
6535
|
onClose = _ref.onClose,
|
|
6502
6536
|
templates = _ref.templates,
|
|
@@ -6573,7 +6607,7 @@ var Form = function Form(_ref) {
|
|
|
6573
6607
|
className: "absolute bottom-0 left-0 flex gap-x-2"
|
|
6574
6608
|
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
|
|
6575
6609
|
disabled: !dirty || isSubmitting,
|
|
6576
|
-
label: t("template.
|
|
6610
|
+
label: t("template.send"),
|
|
6577
6611
|
loading: isSubmitting,
|
|
6578
6612
|
type: "submit"
|
|
6579
6613
|
}), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
|
|
@@ -6585,6 +6619,125 @@ var Form = function Form(_ref) {
|
|
|
6585
6619
|
});
|
|
6586
6620
|
};
|
|
6587
6621
|
|
|
6622
|
+
var Whatsapp = function Whatsapp(_ref) {
|
|
6623
|
+
var _templates$, _templates$2, _templates$3, _templates$4;
|
|
6624
|
+
var templates = _ref.templates,
|
|
6625
|
+
onClose = _ref.onClose,
|
|
6626
|
+
handleSubmit = _ref.handleSubmit;
|
|
6627
|
+
var _useTranslation = useTranslation(),
|
|
6628
|
+
t = _useTranslation.t;
|
|
6629
|
+
var getInitialVariableComponents = function getInitialVariableComponents(variables) {
|
|
6630
|
+
var initialComponents = {};
|
|
6631
|
+
variables.forEach(function (_ref2) {
|
|
6632
|
+
var type = _ref2.type,
|
|
6633
|
+
count = _ref2.count;
|
|
6634
|
+
initialComponents[type] = Array(count).fill("");
|
|
6635
|
+
});
|
|
6636
|
+
return initialComponents;
|
|
6637
|
+
};
|
|
6638
|
+
var getTemplateMessage = function getTemplateMessage(components) {
|
|
6639
|
+
return pure.nullSafe(ramda.pluck)("text", components).join("\n");
|
|
6640
|
+
};
|
|
6641
|
+
if (ramda.isEmpty(templates)) {
|
|
6642
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, null, t("template.emptyState", {
|
|
6643
|
+
type: t("template.whatsappTemplates")
|
|
6644
|
+
})), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
|
|
6645
|
+
className: "absolute bottom-0 left-0"
|
|
6646
|
+
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
|
|
6647
|
+
label: t("template.close"),
|
|
6648
|
+
onClick: onClose
|
|
6649
|
+
})));
|
|
6650
|
+
}
|
|
6651
|
+
var initialFormValues = {
|
|
6652
|
+
selectedTemplate: {
|
|
6653
|
+
label: (_templates$ = templates[0]) === null || _templates$ === void 0 ? void 0 : _templates$.name,
|
|
6654
|
+
value: (_templates$2 = templates[0]) === null || _templates$2 === void 0 ? void 0 : _templates$2.id
|
|
6655
|
+
},
|
|
6656
|
+
templateMessage: getTemplateMessage((_templates$3 = templates[0]) === null || _templates$3 === void 0 ? void 0 : _templates$3.components),
|
|
6657
|
+
variableContents: getInitialVariableComponents((_templates$4 = templates[0]) === null || _templates$4 === void 0 ? void 0 : _templates$4.variableCount)
|
|
6658
|
+
};
|
|
6659
|
+
return /*#__PURE__*/React__default["default"].createElement(formik$1.Form, {
|
|
6660
|
+
formProps: {
|
|
6661
|
+
noValidate: true,
|
|
6662
|
+
className: "flex w-full flex-col gap-y-4 pb-6"
|
|
6663
|
+
},
|
|
6664
|
+
formikProps: {
|
|
6665
|
+
initialValues: initialFormValues,
|
|
6666
|
+
validationSchema: WHATSAPP_MESSAGE_FORM_VALIDATIONS_SCHEMA,
|
|
6667
|
+
onSubmit: handleSubmit
|
|
6668
|
+
}
|
|
6669
|
+
}, function (_ref3) {
|
|
6670
|
+
var dirty = _ref3.dirty,
|
|
6671
|
+
isSubmitting = _ref3.isSubmitting,
|
|
6672
|
+
values = _ref3.values,
|
|
6673
|
+
setValues = _ref3.setValues;
|
|
6674
|
+
var handleTemplateChange = function handleTemplateChange(value) {
|
|
6675
|
+
if (!value) return;
|
|
6676
|
+
var template = pure.findBy({
|
|
6677
|
+
id: value === null || value === void 0 ? void 0 : value.value
|
|
6678
|
+
}, templates);
|
|
6679
|
+
setValues({
|
|
6680
|
+
selectedTemplate: {
|
|
6681
|
+
label: template.name,
|
|
6682
|
+
value: template.id
|
|
6683
|
+
},
|
|
6684
|
+
templateMessage: getTemplateMessage(template.components),
|
|
6685
|
+
variableContents: getInitialVariableComponents(template.variableCount)
|
|
6686
|
+
});
|
|
6687
|
+
};
|
|
6688
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(formik$1.Select, {
|
|
6689
|
+
required: true,
|
|
6690
|
+
defaultValue: initialFormValues.selectedTemplate,
|
|
6691
|
+
label: t("template.title"),
|
|
6692
|
+
name: "selectedTemplate",
|
|
6693
|
+
options: templates.map(function (_ref4) {
|
|
6694
|
+
var name = _ref4.name,
|
|
6695
|
+
id = _ref4.id;
|
|
6696
|
+
return {
|
|
6697
|
+
label: name,
|
|
6698
|
+
value: id
|
|
6699
|
+
};
|
|
6700
|
+
}),
|
|
6701
|
+
onChange: handleTemplateChange
|
|
6702
|
+
}), /*#__PURE__*/React__default["default"].createElement(neetoui.Textarea, {
|
|
6703
|
+
disabled: true,
|
|
6704
|
+
nakedTextarea: true,
|
|
6705
|
+
label: t("template.preview"),
|
|
6706
|
+
value: values.templateMessage
|
|
6707
|
+
}), pure.isNotEmpty(values.variableContents) && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, Object.keys(values.variableContents).map(function (group) {
|
|
6708
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
6709
|
+
className: "flex flex-col gap-y-2",
|
|
6710
|
+
key: group
|
|
6711
|
+
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
|
|
6712
|
+
style: "h4"
|
|
6713
|
+
}, t("template.resolveVariable", {
|
|
6714
|
+
type: pure.capitalize(group)
|
|
6715
|
+
})), values.variableContents[group].map(function (_, index) {
|
|
6716
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
6717
|
+
key: "".concat(group, "-").concat(index)
|
|
6718
|
+
}, /*#__PURE__*/React__default["default"].createElement(formik$1.Input, {
|
|
6719
|
+
required: true,
|
|
6720
|
+
key: "".concat(group, "-").concat(index),
|
|
6721
|
+
label: "{{".concat(index + 1, "}}"),
|
|
6722
|
+
name: "variableContents.".concat(group, ".").concat(index)
|
|
6723
|
+
}));
|
|
6724
|
+
}));
|
|
6725
|
+
})), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
|
|
6726
|
+
className: "absolute bottom-0 left-0 flex gap-x-2"
|
|
6727
|
+
}, /*#__PURE__*/React__default["default"].createElement(formik$1.Button, {
|
|
6728
|
+
disabled: !dirty || isSubmitting,
|
|
6729
|
+
label: t("template.send"),
|
|
6730
|
+
loading: isSubmitting,
|
|
6731
|
+
type: "submit"
|
|
6732
|
+
}), /*#__PURE__*/React__default["default"].createElement(formik$1.Button, {
|
|
6733
|
+
label: t("template.cancel"),
|
|
6734
|
+
style: "text",
|
|
6735
|
+
type: "reset",
|
|
6736
|
+
onClick: onClose
|
|
6737
|
+
})));
|
|
6738
|
+
});
|
|
6739
|
+
};
|
|
6740
|
+
|
|
6588
6741
|
var SendMessagePane = function SendMessagePane(_ref) {
|
|
6589
6742
|
var _ref$isOpen = _ref.isOpen,
|
|
6590
6743
|
isOpen = _ref$isOpen === void 0 ? false : _ref$isOpen,
|
|
@@ -6601,7 +6754,9 @@ var SendMessagePane = function SendMessagePane(_ref) {
|
|
|
6601
6754
|
_ref$customFieldsVali = _ref.customFieldsValidationSchema,
|
|
6602
6755
|
customFieldsValidationSchema = _ref$customFieldsVali === void 0 ? {} : _ref$customFieldsVali,
|
|
6603
6756
|
_ref$templateVariable = _ref.templateVariables,
|
|
6604
|
-
templateVariables = _ref$templateVariable === void 0 ? {} : _ref$templateVariable
|
|
6757
|
+
templateVariables = _ref$templateVariable === void 0 ? {} : _ref$templateVariable,
|
|
6758
|
+
_ref$ownerId = _ref.ownerId,
|
|
6759
|
+
ownerId = _ref$ownerId === void 0 ? "" : _ref$ownerId;
|
|
6605
6760
|
var _useTranslation = useTranslation(),
|
|
6606
6761
|
t = _useTranslation.t;
|
|
6607
6762
|
var initialFocusField = React.useRef();
|
|
@@ -6611,7 +6766,8 @@ var SendMessagePane = function SendMessagePane(_ref) {
|
|
|
6611
6766
|
var value = MESSAGE_TEMPLATES[type].value;
|
|
6612
6767
|
var templateParams = {
|
|
6613
6768
|
status: "active",
|
|
6614
|
-
templateType: value
|
|
6769
|
+
templateType: value,
|
|
6770
|
+
ownerId: ownerId
|
|
6615
6771
|
};
|
|
6616
6772
|
var _useFetchTemplates = useFetchTemplates(templateParams),
|
|
6617
6773
|
_useFetchTemplates$da = _useFetchTemplates.data,
|
|
@@ -6619,6 +6775,7 @@ var SendMessagePane = function SendMessagePane(_ref) {
|
|
|
6619
6775
|
_useFetchTemplates$da3 = _useFetchTemplates$da2.templates,
|
|
6620
6776
|
templates = _useFetchTemplates$da3 === void 0 ? [] : _useFetchTemplates$da3;
|
|
6621
6777
|
var isEmailTemplate = type === "email";
|
|
6778
|
+
var isWhatsappTemplate = type === "whatsapp";
|
|
6622
6779
|
return /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, {
|
|
6623
6780
|
initialFocusRef: initialFocusField,
|
|
6624
6781
|
isOpen: isOpen,
|
|
@@ -6626,7 +6783,11 @@ var SendMessagePane = function SendMessagePane(_ref) {
|
|
|
6626
6783
|
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
|
|
6627
6784
|
style: "h2",
|
|
6628
6785
|
weight: "semibold"
|
|
6629
|
-
}, t("common.send"), " ", type)), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement(
|
|
6786
|
+
}, t("common.send"), " ", type)), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, isWhatsappTemplate ? /*#__PURE__*/React__default["default"].createElement(Whatsapp, {
|
|
6787
|
+
handleSubmit: handleSubmit,
|
|
6788
|
+
templates: templates,
|
|
6789
|
+
onClose: onClose
|
|
6790
|
+
}) : /*#__PURE__*/React__default["default"].createElement(EmailAndSms, {
|
|
6630
6791
|
customFields: customFields,
|
|
6631
6792
|
customFieldsInitialValues: customFieldsInitialValues,
|
|
6632
6793
|
customFieldsValidationSchema: customFieldsValidationSchema,
|