awing-library 2.1.147-beta → 2.1.147

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 (212) hide show
  1. package/lib/ACM-AXN/AuthenticationProfile/Container.js +4 -4
  2. package/lib/ACM-AXN/AuthenticationProfile/CreateOrEdit/index.js +2 -2
  3. package/lib/ACM-AXN/Campaign/Container.js +52 -54
  4. package/lib/ACM-AXN/Campaign/Container.test.js +1 -3
  5. package/lib/ACM-AXN/Campaign/CreateOrEdit/Recoils.d.ts +8 -1
  6. package/lib/ACM-AXN/Campaign/CreateOrEdit/Recoils.js +27 -3
  7. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.d.ts +17 -0
  8. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.js +121 -0
  9. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.test.d.ts +1 -0
  10. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RowTable.test.js +219 -0
  11. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RunInBackground.d.ts +2 -0
  12. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RunInBackground.js +306 -0
  13. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RunInBackground.test.d.ts +1 -0
  14. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/RunInBackground.test.js +230 -0
  15. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/index.d.ts +1 -0
  16. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/index.js +123 -0
  17. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/index.test.d.ts +1 -0
  18. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabApprove/index.test.js +253 -0
  19. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabInfomation.js +21 -5
  20. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabPartner.d.ts +1 -1
  21. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabPartner.js +47 -78
  22. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.d.ts +2 -1
  23. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.js +2 -2
  24. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/ControlPanel.js +2 -1
  25. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/index.js +2 -1
  26. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Utils.d.ts +19 -42
  27. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Utils.js +298 -96
  28. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/container.d.ts +3 -0
  29. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/container.js +119 -54
  30. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.d.ts +1 -1
  31. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.js +46 -8
  32. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/component.js +6 -4
  33. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/container.js +1 -1
  34. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/PasswordDialog.d.ts +9 -0
  35. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/PasswordDialog.js +56 -0
  36. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Table.js +5 -1
  37. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Util.d.ts +12 -0
  38. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Util.js +22 -7
  39. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/container.js +63 -12
  40. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.d.ts +1 -0
  41. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.js +17 -4
  42. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Types.d.ts +10 -0
  43. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Utils.js +4 -1
  44. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/common.d.ts +1 -0
  45. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/common.js +3 -2
  46. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/component.js +6 -2
  47. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/container.js +31 -29
  48. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AdList.js +1 -1
  49. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AdRow.js +1 -1
  50. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/TargetOS/container.js +2 -2
  51. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/Advanced.js +1 -1
  52. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/EditAds.js +5 -5
  53. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.js +44 -33
  54. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.test.js +3 -13
  55. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignList.js +45 -20
  56. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/atoms.js +3 -2
  57. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/index.js +3 -2
  58. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/useSearchPage.js +33 -8
  59. package/lib/ACM-AXN/Campaign/CreateOrEdit/index.d.ts +5 -1
  60. package/lib/ACM-AXN/Campaign/CreateOrEdit/index.js +172 -59
  61. package/lib/ACM-AXN/Campaign/Enum.d.ts +24 -6
  62. package/lib/ACM-AXN/Campaign/Enum.js +30 -11
  63. package/lib/ACM-AXN/Campaign/Types.d.ts +53 -5
  64. package/lib/ACM-AXN/Campaign/Utils.d.ts +6 -1
  65. package/lib/ACM-AXN/Campaign/Utils.js +50 -3
  66. package/lib/ACM-AXN/Campaign/index.js +2 -2
  67. package/lib/ACM-AXN/CampaignPlan/Container.js +4 -6
  68. package/lib/ACM-AXN/CampaignPlan/Detail.js +3 -3
  69. package/lib/ACM-AXN/CampaignPlan/Filter.js +3 -3
  70. package/lib/ACM-AXN/CampaignSchedule/Components/ControlPanel/Filter.js +14 -10
  71. package/lib/ACM-AXN/CampaignSchedule/Components/EnhancedPagination/index.js +3 -2
  72. package/lib/ACM-AXN/CampaignSchedule/Components/RowAdvance/component.js +5 -7
  73. package/lib/ACM-AXN/CampaignSchedule/DataConfig.js +4 -4
  74. package/lib/ACM-AXN/CampaignSchedule/DataConfigAXN.js +5 -4
  75. package/lib/ACM-AXN/CampaignSchedule/Recoil/Atom.d.ts +1 -2
  76. package/lib/ACM-AXN/CampaignSchedule/Recoil/Atom.js +1 -5
  77. package/lib/ACM-AXN/Common/Constant.d.ts +3 -0
  78. package/lib/ACM-AXN/Common/Constant.js +2 -0
  79. package/lib/ACM-AXN/Common/Enum.d.ts +8 -3
  80. package/lib/ACM-AXN/Common/Enum.js +19 -4
  81. package/lib/ACM-AXN/Common/Types.d.ts +5 -0
  82. package/lib/ACM-AXN/GeoFencing/GoongMap/index.d.ts +8 -9
  83. package/lib/ACM-AXN/GeoFencing/component.js +7 -7
  84. package/lib/ACM-AXN/GeoFencing/interface.d.ts +1 -2
  85. package/lib/ACM-AXN/Holiday/FormHoliday.js +1 -0
  86. package/lib/ACM-AXN/Notifications/NotificationPopover/Container.d.ts +0 -5
  87. package/lib/ACM-AXN/Notifications/NotificationPopover/Container.js +7 -90
  88. package/lib/ACM-AXN/Notifications/NotificationPopover/index.d.ts +0 -5
  89. package/lib/ACM-AXN/Notifications/Types.d.ts +2 -0
  90. package/lib/ACM-AXN/Page/Constant.js +2 -0
  91. package/lib/ACM-AXN/Page/Container.js +3 -3
  92. package/lib/ACM-AXN/Page/CreateOrEdit/ListenTemplate.d.ts +6 -0
  93. package/lib/ACM-AXN/Page/CreateOrEdit/ListenTemplate.js +63 -0
  94. package/lib/ACM-AXN/Page/CreateOrEdit/Recoil.d.ts +11 -2
  95. package/lib/ACM-AXN/Page/CreateOrEdit/Recoil.js +16 -12
  96. package/lib/ACM-AXN/Page/CreateOrEdit/TabInfo/TrackingCode.js +1 -1
  97. package/lib/ACM-AXN/Page/CreateOrEdit/TabInfo/Utils.js +1 -1
  98. package/lib/ACM-AXN/Page/CreateOrEdit/TabInfo/index.js +1 -0
  99. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/Components/Panel.d.ts +1 -9
  100. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/Components/Panel.js +0 -9
  101. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewContent.js +11 -44
  102. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewInfo.d.ts +2 -3
  103. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewInfo.js +39 -61
  104. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/index.js +29 -32
  105. package/lib/ACM-AXN/Page/CreateOrEdit/Utils.js +6 -6
  106. package/lib/ACM-AXN/Page/CreateOrEdit/index.js +19 -4
  107. package/lib/ACM-AXN/Page/Import/index.js +2 -2
  108. package/lib/ACM-AXN/Page/Types.d.ts +3 -0
  109. package/lib/ACM-AXN/Page/enums.d.ts +5 -0
  110. package/lib/ACM-AXN/Page/enums.js +7 -1
  111. package/lib/ACM-AXN/Permission/Components/Styles.d.ts +1 -2
  112. package/lib/ACM-AXN/PlaceFilter/DataTable/component/index.js +2 -5
  113. package/lib/ACM-AXN/PlaceFilter/Input/component/index.js +1 -2
  114. package/lib/ACM-AXN/PlaceFilter/Tag/component/TagChip.js +1 -1
  115. package/lib/ACM-AXN/PlaceFilter/interface.d.ts +1 -0
  116. package/lib/ACM-AXN/ScheduleCompletionRate/Container.js +16 -16
  117. package/lib/ACM-AXN/ScheduleCompletionRate/DataSetConfig.d.ts +14 -9
  118. package/lib/ACM-AXN/ScheduleCompletionRate/DataSetConfig.js +19 -18
  119. package/lib/ACM-AXN/ScheduleCompletionRate/Detail/CompletionRate.js +16 -6
  120. package/lib/ACM-AXN/ScheduleCompletionRate/Detail/CompletionRateDate.js +17 -10
  121. package/lib/ACM-AXN/ScheduleCompletionRate/Filter.d.ts +2 -1
  122. package/lib/ACM-AXN/ScheduleCompletionRate/Filter.js +30 -51
  123. package/lib/ACM-AXN/ScheduleCompletionRate/Filter.test.js +1 -1
  124. package/lib/ACM-AXN/ScheduleCompletionRate/SearchCampaign.d.ts +2 -2
  125. package/lib/ACM-AXN/ScheduleCompletionRate/SearchCampaign.js +3 -9
  126. package/lib/ACM-AXN/ScheduleCompletionRate/Types.d.ts +16 -36
  127. package/lib/ACM-AXN/ScheduleCompletionRate/Utils.d.ts +5 -5
  128. package/lib/ACM-AXN/ScheduleCompletionRate/Utils.js +13 -10
  129. package/lib/ACM-AXN/Statistics/ControlPanel.js +17 -5
  130. package/lib/ACM-AXN/Statistics/Enums.d.ts +2 -1
  131. package/lib/ACM-AXN/Statistics/Enums.js +1 -0
  132. package/lib/ACM-AXN/StatisticsAudienceDemographic/Tabs/AgeRange.js +1 -0
  133. package/lib/ACM-AXN/StatisticsByProvince/DataTable.js +1 -1
  134. package/lib/ACM-AXN/TaskScheduler/CreateOrEdit.js +4 -4
  135. package/lib/ACM-AXN/Template/Container.js +2 -2
  136. package/lib/ACM-AXN/Template/CreateOrEdit/Recoils.d.ts +1 -0
  137. package/lib/ACM-AXN/Template/CreateOrEdit/Recoils.js +5 -1
  138. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.d.ts +2 -2
  139. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.js +56 -37
  140. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.test.d.ts +1 -1
  141. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.test.js +62 -51
  142. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Utils.d.ts +28 -4
  143. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Utils.js +43 -15
  144. package/lib/ACM-AXN/Template/CreateOrEdit/index.js +8 -4
  145. package/lib/ACM-AXN/Template/Import.js +2 -2
  146. package/lib/ACM-AXN/Template/Types.d.ts +9 -9
  147. package/lib/ACM-AXN/TransactionLog/Detail.js +1 -1
  148. package/lib/ACM-AXN/ViewTemplate/Preview.js +5 -6
  149. package/lib/ACM-AXN/ViewTemplate/TemplateField/Event.js +23 -11
  150. package/lib/ACM-AXN/ViewTemplate/TemplateField/Fields/BasicField/Utils.d.ts +18 -0
  151. package/lib/ACM-AXN/ViewTemplate/TemplateField/Fields/BasicField/Utils.js +170 -0
  152. package/lib/ACM-AXN/ViewTemplate/TemplateField/Fields/BasicField/index.js +42 -129
  153. package/lib/ACM-AXN/ViewTemplate/common.d.ts +2 -1
  154. package/lib/ACM-AXN/ViewTemplate/common.js +47 -7
  155. package/lib/ACM-AXN/ViewTemplate/container.js +8 -2
  156. package/lib/ACM-AXN/Wizard/CreateOrEdit/PageTemplate.d.ts +3 -1
  157. package/lib/ACM-AXN/Wizard/CreateOrEdit/PageTemplate.js +18 -28
  158. package/lib/ACM-AXN/Wizard/CreateOrEdit/PageTemplate.test.js +2 -0
  159. package/lib/ACM-AXN/Wizard/CreateOrEdit/RowTemplate.js +1 -1
  160. package/lib/ACM-AXN/Wizard/CreateOrEdit/index.js +17 -1
  161. package/lib/ACM-AXN/index.d.ts +1 -0
  162. package/lib/ACM-AXN/index.js +1 -0
  163. package/lib/AWING/AsyncAutocomplete/index.js +2 -2
  164. package/lib/AWING/BasicDataForm/BasicDataForm.js +9 -6
  165. package/lib/AWING/BasicDataForm/interface.d.ts +3 -0
  166. package/lib/AWING/Chart/BarLineComponent.js +20 -24
  167. package/lib/AWING/Chart/PieComponent.d.ts +3 -4
  168. package/lib/AWING/Chart/PieComponent.js +16 -16
  169. package/lib/AWING/Chart/Styles.js +51 -16
  170. package/lib/AWING/DataForm/DataInput.js +105 -23
  171. package/lib/AWING/DataForm/interface.d.ts +2 -0
  172. package/lib/AWING/DataGrid/index.js +8 -13
  173. package/lib/AWING/DateRangePicker/component.js +81 -33
  174. package/lib/AWING/DateRangePicker/configDate.d.ts +1 -2
  175. package/lib/AWING/DateRangePicker/configDate.js +12 -12
  176. package/lib/AWING/DateRangePicker/interface.d.ts +1 -0
  177. package/lib/AWING/Form/useForm.js +3 -2
  178. package/lib/AWING/GoogleMap/GGMap.d.ts +3 -0
  179. package/lib/AWING/GoogleMap/GGMap.js +256 -0
  180. package/lib/AWING/GoogleMap/index.d.ts +4 -0
  181. package/lib/AWING/GoogleMap/index.js +41 -0
  182. package/lib/AWING/GoogleMap/interface.d.ts +21 -0
  183. package/lib/AWING/GoogleMap/interface.js +2 -0
  184. package/lib/AWING/GoogleMap/utils.d.ts +25 -0
  185. package/lib/AWING/GoogleMap/utils.js +135 -0
  186. package/lib/AWING/GroupTable/GroupTable.js +2 -2
  187. package/lib/AWING/GroupTable/component.d.ts +1 -0
  188. package/lib/AWING/GroupTable/component.js +2 -2
  189. package/lib/AWING/NumberFormat/index.d.ts +3 -1
  190. package/lib/AWING/NumberFormat/index.js +2 -2
  191. package/lib/AWING/PageManagement/PageManagement.js +4 -3
  192. package/lib/AWING/Pagination/index.js +11 -3
  193. package/lib/AWING/index.d.ts +1 -0
  194. package/lib/AWING/index.js +1 -0
  195. package/lib/AWING/ultis/validation.d.ts +1 -0
  196. package/lib/AWING/ultis/validation.js +25 -6
  197. package/lib/Commons/Components/ClassicDrawer.js +5 -4
  198. package/lib/Commons/Components/HighlightedCode/MarkdownElement.js +6 -1
  199. package/lib/Commons/Hooks/usePath.js +3 -3
  200. package/lib/Utils/Helpers.d.ts +4 -3
  201. package/lib/Utils/Helpers.js +54 -23
  202. package/lib/i18n.js +31 -2
  203. package/lib/translate/en/translation.json +131 -71
  204. package/lib/translate/id/translation.json +893 -0
  205. package/lib/translate/ind/translation.json +893 -0
  206. package/lib/translate/ja/translation.json +893 -0
  207. package/lib/translate/lao/translation.json +893 -0
  208. package/lib/translate/mys/translation.json +893 -0
  209. package/lib/translate/phl/translation.json +893 -0
  210. package/lib/translate/th/translation.json +893 -0
  211. package/lib/translate/vi/translation.json +91 -31
  212. package/package.json +9 -4
