awing-library 2.1.136-beta → 2.1.136

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 (220) 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 +6 -1
  23. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.js +3 -22
  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 -3
  26. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Utils.d.ts +22 -42
  27. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Utils.js +317 -104
  28. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/component.js +1 -1
  29. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/container.d.ts +3 -0
  30. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/container.js +119 -54
  31. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.d.ts +1 -1
  32. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.js +46 -8
  33. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/component.js +8 -6
  34. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/container.js +1 -1
  35. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/PasswordDialog.d.ts +9 -0
  36. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/PasswordDialog.js +56 -0
  37. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Table.js +5 -1
  38. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Util.d.ts +12 -0
  39. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Util.js +23 -8
  40. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/component.js +3 -3
  41. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/container.js +63 -12
  42. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.d.ts +1 -0
  43. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.js +17 -4
  44. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Types.d.ts +10 -0
  45. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Utils.js +4 -1
  46. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/common.d.ts +1 -0
  47. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/common.js +3 -2
  48. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/component.js +6 -2
  49. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/container.js +31 -29
  50. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AdList.js +5 -2
  51. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AdRow.js +2 -2
  52. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/AddOrEditRule.js +6 -0
  53. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/Authentication.d.ts +8 -0
  54. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/Authentication.js +47 -0
  55. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/LimitEvent.js +52 -6
  56. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/TargetOS/container.js +2 -2
  57. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/index.d.ts +1 -0
  58. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/index.js +3 -1
  59. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/Advanced.d.ts +4 -3
  60. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/Advanced.js +13 -7
  61. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/EditAds.js +5 -5
  62. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.js +69 -124
  63. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.test.js +3 -13
  64. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignList.js +45 -20
  65. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/atoms.d.ts +2 -0
  66. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/atoms.js +8 -3
  67. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/index.js +3 -2
  68. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/useSearchPage.js +33 -8
  69. package/lib/ACM-AXN/Campaign/CreateOrEdit/index.d.ts +5 -1
  70. package/lib/ACM-AXN/Campaign/CreateOrEdit/index.js +176 -59
  71. package/lib/ACM-AXN/Campaign/Enum.d.ts +23 -4
  72. package/lib/ACM-AXN/Campaign/Enum.js +30 -10
  73. package/lib/ACM-AXN/Campaign/Types.d.ts +55 -6
  74. package/lib/ACM-AXN/Campaign/Utils.d.ts +6 -0
  75. package/lib/ACM-AXN/Campaign/Utils.js +60 -2
  76. package/lib/ACM-AXN/Campaign/index.js +2 -2
  77. package/lib/ACM-AXN/CampaignPlan/Container.js +5 -7
  78. package/lib/ACM-AXN/CampaignPlan/Detail.js +3 -3
  79. package/lib/ACM-AXN/CampaignPlan/Filter.js +1 -1
  80. package/lib/ACM-AXN/CampaignSchedule/Components/ControlPanel/Filter.js +14 -10
  81. package/lib/ACM-AXN/CampaignSchedule/Components/EnhancedPagination/index.js +3 -2
  82. package/lib/ACM-AXN/CampaignSchedule/Components/RowAdvance/component.js +7 -5
  83. package/lib/ACM-AXN/CampaignSchedule/DataConfig.js +4 -4
  84. package/lib/ACM-AXN/CampaignSchedule/DataConfigAXN.js +5 -4
  85. package/lib/ACM-AXN/CampaignSchedule/Recoil/Atom.d.ts +1 -2
  86. package/lib/ACM-AXN/CampaignSchedule/Recoil/Atom.js +1 -5
  87. package/lib/ACM-AXN/Common/Constant.d.ts +3 -0
  88. package/lib/ACM-AXN/Common/Constant.js +2 -0
  89. package/lib/ACM-AXN/Common/Enum.d.ts +8 -3
  90. package/lib/ACM-AXN/Common/Enum.js +19 -4
  91. package/lib/ACM-AXN/Common/Types.d.ts +5 -0
  92. package/lib/ACM-AXN/GeoFencing/GoongMap/index.d.ts +8 -9
  93. package/lib/ACM-AXN/GeoFencing/component.js +7 -7
  94. package/lib/ACM-AXN/GeoFencing/interface.d.ts +1 -2
  95. package/lib/ACM-AXN/Holiday/FormHoliday.js +1 -0
  96. package/lib/ACM-AXN/Notifications/NotificationPopover/Container.d.ts +0 -5
  97. package/lib/ACM-AXN/Notifications/NotificationPopover/Container.js +7 -90
  98. package/lib/ACM-AXN/Notifications/NotificationPopover/index.d.ts +0 -5
  99. package/lib/ACM-AXN/Notifications/Types.d.ts +2 -0
  100. package/lib/ACM-AXN/Page/Constant.js +2 -0
  101. package/lib/ACM-AXN/Page/Container.js +3 -3
  102. package/lib/ACM-AXN/Page/CreateOrEdit/ListenTemplate.d.ts +6 -0
  103. package/lib/ACM-AXN/Page/CreateOrEdit/ListenTemplate.js +63 -0
  104. package/lib/ACM-AXN/Page/CreateOrEdit/Recoil.d.ts +11 -2
  105. package/lib/ACM-AXN/Page/CreateOrEdit/Recoil.js +16 -12
  106. package/lib/ACM-AXN/Page/CreateOrEdit/TabInfo/TrackingCode.js +1 -1
  107. package/lib/ACM-AXN/Page/CreateOrEdit/TabInfo/Utils.js +1 -1
  108. package/lib/ACM-AXN/Page/CreateOrEdit/TabInfo/index.js +1 -0
  109. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/Components/Panel.d.ts +1 -9
  110. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/Components/Panel.js +0 -9
  111. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewContent.js +11 -44
  112. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewInfo.d.ts +2 -3
  113. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/ViewInfo.js +39 -61
  114. package/lib/ACM-AXN/Page/CreateOrEdit/Tabview/index.js +29 -32
  115. package/lib/ACM-AXN/Page/CreateOrEdit/Utils.js +10 -9
  116. package/lib/ACM-AXN/Page/CreateOrEdit/index.js +19 -4
  117. package/lib/ACM-AXN/Page/Types.d.ts +3 -0
  118. package/lib/ACM-AXN/Page/enums.d.ts +5 -0
  119. package/lib/ACM-AXN/Page/enums.js +7 -1
  120. package/lib/ACM-AXN/Permission/Components/Styles.d.ts +1 -2
  121. package/lib/ACM-AXN/PlaceFilter/DataTable/component/index.js +2 -5
  122. package/lib/ACM-AXN/PlaceFilter/Input/component/index.js +1 -2
  123. package/lib/ACM-AXN/PlaceFilter/interface.d.ts +1 -0
  124. package/lib/ACM-AXN/ScheduleCompletionRate/Container.js +16 -16
  125. package/lib/ACM-AXN/ScheduleCompletionRate/DataSetConfig.d.ts +14 -9
  126. package/lib/ACM-AXN/ScheduleCompletionRate/DataSetConfig.js +19 -18
  127. package/lib/ACM-AXN/ScheduleCompletionRate/Detail/CompletionRate.js +16 -6
  128. package/lib/ACM-AXN/ScheduleCompletionRate/Detail/CompletionRateDate.js +17 -10
  129. package/lib/ACM-AXN/ScheduleCompletionRate/Filter.d.ts +2 -1
  130. package/lib/ACM-AXN/ScheduleCompletionRate/Filter.js +30 -51
  131. package/lib/ACM-AXN/ScheduleCompletionRate/Filter.test.js +1 -1
  132. package/lib/ACM-AXN/ScheduleCompletionRate/SearchCampaign.d.ts +2 -2
  133. package/lib/ACM-AXN/ScheduleCompletionRate/SearchCampaign.js +3 -9
  134. package/lib/ACM-AXN/ScheduleCompletionRate/Types.d.ts +16 -36
  135. package/lib/ACM-AXN/ScheduleCompletionRate/Utils.d.ts +5 -5
  136. package/lib/ACM-AXN/ScheduleCompletionRate/Utils.js +13 -10
  137. package/lib/ACM-AXN/Statistics/ControlPanel.js +17 -5
  138. package/lib/ACM-AXN/Statistics/Enums.d.ts +2 -1
  139. package/lib/ACM-AXN/Statistics/Enums.js +1 -0
  140. package/lib/ACM-AXN/StatisticsAudienceDemographic/Tabs/AgeRange.js +1 -0
  141. package/lib/ACM-AXN/StatisticsByProvince/DataTable.js +1 -1
  142. package/lib/ACM-AXN/TaskScheduler/CreateOrEdit.js +4 -4
  143. package/lib/ACM-AXN/Template/Container.js +2 -2
  144. package/lib/ACM-AXN/Template/CreateOrEdit/Recoils.d.ts +1 -0
  145. package/lib/ACM-AXN/Template/CreateOrEdit/Recoils.js +5 -1
  146. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.d.ts +2 -2
  147. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.js +56 -39
  148. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.test.d.ts +1 -1
  149. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.test.js +62 -51
  150. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Utils.d.ts +28 -4
  151. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Utils.js +43 -15
  152. package/lib/ACM-AXN/Template/CreateOrEdit/index.js +8 -4
  153. package/lib/ACM-AXN/Template/Import.js +2 -2
  154. package/lib/ACM-AXN/Template/Types.d.ts +9 -9
  155. package/lib/ACM-AXN/TransactionLog/Detail.js +1 -1
  156. package/lib/ACM-AXN/ViewTemplate/Preview.js +5 -6
  157. package/lib/ACM-AXN/ViewTemplate/TemplateField/Event.js +23 -11
  158. package/lib/ACM-AXN/ViewTemplate/TemplateField/Fields/BasicField/Utils.d.ts +18 -0
  159. package/lib/ACM-AXN/ViewTemplate/TemplateField/Fields/BasicField/Utils.js +170 -0
  160. package/lib/ACM-AXN/ViewTemplate/TemplateField/Fields/BasicField/index.js +46 -160
  161. package/lib/ACM-AXN/ViewTemplate/common.d.ts +2 -1
  162. package/lib/ACM-AXN/ViewTemplate/common.js +48 -9
  163. package/lib/ACM-AXN/ViewTemplate/container.js +23 -24
  164. package/lib/ACM-AXN/Wizard/CreateOrEdit/PageTemplate.d.ts +3 -1
  165. package/lib/ACM-AXN/Wizard/CreateOrEdit/PageTemplate.js +18 -28
  166. package/lib/ACM-AXN/Wizard/CreateOrEdit/PageTemplate.test.js +2 -0
  167. package/lib/ACM-AXN/Wizard/CreateOrEdit/RowTemplate.js +1 -1
  168. package/lib/ACM-AXN/Wizard/CreateOrEdit/index.js +17 -1
  169. package/lib/ACM-AXN/index.d.ts +1 -0
  170. package/lib/ACM-AXN/index.js +1 -0
  171. package/lib/AWING/AsyncAutocomplete/index.js +2 -2
  172. package/lib/AWING/BasicDataForm/BasicDataForm.js +9 -6
  173. package/lib/AWING/BasicDataForm/interface.d.ts +3 -0
  174. package/lib/AWING/Chart/BarLineComponent.js +20 -25
  175. package/lib/AWING/Chart/PieComponent.d.ts +3 -4
  176. package/lib/AWING/Chart/PieComponent.js +16 -16
  177. package/lib/AWING/Chart/Styles.js +51 -16
  178. package/lib/AWING/DataForm/DataInput.js +104 -22
  179. package/lib/AWING/DataForm/interface.d.ts +2 -0
  180. package/lib/AWING/DataGrid/index.js +8 -13
  181. package/lib/AWING/DateRangePicker/component.js +56 -30
  182. package/lib/AWING/DateRangePicker/configDate.d.ts +1 -2
  183. package/lib/AWING/DateRangePicker/configDate.js +12 -12
  184. package/lib/AWING/DateRangePicker/interface.d.ts +1 -0
  185. package/lib/AWING/Form/useForm.js +3 -2
  186. package/lib/AWING/GoogleMap/GGMap.d.ts +3 -0
  187. package/lib/AWING/GoogleMap/GGMap.js +256 -0
  188. package/lib/AWING/GoogleMap/index.d.ts +4 -0
  189. package/lib/AWING/GoogleMap/index.js +41 -0
  190. package/lib/AWING/GoogleMap/interface.d.ts +21 -0
  191. package/lib/AWING/GoogleMap/interface.js +2 -0
  192. package/lib/AWING/GoogleMap/utils.d.ts +25 -0
  193. package/lib/AWING/GoogleMap/utils.js +135 -0
  194. package/lib/AWING/GroupTable/GroupTable.js +4 -5
  195. package/lib/AWING/GroupTable/component.d.ts +1 -0
  196. package/lib/AWING/GroupTable/component.js +2 -2
  197. package/lib/AWING/NumberFormat/index.d.ts +3 -1
  198. package/lib/AWING/NumberFormat/index.js +2 -2
  199. package/lib/AWING/PageManagement/PageManagement.js +4 -3
  200. package/lib/AWING/Pagination/index.js +11 -3
  201. package/lib/AWING/index.d.ts +1 -0
  202. package/lib/AWING/index.js +1 -0
  203. package/lib/AWING/ultis/validation.d.ts +1 -0
  204. package/lib/AWING/ultis/validation.js +25 -6
  205. package/lib/Commons/Components/ClassicDrawer.js +5 -4
  206. package/lib/Commons/Components/DeprecatedEnhancedDialog.js +1 -1
  207. package/lib/Commons/Components/HighlightedCode/MarkdownElement.js +6 -1
  208. package/lib/Commons/Hooks/usePath.js +3 -3
  209. package/lib/Utils/Helpers.d.ts +3 -2
  210. package/lib/Utils/Helpers.js +48 -8
  211. package/lib/i18n.js +18 -2
  212. package/lib/translate/en/translation.json +137 -73
  213. package/lib/translate/id/translation.json +893 -0
  214. package/lib/translate/ja/translation.json +893 -0
  215. package/lib/translate/phl/translation.json +893 -0
  216. package/lib/translate/th/translation.json +893 -0
  217. package/lib/translate/vi/translation.json +97 -33
  218. package/package.json +131 -126
  219. package/lib/ACM-AXN/ViewTemplate/TemplateField/Utils.d.ts +0 -5
  220. package/lib/ACM-AXN/ViewTemplate/TemplateField/Utils.js +0 -14
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ 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;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ var jsx_runtime_1 = require("react/jsx-runtime");
43
+ var react_1 = require("@testing-library/react");
44
+ var RunInBackground_1 = __importDefault(require("./RunInBackground"));
45
+ var recoil_1 = require("recoil");
46
+ var Router_1 = require("../../../../AWING/Router");
47
+ var Recoils_1 = require("../Recoils");
48
+ var mockSetCampaign = {
49
+ campaign: {
50
+ id: '5651975304736390227',
51
+ directoryId: '5',
52
+ directoryPath: '.0.5.5651975304736390227.',
53
+ name: 'Tester',
54
+ createdDate: {
55
+ seconds: '1728880372',
56
+ nanos: 0,
57
+ },
58
+ },
59
+ campaignGroups: [
60
+ {
61
+ campaignGroup: {
62
+ numberHasRun: 0,
63
+ id: 1,
64
+ campaignId: '5651975304736390227',
65
+ name: 'Sub-Campaign 1',
66
+ status: 2,
67
+ priority: 1,
68
+ bookingAmount: 10,
69
+ bonusAmount: 0,
70
+ billingUnit: 1,
71
+ },
72
+ ads: [
73
+ {
74
+ loginPage: {
75
+ pageId: '5122170857262705548',
76
+ directoryId: '12',
77
+ pageCode: 'lgn',
78
+ title: 'THACO_KIA_T7/24',
79
+ layoutId: '0',
80
+ transitionId: 0,
81
+ commonHtml: '',
82
+ directoryPath: '.0.6.12.5122170857262705548.',
83
+ createdDate: {
84
+ seconds: '1721031117',
85
+ nanos: 0,
86
+ },
87
+ },
88
+ welcomePage: {
89
+ pageId: '4841207366749869113',
90
+ directoryId: '11',
91
+ pageCode: 'wlc',
92
+ title: 'THACO_KIA_T7/24',
93
+ layoutId: '0',
94
+ transitionId: 0,
95
+ commonHtml: '',
96
+ directoryPath: '.0.6.11.4841207366749869113.',
97
+ createdDate: {
98
+ seconds: '1721031168',
99
+ nanos: 0,
100
+ },
101
+ },
102
+ places: [
103
+ {
104
+ placeId: '4719552610781237542',
105
+ domainId: '4657799247747765382',
106
+ name: 'VINBUS_PQ_68F-011.35',
107
+ address: 'Khu bãi dài, xã Gành dầu, TP. Phú Quốc, T. Kiên Giang',
108
+ description: '',
109
+ longitude: 103.84858,
110
+ latitude: 10.3380303,
111
+ communeCode: '31087',
112
+ districtCode: '911',
113
+ provinceCode: '91',
114
+ status: 0,
115
+ joinedDate: {
116
+ seconds: '1687167517',
117
+ nanos: 0,
118
+ },
119
+ },
120
+ ],
121
+ id: 1,
122
+ campaignId: '5651975304736390227',
123
+ campaignGroupId: 1,
124
+ name: 'Tester',
125
+ status: true,
126
+ type: 1,
127
+ loginId: '5122170857262705548',
128
+ welcomeId: '4841207366749869113',
129
+ startDate: {
130
+ seconds: '1728838800',
131
+ nanos: 0,
132
+ },
133
+ endDate: {
134
+ seconds: '1728838800',
135
+ nanos: 0,
136
+ },
137
+ placeFilter: {
138
+ operandGroups: [
139
+ {
140
+ operands: [
141
+ {
142
+ type: 2,
143
+ operator: 7,
144
+ value: '["4657799247747765382"]',
145
+ },
146
+ {
147
+ type: 0,
148
+ operator: 7,
149
+ value: '["4719552610781237542"]',
150
+ },
151
+ ],
152
+ },
153
+ ],
154
+ },
155
+ weights: [],
156
+ },
157
+ ],
158
+ },
159
+ ],
160
+ campaignAttributes: [
161
+ {
162
+ campaignId: '5651975304736390227',
163
+ attributeId: 1,
164
+ },
165
+ ],
166
+ campaignApprovals: [
167
+ {
168
+ id: 248,
169
+ campaignId: '5651975304736390227',
170
+ domainId: '4657799247747765382',
171
+ campaignGroupId: 1,
172
+ campaignAdId: 1,
173
+ status: 0,
174
+ loginId: '5122170857262705548',
175
+ welcomeId: '4841207366749869113',
176
+ description: '',
177
+ },
178
+ ],
179
+ };
180
+ var campaignId = '5651975304736390227';
181
+ var mockDomain = [
182
+ {
183
+ domainId: '4657799247747765382',
184
+ name: 'Vinbus',
185
+ rateSharing: 100,
186
+ description: 'Vinbus',
187
+ shareType: 0,
188
+ type: null,
189
+ },
190
+ ];
191
+ var mockCLientMethod = {
192
+ domainsGetByIds: function (_id) { return Promise.resolve(mockDomain); },
193
+ attributesGetByObjectTypeCode: function (_objectTypeCode) { return Promise.resolve([]); },
194
+ };
195
+ // Mock Hooks
196
+ jest.mock('ACM-AXN/Campaign/Hooks', function () { return ({
197
+ __esModule: true,
198
+ default: function () { return ({
199
+ service: {
200
+ domainsGetByIds: jest.fn(mockCLientMethod.domainsGetByIds),
201
+ attributesGetByObjectTypeCode: jest.fn(mockCLientMethod.attributesGetByObjectTypeCode),
202
+ },
203
+ }); },
204
+ }); });
205
+ var renderUi = function () {
206
+ var initializeState = function (_a) {
207
+ var set = _a.set;
208
+ set(Recoils_1.campaignModelState, mockSetCampaign);
209
+ };
210
+ return (0, react_1.render)((0, jsx_runtime_1.jsx)(recoil_1.RecoilRoot, { initializeState: initializeState, children: (0, jsx_runtime_1.jsx)(Router_1.BrowserRouter, { children: (0, jsx_runtime_1.jsx)(RunInBackground_1.default, {}) }) }));
211
+ };
212
+ describe('RunInBackground Component', function () {
213
+ it('should render without crashing', function () { return __awaiter(void 0, void 0, void 0, function () {
214
+ var spy;
215
+ return __generator(this, function (_a) {
216
+ switch (_a.label) {
217
+ case 0:
218
+ spy = jest.spyOn(mockCLientMethod, 'domainsGetByIds');
219
+ return [4 /*yield*/, (0, react_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
220
+ return [2 /*return*/, renderUi()];
221
+ }); }); })];
222
+ case 1:
223
+ _a.sent();
224
+ expect(spy).toBeCalledTimes(1);
225
+ expect(spy).toBeCalledWith(['4657799247747765382']);
226
+ return [2 /*return*/];
227
+ }
228
+ });
229
+ }); });
230
+ });
@@ -0,0 +1 @@
1
+ export default function TabApprove(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,123 @@
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
+ var jsx_runtime_1 = require("react/jsx-runtime");
27
+ var material_1 = require("@mui/material");
28
+ var react_1 = require("react");
29
+ var react_i18next_1 = require("react-i18next");
30
+ var recoil_1 = require("recoil");
31
+ var Recoils_1 = require("../Recoils");
32
+ var RowTable_1 = __importDefault(require("./RowTable"));
33
+ var Router_1 = require("../../../../AWING/Router");
34
+ var Hooks_1 = __importDefault(require("../../../../ACM-AXN/Campaign/Hooks"));
35
+ var Context_1 = require("../../../../Context");
36
+ function TabApprove() {
37
+ var campaignId = (0, Router_1.useParams)().campaignId;
38
+ var t = (0, react_i18next_1.useTranslation)().t;
39
+ var service = (0, Hooks_1.default)().service;
40
+ var snackbar = (0, Context_1.useAwing)().appHelper.snackbar;
41
+ var setConfirmExit = (0, recoil_1.useSetRecoilState)(Recoils_1.confirmExitState);
42
+ var _a = (0, react_1.useState)([]), rowSelected = _a[0], setRowSelected = _a[1];
43
+ var _b = (0, recoil_1.useRecoilState)(Recoils_1.campaignApprovalTableState), campaignApprovalTable = _b[0], setCampaignApprovalTable = _b[1];
44
+ var handleRowSelect = (0, react_1.useCallback)(function (id) {
45
+ setRowSelected(function (pre) {
46
+ return pre.includes(id) ? pre.filter(function (x) { return x !== id; }) : __spreadArray(__spreadArray([], pre, true), [id], false);
47
+ });
48
+ }, []);
49
+ var updateRow = (0, react_1.useCallback)(function (dataUpdate, rowId, linkId) {
50
+ setCampaignApprovalTable(function (pre) {
51
+ return pre.map(function (item) {
52
+ if (item.id === rowId) {
53
+ return __assign(__assign({}, item), { detail: item.detail.map(function (detail) {
54
+ if (detail.id === linkId) {
55
+ return __assign(__assign({}, detail), { status: dataUpdate.status, description: dataUpdate.description });
56
+ }
57
+ return detail;
58
+ }) });
59
+ }
60
+ return item;
61
+ });
62
+ });
63
+ setConfirmExit(true);
64
+ }, [campaignApprovalTable]);
65
+ var flattenData = (0, react_1.useCallback)(function (data) {
66
+ var flattened = [];
67
+ var index = 0;
68
+ data.forEach(function (item) {
69
+ item.detail.forEach(function (detail) {
70
+ detail.campaign.forEach(function (campaign) {
71
+ campaign.ads.forEach(function (ad) {
72
+ var _a;
73
+ flattened.push({
74
+ id: index++,
75
+ campaignId: campaignId,
76
+ domainId: item.domain.domainId,
77
+ status: detail.status,
78
+ loginId: detail.loginId,
79
+ welcomeId: detail.welcomeId,
80
+ description: detail.description,
81
+ campaignGroupId: (_a = campaign.subCampaigns[0]) === null || _a === void 0 ? void 0 : _a.id,
82
+ campaignAdId: ad === null || ad === void 0 ? void 0 : ad.id,
83
+ });
84
+ });
85
+ });
86
+ });
87
+ });
88
+ return flattened;
89
+ }, []);
90
+ var handleSelectAll = (0, react_1.useCallback)(function () {
91
+ setRowSelected(function (pre) {
92
+ return pre.length < campaignApprovalTable.length
93
+ ? campaignApprovalTable.map(function (item) { return item.id; })
94
+ : [];
95
+ });
96
+ }, [campaignApprovalTable]);
97
+ var handleSendMail = (0, react_1.useCallback)(function () {
98
+ var data = campaignApprovalTable.filter(function (item) {
99
+ return rowSelected.includes(item.id);
100
+ });
101
+ service.campaignsManualSendMail && service.campaignsManualSendMail(campaignId, flattenData(data)).then(function () {
102
+ setRowSelected([]);
103
+ snackbar('success');
104
+ });
105
+ }, [campaignApprovalTable, rowSelected]);
106
+ return ((0, jsx_runtime_1.jsxs)(material_1.TableContainer, { children: [(0, jsx_runtime_1.jsx)(material_1.Button, { variant: "outlined", color: "primary", disabled: !rowSelected.length, sx: {
107
+ margin: '1rem',
108
+ }, onClick: handleSendMail, children: t('Campaign.Approval.SendEmail') }), (0, jsx_runtime_1.jsxs)(material_1.Table, { sx: {
109
+ boxShadow: 'none',
110
+ '.MuiOutlinedInput-notchedOutline': {
111
+ border: 'none !important',
112
+ },
113
+ }, children: [(0, jsx_runtime_1.jsx)(material_1.TableHead, { children: (0, jsx_runtime_1.jsxs)(material_1.TableRow, { style: { height: 57 }, children: [(0, jsx_runtime_1.jsx)(material_1.TableCell, { style: { width: 60, padding: '0 0 0 4px' }, children: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { indeterminate: rowSelected.length > 0 &&
114
+ rowSelected.length <
115
+ campaignApprovalTable.length, checked: rowSelected.length > 0 &&
116
+ rowSelected.length ===
117
+ campaignApprovalTable.length, onChange: handleSelectAll, inputProps: { 'aria-label': 'select all ad' }, color: "primary" }) }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: t('Campaign.Approval.Domain') }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { style: { maxWidth: 400 }, children: t('Campaign.Approval.LinkPreview') }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: t('Campaign.Approval.SubCampaign') }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: t('Campaign.Approval.Advertisement') }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: t('Campaign.Approval.Status') }), (0, jsx_runtime_1.jsx)(material_1.TableCell, { children: t('Campaign.Approval.Note') })] }) }), (0, jsx_runtime_1.jsx)(material_1.TableBody, { children: campaignApprovalTable.map(function (row) {
118
+ return row.detail.map(function (link, linkIndex) {
119
+ return link.campaign.map(function (sub, subIndex) { return ((0, jsx_runtime_1.jsx)(RowTable_1.default, { row: row, link: link, sub: sub, linkIndex: linkIndex, subIndex: subIndex, rowSelected: rowSelected, handleRowSelect: handleRowSelect, updateRow: updateRow }, "".concat(row.id, "-").concat(linkIndex, "-").concat(subIndex))); });
120
+ });
121
+ }) })] })] }));
122
+ }
123
+ exports.default = TabApprove;
@@ -0,0 +1,253 @@
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 Router_1 = require("../../../../AWING/Router");
56
+ var recoil_1 = require("recoil");
57
+ var _1 = __importDefault(require("."));
58
+ var Recoils_1 = require("../Recoils");
59
+ // Mock các dependencies
60
+ jest.mock('ACM-AXN/Campaign/Hooks');
61
+ jest.mock('react-i18next', function () { return ({
62
+ useTranslation: function () { return ({ t: function (key) { return key; } }); },
63
+ }); });
64
+ // Mock PageManagement
65
+ jest.mock('./RowTable', function () { return function (props) {
66
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("button", { "data-testid": "update-row", onClick: props.updateRow }), (0, jsx_runtime_1.jsx)("button", { "data-testid": "handle-row-select", onClick: props.handleRowSelect })] }));
67
+ }; });
68
+ jest.mock('Context', function () { return ({
69
+ __esModule: true,
70
+ useAwing: function () { return ({
71
+ appHelper: {
72
+ snackbar: jest.fn(function (str) { }),
73
+ },
74
+ }); },
75
+ }); });
76
+ // Mock các component MUI
77
+ jest.mock('@mui/material', function () { return (__assign(__assign({}, jest.requireActual('@mui/material')), { TableContainer: function (_a) {
78
+ var children = _a.children;
79
+ return ((0, jsx_runtime_1.jsx)("div", { "data-testid": "table-container", children: children }));
80
+ }, Table: function (_a) {
81
+ var children = _a.children;
82
+ return (0, jsx_runtime_1.jsx)("table", { children: children });
83
+ }, TableHead: function (_a) {
84
+ var children = _a.children;
85
+ return (0, jsx_runtime_1.jsx)("thead", { children: children });
86
+ }, TableBody: function (_a) {
87
+ var children = _a.children;
88
+ return (0, jsx_runtime_1.jsx)("tbody", { children: children });
89
+ }, TableRow: function (_a) {
90
+ var children = _a.children;
91
+ return (0, jsx_runtime_1.jsx)("tr", { children: children });
92
+ }, TableCell: function (_a) {
93
+ var children = _a.children;
94
+ return (0, jsx_runtime_1.jsx)("td", { children: children });
95
+ }, Checkbox: function (_a) {
96
+ var checked = _a.checked, onChange = _a.onChange;
97
+ return ((0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: checked, onChange: onChange }));
98
+ }, Button: function (_a) {
99
+ var children = _a.children, onClick = _a.onClick;
100
+ return ((0, jsx_runtime_1.jsx)("button", { onClick: onClick, children: children }));
101
+ }, Box: function (_a) {
102
+ var children = _a.children;
103
+ return (0, jsx_runtime_1.jsx)("div", { children: children });
104
+ } })); });
105
+ // Mock Hooks
106
+ jest.mock('ACM-AXN/Campaign/Hooks', function () { return ({
107
+ __esModule: true,
108
+ default: function () { return ({
109
+ service: {
110
+ campaignsManualSendMail: jest.fn(function (_id, data) {
111
+ return Promise.resolve([]);
112
+ }),
113
+ },
114
+ }); },
115
+ }); });
116
+ var initCampaignApprovalTable = [
117
+ {
118
+ id: '4644357797181593495',
119
+ domain: {
120
+ domainName: 'Teras Japan',
121
+ domainId: '4644357797181593495',
122
+ },
123
+ detail: [
124
+ {
125
+ id: '524d8267-48ca-4c3d-a391-0df6b0ee4add',
126
+ linkPreview: 'http://connect.awifi.com.vn/Preview/Page?loginId=5122170857262705548&welcomeId=4841207366749869113&isNetworkCampaign=true&domainId=4644357797181593495',
127
+ campaign: [
128
+ {
129
+ subCampaigns: [
130
+ {
131
+ id: 1,
132
+ name: 'Sub-Campaign 1',
133
+ },
134
+ ],
135
+ ads: [
136
+ {
137
+ id: 3,
138
+ name: 'ohoo',
139
+ },
140
+ {
141
+ id: 4,
142
+ name: 'ohoo - copy',
143
+ },
144
+ ],
145
+ },
146
+ ],
147
+ status: 2,
148
+ description: '',
149
+ loginId: '5122170857262705548',
150
+ welcomeId: '4841207366749869113',
151
+ },
152
+ ],
153
+ },
154
+ ];
155
+ var renderUi = function () {
156
+ var initializeState = function (_a) {
157
+ var set = _a.set;
158
+ set(Recoils_1.campaignApprovalTableState, initCampaignApprovalTable);
159
+ };
160
+ return (0, react_1.render)((0, jsx_runtime_1.jsx)(recoil_1.RecoilRoot, { initializeState: initializeState, children: (0, jsx_runtime_1.jsx)(Router_1.BrowserRouter, { children: (0, jsx_runtime_1.jsx)(_1.default, {}) }) }));
161
+ };
162
+ describe('TabApprove', function () {
163
+ it('renders the component', function () { return __awaiter(void 0, void 0, void 0, function () {
164
+ return __generator(this, function (_a) {
165
+ renderUi();
166
+ expect(react_1.screen.getByTestId('table-container')).toBeInTheDocument();
167
+ expect(react_1.screen.getByText('Campaign.Approval.SendEmail'))
168
+ .toBeInTheDocument;
169
+ return [2 /*return*/];
170
+ });
171
+ }); });
172
+ it('handles row selection correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
173
+ return __generator(this, function (_a) {
174
+ switch (_a.label) {
175
+ case 0:
176
+ renderUi();
177
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
178
+ var checkboxes = react_1.screen.getAllByRole('checkbox');
179
+ react_1.fireEvent.click(checkboxes[0]); // Selecting the first domain
180
+ expect(checkboxes[0]).toBeChecked();
181
+ var button = react_1.screen.getByText('Campaign.Approval.SendEmail');
182
+ react_1.fireEvent.click(button);
183
+ })];
184
+ case 1:
185
+ _a.sent();
186
+ return [2 /*return*/];
187
+ }
188
+ });
189
+ }); });
190
+ it('handles "Select All" correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
191
+ return __generator(this, function (_a) {
192
+ switch (_a.label) {
193
+ case 0:
194
+ renderUi();
195
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
196
+ var selectAllCheckbox = react_1.screen.getAllByRole('checkbox')[0];
197
+ react_1.fireEvent.click(selectAllCheckbox);
198
+ var checkboxes = react_1.screen.getAllByRole('checkbox');
199
+ checkboxes.slice(1).forEach(function (checkbox) {
200
+ expect(checkbox).toBeChecked();
201
+ });
202
+ })];
203
+ case 1:
204
+ _a.sent();
205
+ return [2 /*return*/];
206
+ }
207
+ });
208
+ }); });
209
+ it('disables "Send Email" button when no rows are selected', function () { return __awaiter(void 0, void 0, void 0, function () {
210
+ return __generator(this, function (_a) {
211
+ switch (_a.label) {
212
+ case 0:
213
+ renderUi();
214
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
215
+ expect(react_1.screen.getByText('Campaign.Approval.SendEmail')).toBeInTheDocument();
216
+ })];
217
+ case 1:
218
+ _a.sent();
219
+ return [2 /*return*/];
220
+ }
221
+ });
222
+ }); });
223
+ it('update row', function () { return __awaiter(void 0, void 0, void 0, function () {
224
+ return __generator(this, function (_a) {
225
+ switch (_a.label) {
226
+ case 0:
227
+ renderUi();
228
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
229
+ var buttonUpdateRow = react_1.screen.getByTestId('update-row');
230
+ buttonUpdateRow.click();
231
+ })];
232
+ case 1:
233
+ _a.sent();
234
+ return [2 /*return*/];
235
+ }
236
+ });
237
+ }); });
238
+ it('handle row select', function () { return __awaiter(void 0, void 0, void 0, function () {
239
+ return __generator(this, function (_a) {
240
+ switch (_a.label) {
241
+ case 0:
242
+ renderUi();
243
+ return [4 /*yield*/, (0, react_1.waitFor)(function () {
244
+ var buttonHandleRowSelect = react_1.screen.getByTestId('handle-row-select');
245
+ buttonHandleRowSelect.click();
246
+ })];
247
+ case 1:
248
+ _a.sent();
249
+ return [2 /*return*/];
250
+ }
251
+ });
252
+ }); });
253
+ });
@@ -39,7 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
40
  var jsx_runtime_1 = require("react/jsx-runtime");
