awing-library 2.1.95-beta → 2.1.97-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/lib/ACM-AXN/CampaignSchedule/Components/RowAdvance/container.js +42 -41
  2. package/lib/ACM-AXN/Page/CreateOrEdit/Components/useListPageView.js +9 -4
  3. package/lib/ACM-AXN/Page/CreateOrEdit/Recoil.d.ts +2 -1
  4. package/lib/ACM-AXN/Page/CreateOrEdit/Recoil.js +14 -1
  5. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/FileUtils.d.ts +3 -1
  6. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/FileUtils.js +1 -6
  7. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.d.ts +7 -0
  8. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.js +13 -15
  9. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewContent.js +23 -2
  10. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewInfo.d.ts +3 -2
  11. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/index.test.js +2 -1
  12. package/lib/ACM-AXN/Page/CreateOrEdit/Utils.d.ts +4 -3
  13. package/lib/ACM-AXN/Page/CreateOrEdit/Utils.js +4 -2
  14. package/lib/ACM-AXN/Page/Types.d.ts +10 -37
  15. package/lib/ACM-AXN/Page/enums.d.ts +6 -0
  16. package/lib/ACM-AXN/Page/enums.js +8 -1
  17. package/lib/ACM-AXN/Template/Constants.d.ts +0 -0
  18. package/lib/ACM-AXN/Template/Constants.js +1 -0
  19. package/lib/ACM-AXN/Template/Container.d.ts +2 -0
  20. package/lib/ACM-AXN/Template/Container.js +74 -0
  21. package/lib/ACM-AXN/Template/Container.test.d.ts +1 -0
  22. package/lib/ACM-AXN/Template/Container.test.js +259 -0
  23. package/lib/ACM-AXN/Template/CreateOrEdit/CreateOrEdit.test.d.ts +1 -0
  24. package/lib/ACM-AXN/Template/CreateOrEdit/CreateOrEdit.test.js +370 -0
  25. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.d.ts +9 -0
  26. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.js +78 -0
  27. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.test.d.ts +1 -0
  28. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.test.js +150 -0
  29. package/lib/ACM-AXN/Template/CreateOrEdit/Recoils.d.ts +6 -0
  30. package/lib/ACM-AXN/Template/CreateOrEdit/Recoils.js +79 -0
  31. package/lib/ACM-AXN/Template/CreateOrEdit/Script.d.ts +3 -0
  32. package/lib/ACM-AXN/Template/CreateOrEdit/Script.js +58 -0
  33. package/lib/ACM-AXN/Template/CreateOrEdit/Script.test.d.ts +1 -0
  34. package/lib/ACM-AXN/Template/CreateOrEdit/Script.test.js +162 -0
  35. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Events.d.ts +5 -0
  36. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Events.js +41 -0
  37. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.d.ts +20 -0
  38. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.js +283 -0
  39. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.test.d.ts +1 -0
  40. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.test.js +220 -0
  41. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Utils.d.ts +25 -0
  42. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Utils.js +138 -0
  43. package/lib/ACM-AXN/Template/CreateOrEdit/Template/index.d.ts +3 -0
  44. package/lib/ACM-AXN/Template/CreateOrEdit/Template/index.js +46 -0
  45. package/lib/ACM-AXN/Template/CreateOrEdit/index.d.ts +3 -0
  46. package/lib/ACM-AXN/Template/CreateOrEdit/index.js +215 -0
  47. package/lib/ACM-AXN/Template/Hooks.d.ts +5 -0
  48. package/lib/ACM-AXN/Template/Hooks.js +13 -0
  49. package/lib/ACM-AXN/Template/Import.d.ts +2 -0
  50. package/lib/ACM-AXN/Template/Import.js +123 -0
  51. package/lib/ACM-AXN/Template/Import.test.d.ts +1 -0
  52. package/lib/ACM-AXN/Template/Import.test.js +188 -0
  53. package/lib/ACM-AXN/Template/Types.d.ts +84 -0
  54. package/lib/ACM-AXN/Template/Types.js +2 -0
  55. package/lib/ACM-AXN/Template/UploadButton.d.ts +2 -0
  56. package/lib/ACM-AXN/Template/UploadButton.js +14 -0
  57. package/lib/ACM-AXN/Template/index.d.ts +5 -0
  58. package/lib/ACM-AXN/Template/index.js +44 -0
  59. package/lib/ACM-AXN/ViewTemplate/index.d.ts +2 -1
  60. package/lib/ACM-AXN/ViewTemplate/interface.d.ts +6 -1
  61. package/lib/AWING/HOC/Wrapper.d.ts +6 -0
  62. package/lib/AWING/HOC/Wrapper.js +10 -0
  63. package/lib/translate/en/translation.json +27 -1
  64. package/lib/translate/vi/translation.json +27 -1
  65. package/package.json +1 -1
  66. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.test.d.ts +0 -1
  67. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.test.js +0 -326
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom/extend-expect';
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
37
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
38
+ return new (P || (P = Promise))(function (resolve, reject) {
39
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
40
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
41
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
42
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
43
+ });
44
+ };
45
+ var __generator = (this && this.__generator) || function (thisArg, body) {
46
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
47
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
48
+ function verb(n) { return function (v) { return step([n, v]); }; }
49
+ function step(op) {
50
+ if (f) throw new TypeError("Generator is already executing.");
51
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
52
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
53
+ if (y = 0, t) op = [op[0] & 2, t.value];
54
+ switch (op[0]) {
55
+ case 0: case 1: t = op; break;
56
+ case 4: _.label++; return { value: op[1], done: false };
57
+ case 5: _.label++; y = op[1]; op = [0]; continue;
58
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
59
+ default:
60
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
61
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
62
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
63
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
64
+ if (t[2]) _.ops.pop();
65
+ _.trys.pop(); continue;
66
+ }
67
+ op = body.call(thisArg, _);
68
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
69
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
70
+ }
71
+ };
72
+ var __importDefault = (this && this.__importDefault) || function (mod) {
73
+ return (mod && mod.__esModule) ? mod : { "default": mod };
74
+ };
75
+ Object.defineProperty(exports, "__esModule", { value: true });
76
+ var jsx_runtime_1 = require("react/jsx-runtime");
77
+ /* eslint-disable testing-library/no-node-access */
78
+ /* eslint-disable testing-library/no-container */
79
+ /* eslint-disable testing-library/no-wait-for-side-effects */
80
+ require("@testing-library/jest-dom/extend-expect");
81
+ var react_1 = require("@testing-library/react");
82
+ var Parameter_1 = __importDefault(require("./Parameter"));
83
+ var Utils = __importStar(require("./Utils"));
84
+ var recoil_1 = require("recoil");
85
+ var Recoils_1 = require("../Recoils");
86
+ // Mock i18next
87
+ jest.mock('react-i18next', function () { return (__assign(__assign({}, jest.requireActual('react-i18next')), { useTranslation: function () { return ({ t: jest.fn(function (key) { return key; }) }); } })); });
88
+ // Mock i18next
89
+ jest.mock('react-i18next', function () { return (__assign(__assign({}, jest.requireActual('react-i18next')), { useTranslation: function () { return ({ t: jest.fn(function (key) { return key; }) }); } })); });
90
+ // Mock useTransition
91
+ jest.mock('react', function () { return (__assign(__assign({}, jest.requireActual('react')), { useTransition: function () { return [
92
+ 'a',
93
+ function (fn) {
94
+ fn();
95
+ },
96
+ ]; } })); });
97
+ // Mock utils
98
+ var utils = {
99
+ enhancedUpdate: function () { },
100
+ };
101
+ jest.mock('./Utils', function () { return (__assign(__assign({}, jest.requireActual('./Utils')), { enhancedUpdate: jest.fn() })); });
102
+ // props
103
+ var rows = [
104
+ {
105
+ id: '14895',
106
+ templateId: '4671435926616395650',
107
+ fieldName: 'video_inbanner_1',
108
+ fieldType: 'video',
109
+ defaultValue: null,
110
+ labelName: 'File video',
111
+ isRequired: true,
112
+ childrens: [],
113
+ },
114
+ {
115
+ id: '14896',
116
+ templateId: '4671435926616395650',
117
+ fieldName: 'video_inbanner_2',
118
+ fieldType: 'object',
119
+ defaultValue: null,
120
+ labelName: 'File banner nền video',
121
+ isRequired: true,
122
+ childrens: [
123
+ {
124
+ id: '148967',
125
+ templateId: '4671435926616395650',
126
+ fieldName: 'video_inbanner_2',
127
+ fieldType: 'image',
128
+ defaultValue: null,
129
+ labelName: 'File banner nền video',
130
+ isRequired: true,
131
+ childrens: [],
132
+ },
133
+ ],
134
+ },
135
+ {
136
+ id: '148961',
137
+ templateId: '4671435926616395650',
138
+ fieldName: 'video_inbanner_2',
139
+ fieldType: 'list',
140
+ defaultValue: null,
141
+ labelName: 'File banner nền video',
142
+ isRequired: true,
143
+ childrens: [
144
+ {
145
+ id: '148967s',
146
+ templateId: '4671435926616395650',
147
+ fieldName: 'video_inbanner_2',
148
+ fieldType: 'image',
149
+ defaultValue: null,
150
+ labelName: 'File banner nền video',
151
+ isRequired: true,
152
+ childrens: [],
153
+ },
154
+ ],
155
+ },
156
+ ];
157
+ var props = {
158
+ handleSetParameter: function (fn) {
159
+ return fn(rows);
160
+ },
161
+ };
162
+ describe('Template Infomation Tab Component', function () {
163
+ beforeAll(function () { });
164
+ var renderUi = function () {
165
+ return (0, react_1.render)((0, jsx_runtime_1.jsx)(recoil_1.RecoilRoot, { initializeState: function (_a) {
166
+ var set = _a.set;
167
+ set(Recoils_1.templateParametersState, rows);
168
+ }, children: (0, jsx_runtime_1.jsx)(Parameter_1.default, { templateId: '1102' }) }));
169
+ };
170
+ it('renders without crashing', function () {
171
+ renderUi();
172
+ });
173
+ it('trigger add rows', function () {
174
+ var updateSpy = jest.spyOn(props, 'handleSetParameter');
175
+ renderUi();
176
+ var addBtn = react_1.screen.getByRole('button', { name: /button-add/i });
177
+ react_1.fireEvent.click(addBtn);
178
+ expect(updateSpy).toBeCalled();
179
+ // expect(addBtn).toBeInTheDocument()
180
+ });
181
+ it('trigger edit cell', function () { return __awaiter(void 0, void 0, void 0, function () {
182
+ var updateSpy, container, labelNameInput, fieldTypeInput;
183
+ return __generator(this, function (_a) {
184
+ switch (_a.label) {
185
+ case 0:
186
+ updateSpy = jest.spyOn(props, 'handleSetParameter');
187
+ container = renderUi().container;
188
+ labelNameInput = container.querySelector("input[name=\"labelName--148961-148967s\"]");
189
+ fieldTypeInput = container.querySelector("input[name=\"fieldType--148961-148967s\"]");
190
+ react_1.fireEvent.change(labelNameInput, {
191
+ target: { value: 'fieldInput-change' },
192
+ });
193
+ react_1.fireEvent.change(fieldTypeInput, {
194
+ target: { value: 'video' },
195
+ });
196
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
197
+ expect(updateSpy).toBeCalledTimes(1);
198
+ })];
199
+ case 1:
200
+ _a.sent();
201
+ return [2 /*return*/];
202
+ }
203
+ });
204
+ }); });
205
+ it('Remove row', function () { return __awaiter(void 0, void 0, void 0, function () {
206
+ var removeBtn;
207
+ return __generator(this, function (_a) {
208
+ ;
209
+ Utils.enhancedUpdate.mockImplementation(utils.enhancedUpdate);
210
+ renderUi();
211
+ removeBtn = react_1.screen.getAllByRole('button', {
212
+ name: /Common.Delete/i,
213
+ });
214
+ removeBtn.forEach(function (btn) {
215
+ react_1.fireEvent.click(btn);
216
+ });
217
+ return [2 /*return*/];
218
+ });
219
+ }); });
220
+ });
@@ -0,0 +1,25 @@
1
+ import { ITemplateParameter } from '../../Types';
2
+ import { DataObject } from '../../../../AWING';
3
+ export declare const CUSTOM_FIELD_NAME: {
4
+ CHILDRENS: string;
5
+ REMOVE: string;
6
+ FIELD_TYPE: string;
7
+ IS_REQUIRED: string;
8
+ IS_ADVANCED: string;
9
+ };
10
+ export declare const removeFiledName: (templateParameters: ITemplateParameter[]) => ITemplateParameter[];
11
+ export declare const flattenParameter4Parent: (rows: DataObject[], parentFieldName?: string[]) => DataObject[];
12
+ export declare const flattenParameter: (parameters: DataObject[], parentId?: string[], parentFieldType?: string, parentFieldName?: string[]) => DataObject[];
13
+ export declare const enhancedFindIndex: (rows: DataObject[], ids: string[]) => number[];
14
+ /**
15
+ * function enhancedUpdate
16
+ * Des: Hàm update rows
17
+ * \nWarn: Hàm làm việc với tham chiếu!
18
+ * @param rows
19
+ * @param ids
20
+ * @param field
21
+ * @param value
22
+ * @param defaultParam
23
+ */
24
+ export declare const enhancedUpdate: (rows: DataObject[], ids: string[], field: string, value: any, defaultParam: ITemplateParameter) => void;
25
+ export declare const enhancedRemove: (ids: string[]) => void;
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
+ if (ar || !(i in from)) {
16
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
+ ar[i] = from[i];
18
+ }
19
+ }
20
+ return to.concat(ar || Array.prototype.slice.call(from));
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.enhancedRemove = exports.enhancedUpdate = exports.enhancedFindIndex = exports.flattenParameter = exports.flattenParameter4Parent = exports.removeFiledName = exports.CUSTOM_FIELD_NAME = void 0;
24
+ var Enum_1 = require("../../../../ACM-AXN/ViewTemplate/Enum");
25
+ var lodash_1 = require("lodash");
26
+ exports.CUSTOM_FIELD_NAME = {
27
+ CHILDRENS: 'childrens',
28
+ REMOVE: 'remove',
29
+ FIELD_TYPE: 'fieldType',
30
+ IS_REQUIRED: 'isRequired',
31
+ IS_ADVANCED: 'isAdvanced',
32
+ };
33
+ var removeFiledName = function (templateParameters) { return templateParameters.map(function (item) {
34
+ var _a;
35
+ return (__assign(__assign({}, item), { childrens: (0, exports.removeFiledName)(item.childrens), fieldName: (_a = item === null || item === void 0 ? void 0 : item.fieldName) === null || _a === void 0 ? void 0 : _a.split('.').at(-1) }));
36
+ }); };
37
+ exports.removeFiledName = removeFiledName;
38
+ var flattenParameter4Parent = function (rows, parentFieldName) {
39
+ if (parentFieldName === void 0) { parentFieldName = []; }
40
+ parentFieldName = parentFieldName.filter(Boolean);
41
+ return rows
42
+ .map(function (item) {
43
+ var childrens = __spreadArray([], item.childrens, true);
44
+ // delete item.childrens
45
+ return __spreadArray([
46
+ __assign(__assign({}, item), { fieldName: __spreadArray(__spreadArray([], parentFieldName, true), [item.fieldName], false).join('.') })
47
+ ], (0, exports.flattenParameter4Parent)(childrens, __spreadArray(__spreadArray([], parentFieldName, true), [
48
+ item.parentFieldName,
49
+ item.fieldName,
50
+ ], false).flat()), true);
51
+ })
52
+ .flat();
53
+ };
54
+ exports.flattenParameter4Parent = flattenParameter4Parent;
55
+ var flattenParameter = function (parameters, parentId, parentFieldType, parentFieldName) {
56
+ if (parentId === void 0) { parentId = []; }
57
+ if (parentFieldName === void 0) { parentFieldName = []; }
58
+ var shouldRemove = parameters.length > 1;
59
+ return parameters
60
+ .map(function (item) {
61
+ var errField = !!parameters.find(function (el) { return el.id !== item.id && el.fieldName === item.fieldName; });
62
+ var childrens = __spreadArray([], item.childrens, true);
63
+ parentFieldName = parentFieldName.filter(function (field) { return field !== undefined; });
64
+ // delete item.childrens
65
+ return __spreadArray([
66
+ __assign({ parentFieldType: parentFieldType, parentId: parentId, parentFieldName: parentFieldName, errField: errField, shouldRemove: shouldRemove }, item)
67
+ ], (0, exports.flattenParameter)(childrens, __spreadArray(__spreadArray([], parentId, true), [item.parentId, item.id], false).flat(), item.fieldType, __spreadArray(__spreadArray([], parentFieldName, true), [
68
+ item.parentFieldName,
69
+ item.fieldName,
70
+ ], false).flat()), true);
71
+ })
72
+ .flat();
73
+ };
74
+ exports.flattenParameter = flattenParameter;
75
+ var enhancedFindIndex = function (rows, ids) {
76
+ var indexs = [];
77
+ var index = (0, lodash_1.findIndex)(rows, { id: ids[0] });
78
+ indexs.push(index);
79
+ return ids.length > 1
80
+ ? (ids.shift(),
81
+ [indexs, (0, exports.enhancedFindIndex)(rows[index].childrens, ids)].flat())
82
+ : indexs;
83
+ };
84
+ exports.enhancedFindIndex = enhancedFindIndex;
85
+ /**
86
+ * function enhancedUpdate
87
+ * Des: Hàm update rows
88
+ * \nWarn: Hàm làm việc với tham chiếu!
89
+ * @param rows
90
+ * @param ids
91
+ * @param field
92
+ * @param value
93
+ * @param defaultParam
94
+ */
95
+ var enhancedUpdate = function (rows, ids, field, value, defaultParam) {
96
+ var indexs = (0, exports.enhancedFindIndex)(rows, ids);
97
+ var update = function (rowsUpdate, turn) {
98
+ var _a;
99
+ if (turn === void 0) { turn = 0; }
100
+ if (turn + 1 < indexs.length) {
101
+ update(rowsUpdate[indexs[turn]].childrens, turn + 1);
102
+ }
103
+ else {
104
+ switch (field) {
105
+ case exports.CUSTOM_FIELD_NAME.CHILDRENS:
106
+ rowsUpdate[indexs[turn]].childrens.push(value);
107
+ break;
108
+ case exports.CUSTOM_FIELD_NAME.REMOVE: {
109
+ rowsUpdate.splice(indexs[turn], 1);
110
+ break;
111
+ }
112
+ case exports.CUSTOM_FIELD_NAME.FIELD_TYPE: {
113
+ ;
114
+ rowsUpdate[indexs[turn]][field] = value;
115
+ rowsUpdate[indexs[turn]].childrens = [];
116
+ if ([
117
+ Enum_1.TYPE_FIELD_TEMPLATE.OBJECT,
118
+ Enum_1.TYPE_FIELD_TEMPLATE.LIST,
119
+ ].includes(value)) {
120
+ rowsUpdate[indexs[turn]].defaultValue = '';
121
+ (_a = rowsUpdate[indexs[turn]].childrens) === null || _a === void 0 ? void 0 : _a.push(defaultParam);
122
+ }
123
+ break;
124
+ }
125
+ default:
126
+ ;
127
+ rowsUpdate[indexs[turn]][field] = value;
128
+ break;
129
+ }
130
+ }
131
+ };
132
+ if (!indexs.includes(-1)) {
133
+ update(rows);
134
+ }
135
+ };
136
+ exports.enhancedUpdate = enhancedUpdate;
137
+ var enhancedRemove = function (ids) { };
138
+ exports.enhancedRemove = enhancedRemove;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const Template: React.FC;
3
+ export default Template;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var jsx_runtime_1 = require("react/jsx-runtime");
18
+ var material_1 = require("@mui/material");
19
+ var MonacoEditor_1 = __importDefault(require("../../../../ACM-AXN/ViewTemplate/TemplateField/Fields/BasicField/MonacoEditor"));
20
+ var react_1 = require("react");
21
+ var react_i18next_1 = require("react-i18next");
22
+ var recoil_1 = require("recoil");
23
+ var Recoils_1 = require("../Recoils");
24
+ var Parameter_1 = __importDefault(require("./Parameter"));
25
+ var Events_1 = __importDefault(require("./Events"));
26
+ // import MonacoEditor from 'Components/MonacoEditor'
27
+ var Template = function () {
28
+ var t = (0, react_i18next_1.useTranslation)().t;
29
+ var _a = (0, recoil_1.useRecoilState)(Recoils_1.templateInfoState), info = _a[0], setInfo = _a[1];
30
+ var handleChangeEditor = (0, react_1.useCallback)(function (templateHtml) {
31
+ setInfo(function (prev) { return (__assign(__assign({}, prev), { templateHtml: templateHtml })); });
32
+ }, [setInfo]);
33
+ return ((0, jsx_runtime_1.jsx)(material_1.Grid, { container: true, sx: { flexGrow: 1, padding: function (theme) { return theme.spacing(3); } }, children: (0, jsx_runtime_1.jsxs)(material_1.Grid, { item: true, component: material_1.Paper, sx: { padding: function (theme) { return theme.spacing(2); }, width: '100%' }, children: [(0, jsx_runtime_1.jsxs)(material_1.Grid, { item: true, xs: 12, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "subtitle1", sx: {
34
+ fontWeight: 'bold',
35
+ color: '#BDC7CC',
36
+ }, children: t('Common.Events') }), (0, jsx_runtime_1.jsx)(material_1.Box, { marginBottom: 2, children: (0, jsx_runtime_1.jsx)(Events_1.default, { templateId: info.id || '' }) })] }), (0, jsx_runtime_1.jsxs)(material_1.Grid, { item: true, xs: 12, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "subtitle1", sx: {
37
+ fontWeight: 'bold',
38
+ color: '#BDC7CC',
39
+ }, children: t('TemplateManagement.TemplateHtml') }), (0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
40
+ pointerEvents: 'unset',
41
+ border: '1px solid #e4e4e4',
42
+ padding: '10px 0',
43
+ borderRadius: '4px',
44
+ }, children: (0, jsx_runtime_1.jsx)(MonacoEditor_1.default, { value: info.templateHtml, height: "30vh", language: "html", onChange: handleChangeEditor, isShowMinimap: true }) })] }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(Parameter_1.default, { templateId: info.id }) })] }) }));
45
+ };
46
+ exports.default = Template;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ declare const _default: import("react").FC<unknown>;
3
+ export default _default;
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ var jsx_runtime_1 = require("react/jsx-runtime");
54
+ var lab_1 = require("@mui/lab");
55
+ var material_1 = require("@mui/material");
56
+ var Enum_1 = require("../../../ACM-AXN/Campaign/Enum");
57
+ var TabFile_1 = __importDefault(require("../../../ACM-AXN/Page/CreateOrEdit/TabFile"));
58
+ var enums_1 = require("../../../ACM-AXN/Page/enums");
59
+ var AWING_1 = require("../../../AWING");
60
+ var Wrapper_1 = __importDefault(require("../../../AWING/HOC/Wrapper"));
61
+ var immer_1 = __importDefault(require("immer"));
62
+ var Router_1 = require("../../../AWING/Router");
63
+ var validation_1 = require("../../../AWING/ultis/validation");
64
+ var ClassicDrawer_1 = __importDefault(require("../../../Commons/Components/ClassicDrawer"));
65
+ var Context_1 = require("../../../Context");
66
+ var lodash_1 = require("lodash");
67
+ var react_1 = require("react");
68
+ var react_i18next_1 = require("react-i18next");
69
+ var recoil_1 = require("recoil");
70
+ var Hooks_1 = __importDefault(require("../Hooks"));
71
+ var Infomation_1 = __importDefault(require("./Infomation"));
72
+ var Recoils_1 = require("./Recoils");
73
+ var Script_1 = __importDefault(require("./Script"));
74
+ var Template_1 = __importDefault(require("./Template"));
75
+ var Utils_1 = require("./Template/Utils");
76
+ var CreateOrEdit = function () {
77
+ var _a, _b;
78
+ var t = (0, react_i18next_1.useTranslation)().t;
79
+ var service = (0, Hooks_1.default)().service;
80
+ var appHelper = (0, Context_1.useAwing)().appHelper;
81
+ var templateId = (0, Router_1.useParams)().templateId;
82
+ var _c = (0, react_1.useState)([
83
+ {
84
+ directoryId: '',
85
+ name: '',
86
+ level: 0,
87
+ },
88
+ ]), directories = _c[0], setDirectories = _c[1];
89
+ var _d = (0, react_1.useState)(true), loading = _d[0], setLoading = _d[1];
90
+ var _e = (0, react_1.useState)([]), templateTypes = _e[0], setTemplateTypes = _e[1];
91
+ var _f = (0, recoil_1.useRecoilState)(Recoils_1.templateState), templateData = _f[0], setTemplateData = _f[1];
92
+ var confirmExit = (0, recoil_1.useRecoilValue)(Recoils_1.isEditState);
93
+ var _g = (0, react_1.useState)('0'), value = _g[0], setValue = _g[1];
94
+ (0, react_1.useEffect)(function () {
95
+ setLoading(true);
96
+ Promise.allSettled([
97
+ fetchTemplateData(),
98
+ service.templateTypesGet().then(setTemplateTypes),
99
+ fetchDirectories(),
100
+ getId(),
101
+ ]).finally(function () {
102
+ setLoading(false);
103
+ });
104
+ // eslint-disable-next-line react-hooks/exhaustive-deps
105
+ }, []);
106
+ (0, react_1.useEffect)(function () {
107
+ setTemplateData((0, immer_1.default)(function (prev) {
108
+ var _a;
109
+ prev.template.directoryId =
110
+ prev.template.directoryId ||
111
+ ((_a = (0, lodash_1.minBy)(directories, 'level')) === null || _a === void 0 ? void 0 : _a.directoryId);
112
+ }));
113
+ // eslint-disable-next-line react-hooks/exhaustive-deps
114
+ }, [directories]);
115
+ var descriptionValid = (0, react_1.useMemo)(function () {
116
+ var _a;
117
+ return (0, validation_1.textValidation)(((_a = templateData.template) === null || _a === void 0 ? void 0 : _a.description) || '', 200, true, false);
118
+ }, [templateData.template]);
119
+ var tabsList = (0, react_1.useMemo)(function () {
120
+ var _a;
121
+ return [
122
+ {
123
+ label: t('TemplateManagement.Information'),
124
+ compoent: ((0, jsx_runtime_1.jsx)(Infomation_1.default, { directories: directories, templateTypes: templateTypes })),
125
+ },
126
+ {
127
+ label: t('TemplateManagement.Template'),
128
+ compoent: (0, jsx_runtime_1.jsx)(Template_1.default, {}),
129
+ },
130
+ {
131
+ label: t('TemplateManagement.Script'),
132
+ compoent: (0, jsx_runtime_1.jsx)(Script_1.default, {}),
133
+ },
134
+ {
135
+ label: t('Common.File'),
136
+ compoent: ((0, jsx_runtime_1.jsx)(TabFile_1.default, { rootDirectory: ((_a = (0, lodash_1.minBy)(directories, 'level')) === null || _a === void 0 ? void 0 : _a.directoryId) || '', isCreate: Boolean(templateId), pathName: 'ACM-AXN/Template', service: service, pageId: templateData.template.id, pageCode: enums_1.FileTypeCode.Template })),
137
+ },
138
+ ];
139
+ },
140
+ // eslint-disable-next-line react-hooks/exhaustive-deps
141
+ [
142
+ t,
143
+ directories,
144
+ templateTypes,
145
+ templateData,
146
+ // treeFolder,
147
+ descriptionValid,
148
+ ]);
149
+ var handleChangeTab = function (event, newValue) {
150
+ setValue(newValue);
151
+ };
152
+ var fetchTemplateData = function () {
153
+ if (templateId) {
154
+ return service.templatesGet(templateId).then(function (res) {
155
+ setTemplateData(__assign(__assign({}, res), { templateParameters: (0, Utils_1.removeFiledName)(res.templateParameters) }));
156
+ });
157
+ }
158
+ };
159
+ var fetchDirectories = function () {
160
+ return service
161
+ .directoriesGetByObjectTypeCode(Enum_1.DirectoryRoot.Template)
162
+ .then(setDirectories);
163
+ };
164
+ var getId = function () { return __awaiter(void 0, void 0, void 0, function () {
165
+ var id;
166
+ return __generator(this, function (_a) {
167
+ switch (_a.label) {
168
+ case 0:
169
+ id = templateId;
170
+ if (!!templateId) return [3 /*break*/, 2];
171
+ return [4 /*yield*/, service.directoriesGenerateId()];
172
+ case 1:
173
+ id = _a.sent();
174
+ _a.label = 2;
175
+ case 2:
176
+ setTemplateData((function (prev) { return (__assign(__assign({}, prev), { template: __assign(__assign({}, prev.template), { id: id }) })); }));
177
+ return [2 /*return*/];
178
+ }
179
+ });
180
+ }); };
181
+ var handleSubmit = function () {
182
+ var _a;
183
+ var parameters = (0, Utils_1.flattenParameter4Parent)(templateData.templateParameters);
184
+ var errField = (0, lodash_1.uniqBy)(parameters, 'fieldName');
185
+ if (!((_a = templateData.template) === null || _a === void 0 ? void 0 : _a.templateTypeId) ||
186
+ !templateData.template.description) {
187
+ appHelper.snackbar('error', t('Common.RequireAll'));
188
+ // return Promise.reject()
189
+ return;
190
+ }
191
+ if (errField.length < parameters.length) {
192
+ appHelper.snackbar('warning', t('TemplateManagement.DuplicateFieldName'));
193
+ return;
194
+ }
195
+ var data4Update = {
196
+ template: __assign(__assign({}, templateData.template), { id: templateId }),
197
+ // eslint-disable-next-line no-sequences
198
+ templateParameters: parameters.map(function (parameter) { return (
199
+ // eslint-disable-next-line no-sequences
200
+ delete parameter.childrens, __assign(__assign({}, parameter), { templateId: templateId })); }),
201
+ templateEvents: templateData.templateEvents
202
+ };
203
+ if (templateId) {
204
+ return service.templatesPut(templateId, data4Update);
205
+ }
206
+ return service.templatesPost(data4Update);
207
+ };
208
+ return ((0, jsx_runtime_1.jsx)(ClassicDrawer_1.default, { title: "".concat(t(['TemplateManagement', templateId ? 'Edit' : 'Create'].join('.'))).concat(templateId ? ": ".concat((_a = templateData === null || templateData === void 0 ? void 0 : templateData.template) === null || _a === void 0 ? void 0 : _a.description) : '', "\n "), onSubmit: handleSubmit, disableButtonSubmit: !((_b = templateData.template) === null || _b === void 0 ? void 0 : _b.templateTypeId) || !descriptionValid.valid || !confirmExit, confirmExit: confirmExit, childrenWrapperStyle: { padding: 0 }, children: (0, jsx_runtime_1.jsx)(material_1.Grid, { container: true, sx: {
209
+ display: 'flex',
210
+ flexDirection: 'column',
211
+ flexGrow: 1,
212
+ padding: function (theme) { return theme.spacing(3); },
213
+ }, children: loading ? ((0, jsx_runtime_1.jsx)(AWING_1.CircularProgress, {})) : ((0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, component: material_1.Paper, sx: { width: '100%' }, children: (0, jsx_runtime_1.jsxs)(lab_1.TabContext, { value: value, children: [(0, jsx_runtime_1.jsx)(material_1.Box, { sx: { borderBottom: 1, borderColor: 'divider' }, children: (0, jsx_runtime_1.jsx)(lab_1.TabList, { variant: "scrollable", onChange: handleChangeTab, "aria-label": "lab API tabs example", children: tabsList.map(function (tab, idx) { return ((0, jsx_runtime_1.jsx)(material_1.Tab, { sx: { minWidth: '160px' }, value: String(idx), label: (0, jsx_runtime_1.jsx)("b", { children: tab.label }) }, idx)); }) }) }), tabsList.map(function (tab, idx) { return ((0, jsx_runtime_1.jsx)(lab_1.TabPanel, { sx: { padding: '0' }, value: String(idx), children: tab.compoent }, idx)); })] }) })) }) }));
214
+ };
215
+ exports.default = (0, Wrapper_1.default)(CreateOrEdit, { component: recoil_1.RecoilRoot });
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import { TemplateProps } from "./Types";
3
+ export declare const templatePropsContext: import("react").Context<TemplateProps>;
4
+ declare const useTemplateProps: () => TemplateProps;
5
+ export default useTemplateProps;