awing-library 2.1.96-beta → 2.1.98-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 (70) hide show
  1. package/lib/ACM-AXN/Page/CreateOrEdit/Components/useListPageView.js +9 -4
  2. package/lib/ACM-AXN/Page/CreateOrEdit/Recoil.d.ts +2 -1
  3. package/lib/ACM-AXN/Page/CreateOrEdit/Recoil.js +14 -1
  4. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/FileUtils.d.ts +3 -1
  5. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/FileUtils.js +1 -6
  6. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.d.ts +7 -0
  7. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.js +13 -15
  8. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewContent.js +23 -2
  9. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewInfo.d.ts +3 -2
  10. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/index.test.js +2 -1
  11. package/lib/ACM-AXN/Page/CreateOrEdit/Utils.d.ts +4 -3
  12. package/lib/ACM-AXN/Page/CreateOrEdit/Utils.js +4 -2
  13. package/lib/ACM-AXN/Page/Types.d.ts +10 -37
  14. package/lib/ACM-AXN/Page/enums.d.ts +6 -0
  15. package/lib/ACM-AXN/Page/enums.js +8 -1
  16. package/lib/ACM-AXN/PlaceFilter/DataTable/container.js +1 -2
  17. package/lib/ACM-AXN/PlaceFilter/Input/container.js +12 -2
  18. package/lib/ACM-AXN/PlaceFilter/common.d.ts +1 -0
  19. package/lib/ACM-AXN/PlaceFilter/common.js +27 -1
  20. package/lib/ACM-AXN/Template/Constants.d.ts +0 -0
  21. package/lib/ACM-AXN/Template/Constants.js +1 -0
  22. package/lib/ACM-AXN/Template/Container.d.ts +2 -0
  23. package/lib/ACM-AXN/Template/Container.js +74 -0
  24. package/lib/ACM-AXN/Template/Container.test.d.ts +1 -0
  25. package/lib/ACM-AXN/Template/Container.test.js +259 -0
  26. package/lib/ACM-AXN/Template/CreateOrEdit/CreateOrEdit.test.d.ts +1 -0
  27. package/lib/ACM-AXN/Template/CreateOrEdit/CreateOrEdit.test.js +370 -0
  28. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.d.ts +9 -0
  29. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.js +78 -0
  30. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.test.d.ts +1 -0
  31. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.test.js +150 -0
  32. package/lib/ACM-AXN/Template/CreateOrEdit/Recoils.d.ts +6 -0
  33. package/lib/ACM-AXN/Template/CreateOrEdit/Recoils.js +79 -0
  34. package/lib/ACM-AXN/Template/CreateOrEdit/Script.d.ts +3 -0
  35. package/lib/ACM-AXN/Template/CreateOrEdit/Script.js +58 -0
  36. package/lib/ACM-AXN/Template/CreateOrEdit/Script.test.d.ts +1 -0
  37. package/lib/ACM-AXN/Template/CreateOrEdit/Script.test.js +162 -0
  38. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Events.d.ts +5 -0
  39. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Events.js +41 -0
  40. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.d.ts +20 -0
  41. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.js +283 -0
  42. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.test.d.ts +1 -0
  43. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.test.js +220 -0
  44. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Utils.d.ts +25 -0
  45. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Utils.js +138 -0
  46. package/lib/ACM-AXN/Template/CreateOrEdit/Template/index.d.ts +3 -0
  47. package/lib/ACM-AXN/Template/CreateOrEdit/Template/index.js +46 -0
  48. package/lib/ACM-AXN/Template/CreateOrEdit/index.d.ts +3 -0
  49. package/lib/ACM-AXN/Template/CreateOrEdit/index.js +215 -0
  50. package/lib/ACM-AXN/Template/Hooks.d.ts +5 -0
  51. package/lib/ACM-AXN/Template/Hooks.js +13 -0
  52. package/lib/ACM-AXN/Template/Import.d.ts +2 -0
  53. package/lib/ACM-AXN/Template/Import.js +123 -0
  54. package/lib/ACM-AXN/Template/Import.test.d.ts +1 -0
  55. package/lib/ACM-AXN/Template/Import.test.js +188 -0
  56. package/lib/ACM-AXN/Template/Types.d.ts +84 -0
  57. package/lib/ACM-AXN/Template/Types.js +2 -0
  58. package/lib/ACM-AXN/Template/UploadButton.d.ts +2 -0
  59. package/lib/ACM-AXN/Template/UploadButton.js +14 -0
  60. package/lib/ACM-AXN/Template/index.d.ts +5 -0
  61. package/lib/ACM-AXN/Template/index.js +44 -0
  62. package/lib/ACM-AXN/ViewTemplate/index.d.ts +2 -1
  63. package/lib/ACM-AXN/ViewTemplate/interface.d.ts +6 -1
  64. package/lib/AWING/HOC/Wrapper.d.ts +6 -0
  65. package/lib/AWING/HOC/Wrapper.js +10 -0
  66. package/lib/translate/en/translation.json +27 -1
  67. package/lib/translate/vi/translation.json +27 -1
  68. package/package.json +1 -1
  69. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.test.d.ts +0 -1
  70. package/lib/ACM-AXN/Page/CreateOrEdit/TabFile/index.test.js +0 -326
