@devtron-labs/devtron-fe-common-lib 0.0.63-beta-6 → 0.0.63

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