41
41
  var material_1 = require("@mui/material");
42
- var immer_1 = __importDefault(require("immer"));
42
+ var immer_1 = require("immer");
43
43
  var lodash_1 = require("lodash");
44
44
  var react_1 = __importStar(require("react"));
45
45
  var react_i18next_1 = require("react-i18next");
@@ -47,6 +47,7 @@ var recoil_1 = require("recoil");
47
47
  var AWING_1 = require("../../../AWING");
48
48
  var Recoils_1 = require("./Recoils");
49
49
  var i18n_1 = __importDefault(require("../../../i18n"));
50
+ var Utils_1 = require("../Utils");
50
51
  var Infomation = function () {
51
52
  var directories = (0, recoil_1.useRecoilValue)(Recoils_1.directoriesState);
52
53
  var attributes = (0, recoil_1.useRecoilValue)(Recoils_1.attributesState);
@@ -56,9 +57,10 @@ var Infomation = function () {
56
57
  var t = (0, react_i18next_1.useTranslation)(undefined, { i18n: i18n_1.default }).t;
57
58
  (0, react_1.useEffect)(function () {
58
59
  if (!campaign.directoryId) {
59
- setCampaignModel((0, immer_1.default)(function (draft) {
60
+ setCampaignModel((0, immer_1.produce)(function (draft) {
60
61
  var _a;
61
- draft.campaign.directoryId = ((_a = (0, lodash_1.minBy)(directories, 'level')) === null || _a === void 0 ? void 0 : _a.directoryId) || '';
62
+ draft.campaign.directoryId =
63
+ ((_a = (0, lodash_1.minBy)(directories, 'level')) === null || _a === void 0 ? void 0 : _a.directoryId) || '';
62
64
  }));
63
65
  }
64
66
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -66,7 +68,9 @@ var Infomation = function () {
66
68
  var handleUpdate = (0, react_1.useCallback)(function (obj, formValid, fieldUpdate) {
67
69
  if (fieldUpdate) {
68
70
  if (fieldUpdate === 'attributeIds') {
69
- setCampaignAttributes(obj['attributeIds'].map(function (item) { return ({ attributeId: item }); }));
71
+ setCampaignAttributes(obj['attributeIds'].map(function (item) { return ({
72
+ attributeId: item,
73
+ }); }));
70
74
  }
71
75
  else {
72
76
  setCampaign(function (prev) { return (__assign(__assign({}, prev), obj)); });
@@ -107,7 +111,19 @@ var Infomation = function () {
107
111
  value: attribute.id,
108
112
  text: attribute.name,
109
113
  }); }),
110
- });
114
+ }),
115
+ // add field password
116
+ fields.push({
117
+ fieldName: 'password',
118
+ type: 'password',
119
+ label: t('Campaign.Password.Title'),
120
+ length: 100,
121
+ helperText: t('Campaign.Password.PasswordNotMatch'),
122
+ disabled: !campaign.canModify,
123
+ onGeneratePassword: function () {
124
+ return (0, Utils_1.generateValidPassword)();
125
+ }
126
+ });
111
127
  }
112
128
  return fields;
113
129
  }, [attributes, directories, t]);