@devtron-labs/devtron-fe-common-lib 0.0.59-beta-5 → 0.0.59-beta-6

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 (450) hide show
  1. package/.eslintignore +96 -0
  2. package/.eslintrc.js +109 -0
  3. package/.github/pull_request_template.md +25 -0
  4. package/.github/workflows/ci.yml +31 -0
  5. package/.github/workflows/release-package.yml +48 -0
  6. package/.husky/pre-commit +5 -0
  7. package/.lintstagedrc +3 -0
  8. package/.nvmrc +1 -0
  9. package/.prettierrc.js +7 -0
  10. package/dist/Common/AddCDButton/AddCDButton.d.ts +3 -3
  11. package/dist/Common/AddCDButton/index.d.ts +2 -2
  12. package/dist/Common/AddCDButton/types.d.ts +26 -26
  13. package/dist/Common/AddCDButton/utils.d.ts +2 -2
  14. package/dist/Common/Api.d.ts +14 -5
  15. package/dist/Common/AppStatus/AppStatus.d.ts +3 -3
  16. package/dist/Common/AppStatus/constants.d.ts +51 -51
  17. package/dist/Common/AppStatus/index.d.ts +1 -1
  18. package/dist/Common/AppStatus/types.d.ts +12 -12
  19. package/dist/Common/AppStatus/utils.d.ts +1 -1
  20. package/dist/Common/BreadCrumb/BreadCrumb.d.ts +5 -5
  21. package/dist/Common/BreadCrumb/BreadcrumbStore.d.ts +17 -17
  22. package/dist/Common/BreadCrumb/Types.d.ts +28 -28
  23. package/dist/Common/CIPipeline.Types.d.ts +265 -265
  24. package/dist/Common/ChartVersionAndTypeSelector.d.ts +4 -3
  25. package/dist/Common/Checkbox.d.ts +5 -5
  26. package/dist/Common/ClipboardButton/ClipboardButton.d.ts +10 -10
  27. package/dist/Common/ClipboardButton/types.d.ts +8 -8
  28. package/dist/Common/Common.service.d.ts +20 -20
  29. package/dist/Common/Constants.d.ts +76 -81
  30. package/dist/Common/CustomInput/CustomInput.d.ts +3 -2
  31. package/dist/Common/CustomInput/Types.d.ts +31 -31
  32. package/dist/Common/CustomInput/index.d.ts +2 -2
  33. package/dist/Common/CustomTagSelector/PropagateTagInfo.d.ts +4 -4
  34. package/dist/Common/CustomTagSelector/ResizableTagTextArea.d.ts +3 -2
  35. package/dist/Common/CustomTagSelector/TagDetails.d.ts +3 -2
  36. package/dist/Common/CustomTagSelector/TagLabelSelect.d.ts +3 -2
  37. package/dist/Common/CustomTagSelector/TagLabelValueSelector.d.ts +3 -2
  38. package/dist/Common/CustomTagSelector/TagSelector.utils.d.ts +12 -12
  39. package/dist/Common/CustomTagSelector/Types.d.ts +68 -68
  40. package/dist/Common/CustomTagSelector/ValidationRules.d.ts +10 -10
  41. package/dist/Common/CustomTagSelector/index.d.ts +6 -6
  42. package/dist/Common/DebouncedSearch/DebouncedSearch.d.ts +17 -17
  43. package/dist/Common/DebouncedSearch/Types.d.ts +14 -14
  44. package/dist/Common/DebouncedSearch/Utils.d.ts +1 -1
  45. package/dist/Common/DeleteComponentModal/DeleteComponent.d.ts +4 -3
  46. package/dist/Common/DeleteComponentModal/types.d.ts +15 -15
  47. package/dist/Common/DevtronProgressing/DevtronProgressing.d.ts +3 -2
  48. package/dist/Common/DevtronProgressing/index.d.ts +1 -1
  49. package/dist/Common/DevtronProgressing/types.d.ts +4 -4
  50. package/dist/Common/Dialogs/ConfirmationDialog.d.ts +9 -8
  51. package/dist/Common/Dialogs/DeleteDialog.d.ts +5 -5
  52. package/dist/Common/Dialogs/DialogForm.d.ts +14 -14
  53. package/dist/Common/Dialogs/ForceDeleteDialog.d.ts +3 -3
  54. package/dist/Common/Dialogs/Types.d.ts +45 -45
  55. package/dist/Common/Dialogs/index.d.ts +4 -4
  56. package/dist/Common/DraggableWrapper/DraggableButton.d.ts +3 -3
  57. package/dist/Common/DraggableWrapper/DraggableWrapper.d.ts +9 -9
  58. package/dist/Common/DraggableWrapper/index.d.ts +3 -3
  59. package/dist/Common/DraggableWrapper/types.d.ts +23 -23
  60. package/dist/Common/Drawer/Drawer.d.ts +16 -14
  61. package/dist/Common/EmptyState/EmptyState.d.ts +25 -0
  62. package/dist/Common/EmptyState/GenericEmptyState.d.ts +5 -3
  63. package/dist/Common/Error.d.ts +17 -17
  64. package/dist/Common/ErrorScreenNotFound.d.ts +3 -2
  65. package/dist/Common/Grid/Grid.d.ts +3 -3
  66. package/dist/Common/Grid/types.d.ts +10 -10
  67. package/dist/Common/Helper.d.ts +64 -65
  68. package/dist/Common/Hooks/UseClickOutside/UseClickOutside.d.ts +1 -1
  69. package/dist/Common/Hooks/UseSuperAdmin/UseSuperAdmin.d.ts +6 -6
  70. package/dist/Common/Hooks/UseSuperAdmin/types.d.ts +3 -3
  71. package/dist/Common/Hooks/UseWindowSize/UseWindowSize.d.ts +4 -4
  72. package/dist/Common/Hooks/index.d.ts +3 -3
  73. package/dist/Common/ImageTags.Types.d.ts +40 -40
  74. package/dist/Common/ImageTags.d.ts +4 -3
  75. package/dist/Common/InfoColorBar/InfoColourbar.d.ts +5 -3
  76. package/dist/Common/Modals/Modal.d.ts +3 -3
  77. package/dist/Common/Modals/OpaqueModal.d.ts +12 -12
  78. package/dist/Common/Modals/VisibleModal.d.ts +15 -15
  79. package/dist/Common/Modals/VisibleModal2.d.ts +12 -12
  80. package/dist/Common/MultiSelectCustomization.d.ts +37 -37
  81. package/dist/Common/Pagination/PageSizeSelector.d.ts +4 -3
  82. package/dist/Common/Pagination/Pagination.d.ts +5 -3
  83. package/dist/Common/Pagination/constants.d.ts +5 -5
  84. package/dist/Common/Pagination/index.d.ts +1 -1
  85. package/dist/Common/Pagination/types.d.ts +51 -51
  86. package/dist/Common/Pagination/utils.d.ts +6 -6
  87. package/dist/Common/Policy.Types.d.ts +56 -56
  88. package/dist/Common/PopupMenu.d.ts +8 -7
  89. package/dist/Common/Progressing.d.ts +4 -3
  90. package/dist/Common/RJSF/Form.d.ts +4 -2
  91. package/dist/Common/RJSF/common/FieldRow.d.ts +6 -5
  92. package/dist/Common/RJSF/common/types.d.ts +8 -8
  93. package/dist/Common/RJSF/config.d.ts +4 -4
  94. package/dist/Common/RJSF/constants.d.ts +7 -7
  95. package/dist/Common/RJSF/index.d.ts +3 -3
  96. package/dist/Common/RJSF/templates/ArrayFieldItemTemplate.d.ts +3 -2
  97. package/dist/Common/RJSF/templates/ArrayFieldTemplate.d.ts +3 -2
  98. package/dist/Common/RJSF/templates/BaseInput.d.ts +3 -2
  99. package/dist/Common/RJSF/templates/ButtonTemplates/AddButton.d.ts +3 -2
  100. package/dist/Common/RJSF/templates/ButtonTemplates/RemoveButton.d.ts +3 -2
  101. package/dist/Common/RJSF/templates/ButtonTemplates/SubmitButton.d.ts +3 -2
  102. package/dist/Common/RJSF/templates/ButtonTemplates/index.d.ts +3 -3
  103. package/dist/Common/RJSF/templates/Description.d.ts +3 -2
  104. package/dist/Common/RJSF/templates/Field.d.ts +3 -2
  105. package/dist/Common/RJSF/templates/FieldErrorTemplate.d.ts +3 -2
  106. package/dist/Common/RJSF/templates/ObjectFieldTemplate.d.ts +3 -2
  107. package/dist/Common/RJSF/templates/TitleField.d.ts +3 -2
  108. package/dist/Common/RJSF/templates/WrapIfAdditionalTemplate.d.ts +3 -2
  109. package/dist/Common/RJSF/templates/index.d.ts +10 -10
  110. package/dist/Common/RJSF/types.d.ts +3 -3
  111. package/dist/Common/RJSF/utils.d.ts +26 -25
  112. package/dist/Common/RJSF/widgets/Checkbox.d.ts +3 -2
  113. package/dist/Common/RJSF/widgets/Select.d.ts +3 -2
  114. package/dist/Common/RJSF/widgets/index.d.ts +2 -2
  115. package/dist/Common/RadioGroup/RadioGroup.d.ts +17 -16
  116. package/dist/Common/RadioGroup.d.ts +8 -8
  117. package/dist/Common/Reload.d.ts +3 -3
  118. package/dist/Common/ResizableTextarea.d.ts +3 -3
  119. package/dist/Common/SearchBar/SearchBar.component.d.ts +39 -37
  120. package/dist/Common/SearchBar/index.d.ts +2 -2
  121. package/dist/Common/SearchBar/types.d.ts +35 -35
  122. package/dist/Common/Security/ScanVulnerabilitiesTable.d.ts +4 -3
  123. package/dist/Common/ServerError.d.ts +15 -15
  124. package/dist/Common/TippyCustomized.d.ts +4 -2
  125. package/dist/Common/ToastBody.d.ts +23 -23
  126. package/dist/Common/Toggle/Toggle.d.ts +14 -12
  127. package/dist/Common/Types.d.ts +692 -691
  128. package/dist/Common/index.d.ts +50 -50
  129. package/dist/Pages/GlobalConfigurations/BuildInfra/BuildInfraConfigForm.d.ts +4 -0
  130. package/dist/Pages/GlobalConfigurations/BuildInfra/BuildInfraDescriptionField.d.ts +4 -0
  131. package/dist/Pages/GlobalConfigurations/BuildInfra/BuildInfraFormAction.d.ts +7 -0
  132. package/dist/Pages/GlobalConfigurations/BuildInfra/BuildInfraFormItem.d.ts +4 -0
  133. package/dist/Pages/GlobalConfigurations/BuildInfra/BuildInfraProfileNameField.d.ts +4 -0
  134. package/dist/Pages/GlobalConfigurations/BuildInfra/Descriptor.d.ts +4 -0
  135. package/dist/Pages/GlobalConfigurations/BuildInfra/Footer.d.ts +4 -0
  136. package/dist/Pages/GlobalConfigurations/BuildInfra/constants.d.ts +50 -0
  137. package/dist/Pages/GlobalConfigurations/BuildInfra/index.d.ts +7 -0
  138. package/dist/Pages/GlobalConfigurations/BuildInfra/services.d.ts +6 -0
  139. package/dist/Pages/GlobalConfigurations/BuildInfra/types.d.ts +286 -0
  140. package/dist/Pages/GlobalConfigurations/BuildInfra/utils.d.ts +12 -0
  141. package/dist/Pages/GlobalConfigurations/index.d.ts +1 -0
  142. package/dist/Pages/index.d.ts +1 -0
  143. package/dist/Shared/Components/APIResponseHandler/APIResponseHandler.d.ts +4 -0
  144. package/dist/Shared/Components/APIResponseHandler/constants.d.ts +4 -0
  145. package/dist/Shared/Components/APIResponseHandler/index.d.ts +2 -0
  146. package/dist/Shared/Components/APIResponseHandler/types.d.ts +37 -0
  147. package/dist/Shared/Components/BulkSelection/BulkSelection.d.ts +4 -0
  148. package/dist/Shared/Components/BulkSelection/BulkSelectionDropdownItems.d.ts +4 -0
  149. package/dist/Shared/Components/BulkSelection/UseBulkSelection.d.ts +3 -0
  150. package/dist/Shared/Components/BulkSelection/constants.d.ts +8 -0
  151. package/dist/Shared/Components/BulkSelection/index.d.ts +4 -0
  152. package/dist/Shared/Components/BulkSelection/types.d.ts +51 -0
  153. package/dist/Shared/Components/ReactSelect/index.d.ts +1 -0
  154. package/dist/Shared/Components/ReactSelect/utils.d.ts +12 -0
  155. package/dist/Shared/Components/index.d.ts +3 -0
  156. package/dist/Shared/Helpers.d.ts +16 -0
  157. package/dist/Shared/index.d.ts +3 -0
  158. package/dist/Shared/validations.d.ts +8 -0
  159. package/dist/index.d.ts +3 -7
  160. package/dist/index.js +30111 -162
  161. package/package.json +23 -34
  162. package/rollup.config.js +31 -0
  163. package/src/Assets/Icon/ic-add.svg +3 -0
  164. package/src/Assets/Icon/ic-appstatus-cancelled.svg +6 -0
  165. package/src/Assets/Icon/ic-arrow-counter-clockwise.svg +5 -0
  166. package/src/Assets/Icon/ic-check-all.svg +5 -0
  167. package/src/Assets/Icon/ic-check-square.svg +4 -0
  168. package/src/Assets/Icon/ic-check.svg +5 -0
  169. package/src/Assets/Icon/ic-chevron-down.svg +5 -0
  170. package/src/Assets/Icon/ic-copy.svg +3 -0
  171. package/src/Assets/Icon/ic-cpu.svg +4 -0
  172. package/src/Assets/Icon/ic-cross.svg +3 -0
  173. package/src/Assets/Icon/ic-drag.svg +8 -0
  174. package/src/Assets/Icon/ic-enter.svg +3 -0
  175. package/src/Assets/Icon/ic-error-cross.svg +8 -0
  176. package/src/Assets/Icon/ic-error-exclamation.svg +6 -0
  177. package/src/Assets/Icon/ic-error-medium.svg +6 -0
  178. package/src/Assets/Icon/ic-help-outline.svg +3 -0
  179. package/src/Assets/Icon/ic-help.svg +3 -0
  180. package/src/Assets/Icon/ic-info-filled.svg +7 -0
  181. package/src/Assets/Icon/ic-info-outlined.svg +13 -0
  182. package/src/Assets/Icon/ic-memory.svg +3 -0
  183. package/src/Assets/Icon/ic-minus.svg +3 -0
  184. package/src/Assets/Icon/ic-pencil.svg +3 -0
  185. package/src/Assets/Icon/ic-progressing.svg +6 -0
  186. package/src/Assets/Icon/ic-rotate-devtron.svg +103 -0
  187. package/src/Assets/Icon/ic-search.svg +6 -0
  188. package/src/Assets/Icon/ic-timer.svg +3 -0
  189. package/src/Assets/Icon/ic-warning.svg +7 -0
  190. package/src/Assets/Icon/inject-tag.svg +5 -0
  191. package/src/Assets/Img/app-not-deployed.png +0 -0
  192. package/src/Assets/Img/delete-medium.svg +15 -0
  193. package/src/Assets/Img/ic-empty-error@2x.png +0 -0
  194. package/src/Assets/Img/ic-loading-failure.png +0 -0
  195. package/src/Assets/Img/ic-not-authorized.svg +62 -0
  196. package/src/Common/AddCDButton/AddCDButton.tsx +68 -0
  197. package/src/Common/AddCDButton/index.ts +2 -0
  198. package/src/Common/AddCDButton/types.ts +38 -0
  199. package/src/Common/AddCDButton/utils.tsx +35 -0
  200. package/src/Common/Api.ts +251 -0
  201. package/src/Common/AppStatus/AppStatus.tsx +64 -0
  202. package/src/Common/AppStatus/constants.ts +53 -0
  203. package/src/Common/AppStatus/index.ts +1 -0
  204. package/src/Common/AppStatus/types.ts +12 -0
  205. package/src/Common/AppStatus/utils.ts +14 -0
  206. package/src/Common/BreadCrumb/BreadCrumb.tsx +105 -0
  207. package/src/Common/BreadCrumb/BreadcrumbStore.tsx +25 -0
  208. package/src/Common/BreadCrumb/Types.ts +29 -0
  209. package/src/Common/CIPipeline.Types.ts +277 -0
  210. package/src/Common/ChartVersionAndTypeSelector.tsx +78 -0
  211. package/src/Common/Checkbox.tsx +37 -0
  212. package/src/Common/ClipboardButton/ClipboardButton.tsx +61 -0
  213. package/src/Common/ClipboardButton/__tests__/ClipboardButton.test.tsx +43 -0
  214. package/src/Common/ClipboardButton/types.ts +7 -0
  215. package/src/Common/Common.service.ts +315 -0
  216. package/src/Common/Constants.ts +255 -0
  217. package/src/Common/CustomInput/CustomInput.tsx +135 -0
  218. package/src/Common/CustomInput/Types.ts +32 -0
  219. package/src/Common/CustomInput/index.ts +2 -0
  220. package/src/Common/CustomTagSelector/PropagateTagInfo.tsx +46 -0
  221. package/src/Common/CustomTagSelector/ResizableTagTextArea.tsx +84 -0
  222. package/src/Common/CustomTagSelector/TagDetails.tsx +76 -0
  223. package/src/Common/CustomTagSelector/TagLabelSelect.tsx +61 -0
  224. package/src/Common/CustomTagSelector/TagLabelValueSelector.tsx +198 -0
  225. package/src/Common/CustomTagSelector/TagSelector.utils.ts +71 -0
  226. package/src/Common/CustomTagSelector/Types.ts +72 -0
  227. package/src/Common/CustomTagSelector/ValidationRules.ts +58 -0
  228. package/src/Common/CustomTagSelector/index.ts +6 -0
  229. package/src/Common/DebouncedSearch/DebouncedSearch.tsx +78 -0
  230. package/src/Common/DebouncedSearch/Types.ts +13 -0
  231. package/src/Common/DebouncedSearch/Utils.ts +19 -0
  232. package/src/Common/DebouncedSearch/__tests__/DebouncedSearch.test.tsx +61 -0
  233. package/src/Common/DeleteComponentModal/DeleteComponent.tsx +95 -0
  234. package/src/Common/DeleteComponentModal/types.ts +15 -0
  235. package/src/Common/DevtronProgressing/DevtronProgressing.tsx +11 -0
  236. package/src/Common/DevtronProgressing/index.ts +1 -0
  237. package/src/Common/DevtronProgressing/types.ts +4 -0
  238. package/src/Common/Dialogs/ConfirmationDialog.tsx +34 -0
  239. package/src/Common/Dialogs/DeleteDialog.tsx +69 -0
  240. package/src/Common/Dialogs/DialogForm.tsx +86 -0
  241. package/src/Common/Dialogs/ForceDeleteDialog.tsx +19 -0
  242. package/src/Common/Dialogs/Types.ts +47 -0
  243. package/src/Common/Dialogs/index.ts +4 -0
  244. package/src/Common/DraggableWrapper/DraggableButton.tsx +14 -0
  245. package/src/Common/DraggableWrapper/DraggableWrapper.tsx +118 -0
  246. package/src/Common/DraggableWrapper/index.ts +3 -0
  247. package/src/Common/DraggableWrapper/types.ts +27 -0
  248. package/src/Common/Drawer/Drawer.scss +40 -0
  249. package/src/Common/Drawer/Drawer.tsx +49 -0
  250. package/src/Common/EmptyState/EmptyState.tsx +42 -0
  251. package/src/Common/EmptyState/GenericEmptyState.tsx +81 -0
  252. package/src/Common/EmptyState/emptyState.scss +74 -0
  253. package/src/Common/Error.tsx +61 -0
  254. package/src/Common/ErrorScreenNotFound.tsx +31 -0
  255. package/src/Common/Grid/Grid.tsx +44 -0
  256. package/src/Common/Grid/types.ts +11 -0
  257. package/src/Common/Helper.tsx +576 -0
  258. package/src/Common/Hooks/UseClickOutside/UseClickOutside.tsx +15 -0
  259. package/src/Common/Hooks/UseSuperAdmin/UseSuperAdmin.tsx +24 -0
  260. package/src/Common/Hooks/UseSuperAdmin/types.ts +3 -0
  261. package/src/Common/Hooks/UseWindowSize/UseWindowSize.tsx +31 -0
  262. package/src/Common/Hooks/index.ts +3 -0
  263. package/src/Common/ImageTags.Types.ts +44 -0
  264. package/src/Common/ImageTags.tsx +586 -0
  265. package/src/Common/InfoColorBar/InfoColourbar.tsx +80 -0
  266. package/src/Common/InfoColorBar/infoColourBar.scss +28 -0
  267. package/src/Common/Modals/Modal.tsx +68 -0
  268. package/src/Common/Modals/OpaqueModal.tsx +36 -0
  269. package/src/Common/Modals/VisibleModal.tsx +55 -0
  270. package/src/Common/Modals/VisibleModal2.tsx +35 -0
  271. package/src/Common/MultiSelectCustomization.tsx +148 -0
  272. package/src/Common/Pagination/PageSizeSelector.tsx +78 -0
  273. package/src/Common/Pagination/Pagination.tsx +127 -0
  274. package/src/Common/Pagination/constants.ts +6 -0
  275. package/src/Common/Pagination/index.tsx +3 -0
  276. package/src/Common/Pagination/pagination.scss +123 -0
  277. package/src/Common/Pagination/types.ts +55 -0
  278. package/src/Common/Pagination/utils.tsx +24 -0
  279. package/src/Common/Policy.Types.ts +63 -0
  280. package/src/Common/PopupMenu.tsx +199 -0
  281. package/src/Common/Progressing.tsx +53 -0
  282. package/src/Common/RJSF/Form.tsx +29 -0
  283. package/src/Common/RJSF/common/FieldRow.tsx +35 -0
  284. package/src/Common/RJSF/common/types.ts +9 -0
  285. package/src/Common/RJSF/config.ts +37 -0
  286. package/src/Common/RJSF/constants.ts +10 -0
  287. package/src/Common/RJSF/index.ts +3 -0
  288. package/src/Common/RJSF/rjsfForm.scss +18 -0
  289. package/src/Common/RJSF/templates/ArrayFieldItemTemplate.tsx +31 -0
  290. package/src/Common/RJSF/templates/ArrayFieldTemplate.tsx +78 -0
  291. package/src/Common/RJSF/templates/BaseInput.tsx +16 -0
  292. package/src/Common/RJSF/templates/ButtonTemplates/AddButton.tsx +18 -0
  293. package/src/Common/RJSF/templates/ButtonTemplates/RemoveButton.tsx +10 -0
  294. package/src/Common/RJSF/templates/ButtonTemplates/SubmitButton.tsx +18 -0
  295. package/src/Common/RJSF/templates/ButtonTemplates/index.ts +3 -0
  296. package/src/Common/RJSF/templates/Description.tsx +12 -0
  297. package/src/Common/RJSF/templates/Field.tsx +30 -0
  298. package/src/Common/RJSF/templates/FieldErrorTemplate.tsx +25 -0
  299. package/src/Common/RJSF/templates/ObjectFieldTemplate.tsx +105 -0
  300. package/src/Common/RJSF/templates/TitleField.tsx +9 -0
  301. package/src/Common/RJSF/templates/WrapIfAdditionalTemplate.tsx +51 -0
  302. package/src/Common/RJSF/templates/index.ts +10 -0
  303. package/src/Common/RJSF/types.ts +4 -0
  304. package/src/Common/RJSF/utils.ts +125 -0
  305. package/src/Common/RJSF/widgets/Checkbox.tsx +44 -0
  306. package/src/Common/RJSF/widgets/Select.tsx +77 -0
  307. package/src/Common/RJSF/widgets/index.ts +2 -0
  308. package/src/Common/RadioGroup/RadioGroup.tsx +105 -0
  309. package/src/Common/RadioGroup/radioGroup.scss +46 -0
  310. package/src/Common/RadioGroup.tsx +53 -0
  311. package/src/Common/Reload.tsx +23 -0
  312. package/src/Common/ResizableTextarea.tsx +73 -0
  313. package/src/Common/SearchBar/SearchBar.component.tsx +131 -0
  314. package/src/Common/SearchBar/index.ts +2 -0
  315. package/src/Common/SearchBar/searchBar.scss +31 -0
  316. package/src/Common/SearchBar/types.ts +34 -0
  317. package/src/Common/Security/ScanVulnerabilitiesTable.tsx +55 -0
  318. package/src/Common/Security/scanVulnerabilities.css +69 -0
  319. package/src/Common/ServerError.ts +31 -0
  320. package/src/Common/TippyCustomized.tsx +172 -0
  321. package/src/Common/ToastBody.tsx +62 -0
  322. package/src/Common/Toggle/Toggle.scss +78 -0
  323. package/src/Common/Toggle/Toggle.tsx +50 -0
  324. package/src/Common/Types.ts +766 -0
  325. package/src/Common/index.ts +50 -0
  326. package/src/Pages/GlobalConfigurations/BuildInfra/BuildInfraConfigForm.tsx +128 -0
  327. package/src/Pages/GlobalConfigurations/BuildInfra/BuildInfraDescriptionField.tsx +44 -0
  328. package/src/Pages/GlobalConfigurations/BuildInfra/BuildInfraFormAction.tsx +106 -0
  329. package/src/Pages/GlobalConfigurations/BuildInfra/BuildInfraFormItem.tsx +55 -0
  330. package/src/Pages/GlobalConfigurations/BuildInfra/BuildInfraProfileNameField.tsx +32 -0
  331. package/src/Pages/GlobalConfigurations/BuildInfra/Descriptor.tsx +45 -0
  332. package/src/Pages/GlobalConfigurations/BuildInfra/Footer.tsx +55 -0
  333. package/src/Pages/GlobalConfigurations/BuildInfra/Readme.md +4 -0
  334. package/src/Pages/GlobalConfigurations/BuildInfra/constants.tsx +138 -0
  335. package/src/Pages/GlobalConfigurations/BuildInfra/index.ts +7 -0
  336. package/src/Pages/GlobalConfigurations/BuildInfra/services.tsx +167 -0
  337. package/src/Pages/GlobalConfigurations/BuildInfra/types.tsx +339 -0
  338. package/src/Pages/GlobalConfigurations/BuildInfra/utils.tsx +509 -0
  339. package/src/Pages/GlobalConfigurations/index.ts +1 -0
  340. package/src/Pages/index.ts +1 -0
  341. package/src/Shared/Components/APIResponseHandler/APIResponseHandler.tsx +41 -0
  342. package/src/Shared/Components/APIResponseHandler/constants.tsx +5 -0
  343. package/src/Shared/Components/APIResponseHandler/index.ts +2 -0
  344. package/src/Shared/Components/APIResponseHandler/types.tsx +39 -0
  345. package/src/Shared/Components/BulkSelection/BulkSelection.tsx +81 -0
  346. package/src/Shared/Components/BulkSelection/BulkSelectionDropdownItems.tsx +31 -0
  347. package/src/Shared/Components/BulkSelection/UseBulkSelection.tsx +99 -0
  348. package/src/Shared/Components/BulkSelection/constants.tsx +12 -0
  349. package/src/Shared/Components/BulkSelection/index.ts +4 -0
  350. package/src/Shared/Components/BulkSelection/types.tsx +61 -0
  351. package/src/Shared/Components/ReactSelect/index.ts +1 -0
  352. package/src/Shared/Components/ReactSelect/utils.tsx +97 -0
  353. package/src/Shared/Components/index.ts +3 -0
  354. package/src/Shared/Helpers.tsx +29 -0
  355. package/src/Shared/index.ts +3 -0
  356. package/src/Shared/validations.tsx +130 -0
  357. package/src/custom.d.ts +13 -0
  358. package/src/index.ts +3 -0
  359. package/tsconfig.json +40 -0
  360. package/dist/Common/CodeEditor/CodeEditor.d.ts +0 -47
  361. package/dist/Common/Select/Select.d.ts +0 -4
  362. package/dist/Common/Select/types.d.ts +0 -29
  363. package/dist/abap-9f67f57a.js +0 -1314
  364. package/dist/apex-ff62e532.js +0 -315
  365. package/dist/assets/editor.worker-d26000ef.js +0 -9
  366. package/dist/assets/index.css +0 -1
  367. package/dist/assets/json.worker-f23a4654.js +0 -40
  368. package/dist/assets/yaml.worker-35ea3f9a.js +0 -467
  369. package/dist/azcli-31e64a7f.js +0 -74
  370. package/dist/bat-0ffe897e.js +0 -95
  371. package/dist/bicep-3414a2b1.js +0 -108
  372. package/dist/cameligo-df1f3f25.js +0 -168
  373. package/dist/clojure-65b0f010.js +0 -754
  374. package/dist/coffee-437f0fba.js +0 -228
  375. package/dist/cpp-66843dd5.js +0 -390
  376. package/dist/csharp-621d9a49.js +0 -320
  377. package/dist/csp-de0d5244.js +0 -57
  378. package/dist/css-7cd5ed4c.js +0 -186
  379. package/dist/cssMode-dc5f347f.js +0 -1446
  380. package/dist/cypher-70ad96fe.js +0 -262
  381. package/dist/dart-33ae3739.js +0 -270
  382. package/dist/dockerfile-f2274a50.js +0 -132
  383. package/dist/ecl-3b8294a3.js +0 -454
  384. package/dist/elixir-b9dcc73a.js +0 -489
  385. package/dist/flow9-bdde8316.js +0 -141
  386. package/dist/freemarker2-adb1a1bb.js +0 -643
  387. package/dist/fsharp-eac2e449.js +0 -210
  388. package/dist/go-d12ed8d4.js +0 -208
  389. package/dist/graphql-c7356b69.js +0 -141
  390. package/dist/handlebars-096fff05.js +0 -391
  391. package/dist/hcl-e883a0d4.js +0 -177
  392. package/dist/html-0cbfb620.js +0 -281
  393. package/dist/htmlMode-cb96e200.js +0 -1456
  394. package/dist/index-3e12a5d1.js +0 -126104
  395. package/dist/ini-425ab711.js +0 -68
  396. package/dist/java-2bc0fd68.js +0 -221
  397. package/dist/javascript-198e562f.js +0 -75
  398. package/dist/jsonMode-9c219fc6.js +0 -1867
  399. package/dist/julia-1c932615.js +0 -496
  400. package/dist/kotlin-1ab839c8.js +0 -245
  401. package/dist/less-6fe856f5.js +0 -168
  402. package/dist/lexon-4955ac52.js +0 -151
  403. package/dist/liquid-7405cc0a.js +0 -238
  404. package/dist/lua-3cca0047.js +0 -157
  405. package/dist/m3-132e9cb6.js +0 -210
  406. package/dist/markdown-ea59a0c1.js +0 -202
  407. package/dist/mips-19811f4b.js +0 -194
  408. package/dist/msdax-69954a10.js +0 -377
  409. package/dist/mysql-82088e5d.js +0 -876
  410. package/dist/objective-c-1976eccc.js +0 -188
  411. package/dist/pascal-8ef177cb.js +0 -245
  412. package/dist/pascaligo-bc517b9e.js +0 -158
  413. package/dist/perl-8b93582c.js +0 -599
  414. package/dist/pgsql-00c11a6d.js +0 -847
  415. package/dist/php-4c8c276f.js +0 -471
  416. package/dist/pla-e9b4ffb1.js +0 -131
  417. package/dist/postiats-2071af8c.js +0 -544
  418. package/dist/powerquery-8e388ceb.js +0 -890
  419. package/dist/powershell-e35db398.js +0 -233
  420. package/dist/protobuf-a24b9176.js +0 -422
  421. package/dist/pug-2c94d9b8.js +0 -393
  422. package/dist/python-2df08096.js +0 -259
  423. package/dist/qsharp-d730d7fe.js +0 -282
  424. package/dist/r-be193556.js +0 -245
  425. package/dist/razor-11eb7ebc.js +0 -512
  426. package/dist/redis-9690c6ac.js +0 -298
  427. package/dist/redshift-6bdcdeaa.js +0 -806
  428. package/dist/restructuredtext-a08c1d20.js +0 -162
  429. package/dist/ruby-2247692b.js +0 -444
  430. package/dist/rust-1dffb4d5.js +0 -337
  431. package/dist/sb-136598e9.js +0 -110
  432. package/dist/scala-b1100fed.js +0 -353
  433. package/dist/scheme-038c8094.js +0 -114
  434. package/dist/scss-700d1b52.js +0 -244
  435. package/dist/shell-86c16e0f.js +0 -224
  436. package/dist/solidity-c05fdf3c.js +0 -1351
  437. package/dist/sophia-cd645d71.js +0 -190
  438. package/dist/sparql-01d9ec9c.js +0 -193
  439. package/dist/sql-4c33df41.js +0 -818
  440. package/dist/st-52cf1408.js +0 -414
  441. package/dist/swift-13c792ba.js +0 -315
  442. package/dist/systemverilog-0bd8b730.js +0 -556
  443. package/dist/tcl-463d7c75.js +0 -232
  444. package/dist/tsMode-35934209.js +0 -811
  445. package/dist/twig-0d98f5ec.js +0 -323
  446. package/dist/typescript-999619a1.js +0 -328
  447. package/dist/vb-3a2b0a51.js +0 -364
  448. package/dist/wgsl-b2ddb3e4.js +0 -420
  449. package/dist/xml-ebd03a57.js +0 -95
  450. package/dist/yaml-d1cda485.js +0 -184