@@ -0,0 +1,219 @@
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 react_1 = require("@testing-library/react");
55
+ var Enum_1 = require("../../../../ACM-AXN/Campaign/Enum");
56
+ var RowTable_1 = __importDefault(require("./RowTable"));
57
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
58
+ // Mock the useTranslation hook
59
+ jest.mock('react-i18next', function () { return ({
60
+ useTranslation: function () { return ({ t: function (key) { return key; } }); },
61
+ }); });
62
+ var mockProps = {
63
+ row: {
64
+ id: '100',
65
+ domain: {
66
+ domainName: 'Vincom',
67
+ domainId: '100',
68
+ },
69
+ detail: [
70
+ {
71
+ id: '10c77e54-8aff-4e36-8334-70eca26d5a75',
72
+ linkPreview: 'http://connect.awifi.com.vn/Preview/Page?loginId=5122170857262705548&welcomeId=4841207366749869113&isNetworkCampaign=true&domainId=100',
73
+ campaign: [
74
+ {
75
+ subCampaigns: [
76
+ {
77
+ id: 1,
78
+ name: 'Sub-Campaign 1',
79
+ },
80
+ ],
81
+ ads: [
82
+ {
83
+ id: 1,
84
+ name: 'Ad 1',
85
+ },
86
+ {
87
+ id: 2,
88
+ name: 'Ad 2',
89
+ },
90
+ ],
91
+ },
92
+ ],
93
+ status: 0,
94
+ description: '',
95
+ loginId: '5122170857262705548',
96
+ welcomeId: '4841207366749869113',
97
+ },
98
+ ],
99
+ },
100
+ link: {
101
+ id: '10c77e54-8aff-4e36-8334-70eca26d5a75',
102
+ linkPreview: 'http://connect.awifi.com.vn/Preview/Page?loginId=5122170857262705548&welcomeId=4841207366749869113&isNetworkCampaign=true&domainId=100',
103
+ campaign: [
104
+ {
105
+ subCampaigns: [
106
+ {
107
+ id: 1,
108
+ name: 'Sub-Campaign 1',
109
+ },
110
+ ],
111
+ ads: [
112
+ {
113
+ id: 1,
114
+ name: 'Ad 1',
115
+ },
116
+ {
117
+ id: 2,
118
+ name: 'Ad 2',
119
+ },
120
+ ],
121
+ },
122
+ ],
123
+ status: 0,
124
+ description: '',
125
+ loginId: '5122170857262705548',
126
+ welcomeId: '4841207366749869113',
127
+ },
128
+ sub: {
129
+ subCampaigns: [
130
+ {
131
+ id: 1,
132
+ name: 'Sub-Campaign 1',
133
+ },
134
+ ],
135
+ ads: [
136
+ {
137
+ id: 1,
138
+ name: 'Ad 1',
139
+ },
140
+ {
141
+ id: 2,
142
+ name: 'Ad 2',
143
+ },
144
+ ],
145
+ },
146
+ linkIndex: 0,
147
+ subIndex: 0,
148
+ rowSelected: [],
149
+ handleRowSelect: jest.fn(),
150
+ updateRow: jest.fn(),
151
+ };
152
+ // Mock cho các component MUI
153
+ jest.mock('@mui/material', function () { return (__assign(__assign({}, jest.requireActual('@mui/material')), { TableCell: function (_a) {
154
+ var children = _a.children;
155
+ return (0, jsx_runtime_1.jsx)("td", { children: children });
156
+ }, Chip: function (_a) {
157
+ var label = _a.label;
158
+ return (0, jsx_runtime_1.jsx)("span", { children: label });
159
+ }, FormControl: function (_a) {
160
+ var children = _a.children;
161
+ return (0, jsx_runtime_1.jsx)("div", { children: children });
162
+ }, Select: function (_a) {
163
+ var children = _a.children, value = _a.value, onChange = _a.onChange;
164
+ return ((0, jsx_runtime_1.jsx)("select", { value: value, onChange: onChange, children: children }));
165
+ }, MenuItem: function (_a) {
166
+ var children = _a.children, value = _a.value;
167
+ return ((0, jsx_runtime_1.jsx)("option", { value: value, children: children }));
168
+ }, TextField: function (_a) {
169
+ var value = _a.value, onChange = _a.onChange;
170
+ return ((0, jsx_runtime_1.jsx)("input", { type: "text", value: value, onChange: onChange }));
171
+ }, Link: function (_a) {
172
+ var children = _a.children, href = _a.href, target = _a.target;
173
+ return ((0, jsx_runtime_1.jsx)("a", { href: href, target: target, children: children }));
174
+ } })); });
175
+ var renderUi = function () {
176
+ return (0, react_1.render)((0, jsx_runtime_1.jsx)("table", { children: (0, jsx_runtime_1.jsx)("tbody", { children: (0, jsx_runtime_1.jsx)(RowTable_1.default, __assign({}, mockProps)) }) }));
177
+ };
178
+ describe('TableRowMemo', function () {
179
+ it('renders correctly', function () {
180
+ renderUi();
181
+ expect(react_1.screen.getByText('Vincom')).toBeInTheDocument();
182
+ expect(react_1.screen.getByText('http://connect.awifi.com.vn/Preview/Page?loginId=5122170857262705548&welcomeId=4841207366749869113&isNetworkCampaign=true&domainId=100')).toBeInTheDocument();
183
+ expect(react_1.screen.getByText('Sub-Campaign 1')).toBeInTheDocument();
184
+ expect(react_1.screen.getByText('Ad 1')).toBeInTheDocument();
185
+ });
186
+ it('handles checkbox change', function () {
187
+ renderUi();
188
+ var checkbox = react_1.screen.getByRole('checkbox');
189
+ react_1.fireEvent.click(checkbox);
190
+ expect(mockProps.handleRowSelect).toHaveBeenCalledWith('100');
191
+ });
192
+ it('handles status change', function () { return __awaiter(void 0, void 0, void 0, function () {
193
+ var select;
194
+ return __generator(this, function (_a) {
195
+ switch (_a.label) {
196
+ case 0:
197
+ renderUi();
198
+ select = react_1.screen.getByRole('combobox');
199
+ return [4 /*yield*/, user_event_1.default.selectOptions(select, Enum_1.CampaignApprovalStatus.Rejected.toString())];
200
+ case 1:
201
+ _a.sent();
202
+ expect(mockProps.updateRow).toHaveBeenCalledWith({
203
+ status: Enum_1.CampaignApprovalStatus.Rejected.toString(),
204
+ description: '',
205
+ }, '100', '10c77e54-8aff-4e36-8334-70eca26d5a75');
206
+ return [2 /*return*/];
207
+ }
208
+ });
209
+ }); });
210
+ it('handles description change', function () {
211
+ renderUi();
212
+ var input = react_1.screen.getByRole('textbox');
213
+ react_1.fireEvent.change(input, { target: { value: 'New description' } });
214
+ expect(mockProps.updateRow).toHaveBeenCalledWith({
215
+ status: Enum_1.CampaignApprovalStatus.PendingApproval,
216
+ description: 'New description',
217
+ }, '100', '10c77e54-8aff-4e36-8334-70eca26d5a75');
218
+ });
219
+ });
@@ -0,0 +1,2 @@
1
+ declare const RunInBackground: () => import("react/jsx-runtime").JSX.Element;
2
+ export default RunInBackground;
@@ -0,0 +1,306 @@
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 recoil_1 = require("recoil");
19
+ var Recoils_1 = require("../Recoils");
20
+ var react_1 = require("react");
21
+ var Hooks_1 = __importDefault(require("../../../../ACM-AXN/Campaign/Hooks"));
22
+ var Constant_1 = require("../../../../ACM-AXN/Common/Constant");
23
+ var lodash_1 = __importDefault(require("lodash"));
24
+ var Helpers_1 = require("../../../../Utils/Helpers");
25
+ var Router_1 = require("../../../../AWING/Router");
26
+ var atoms_1 = require("../TabSubCampaign/atoms");
27
+ var RunInBackground = function () {
28
+ var campaignId = (0, Router_1.useParams)().campaignId;
29
+ var subCampaigns = (0, recoil_1.useRecoilValue)(Recoils_1.campaignGroupsState);
30
+ var subCampaignDetailValid = (0, recoil_1.useRecoilValue)(atoms_1.subCampaignDetailValidState);
31
+ var subCampaignAdsValid = (0, recoil_1.useRecoilValue)(atoms_1.subCampaignAdsValidState);
32
+ var _a = (0, Hooks_1.default)(), service = _a.service, defaultDomainId = _a.domainId;
33
+ var _b = (0, recoil_1.useRecoilState)(Recoils_1.campaignApprovalState), campaignApproval = _b[0], setCampaignApproval = _b[1];
34
+ var _c = (0, recoil_1.useRecoilState)(Recoils_1.campaignApprovalTableState), campaignApprovalTable = _c[0], setCampaignApprovalTable = _c[1];
35
+ var _d = (0, react_1.useState)([]), domains = _d[0], setDomains = _d[1];
36
+ var _e = (0, react_1.useState)(true), isInit = _e[0], setIsInit = _e[1];
37
+ var oldCampaignApproval = (0, react_1.useRef)([]);
38
+ var prevDomainIds = (0, react_1.useRef)([]);
39
+ var domainIds = (0, react_1.useMemo)(function () {
40
+ var ads = subCampaigns.flatMap(function (sub) { return sub.ads; });
41
+ return lodash_1.default.uniq(ads
42
+ .filter(function (ad) { return ad.places; })
43
+ .map(function (ad) { return ad.places.map(function (x) { return x.domainId; }); })
44
+ .flat()
45
+ .filter(Boolean));
46
+ }, [subCampaigns]);
47
+ var areAllTrue = function (data) {
48
+ return Object.values(data).every(function (value) { return value === true; });
49
+ };
50
+ var renderLinkPreview = function (ad, domainId) {
51
+ if (domainId === void 0) { domainId = defaultDomainId; }
52
+ var url = "".concat(Constant_1.Constants.CAPTIVE_DOMAIN, "/").concat(Constant_1.Constants.PAGE_LOGIN_PREVIEW, "?loginId=").concat(ad.loginId);
53
+ if (ad.welcomeId)
54
+ url += "&welcomeId=".concat(ad.welcomeId, "&isNetworkCampaign=").concat(Boolean(service.domainsGetAll).toString());
55
+ if (domainId)
56
+ url += "&domainId=".concat(domainId);
57
+ return url;
58
+ };
59
+ var mergedData = function (data) {
60
+ return data.reduce(function (acc, detail) {
61
+ var existingLink = acc.find(function (l) { return l.linkPreview === detail.linkPreview; });
62
+ if (existingLink) {
63
+ var existingCampaign = existingLink.campaign.find(function (item) {
64
+ return item.subCampaigns.find(function (subCampaign) {
65
+ return subCampaign.id ===
66
+ detail.campaign[0].subCampaigns[0].id;
67
+ });
68
+ });
69
+ if (existingCampaign) {
70
+ existingCampaign.ads.push({
71
+ id: detail.campaign[0].ads[0].id,
72
+ name: detail.campaign[0].ads[0].name,
73
+ });
74
+ }
75
+ else {
76
+ detail.campaign.forEach(function (item) {
77
+ existingLink.campaign.push(item);
78
+ });
79
+ }
80
+ }
81
+ else {
82
+ acc.push({
83
+ id: (0, Helpers_1.generateUUID)(),
84
+ linkPreview: detail.linkPreview,
85
+ campaign: detail.campaign,
86
+ status: detail.status,
87
+ description: detail.description,
88
+ loginId: detail.loginId,
89
+ welcomeId: detail.welcomeId,
90
+ });
91
+ }
92
+ return acc;
93
+ }, []);
94
+ };
95
+ var renderDataDetail = function (domainId) {
96
+ return mergedData(subCampaigns
97
+ .map(function (subCampaign) {
98
+ return subCampaign.ads
99
+ .map(function (ad) {
100
+ var _a;
101
+ var isDomain = (_a = ad === null || ad === void 0 ? void 0 : ad.places) === null || _a === void 0 ? void 0 : _a.find(function (place) {
102
+ return place.domainId === domainId;
103
+ });
104
+ if (isDomain) {
105
+ return {
106
+ linkPreview: renderLinkPreview(ad, domainId),
107
+ campaign: [
108
+ {
109
+ subCampaigns: [
110
+ {
111
+ id: subCampaign
112
+ .campaignGroup.id,
113
+ name: subCampaign
114
+ .campaignGroup.name,
115
+ status: subCampaign.campaignGroup.status
116
+ },
117
+ ],
118
+ ads: [
119
+ {
120
+ id: ad.id,
121
+ name: ad.name,
122
+ },
123
+ ],
124
+ },
125
+ ],
126
+ loginId: ad.loginId,
127
+ welcomeId: ad.welcomeId,
128
+ description: '',
129
+ status: 0,
130
+ };
131
+ }
132
+ })
133
+ .filter(Boolean);
134
+ })
135
+ .flat()
136
+ .filter(Boolean));
137
+ };
138
+ var flattenData = function (data) {
139
+ var flattened = [];
140
+ var index = 0;
141
+ data.forEach(function (item) {
142
+ item.detail.forEach(function (detail) {
143
+ detail.campaign.forEach(function (campaign) {
144
+ campaign.ads.forEach(function (ad) {
145
+ var _a;
146
+ flattened.push({
147
+ id: index++,
148
+ campaignId: campaignId,
149
+ domainId: item.domain.domainId,
150
+ status: detail.status,
151
+ loginId: detail.loginId,
152
+ welcomeId: detail.welcomeId,
153
+ description: detail.description,
154
+ campaignGroupId: (_a = campaign.subCampaigns[0]) === null || _a === void 0 ? void 0 : _a.id,
155
+ campaignAdId: ad === null || ad === void 0 ? void 0 : ad.id,
156
+ });
157
+ });
158
+ });
159
+ });
160
+ });
161
+ return flattened;
162
+ };
163
+ var unflattenData = function (inputData) {
164
+ var subCampaignsFlat = subCampaigns.flatMap(function (item) {
165
+ var subCampaignId = item.campaignGroup.id;
166
+ var subCampaignName = item.campaignGroup.name;
167
+ return item.ads.map(function (ad) { return ({
168
+ subCampaignId: subCampaignId,
169
+ subCampaignName: subCampaignName,
170
+ adId: ad.id,
171
+ adName: ad.name,
172
+ loginId: ad.loginId,
173
+ welcomeId: ad.welcomeId,
174
+ }); });
175
+ });
176
+ var findAd = function (subId, adId) {
177
+ var ad = subCampaignsFlat.find(function (item) { return item.adId === adId && item.subCampaignId === subId; });
178
+ return ad;
179
+ };
180
+ var groupedData = inputData.reduce(function (acc, item) {
181
+ var _a, _b, _c;
182
+ var domainId = item.domainId;
183
+ if (!acc[domainId]) {
184
+ var domain = domains.find(function (d) { return d.domainId === domainId; });
185
+ acc[domainId] = {
186
+ id: domainId,
187
+ domain: {
188
+ domainName: domain === null || domain === void 0 ? void 0 : domain.name,
189
+ domainId: domain === null || domain === void 0 ? void 0 : domain.domainId,
190
+ },
191
+ detail: [],
192
+ };
193
+ }
194
+ // Tạo linkPreview chỉ nếu chưa tồn tại
195
+ var existingDetail = acc[domainId].detail.find(function (detail) {
196
+ return detail.loginId === item.loginId &&
197
+ detail.welcomeId === item.welcomeId;
198
+ });
199
+ if (!existingDetail) {
200
+ acc[domainId].detail.push({
201
+ id: (0, Helpers_1.generateUUID)(),
202
+ linkPreview: renderLinkPreview({
203
+ loginId: item.loginId,
204
+ welcomeId: item.welcomeId,
205
+ }, domainId),
206
+ campaign: [],
207
+ status: item.status,
208
+ description: item.description,
209
+ loginId: item.loginId,
210
+ welcomeId: item.welcomeId,
211
+ });
212
+ }
213
+ var campaign = (_a = acc[domainId].detail.find(function (detail) {
214
+ return detail.loginId === item.loginId &&
215
+ detail.welcomeId === item.welcomeId;
216
+ })) === null || _a === void 0 ? void 0 : _a.campaign;
217
+ var subCampaign = campaign.find(function (c) { return c.subCampaigns[0].id === item.campaignGroupId; });
218
+ if (!subCampaign) {
219
+ var sub = subCampaigns.find(function (subCampaign) {
220
+ return subCampaign.campaignGroup.id ===
221
+ item.campaignGroupId;
222
+ });
223
+ subCampaign = {
224
+ subCampaigns: [
225
+ {
226
+ id: sub === null || sub === void 0 ? void 0 : sub.campaignGroup.id,
227
+ name: sub === null || sub === void 0 ? void 0 : sub.campaignGroup.name,
228
+ status: sub === null || sub === void 0 ? void 0 : sub.campaignGroup.status
229
+ },
230
+ ],
231
+ ads: [],
232
+ };
233
+ campaign.push(subCampaign);
234
+ }
235
+ subCampaign.ads.push({
236
+ id: item.campaignAdId,
237
+ name: (_c = (_b = findAd(subCampaign.subCampaigns[0].id, item.campaignAdId)) === null || _b === void 0 ? void 0 : _b.adName) !== null && _c !== void 0 ? _c : '',
238
+ });
239
+ return acc;
240
+ }, {});
241
+ return Object.values(groupedData);
242
+ };
243
+ var fetchDomains = (0, react_1.useCallback)(function (ids) {
244
+ if (ids.length > 0 && service.domainsGetByIds) {
245
+ service.domainsGetByIds(ids).then(setDomains);
246
+ }
247
+ }, [service.domainsGetByIds, setDomains]);
248
+ var campaignApprovalMerged = function (oldData, newData) {
249
+ return newData.map(function (newItem) {
250
+ var newDomainId = newItem.domain.domainId;
251
+ newItem.detail = newItem.detail.map(function (newDetail) {
252
+ var oldItem = oldData.find(function (item) { return item.domain.domainId === newDomainId; });
253
+ if (oldItem) {
254
+ var oldDetail = oldItem.detail.find(function (detail) {
255
+ return detail.welcomeId === newDetail.welcomeId &&
256
+ detail.loginId === newDetail.loginId;
257
+ });
258
+ if (oldDetail) {
259
+ return __assign(__assign({}, newDetail), { status: oldDetail.status, description: oldDetail.description });
260
+ }
261
+ }
262
+ return newDetail;
263
+ });
264
+ return newItem;
265
+ });
266
+ };
267
+ (0, react_1.useEffect)(function () {
268
+ if (!Boolean(service.attributesGetByObjectTypeCode))
269
+ return undefined;
270
+ if (!domains.length)
271
+ return setCampaignApprovalTable([]);
272
+ if (areAllTrue(subCampaignDetailValid) &&
273
+ areAllTrue(subCampaignAdsValid)) {
274
+ var data = domains.map(function (domain) {
275
+ return {
276
+ id: domain.domainId,
277
+ domain: {
278
+ domainName: domain.name,
279
+ domainId: domain.domainId,
280
+ },
281
+ detail: renderDataDetail(domain.domainId),
282
+ };
283
+ });
284
+ return setCampaignApprovalTable(campaignApprovalMerged(unflattenData(oldCampaignApproval.current), data));
285
+ }
286
+ }, [domains, subCampaigns]);
287
+ (0, react_1.useEffect)(function () {
288
+ if (!lodash_1.default.isEqual(prevDomainIds.current, domainIds)) {
289
+ fetchDomains(domainIds);
290
+ prevDomainIds.current = domainIds;
291
+ }
292
+ }, [domainIds]);
293
+ (0, react_1.useEffect)(function () {
294
+ if (campaignApprovalTable.length > 0) {
295
+ setCampaignApproval(flattenData(campaignApprovalTable));
296
+ }
297
+ }, [campaignApprovalTable]);
298
+ (0, react_1.useEffect)(function () {
299
+ if (!oldCampaignApproval.current.length && isInit) {
300
+ oldCampaignApproval.current = campaignApproval !== null && campaignApproval !== void 0 ? campaignApproval : [];
301
+ setIsInit(true);
302
+ }
303
+ }, [campaignApproval]);
304
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
305
+ };
306
+ exports.default = RunInBackground;