@@ -0,0 +1,283 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.OmitListType = void 0;
27
+ var jsx_runtime_1 = require("react/jsx-runtime");
28
+ var icons_material_1 = require("@mui/icons-material");
29
+ var Add_1 = __importDefault(require("@mui/icons-material/Add"));
30
+ var material_1 = require("@mui/material");
31
+ var immer_1 = __importDefault(require("immer"));
32
+ var Enum_1 = require("../../../../ACM-AXN/ViewTemplate/Enum");
33
+ var AWING_1 = require("../../../../AWING");
34
+ var react_1 = require("react");
35
+ var react_i18next_1 = require("react-i18next");
36
+ var recoil_1 = require("recoil");
37
+ var Recoils_1 = require("../Recoils");
38
+ var Utils_1 = require("./Utils");
39
+ exports.OmitListType = __assign({}, Enum_1.TYPE_FIELD_TEMPLATE);
40
+ delete exports.OmitListType.LIST;
41
+ var Parameter = function (_a) {
42
+ var templateId = _a.templateId;
43
+ var _b = (0, recoil_1.useRecoilState)(Recoils_1.templateParametersState), rows = _b[0], handleSetParameter = _b[1];
44
+ var t = (0, react_i18next_1.useTranslation)().t;
45
+ var defaultParam = {
46
+ id: String(Date.now()),
47
+ templateId: templateId,
48
+ fieldName: '',
49
+ fieldType: Enum_1.TYPE_FIELD_TEMPLATE.IMAGE,
50
+ defaultValue: undefined,
51
+ labelName: undefined,
52
+ isRequired: false,
53
+ childrens: [],
54
+ };
55
+ var handleAddParameter = function () {
56
+ handleSetParameter(function (prev) { return __spreadArray(__spreadArray([], prev, true), [defaultParam], false); });
57
+ };
58
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
59
+ var handleChange = function (event) {
60
+ var _a = event.target, name = _a.name, value = _a.value, checked = _a.checked;
61
+ var _b = name.split('-').filter(Boolean), field = _b[0], ids = _b.slice(1);
62
+ handleSetParameter((0, immer_1.default)(function (rows) {
63
+ (0, Utils_1.enhancedUpdate)(rows, ids, field, [Utils_1.CUSTOM_FIELD_NAME.IS_REQUIRED, Utils_1.CUSTOM_FIELD_NAME.IS_ADVANCED].includes(field) ? checked : value, defaultParam);
64
+ }));
65
+ };
66
+ var handleRemoveRow = function (id) {
67
+ handleChange({
68
+ target: {
69
+ name: [Utils_1.CUSTOM_FIELD_NAME.REMOVE, id].join('-'),
70
+ value: defaultParam,
71
+ },
72
+ });
73
+ };
74
+ // eslint-disable-next-line react-hooks/exhaustive-deps
75
+ // const handleChangeParameter = useCallback(
76
+ // debounce(handleChange, DEBOUNCE_TIME),
77
+ // []
78
+ // )
79
+ var handleAddChildren = function (id) {
80
+ handleChange({
81
+ target: {
82
+ name: [Utils_1.CUSTOM_FIELD_NAME.CHILDRENS, id].join('-'),
83
+ value: defaultParam,
84
+ },
85
+ });
86
+ };
87
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Box, { mt: 3, children: (0, jsx_runtime_1.jsx)(material_1.Grid, { container: true, justifyContent: "space-between", alignItems: "center", children: (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 6, children: (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "subtitle1", sx: {
88
+ fontWeight: 'bold',
89
+ color: '#000000',
90
+ }, children: t('TemplateManagement.Parameter') }) }) }) }), (0, jsx_runtime_1.jsx)(material_1.Box, { mt: 2, sx: {
91
+ '.MuiTableCell-root:last-child .MuiButtonBase-root': {
92
+ visibility: 'visible!important',
93
+ },
94
+ }, component: 'form', onChange: handleChange, children: (0, jsx_runtime_1.jsx)(AWING_1.DataGrid, { getRowId: function (obj) { return [obj.parentId, obj.id].flat().join('-'); }, columns: [
95
+ {
96
+ // width: '150px',
97
+ field: 'fieldType',
98
+ headerName: t('TemplateManagement.fieldType'),
99
+ dynamicTableCellProps: function (row) {
100
+ return {
101
+ sx: {
102
+ paddingRight: '8px',
103
+ paddingLeft: "".concat(row.parentId.length * 24 || 8, "px"),
104
+ minWidth: 72,
105
+ },
106
+ };
107
+ },
108
+ valueGetter: function (row, idx) {
109
+ return ((0, jsx_runtime_1.jsx)(material_1.Select, { fullWidth: true, variant: "standard", MenuProps: {
110
+ anchorOrigin: {
111
+ vertical: 'bottom',
112
+ horizontal: 'left',
113
+ },
114
+ transformOrigin: {
115
+ vertical: 'top',
116
+ horizontal: 'left',
117
+ },
118
+ }, name: [
119
+ 'fieldType',
120
+ row.parentId,
121
+ row.id,
122
+ ]
123
+ .flat()
124
+ .join('-'), value: row.fieldType, inputProps: {
125
+ onChange: handleChange,
126
+ }, children: Object.entries(row.parentFieldType ===
127
+ Enum_1.TYPE_FIELD_TEMPLATE.LIST
128
+ ? exports.OmitListType
129
+ : Enum_1.TYPE_FIELD_TEMPLATE).map(function (_a) {
130
+ var id = _a[0], value = _a[1];
131
+ return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: value, children: value }, id));
132
+ }) }, idx));
133
+ },
134
+ },
135
+ {
136
+ field: 'fieldName',
137
+ headerName: t('TemplateManagement.FieldName'),
138
+ TableCellProps: {
139
+ sx: {
140
+ padding: '8px',
141
+ },
142
+ },
143
+ valueGetter: function (row, idx) {
144
+ return ((0, jsx_runtime_1.jsx)(material_1.TextField
145
+ // inputProps={{}}
146
+ , {
147
+ // inputProps={{}}
148
+ error: row.errField, InputProps: {
149
+ startAdornment: ((0, jsx_runtime_1.jsx)(material_1.Box, { component: 'span', sx: {
150
+ padding: '4px 0 5px',
151
+ }, children: row.parentFieldName.length
152
+ ? (row.parentFieldName.push(''),
153
+ row.parentFieldName).join('.')
154
+ : null })),
155
+ }, fullWidth: true, name: [
156
+ 'fieldName',
157
+ row.parentId,
158
+ row.id,
159
+ ]
160
+ .flat()
161
+ .join('-'), variant: "standard", defaultValue: row.fieldName }, idx));
162
+ },
163
+ },
164
+ {
165
+ field: 'labelName',
166
+ headerName: t('Common.Label'),
167
+ TableCellProps: {
168
+ sx: {
169
+ padding: '8px',
170
+ },
171
+ },
172
+ valueGetter: function (row, idx) {
173
+ return ((0, jsx_runtime_1.jsx)(material_1.TextField, { fullWidth: true, name: [
174
+ 'labelName',
175
+ row.parentId,
176
+ row.id,
177
+ ]
178
+ .flat()
179
+ .join('-'), variant: "standard", defaultValue: row.labelName }, idx));
180
+ },
181
+ },
182
+ {
183
+ field: 'defaultValue',
184
+ headerName: t('Common.DefaultValue'),
185
+ TableCellProps: {
186
+ sx: {
187
+ padding: '8px',
188
+ },
189
+ },
190
+ valueGetter: function (row, idx) {
191
+ return ((0, jsx_runtime_1.jsx)(material_1.TextField, { fullWidth: true, multiline: row.fieldType === Enum_1.TYPE_FIELD_TEMPLATE.TEXTAREA, disabled: [
192
+ Enum_1.TYPE_FIELD_TEMPLATE.OBJECT,
193
+ Enum_1.TYPE_FIELD_TEMPLATE.LIST,
194
+ ].includes(row.fieldType), name: [
195
+ 'defaultValue',
196
+ row.parentId,
197
+ row.id,
198
+ ]
199
+ .flat()
200
+ .join('-'), variant: "standard", defaultValue: row.defaultValue }, idx));
201
+ },
202
+ },
203
+ {
204
+ field: 'isRequired',
205
+ width: '85px',
206
+ headerName: t('Common.Require'),
207
+ TableCellProps: {
208
+ sx: {
209
+ padding: '8px',
210
+ },
211
+ },
212
+ dynamicTableCellProps: function (row) {
213
+ return {
214
+ sx: {
215
+ '& > span': {
216
+ visibility: row.parentFieldType ===
217
+ Enum_1.TYPE_FIELD_TEMPLATE.LIST ||
218
+ row.fieldType ===
219
+ Enum_1.TYPE_FIELD_TEMPLATE.OBJECT
220
+ ? 'hidden'
221
+ : 'visible',
222
+ }
223
+ },
224
+ };
225
+ },
226
+ valueGetter: function (row, idx) {
227
+ return ((0, jsx_runtime_1.jsx)(material_1.Checkbox, { name: [
228
+ 'isRequired',
229
+ row.parentId,
230
+ row.id,
231
+ ]
232
+ .flat()
233
+ .join('-'), color: "primary", defaultChecked: row.isRequired }, idx));
234
+ },
235
+ },
236
+ {
237
+ field: 'isAdvanced',
238
+ width: '85px',
239
+ headerName: t('Common.Advance'),
240
+ TableCellProps: {
241
+ sx: {
242
+ padding: '8px',
243
+ },
244
+ },
245
+ dynamicTableCellProps: function (row) {
246
+ return {
247
+ sx: {
248
+ '& > span': {
249
+ visibility: Boolean(row.parentFieldType) ? 'hidden' : 'visible'
250
+ }
251
+ },
252
+ };
253
+ },
254
+ valueGetter: function (row, idx) {
255
+ return ((0, jsx_runtime_1.jsx)(material_1.Checkbox, { name: [
256
+ 'isAdvanced',
257
+ row.parentId,
258
+ row.id,
259
+ ]
260
+ .flat()
261
+ .join('-'), color: "primary", defaultChecked: row.isAdvanced }, idx));
262
+ },
263
+ },
264
+ ], rows: (0, Utils_1.flattenParameter)(rows), rowActions: [
265
+ {
266
+ icon: (0, jsx_runtime_1.jsx)(icons_material_1.DeleteForever, {}),
267
+ tooltipTitle: t('Common.Delete'),
268
+ action: handleRemoveRow,
269
+ isShouldHideActions: function (row) {
270
+ return !row.shouldRemove && row.parentFieldType;
271
+ },
272
+ },
273
+ {
274
+ icon: (0, jsx_runtime_1.jsx)(Add_1.default, {}),
275
+ tooltipTitle: t('Common.Add'),
276
+ action: handleAddChildren,
277
+ isShouldHideActions: function (row) {
278
+ return !(Enum_1.TYPE_FIELD_TEMPLATE.OBJECT === row.fieldType);
279
+ },
280
+ },
281
+ ] }) }), (0, jsx_runtime_1.jsx)(material_1.Box, { mt: 3, children: (0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, justifyContent: "space-between", alignItems: "center", children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { xs: 6, container: true, item: true, children: (0, jsx_runtime_1.jsx)(material_1.Button, { "aria-label": "button-add", variant: "contained", onClick: handleAddParameter, disabled: false, title: t('Common.Add'), children: (0, jsx_runtime_1.jsx)(Add_1.default, {}) }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { xs: 6, container: true, item: true, justifyContent: "flex-end", children: (0, jsx_runtime_1.jsx)(material_1.Typography, { sx: { padding: '8px' }, children: t('TemplateManagement.NamingFieldNotice') }) })] }) })] }));
282
+ };
283
+ exports.default = (0, react_1.memo)(Parameter);
@@ -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;