@@ -0,0 +1,509 @@
1
+ import { FormEvent, useEffect, useState } from 'react'
2
+ import { toast } from 'react-toastify'
3
+ import { showError, useAsync } from '../../../Common'
4
+ import { getBuildInfraProfileByName, createBuildInfraProfile, updateBuildInfraProfile } from './services'
5
+ import {
6
+ BuildInfraConfigTypes,
7
+ BuildInfraInheritActions,
8
+ BuildInfraMetaConfigTypes,
9
+ BuildInfraProfileData,
10
+ HandleProfileInputChangeType,
11
+ ProfileInputErrorType,
12
+ UseBuildInfraFormProps,
13
+ UseBuildInfraFormResponseType,
14
+ ValidateRequestLimitResponseType,
15
+ ValidateRequestLimitType,
16
+ } from './types'
17
+ import {
18
+ BUILD_INFRA_INPUT_CONSTRAINTS,
19
+ BUILD_INFRA_TEXT,
20
+ DEFAULT_PROFILE_NAME,
21
+ PROFILE_INPUT_ERROR_FIELDS,
22
+ CREATE_MODE_REQUIRED_INPUT_FIELDS,
23
+ } from './constants'
24
+ import {
25
+ validateDescription,
26
+ validateName,
27
+ validateRequiredPositiveNumber,
28
+ getCommonSelectStyle,
29
+ validatePositiveInteger,
30
+ } from '../../../Shared'
31
+
32
+ export const validateRequestLimit = ({
33
+ request,
34
+ limit,
35
+ unitsMap,
36
+ }: ValidateRequestLimitType): ValidateRequestLimitResponseType => {
37
+ // Request <= Limit
38
+ // Request and Limit should be numbers can be decimals
39
+ // Request and Limit should be positive numbers
40
+ // Request and Limit should be less than Number.MAX_SAFE_INTEGER
41
+ // Request and Limit should can have at most BUILD_INFRA_INPUT_CONSTRAINTS.DECIMAL_PLACES
42
+ // Both request and limit should be there
43
+ const requestNumber = Number(request.value)
44
+ const limitNumber = Number(limit.value)
45
+ const requestUnit = Number(unitsMap[request.unit]?.conversionFactor)
46
+ const limitUnit = Number(unitsMap[limit.unit]?.conversionFactor)
47
+
48
+ const requestLimitValidationResponse: ValidateRequestLimitResponseType = {
49
+ request: {
50
+ isValid: true,
51
+ },
52
+ limit: {
53
+ isValid: true,
54
+ },
55
+ }
56
+
57
+ const requestValidationMessage = validateRequiredPositiveNumber(request.value).message
58
+ const limitValidationMessage = validateRequiredPositiveNumber(limit.value).message
59
+
60
+ if (requestValidationMessage) {
61
+ requestLimitValidationResponse.request = {
62
+ message: requestValidationMessage,
63
+ isValid: false,
64
+ }
65
+ }
66
+
67
+ if (limitValidationMessage) {
68
+ requestLimitValidationResponse.limit = {
69
+ message: limitValidationMessage,
70
+ isValid: false,
71
+ }
72
+ }
73
+
74
+ if (limitValidationMessage || requestValidationMessage) {
75
+ return requestLimitValidationResponse
76
+ }
77
+
78
+ // only two decimal places are allowed
79
+ const requestDecimalPlaces = String(request.value).split('.')[1]?.length ?? 0
80
+ const limitDecimalPlaces = String(limit.value).split('.')[1]?.length ?? 0
81
+
82
+ if (requestDecimalPlaces > BUILD_INFRA_INPUT_CONSTRAINTS.DECIMAL_PLACES) {
83
+ requestLimitValidationResponse.request = {
84
+ message: BUILD_INFRA_TEXT.VALIDATE_REQUEST_LIMIT.REQUEST_DECIMAL_PLACES,
85
+ isValid: false,
86
+ }
87
+
88
+ return requestLimitValidationResponse
89
+ }
90
+ if (limitDecimalPlaces > BUILD_INFRA_INPUT_CONSTRAINTS.DECIMAL_PLACES) {
91
+ requestLimitValidationResponse.limit = {
92
+ message: BUILD_INFRA_TEXT.VALIDATE_REQUEST_LIMIT.LIMIT_DECIMAL_PLACES,
93
+ isValid: false,
94
+ }
95
+
96
+ return requestLimitValidationResponse
97
+ }
98
+
99
+ // Assuming requestUnit and requestNumber are not 0
100
+ // TODO: Communicate this assumption to the backend
101
+ const limitRequestUnitFactor = limitUnit / requestUnit
102
+ const limitRequestFactor = limitNumber / requestNumber
103
+
104
+ const isDifferenceBigNumber = limitRequestUnitFactor * limitRequestFactor <= Number.MAX_SAFE_INTEGER
105
+
106
+ if (!isDifferenceBigNumber) {
107
+ requestLimitValidationResponse.request = {
108
+ message: BUILD_INFRA_TEXT.VALIDATE_REQUEST_LIMIT.CAN_NOT_COMPUTE,
109
+ isValid: false,
110
+ }
111
+
112
+ return requestLimitValidationResponse
113
+ }
114
+
115
+ if (limitRequestUnitFactor * limitRequestFactor < 1) {
116
+ requestLimitValidationResponse.request = {
117
+ message: BUILD_INFRA_TEXT.VALIDATE_REQUEST_LIMIT.REQUEST_LESS_THAN_LIMIT,
118
+ isValid: false,
119
+ }
120
+
121
+ return requestLimitValidationResponse
122
+ }
123
+
124
+ return requestLimitValidationResponse
125
+ }
126
+
127
+ const getInitialProfileInputErrors = (fromCreateView: boolean): ProfileInputErrorType => {
128
+ if (fromCreateView) {
129
+ const initialProfileInputErrors = { ...PROFILE_INPUT_ERROR_FIELDS }
130
+ CREATE_MODE_REQUIRED_INPUT_FIELDS.forEach((field) => {
131
+ initialProfileInputErrors[field] = ''
132
+ })
133
+ return initialProfileInputErrors
134
+ }
135
+
136
+ return {
137
+ ...PROFILE_INPUT_ERROR_FIELDS,
138
+ }
139
+ }
140
+
141
+ export const useBuildInfraForm = ({
142
+ name,
143
+ editProfile,
144
+ handleSuccessRedirection,
145
+ }: UseBuildInfraFormProps): UseBuildInfraFormResponseType => {
146
+ const fromCreateView = !name
147
+
148
+ const [isLoading, profileResponse, responseError, reloadRequest] = useAsync(
149
+ () =>
150
+ getBuildInfraProfileByName({
151
+ name: name ?? DEFAULT_PROFILE_NAME,
152
+ fromCreateView,
153
+ }),
154
+ [name],
155
+ )
156
+ // If configuration is existing and is active then use it else use default from profileResponse
157
+ const [profileInput, setProfileInput] = useState<BuildInfraProfileData>(null)
158
+ const [profileInputErrors, setProfileInputErrors] = useState<ProfileInputErrorType>({
159
+ ...PROFILE_INPUT_ERROR_FIELDS,
160
+ })
161
+ const [loadingActionRequest, setLoadingActionRequest] = useState<boolean>(false)
162
+
163
+ useEffect(() => {
164
+ if (!isLoading && profileResponse?.configurationUnits && profileResponse?.profile) {
165
+ setProfileInput({
166
+ ...profileResponse.profile,
167
+ })
168
+
169
+ setProfileInputErrors(getInitialProfileInputErrors(fromCreateView))
170
+ }
171
+ }, [profileResponse, isLoading])
172
+
173
+ // NOTE: Currently sending and receiving values as string, but will parse it to number for payload
174
+ const handleProfileInputChange = ({ action, data }: HandleProfileInputChangeType) => {
175
+ const currentInput = { ...profileInput }
176
+ const currentInputErrors = { ...profileInputErrors }
177
+ const lastSavedConfiguration = profileResponse.profile.configurations
178
+ const currentConfiguration = currentInput.configurations
179
+ const { value, unit } = data ?? { value: null, unit: null }
180
+
181
+ switch (action) {
182
+ case BuildInfraMetaConfigTypes.DESCRIPTION:
183
+ currentInput.description = value
184
+ currentInputErrors.description = validateDescription(value).message
185
+ break
186
+
187
+ case BuildInfraMetaConfigTypes.NAME:
188
+ currentInput.name = value
189
+ currentInputErrors.name = validateName(value).message
190
+ break
191
+
192
+ case BuildInfraConfigTypes.CPU_LIMIT: {
193
+ currentConfiguration[BuildInfraConfigTypes.CPU_LIMIT] = {
194
+ ...currentConfiguration[BuildInfraConfigTypes.CPU_LIMIT],
195
+ value,
196
+ unit,
197
+ }
198
+ const { request, limit } = validateRequestLimit({
199
+ request: {
200
+ value: currentConfiguration[BuildInfraConfigTypes.CPU_REQUEST].value,
201
+ unit: currentConfiguration[BuildInfraConfigTypes.CPU_REQUEST].unit,
202
+ },
203
+ limit: {
204
+ value,
205
+ unit,
206
+ },
207
+ unitsMap: profileResponse.configurationUnits[BuildInfraConfigTypes.CPU_LIMIT],
208
+ })
209
+
210
+ currentInputErrors[BuildInfraConfigTypes.CPU_LIMIT] = limit.message
211
+ currentInputErrors[BuildInfraConfigTypes.CPU_REQUEST] = request.message
212
+ break
213
+ }
214
+
215
+ case BuildInfraConfigTypes.CPU_REQUEST: {
216
+ currentConfiguration[BuildInfraConfigTypes.CPU_REQUEST] = {
217
+ ...currentConfiguration[BuildInfraConfigTypes.CPU_REQUEST],
218
+ value,
219
+ unit,
220
+ }
221
+ const { request, limit } = validateRequestLimit({
222
+ request: {
223
+ value,
224
+ unit,
225
+ },
226
+ limit: {
227
+ value: currentConfiguration[BuildInfraConfigTypes.CPU_LIMIT].value,
228
+ unit: currentConfiguration[BuildInfraConfigTypes.CPU_LIMIT].unit,
229
+ },
230
+ unitsMap: profileResponse.configurationUnits[BuildInfraConfigTypes.CPU_LIMIT],
231
+ })
232
+
233
+ currentInputErrors[BuildInfraConfigTypes.CPU_LIMIT] = limit.message
234
+ currentInputErrors[BuildInfraConfigTypes.CPU_REQUEST] = request.message
235
+ break
236
+ }
237
+
238
+ case BuildInfraConfigTypes.MEMORY_LIMIT: {
239
+ currentConfiguration[BuildInfraConfigTypes.MEMORY_LIMIT] = {
240
+ ...currentConfiguration[BuildInfraConfigTypes.MEMORY_LIMIT],
241
+ value,
242
+ unit,
243
+ }
244
+ const { request, limit } = validateRequestLimit({
245
+ request: {
246
+ value: currentConfiguration[BuildInfraConfigTypes.MEMORY_REQUEST].value,
247
+ unit: currentConfiguration[BuildInfraConfigTypes.MEMORY_REQUEST].unit,
248
+ },
249
+ limit: {
250
+ value,
251
+ unit,
252
+ },
253
+ unitsMap: profileResponse.configurationUnits[BuildInfraConfigTypes.MEMORY_LIMIT],
254
+ })
255
+
256
+ currentInputErrors[BuildInfraConfigTypes.MEMORY_LIMIT] = limit.message
257
+ currentInputErrors[BuildInfraConfigTypes.MEMORY_REQUEST] = request.message
258
+ break
259
+ }
260
+
261
+ case BuildInfraConfigTypes.MEMORY_REQUEST: {
262
+ currentConfiguration[BuildInfraConfigTypes.MEMORY_REQUEST] = {
263
+ ...currentConfiguration[BuildInfraConfigTypes.MEMORY_REQUEST],
264
+ value,
265
+ unit,
266
+ }
267
+ const { request, limit } = validateRequestLimit({
268
+ request: {
269
+ value,
270
+ unit,
271
+ },
272
+ limit: {
273
+ value: currentConfiguration[BuildInfraConfigTypes.MEMORY_LIMIT].value,
274
+ unit: currentConfiguration[BuildInfraConfigTypes.MEMORY_LIMIT].unit,
275
+ },
276
+ unitsMap: profileResponse.configurationUnits[BuildInfraConfigTypes.MEMORY_LIMIT],
277
+ })
278
+
279
+ currentInputErrors[BuildInfraConfigTypes.MEMORY_LIMIT] = limit.message
280
+ currentInputErrors[BuildInfraConfigTypes.MEMORY_REQUEST] = request.message
281
+ break
282
+ }
283
+
284
+ case BuildInfraConfigTypes.BUILD_TIMEOUT: {
285
+ currentConfiguration[BuildInfraConfigTypes.BUILD_TIMEOUT] = {
286
+ ...currentConfiguration[BuildInfraConfigTypes.BUILD_TIMEOUT],
287
+ value,
288
+ unit,
289
+ }
290
+
291
+ currentInputErrors[BuildInfraConfigTypes.BUILD_TIMEOUT] = validatePositiveInteger(value).message
292
+ break
293
+ }
294
+
295
+ case BuildInfraInheritActions.ACTIVATE_CPU:
296
+ currentConfiguration[BuildInfraConfigTypes.CPU_LIMIT] = {
297
+ ...lastSavedConfiguration[BuildInfraConfigTypes.CPU_LIMIT],
298
+ value: lastSavedConfiguration[BuildInfraConfigTypes.CPU_LIMIT].value,
299
+ unit: lastSavedConfiguration[BuildInfraConfigTypes.CPU_LIMIT].unit,
300
+ active: true,
301
+ }
302
+ currentConfiguration[BuildInfraConfigTypes.CPU_REQUEST] = {
303
+ ...lastSavedConfiguration[BuildInfraConfigTypes.CPU_REQUEST],
304
+ value: lastSavedConfiguration[BuildInfraConfigTypes.CPU_REQUEST].value,
305
+ unit: lastSavedConfiguration[BuildInfraConfigTypes.CPU_REQUEST].unit,
306
+ active: true,
307
+ }
308
+
309
+ currentInputErrors[BuildInfraConfigTypes.CPU_LIMIT] = null
310
+ currentInputErrors[BuildInfraConfigTypes.CPU_REQUEST] = null
311
+ break
312
+
313
+ case BuildInfraInheritActions.ACTIVATE_MEMORY:
314
+ currentConfiguration[BuildInfraConfigTypes.MEMORY_LIMIT] = {
315
+ ...lastSavedConfiguration[BuildInfraConfigTypes.MEMORY_LIMIT],
316
+ value: lastSavedConfiguration[BuildInfraConfigTypes.MEMORY_LIMIT].value,
317
+ unit: lastSavedConfiguration[BuildInfraConfigTypes.MEMORY_LIMIT].unit,
318
+ active: true,
319
+ }
320
+ currentConfiguration[BuildInfraConfigTypes.MEMORY_REQUEST] = {
321
+ ...lastSavedConfiguration[BuildInfraConfigTypes.MEMORY_REQUEST],
322
+ value: lastSavedConfiguration[BuildInfraConfigTypes.MEMORY_REQUEST].value,
323
+ unit: lastSavedConfiguration[BuildInfraConfigTypes.MEMORY_REQUEST].unit,
324
+ active: true,
325
+ }
326
+
327
+ currentInputErrors[BuildInfraConfigTypes.MEMORY_LIMIT] = null
328
+ currentInputErrors[BuildInfraConfigTypes.MEMORY_REQUEST] = null
329
+ break
330
+
331
+ case BuildInfraInheritActions.ACTIVATE_BUILD_TIMEOUT:
332
+ currentConfiguration[BuildInfraConfigTypes.BUILD_TIMEOUT] = {
333
+ ...lastSavedConfiguration[BuildInfraConfigTypes.BUILD_TIMEOUT],
334
+ value: lastSavedConfiguration[BuildInfraConfigTypes.BUILD_TIMEOUT].value,
335
+ unit: lastSavedConfiguration[BuildInfraConfigTypes.BUILD_TIMEOUT].unit,
336
+ active: true,
337
+ }
338
+
339
+ currentInputErrors[BuildInfraConfigTypes.BUILD_TIMEOUT] = null
340
+ break
341
+
342
+ case BuildInfraInheritActions.DE_ACTIVATE_BUILD_TIMEOUT:
343
+ // Reverting the value and unit to defaultValues
344
+ currentConfiguration[BuildInfraConfigTypes.BUILD_TIMEOUT] = {
345
+ ...currentConfiguration[BuildInfraConfigTypes.BUILD_TIMEOUT],
346
+ value: lastSavedConfiguration[BuildInfraConfigTypes.BUILD_TIMEOUT].defaultValue.value,
347
+ unit: lastSavedConfiguration[BuildInfraConfigTypes.BUILD_TIMEOUT].defaultValue.unit,
348
+ active: false,
349
+ }
350
+
351
+ currentInputErrors[BuildInfraConfigTypes.BUILD_TIMEOUT] = null
352
+ break
353
+
354
+ case BuildInfraInheritActions.DE_ACTIVATE_CPU:
355
+ currentConfiguration[BuildInfraConfigTypes.CPU_LIMIT] = {
356
+ ...currentConfiguration[BuildInfraConfigTypes.CPU_LIMIT],
357
+ value: lastSavedConfiguration[BuildInfraConfigTypes.CPU_LIMIT].defaultValue.value,
358
+ unit: lastSavedConfiguration[BuildInfraConfigTypes.CPU_LIMIT].defaultValue.unit,
359
+ active: false,
360
+ }
361
+ currentConfiguration[BuildInfraConfigTypes.CPU_REQUEST] = {
362
+ ...currentConfiguration[BuildInfraConfigTypes.CPU_REQUEST],
363
+ value: lastSavedConfiguration[BuildInfraConfigTypes.CPU_REQUEST].defaultValue.value,
364
+ unit: lastSavedConfiguration[BuildInfraConfigTypes.CPU_REQUEST].defaultValue.unit,
365
+ active: false,
366
+ }
367
+
368
+ currentInputErrors[BuildInfraConfigTypes.CPU_LIMIT] = null
369
+ currentInputErrors[BuildInfraConfigTypes.CPU_REQUEST] = null
370
+ break
371
+
372
+ case BuildInfraInheritActions.DE_ACTIVATE_MEMORY:
373
+ currentConfiguration[BuildInfraConfigTypes.MEMORY_LIMIT] = {
374
+ ...currentConfiguration[BuildInfraConfigTypes.MEMORY_LIMIT],
375
+ value: lastSavedConfiguration[BuildInfraConfigTypes.MEMORY_LIMIT].defaultValue.value,
376
+ unit: lastSavedConfiguration[BuildInfraConfigTypes.MEMORY_LIMIT].defaultValue.unit,
377
+ active: false,
378
+ }
379
+ currentConfiguration[BuildInfraConfigTypes.MEMORY_REQUEST] = {
380
+ ...currentConfiguration[BuildInfraConfigTypes.MEMORY_REQUEST],
381
+ value: lastSavedConfiguration[BuildInfraConfigTypes.MEMORY_REQUEST].defaultValue.value,
382
+ unit: lastSavedConfiguration[BuildInfraConfigTypes.MEMORY_REQUEST].defaultValue.unit,
383
+ active: false,
384
+ }
385
+
386
+ currentInputErrors[BuildInfraConfigTypes.MEMORY_LIMIT] = null
387
+ currentInputErrors[BuildInfraConfigTypes.MEMORY_REQUEST] = null
388
+ break
389
+
390
+ default:
391
+ throw new Error(BUILD_INFRA_TEXT.getInvalidActionMessage(action))
392
+ }
393
+
394
+ setProfileInput(currentInput)
395
+ setProfileInputErrors(currentInputErrors)
396
+ }
397
+
398
+ const handleSubmit = async (e: FormEvent<HTMLFormElement>) => {
399
+ e.preventDefault()
400
+ // Since considering '' as a valid error message
401
+ const hasErrors =
402
+ Object.keys(profileInputErrors).filter(
403
+ (item) => profileInputErrors[item] !== null && profileInputErrors[item] !== undefined,
404
+ ).length > 0
405
+
406
+ if (hasErrors) {
407
+ toast.error(BUILD_INFRA_TEXT.INVALID_FORM_MESSAGE)
408
+ return
409
+ }
410
+
411
+ setLoadingActionRequest(true)
412
+ try {
413
+ if (editProfile) {
414
+ await updateBuildInfraProfile({ name, profileInput })
415
+ } else {
416
+ await createBuildInfraProfile({ profileInput })
417
+ }
418
+ setLoadingActionRequest(false)
419
+ toast.success(BUILD_INFRA_TEXT.getSubmitSuccessMessage(profileInput.name, editProfile))
420
+
421
+ if (handleSuccessRedirection) {
422
+ handleSuccessRedirection()
423
+ } else {
424
+ reloadRequest()
425
+ }
426
+ } catch (err) {
427
+ showError(err)
428
+ setLoadingActionRequest(false)
429
+ }
430
+ }
431
+
432
+ return {
433
+ isLoading,
434
+ profileResponse,
435
+ responseError,
436
+ reloadRequest,
437
+ profileInput,
438
+ profileInputErrors,
439
+ handleProfileInputChange,
440
+ loadingActionRequest,
441
+ handleSubmit,
442
+ }
443
+ }
444
+
445
+ const getOptionBackgroundColor = (isFocused: boolean, isSelected: boolean): string => {
446
+ if (isSelected) {
447
+ return 'var(--B100)'
448
+ }
449
+
450
+ if (isFocused) {
451
+ return 'var(--N50)'
452
+ }
453
+ return 'var(--white)'
454
+ }
455
+
456
+ export const unitSelectorStyles = () =>
457
+ getCommonSelectStyle({
458
+ control: (base, state) => ({
459
+ ...base,
460
+ borderRadius: 0,
461
+ backgroundColor: 'var(--N0)',
462
+ border: state.isFocused ? '1px solid var(--B500) !important' : '1px solid var(--N200)',
463
+ alignItems: 'center',
464
+ cursor: 'pointer',
465
+ borderTopRightRadius: '4px',
466
+ borderBottomRightRadius: '4px',
467
+ overflow: 'hidden',
468
+ textOverflow: 'ellipsis',
469
+ whiteSpace: 'nowrap',
470
+ outline: 'none',
471
+ boxShadow: 'none',
472
+ '&:hover': {
473
+ border: '1px solid var(--N400)',
474
+ },
475
+ }),
476
+ indicatorContainer: (base) => ({
477
+ ...base,
478
+ padding: '0px',
479
+ }),
480
+ dropdownIndicator: (base, state) => ({
481
+ ...base,
482
+ color: 'var(--N600)',
483
+ transition: 'all .2s ease',
484
+ transform: state.selectProps.menuIsOpen ? 'rotate(180deg)' : 'rotate(0deg)',
485
+ }),
486
+ option: (base, state) => ({
487
+ ...base,
488
+ padding: '4px 12px',
489
+ backgroundColor: getOptionBackgroundColor(state.isFocused, state.isSelected),
490
+ color: 'var(--N900)',
491
+ cursor: 'pointer',
492
+ overflow: 'hidden',
493
+ textOverflow: 'ellipsis',
494
+ whiteSpace: 'nowrap',
495
+ height: '36px',
496
+ }),
497
+ valueContainer: (base) => ({
498
+ ...base,
499
+ color: 'var(--N900)',
500
+ fontSize: '13px',
501
+ fontWeight: '400',
502
+ lineHeight: '20px',
503
+ }),
504
+ menuList: (base) => ({
505
+ ...base,
506
+ maxHeight: '164px',
507
+ height: '100%',
508
+ }),
509
+ })
@@ -0,0 +1 @@
1
+ export * from './BuildInfra'
@@ -0,0 +1 @@
1
+ export * from './GlobalConfigurations'
@@ -0,0 +1,41 @@
1
+ import { ErrorScreenNotAuthorized, GenericEmptyState, Progressing, Reload } from '../../../Common'
2
+ import { NOT_FOUND_DEFAULT_TEXT } from './constants'
3
+ import { APIResponseHandlerProps } from './types'
4
+
5
+ const APIResponseHandler = ({
6
+ isLoading,
7
+ progressingProps,
8
+ error,
9
+ notAuthorized,
10
+ notFoundText,
11
+ reloadProps,
12
+ children,
13
+ }: APIResponseHandlerProps) => {
14
+ // keeping it above loading since, not expected to send a call if not authorized
15
+ if (notAuthorized) {
16
+ return <ErrorScreenNotAuthorized />
17
+ }
18
+
19
+ if (isLoading) {
20
+ return <Progressing {...progressingProps} />
21
+ }
22
+
23
+ if (error) {
24
+ // TODO: Can extend ErrorScreenNotFound
25
+ if (error?.code === 404) {
26
+ return (
27
+ <GenericEmptyState
28
+ title={notFoundText?.title ?? NOT_FOUND_DEFAULT_TEXT.title}
29
+ subTitle={notFoundText?.subTitle ?? NOT_FOUND_DEFAULT_TEXT.subTitle}
30
+ />
31
+ )
32
+ }
33
+ return <Reload {...reloadProps} />
34
+ }
35
+
36
+ // Had to add this since while using it is throwing ts error
37
+ // eslint-disable-next-line react/jsx-no-useless-fragment
38
+ return <>{children}</>
39
+ }
40
+
41
+ export default APIResponseHandler
@@ -0,0 +1,5 @@
1
+ // eslint-disable-next-line import/prefer-default-export
2
+ export const NOT_FOUND_DEFAULT_TEXT = {
3
+ title: 'Resource not found',
4
+ subTitle: 'The resource you are looking for does not exist',
5
+ } as const
@@ -0,0 +1,2 @@
1
+ export { default as APIResponseHandler } from './APIResponseHandler'
2
+ export * from './types'
@@ -0,0 +1,39 @@
1
+ import { ReactNode } from 'react'
2
+ import { GenericEmptyStateType, ProgressingProps, ReloadType, ServerErrors } from '../../../Common'
3
+
4
+ export interface EmptyPageTextType {
5
+ title?: GenericEmptyStateType['title']
6
+ subTitle?: GenericEmptyStateType['subTitle']
7
+ }
8
+
9
+ export interface APIResponseHandlerProps {
10
+ /**
11
+ * If true, would show Progressing component
12
+ */
13
+ isLoading?: boolean
14
+ /**
15
+ * If loading is true, would load send these props to Progressing component
16
+ */
17
+ progressingProps?: ProgressingProps
18
+ /**
19
+ * If true and isLoading is false would show default Reload component
20
+ * In case error code is 404 show default 404 page using GenericEmptyState
21
+ */
22
+ error?: ServerErrors
23
+ /**
24
+ * Page text for 404 page
25
+ */
26
+ notFoundText?: EmptyPageTextType
27
+ /**
28
+ * If true would show Not Authorized page
29
+ */
30
+ notAuthorized?: boolean
31
+ /**
32
+ * If given, on Error, would load these props
33
+ */
34
+ reloadProps?: ReloadType
35
+ /**
36
+ * If no Error and no Loading, would load this component
37
+ */
38
+ children: ReactNode
39
+ }
@@ -0,0 +1,81 @@
1
+ import BulkSelectionDropdownItems from './BulkSelectionDropdownItems'
2
+ import { CHECKBOX_VALUE, Checkbox, PopupMenu, noop } from '../../../Common'
3
+ import { BulkSelectionDropdownItemsType, BulkSelectionEvents, BulkSelectionProps } from './types'
4
+ import { BULK_DROPDOWN_TEST_ID, BulkSelectionOptionsLabels } from './constants'
5
+ import { ReactComponent as ICChevronDown } from '../../../Assets/Icon/ic-chevron-down.svg'
6
+ import { ReactComponent as ICCheckSquare } from '../../../Assets/Icon/ic-check-square.svg'
7
+ import { ReactComponent as ICCheckAll } from '../../../Assets/Icon/ic-check-all.svg'
8
+ import { ReactComponent as ICCross } from '../../../Assets/Icon/ic-cross.svg'
9
+
10
+ const BulkSelection = <T,>({
11
+ checkboxValue,
12
+ isChecked,
13
+ selectedIdentifiers,
14
+ handleBulkSelection,
15
+ showPagination,
16
+ }: BulkSelectionProps<T>) => {
17
+ const areOptionsSelected = Object.keys(selectedIdentifiers).length > 0
18
+ const BulkSelectionItems: BulkSelectionDropdownItemsType[] = [
19
+ {
20
+ locator: BulkSelectionEvents.SELECT_ALL_ON_PAGE,
21
+ label: BulkSelectionOptionsLabels[BulkSelectionEvents.SELECT_ALL_ON_PAGE],
22
+ isSelected: isChecked && checkboxValue === CHECKBOX_VALUE.CHECKED,
23
+ icon: ICCheckSquare,
24
+ },
25
+ ...(showPagination
26
+ ? [
27
+ {
28
+ locator: BulkSelectionEvents.SELECT_ALL_ACROSS_PAGES,
29
+ label: BulkSelectionOptionsLabels[BulkSelectionEvents.SELECT_ALL_ACROSS_PAGES],
30
+ isSelected: isChecked && checkboxValue === CHECKBOX_VALUE.BULK_CHECKED,
31
+ icon: ICCheckAll,
32
+ },
33
+ ]
34
+ : []),
35
+ ...(areOptionsSelected
36
+ ? [
37
+ {
38
+ locator: BulkSelectionEvents.CLEAR_ALL_SELECTIONS,
39
+ label: BulkSelectionOptionsLabels[BulkSelectionEvents.CLEAR_ALL_SELECTIONS],
40
+ isSelected: false,
41
+ icon: ICCross,
42
+ },
43
+ ]
44
+ : []),
45
+ ]
46
+
47
+ return (
48
+ <PopupMenu autoClose>
49
+ <PopupMenu.Button
50
+ isKebab
51
+ rootClassName="h-20 flexbox p-0 dc__no-background dc__no-border dc__outline-none-imp"
52
+ dataTestId={BULK_DROPDOWN_TEST_ID}
53
+ >
54
+ <Checkbox
55
+ isChecked={isChecked}
56
+ onChange={noop}
57
+ rootClassName="icon-dim-20"
58
+ value={checkboxValue}
59
+ // Ideally should be disabled but was giving issue with cursor
60
+ />
61
+
62
+ <ICChevronDown className="icon-dim-20 icon-n6" />
63
+ </PopupMenu.Button>
64
+
65
+ <PopupMenu.Body rootClassName="dc__top-22 w-150 dc__right-0 pt-4 pb-4 pl-0 pr-0 bcn-0 flex column dc__content-start dc__align-start dc__position-abs bcn-0 dc__border dc__border-radius-4-imp">
66
+ {BulkSelectionItems.map((item) => (
67
+ <BulkSelectionDropdownItems<T>
68
+ key={item.locator}
69
+ locator={item.locator}
70
+ label={item.label}
71
+ isSelected={item.isSelected}
72
+ icon={item.icon}
73
+ handleBulkSelection={handleBulkSelection}
74
+ />
75
+ ))}
76
+ </PopupMenu.Body>
77
+ </PopupMenu>
78
+ )
79
+ }
80
+
81
+ export default BulkSelection