@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,50 @@
1
+ export * from './Constants'
2
+ export * from './ServerError'
3
+ export * from './Types'
4
+ export * from './Api'
5
+ export * from './EmptyState/EmptyState'
6
+ export * from './ToastBody'
7
+ export { default as Reload } from './Reload'
8
+ export * from './Error'
9
+ export * from './Helper'
10
+ export * from './Progressing'
11
+ export * from './Drawer/Drawer'
12
+ export * from './Modals/Modal'
13
+ export * from './Modals/OpaqueModal'
14
+ export * from './Modals/VisibleModal'
15
+ export * from './Modals/VisibleModal2'
16
+ export { BreadCrumb, useBreadcrumb } from './BreadCrumb/BreadCrumb'
17
+ export { default as BreadcrumbStore } from './BreadCrumb/BreadcrumbStore'
18
+ export * from './RadioGroup'
19
+ export { default as PopupMenu } from './PopupMenu'
20
+ export * from './TippyCustomized'
21
+ export * from './CustomTagSelector'
22
+ export * from './Dialogs'
23
+ export * from './MultiSelectCustomization'
24
+ export { default as InfoColourBar } from './InfoColorBar/InfoColourbar'
25
+ export * from './Common.service'
26
+ export * from './Checkbox'
27
+ export { default as EmptyState } from './EmptyState/EmptyState'
28
+ export { default as GenericEmptyState } from './EmptyState/GenericEmptyState'
29
+ export * from './SearchBar'
30
+ export { default as Toggle } from './Toggle/Toggle'
31
+ export { default as ScanVulnerabilitiesTable } from './Security/ScanVulnerabilitiesTable'
32
+ export { default as StyledRadioGroup } from './RadioGroup/RadioGroup'
33
+ export * from './CIPipeline.Types'
34
+ export * from './Policy.Types'
35
+ export { default as DeleteComponent } from './DeleteComponentModal/DeleteComponent'
36
+ export * from './ImageTags'
37
+ export * from './ImageTags.Types'
38
+ export * from './ResizableTextarea'
39
+ export { default as DebouncedSearch } from './DebouncedSearch/DebouncedSearch'
40
+ export { default as Grid } from './Grid/Grid'
41
+ export { default as ClipboardButton } from './ClipboardButton/ClipboardButton'
42
+ export * from './Hooks'
43
+ export { AppStatus } from './AppStatus'
44
+ export * from './RJSF'
45
+ export * from './DevtronProgressing'
46
+ export { default as ChartVersionAndTypeSelector } from './ChartVersionAndTypeSelector'
47
+ export * from './AddCDButton'
48
+ export * from './CustomInput'
49
+ export * from './DraggableWrapper'
50
+ export * from './Pagination'
@@ -0,0 +1,128 @@
1
+ import { FunctionComponent } from 'react'
2
+ import { Progressing } from '../../../Common'
3
+ import BuildInfraFormAction from './BuildInfraFormAction'
4
+ import BuildInfraFormItem from './BuildInfraFormItem'
5
+ import BuildInfraProfileDescriptionField from './BuildInfraDescriptionField'
6
+ import BuildInfraProfileNameField from './BuildInfraProfileNameField'
7
+ import { BUILD_INFRA_FORM_FIELDS, BUILD_INFRA_TEXT } from './constants'
8
+ import { BuildInfraActionType, BuildInfraConfigFormProps, InheritingHeaderProps } from './types'
9
+
10
+ const InheritingHeader = ({
11
+ defaultHeading,
12
+ inheritingData,
13
+ isInheriting,
14
+ isDefaultProfile,
15
+ }: InheritingHeaderProps) => {
16
+ const inheritingDataString = inheritingData.map((data) => `${data.value} ${data.unit ?? ''}`).join(' - ')
17
+
18
+ if (isDefaultProfile || !isInheriting) {
19
+ // For typing issues
20
+ // eslint-disable-next-line react/jsx-no-useless-fragment
21
+ return <>{defaultHeading}</>
22
+ }
23
+
24
+ return (
25
+ <div className="flexbox dc__align-items-center dc__content-space w-100">
26
+ {defaultHeading}
27
+
28
+ <div className="flexbox dc__content-space w-100">
29
+ <span className="m-0 pt-0 pb-0 pl-4 pr-4 fs-13 lh-20 fw-4 cn-9 dc__ellipsis-right dc__word-break-all flex-grow-1">
30
+ {inheritingDataString}
31
+ </span>
32
+
33
+ {/* TODO: Add ellipsis */}
34
+ <p className="m-0 cn-7 fs-13 fw-4 lh-20 dc__no-shrink">
35
+ {BUILD_INFRA_TEXT.INHERITING_HEADING_DESCRIPTION}
36
+ </p>
37
+ </div>
38
+ </div>
39
+ )
40
+ }
41
+
42
+ const BuildInfraConfigForm: FunctionComponent<BuildInfraConfigFormProps> = ({
43
+ profileInput,
44
+ profileInputErrors,
45
+ handleProfileInputChange,
46
+ isDefaultProfile,
47
+ unitsMap,
48
+ configurationContainerLabel,
49
+ }) => {
50
+ const currentConfigurations = profileInput?.configurations
51
+
52
+ // will get the desired configuration from the currentConfigurations and then check if it is active or not
53
+ const isInheritingProfileValues = (actions: BuildInfraActionType[]) =>
54
+ actions.some((action) => !currentConfigurations[action.actionType].active)
55
+
56
+ // Had to show loader for an instance due to batching of state updates not working as expected :/
57
+ if (!currentConfigurations) {
58
+ return <Progressing pageLoader />
59
+ }
60
+
61
+ return (
62
+ <div className="flexbox-col dc__mxw-920 dc__gap-16">
63
+ {!isDefaultProfile && (
64
+ <div className="flexbox-col dc__gap-12">
65
+ <BuildInfraProfileNameField
66
+ handleProfileInputChange={handleProfileInputChange}
67
+ currentValue={profileInput.name}
68
+ error={profileInputErrors.name}
69
+ />
70
+
71
+ <BuildInfraProfileDescriptionField
72
+ handleProfileInputChange={handleProfileInputChange}
73
+ currentValue={profileInput.description}
74
+ error={profileInputErrors.description}
75
+ />
76
+ </div>
77
+ )}
78
+
79
+ <div className="flexbox-col dc__gap-12">
80
+ {configurationContainerLabel}
81
+
82
+ <div className="w-100 flexbox-col dc__gap-16 br-4 dc__border-n1 p-16">
83
+ {BUILD_INFRA_FORM_FIELDS.map((field, index) => (
84
+ <BuildInfraFormItem
85
+ key={field.locator}
86
+ marker={field.marker}
87
+ heading={
88
+ <InheritingHeader
89
+ defaultHeading={field.heading}
90
+ inheritingData={field.actions.map(
91
+ (action) => currentConfigurations[action.actionType],
92
+ )}
93
+ isInheriting={isInheritingProfileValues(field.actions)}
94
+ isDefaultProfile={isDefaultProfile}
95
+ />
96
+ }
97
+ showDivider={index !== BUILD_INFRA_FORM_FIELDS.length - 1}
98
+ isInheriting={isInheritingProfileValues(field.actions)}
99
+ handleProfileInputChange={handleProfileInputChange}
100
+ locator={field.locator}
101
+ isDefaultProfile={isDefaultProfile}
102
+ >
103
+ <div className="w-50 flexbox dc__gap-12 w-100 dc__align-start">
104
+ {field.actions.map((action) => (
105
+ <BuildInfraFormAction
106
+ key={action.actionType}
107
+ actionType={action.actionType}
108
+ label={action.label}
109
+ placeholder={action.placeholder}
110
+ error={profileInputErrors[action.actionType]}
111
+ // Assumption is for default profiles all input fields are required
112
+ isRequired
113
+ profileUnitsMap={unitsMap[action.actionType]}
114
+ handleProfileInputChange={handleProfileInputChange}
115
+ currentUnitName={currentConfigurations[action.actionType].unit}
116
+ currentValue={currentConfigurations[action.actionType].value}
117
+ />
118
+ ))}
119
+ </div>
120
+ </BuildInfraFormItem>
121
+ ))}
122
+ </div>
123
+ </div>
124
+ </div>
125
+ )
126
+ }
127
+
128
+ export default BuildInfraConfigForm
@@ -0,0 +1,44 @@
1
+ import { FormEvent, FunctionComponent } from 'react'
2
+ import { ReactComponent as ErrorIcon } from '../../../Assets/Icon/ic-warning.svg'
3
+ import { BuildInfraInputFieldComponentProps, BuildInfraMetaConfigTypes } from './types'
4
+ import { BUILD_INFRA_TEXT } from './constants'
5
+
6
+ const BuildInfraProfileDescriptionField: FunctionComponent<BuildInfraInputFieldComponentProps> = ({
7
+ handleProfileInputChange,
8
+ currentValue,
9
+ error,
10
+ }) => {
11
+ const handleChange = (e: FormEvent<HTMLTextAreaElement>) => {
12
+ handleProfileInputChange({
13
+ action: BuildInfraMetaConfigTypes.DESCRIPTION,
14
+ data: { value: e.currentTarget.value },
15
+ })
16
+ }
17
+
18
+ return (
19
+ <div className="flexbox-col dc__gap-4 w-100 dc__align-start">
20
+ <label htmlFor="build-infra-profile-description" className="m-0 fs-13 fw-4 lh-20 cn-7">
21
+ {BUILD_INFRA_TEXT.DESCRIPTION_LABEL}
22
+ </label>
23
+
24
+ <textarea
25
+ data-testid="build-infra-profile-description"
26
+ name="profile-description"
27
+ className="form__textarea mxh-140 dc__hover-border-n300"
28
+ id="build-infra-profile-description"
29
+ placeholder={BUILD_INFRA_TEXT.DESCRIPTION_PLACEHOLDER}
30
+ value={currentValue}
31
+ onChange={handleChange}
32
+ />
33
+
34
+ {error && (
35
+ <div className="form__error">
36
+ <ErrorIcon className="form__icon form__icon--error" />
37
+ {error}
38
+ </div>
39
+ )}
40
+ </div>
41
+ )
42
+ }
43
+
44
+ export default BuildInfraProfileDescriptionField
@@ -0,0 +1,106 @@
1
+ import { FormEvent, FunctionComponent, useMemo } from 'react'
2
+ import ReactSelect from 'react-select'
3
+ import { BuildInfraFormActionProps } from './types'
4
+ import { OptionType } from '../../../Common'
5
+ import { unitSelectorStyles } from './utils'
6
+ import { BUILD_INFRA_INPUT_CONSTRAINTS } from './constants'
7
+ import { ReactComponent as ErrorIcon } from '../../../Assets/Icon/ic-warning.svg'
8
+
9
+ /**
10
+ * In case need arise for variants break this CustomInput and Select as a separate component
11
+ */
12
+ const BuildInfraFormAction: FunctionComponent<BuildInfraFormActionProps> = ({
13
+ actionType,
14
+ label,
15
+ placeholder,
16
+ error,
17
+ isRequired,
18
+ profileUnitsMap,
19
+ handleProfileInputChange,
20
+ currentUnitName,
21
+ currentValue,
22
+ }) => {
23
+ const handleUnitChange = (selectedUnit: OptionType) => {
24
+ const data = {
25
+ unit: selectedUnit.label,
26
+ value: currentValue,
27
+ }
28
+ handleProfileInputChange({ action: actionType, data })
29
+ }
30
+
31
+ const handleInputChange = (e: FormEvent<HTMLInputElement>) => {
32
+ const data = {
33
+ unit: currentUnitName,
34
+ value: e.currentTarget.value,
35
+ }
36
+ handleProfileInputChange({ action: actionType, data })
37
+ }
38
+
39
+ const unitOptions = useMemo(() => {
40
+ const units =
41
+ Object.values(profileUnitsMap)?.map((unit) => ({
42
+ label: unit.name,
43
+ value: String(unit.conversionFactor),
44
+ })) ?? []
45
+ return units.sort((a, b) => Number(a.value) - Number(b.value))
46
+ }, [profileUnitsMap])
47
+
48
+ const currentUnit = useMemo(
49
+ () => unitOptions.find((unit) => unit.label === currentUnitName),
50
+ [unitOptions, currentUnitName],
51
+ )
52
+
53
+ return (
54
+ <div className="flexbox-col dc__gap-4 dc__mxw-420 w-100 dc__align-start">
55
+ <label
56
+ htmlFor={`${actionType}-input`}
57
+ className={`fs-13 fw-4 lh-20 cn-7 ${isRequired ? 'dc__required-field' : ''}`}
58
+ >
59
+ {label}
60
+ </label>
61
+ <div className="w-100 flexbox dc__align-items-center">
62
+ <div className="flex-grow-1">
63
+ <input
64
+ data-testid={`${actionType}-input-field`}
65
+ name={actionType}
66
+ type="number"
67
+ step={BUILD_INFRA_INPUT_CONSTRAINTS.STEP}
68
+ min={BUILD_INFRA_INPUT_CONSTRAINTS.MIN}
69
+ className="form__input dc__no-right-border dc__no-right-radius"
70
+ placeholder={placeholder}
71
+ value={currentValue}
72
+ onChange={handleInputChange}
73
+ required={isRequired}
74
+ autoComplete="off"
75
+ id={`${actionType}-input`}
76
+ />
77
+ </div>
78
+
79
+ {profileUnitsMap && (
80
+ <ReactSelect
81
+ name={`${actionType}-unit`}
82
+ className="bcn-0 dc__mxw-120"
83
+ options={unitOptions}
84
+ value={currentUnit}
85
+ onChange={handleUnitChange}
86
+ isSearchable={false}
87
+ components={{
88
+ IndicatorSeparator: null,
89
+ ClearIndicator: null,
90
+ }}
91
+ styles={unitSelectorStyles()}
92
+ />
93
+ )}
94
+ </div>
95
+
96
+ {error && (
97
+ <div className="form__error">
98
+ <ErrorIcon className="form__icon form__icon--error" />
99
+ {error}
100
+ </div>
101
+ )}
102
+ </div>
103
+ )
104
+ }
105
+
106
+ export default BuildInfraFormAction
@@ -0,0 +1,55 @@
1
+ import { FormEvent, FunctionComponent } from 'react'
2
+ import { BuildInfraFormItemProps, BuildInfraInheritActions } from './types'
3
+ import { CHECKBOX_VALUE, Checkbox } from '../../../Common'
4
+
5
+ const BuildInfraFormItem: FunctionComponent<BuildInfraFormItemProps> = ({
6
+ heading,
7
+ marker: Marker,
8
+ children,
9
+ isInheriting,
10
+ showDivider,
11
+ handleProfileInputChange,
12
+ locator,
13
+ isDefaultProfile,
14
+ }) => {
15
+ const handleActivationChange = (e: FormEvent<HTMLInputElement>) => {
16
+ const { checked } = e.currentTarget
17
+ const action = (checked ? `activate_${locator}` : `de_activate_${locator}`) as BuildInfraInheritActions
18
+ handleProfileInputChange({ action })
19
+ }
20
+
21
+ const renderMarker = () => {
22
+ if (isDefaultProfile) {
23
+ return <Marker className="icon-dim-20 dc__no-shrink" />
24
+ }
25
+
26
+ return (
27
+ <Checkbox
28
+ onChange={handleActivationChange}
29
+ isChecked={!isInheriting}
30
+ value={CHECKBOX_VALUE.CHECKED}
31
+ dataTestId={`${locator}_marker`}
32
+ />
33
+ )
34
+ }
35
+
36
+ // If in configuration active is false, means it is inheriting values from other profile
37
+ return (
38
+ <>
39
+ <div className="flexbox-col dc__gap-8 w-100">
40
+ <div className="flexbox dc__gap-12 dc__align-start w-100">
41
+ {renderMarker()}
42
+
43
+ <div className="flexbox-col dc__gap-8 w-100">
44
+ {heading}
45
+ {!isInheriting && children}
46
+ </div>
47
+ </div>
48
+ </div>
49
+
50
+ {showDivider && <div className="w-100 dc__border-bottom-n1" />}
51
+ </>
52
+ )
53
+ }
54
+
55
+ export default BuildInfraFormItem
@@ -0,0 +1,32 @@
1
+ import { FormEvent, FunctionComponent } from 'react'
2
+ import { BuildInfraMetaConfigTypes, BuildInfraInputFieldComponentProps } from './types'
3
+ import { CustomInput } from '../../../Common'
4
+ import { BUILD_INFRA_TEXT } from './constants'
5
+
6
+ const BuildInfraProfileNameField: FunctionComponent<BuildInfraInputFieldComponentProps> = ({
7
+ handleProfileInputChange,
8
+ currentValue,
9
+ error,
10
+ }) => {
11
+ const handleChange = (e: FormEvent<HTMLInputElement>) => {
12
+ handleProfileInputChange({ action: BuildInfraMetaConfigTypes.NAME, data: { value: e.currentTarget.value } })
13
+ }
14
+
15
+ return (
16
+ <div className="flexbox-col dc__gap-4 w-100 dc__align-start">
17
+ <CustomInput
18
+ name="profile-name"
19
+ label={BUILD_INFRA_TEXT.PROFILE_LABEL}
20
+ labelClassName="m-0 dc__required-field fs-13 fw-4 lh-20 cn-7"
21
+ placeholder={BUILD_INFRA_TEXT.PROFILE_PLACEHOLDER}
22
+ value={currentValue}
23
+ onChange={handleChange}
24
+ error={error}
25
+ required
26
+ inputWrapClassName="w-100"
27
+ />
28
+ </div>
29
+ )
30
+ }
31
+
32
+ export default BuildInfraProfileNameField
@@ -0,0 +1,45 @@
1
+ import { DescriptorProps } from './types'
2
+ import { BreadCrumb, TippyCustomized, TippyTheme } from '../../../Common'
3
+ import { ReactComponent as QuestionFilled } from '../../../Assets/Icon/ic-help.svg'
4
+ import { ReactComponent as ICHelpOutline } from '../../../Assets/Icon/ic-help-outline.svg'
5
+ import { BUILD_INFRA_TEXT } from './constants'
6
+
7
+ const Descriptor = ({
8
+ additionalContainerClasses,
9
+ breadCrumbs,
10
+ children,
11
+ tippyInfoText,
12
+ tippyAdditionalContent,
13
+ }: DescriptorProps) => (
14
+ <div className={`flexbox dc__content-space dc__align-items-center w-100 ${additionalContainerClasses ?? ''}`}>
15
+ <div className="flexbox dc__align-items-center dc__gap-4">
16
+ <BreadCrumb breadcrumbs={breadCrumbs} />
17
+
18
+ <TippyCustomized
19
+ theme={TippyTheme.white}
20
+ className="w-300 h-100 dc__align-left"
21
+ placement="right"
22
+ Icon={QuestionFilled}
23
+ iconClass="fcv-5"
24
+ infoText={tippyInfoText ?? BUILD_INFRA_TEXT.EDIT_DEFAULT_TOOLTIP}
25
+ additionalContent={tippyAdditionalContent}
26
+ heading={BUILD_INFRA_TEXT.HEADING}
27
+ showCloseButton
28
+ trigger="click"
29
+ interactive
30
+ >
31
+ <button
32
+ className="p-0 h-20 dc__no-background dc__no-border dc__tab-focus"
33
+ type="button"
34
+ aria-label="build-infra-info"
35
+ >
36
+ <ICHelpOutline className="icon-dim-20" />
37
+ </button>
38
+ </TippyCustomized>
39
+ </div>
40
+
41
+ {children}
42
+ </div>
43
+ )
44
+
45
+ export default Descriptor
@@ -0,0 +1,55 @@
1
+ import { FunctionComponent, ReactElement } from 'react'
2
+ import Tippy from '@tippyjs/react'
3
+ import { BUILD_INFRA_TEST_IDS, BUILD_INFRA_TEXT } from './constants'
4
+ import { FooterProps } from './types'
5
+ import { ConditionalWrap, Progressing } from '../../../Common'
6
+
7
+ const Footer: FunctionComponent<FooterProps> = ({ disabled, handleCancel, editProfile, loading }) => {
8
+ const disableMessage = disabled
9
+ ? BUILD_INFRA_TEXT.SUBMIT_BUTTON_TIPPY.INVALID_INPUT
10
+ : BUILD_INFRA_TEXT.SUBMIT_BUTTON_TIPPY.REQUEST_IN_PROGRESS
11
+
12
+ const getButtonText = () => {
13
+ if (editProfile) {
14
+ return BUILD_INFRA_TEXT.EDIT_SUBMIT
15
+ }
16
+
17
+ return BUILD_INFRA_TEXT.SAVE_SUBMIT
18
+ }
19
+
20
+ const renderTippy = (children: ReactElement) => (
21
+ <Tippy content={disableMessage} placement="top" className="default-tt" arrow={false}>
22
+ {children}
23
+ </Tippy>
24
+ )
25
+
26
+ return (
27
+ <div className="flex pl pr pb pt h-64 dc__gap-12 dc__border-top dc__content-start">
28
+ <ConditionalWrap condition={disabled || loading} wrap={renderTippy}>
29
+ <div className="flexbox dc__align-items-center">
30
+ <button
31
+ type="submit"
32
+ className="cta submit h-32 flex"
33
+ disabled={disabled || loading}
34
+ data-testid={BUILD_INFRA_TEST_IDS.SUBMIT_BUTTON}
35
+ >
36
+ {loading ? <Progressing size={16} /> : getButtonText()}
37
+ </button>
38
+ </div>
39
+ </ConditionalWrap>
40
+
41
+ {handleCancel && (
42
+ <button
43
+ type="button"
44
+ className="cta cancel h-32 flex"
45
+ data-testid={BUILD_INFRA_TEST_IDS.CANCEL_BUTTON}
46
+ onClick={handleCancel}
47
+ >
48
+ {BUILD_INFRA_TEXT.EDIT_CANCEL}
49
+ </button>
50
+ )}
51
+ </div>
52
+ )
53
+ }
54
+
55
+ export default Footer
@@ -0,0 +1,4 @@
1
+ In case someone wants to add a new build infrastructure field, the following steps should be followed:
2
+ - Update the BUILD_INFRA_FORM_FIELDS, in constants.tsx
3
+ - Add BuildInfraConfigTypes, BuildInfraLocators, BuildInfraInheritActions(If any) in types.tsx
4
+ - In utils.tsx, update the handleProfileInputChange and validation functions accordingly
@@ -0,0 +1,138 @@
1
+ import { ReactComponent as ICCpu } from '../../../Assets/Icon/ic-cpu.svg'
2
+ import { ReactComponent as ICMemory } from '../../../Assets/Icon/ic-memory.svg'
3
+ import { ReactComponent as ICTimer } from '../../../Assets/Icon/ic-timer.svg'
4
+ import { UseBreadcrumbProps } from '../../../Common/BreadCrumb/Types'
5
+ import {
6
+ BuildInfraConfigTypes,
7
+ BuildInfraFormFieldType,
8
+ BuildInfraLocators,
9
+ BuildInfraMetaConfigTypes,
10
+ ProfileInputErrorType,
11
+ BuildInfraProfileBase,
12
+ BuildInfraProfileVariants,
13
+ HandleProfileInputChangeType,
14
+ } from './types'
15
+
16
+ export const BUILD_INFRA_INPUT_CONSTRAINTS = {
17
+ STEP: 'any',
18
+ MIN: 0,
19
+ DECIMAL_PLACES: 2,
20
+ } as const
21
+
22
+ export const BUILD_INFRA_TEXT = {
23
+ HEADING: 'Build Infra Configuration',
24
+ EDIT_SUBMIT: 'Save changes',
25
+ SAVE_SUBMIT: 'Save',
26
+ EDIT_CANCEL: 'Cancel',
27
+ EDIT_DEFAULT_TOOLTIP:
28
+ 'Efficiently control infrastructure settings such as CPU, Memory, and Build timeout for your build pipelines. Streamline resource management to optimise build time and cost effortlessly.',
29
+ DESCRIPTION_LABEL: 'Description',
30
+ DESCRIPTION_PLACEHOLDER: 'Enter a description here',
31
+ PROFILE_LABEL: 'Profile name',
32
+ PROFILE_PLACEHOLDER: 'Eg. java or node',
33
+ INHERITING_HEADING_DESCRIPTION: 'Inheriting from default',
34
+ SUBMIT_BUTTON_TIPPY: {
35
+ INVALID_INPUT: 'Valid input is required for all mandatory fields.',
36
+ REQUEST_IN_PROGRESS: 'Request in progress.',
37
+ },
38
+ VALIDATE_REQUEST_LIMIT: {
39
+ REQUEST_LESS_THAN_LIMIT: 'Request should be less than or equal to limit.',
40
+ CAN_NOT_COMPUTE: 'Request and limit value diff are too high to validate.',
41
+ REQUEST_DECIMAL_PLACES: `Request should be upto ${BUILD_INFRA_INPUT_CONSTRAINTS.DECIMAL_PLACES} decimal places.`,
42
+ LIMIT_DECIMAL_PLACES: `Limit should be upto ${BUILD_INFRA_INPUT_CONSTRAINTS.DECIMAL_PLACES} decimal places.`,
43
+ },
44
+ getInvalidActionMessage: (action: HandleProfileInputChangeType['action']) => `Invalid action type: ${action}`,
45
+ getSubmitSuccessMessage: (profileName: string, isEdited: boolean) =>
46
+ `${profileName} profile is ${isEdited ? 'updated' : 'created'}`,
47
+ PROFILE_NOT_FOUND: {
48
+ title: 'Profile not found',
49
+ subTitle: 'The profile you are looking for does not exist.',
50
+ },
51
+ INVALID_FORM_MESSAGE: 'Valid input is required for all mandatory fields.',
52
+ } as const
53
+
54
+ export const BUILD_INFRA_BREADCRUMB: UseBreadcrumbProps = {
55
+ alias: {
56
+ 'global-config': null,
57
+ 'build-infra': {
58
+ component: <h2 className="m-0 cn-9 fs-16 fw-6 lh-32">{BUILD_INFRA_TEXT.HEADING}</h2>,
59
+ linked: false,
60
+ },
61
+ },
62
+ }
63
+
64
+ // TODO: move heading to component itself
65
+ export const BUILD_INFRA_FORM_FIELDS: BuildInfraFormFieldType[] = [
66
+ {
67
+ heading: <h3 className="m-0 cn-9 fs-13 fw-6 lh-20 w-240 dc__no-shrink">CPU (Request - Limit)</h3>,
68
+ marker: ICCpu,
69
+ actions: [
70
+ {
71
+ actionType: BuildInfraConfigTypes.CPU_REQUEST,
72
+ label: 'Request',
73
+ placeholder: 'Type CPU request',
74
+ },
75
+ {
76
+ actionType: BuildInfraConfigTypes.CPU_LIMIT,
77
+ label: 'Limit',
78
+ placeholder: 'Type CPU limit',
79
+ },
80
+ ],
81
+ locator: BuildInfraLocators.CPU,
82
+ },
83
+ {
84
+ heading: <h3 className="m-0 cn-9 fs-13 fw-6 lh-20 w-240 dc__no-shrink">Memory (Request - Limit)</h3>,
85
+ marker: ICMemory,
86
+ actions: [
87
+ {
88
+ actionType: BuildInfraConfigTypes.MEMORY_REQUEST,
89
+ label: 'Request',
90
+ placeholder: 'Type memory request',
91
+ },
92
+ {
93
+ actionType: BuildInfraConfigTypes.MEMORY_LIMIT,
94
+ label: 'Limit',
95
+ placeholder: 'Type memory limit',
96
+ },
97
+ ],
98
+ locator: BuildInfraLocators.MEMORY,
99
+ },
100
+ {
101
+ heading: <h3 className="m-0 cn-9 fs-13 fw-6 lh-20 w-240 dc__no-shrink">Build timeout</h3>,
102
+ marker: ICTimer,
103
+ actions: [
104
+ {
105
+ actionType: BuildInfraConfigTypes.BUILD_TIMEOUT,
106
+ label: 'Timeout',
107
+ placeholder: 'Type build timeout',
108
+ },
109
+ ],
110
+ locator: BuildInfraLocators.BUILD_TIMEOUT,
111
+ },
112
+ ]
113
+
114
+ export const PROFILE_INPUT_ERROR_FIELDS = Object.fromEntries(
115
+ Object.values({ ...BuildInfraConfigTypes, ...BuildInfraMetaConfigTypes }).map((value) => [value, null]),
116
+ ) as ProfileInputErrorType
117
+
118
+ // fields required to be filled before submitting the form in create view, since we pre-populate the form with default values so no need in configs
119
+ export const CREATE_MODE_REQUIRED_INPUT_FIELDS = [BuildInfraMetaConfigTypes.NAME]
120
+
121
+ export const DEFAULT_PROFILE_NAME = 'default' as const
122
+
123
+ export const CREATE_PROFILE_BASE_VALUE: BuildInfraProfileBase = {
124
+ name: '',
125
+ description: '',
126
+ type: BuildInfraProfileVariants.NORMAL,
127
+ appCount: 0,
128
+ }
129
+
130
+ export const CREATE_VIEW_CHECKED_CONFIGS = {
131
+ [BuildInfraConfigTypes.CPU_REQUEST]: true,
132
+ [BuildInfraConfigTypes.CPU_LIMIT]: true,
133
+ } as const
134
+
135
+ export const BUILD_INFRA_TEST_IDS = {
136
+ SUBMIT_BUTTON: 'build-infra-submit-button',
137
+ CANCEL_BUTTON: 'build-infra-cancel-button',
138
+ } as const
@@ -0,0 +1,7 @@
1
+ export { default as BuildInfraDescriptor } from './Descriptor'
2
+ export { default as BuildInfraFooter } from './Footer'
3
+ export { default as BuildInfraConfigForm } from './BuildInfraConfigForm'
4
+ export * from './services'
5
+ export * from './utils'
6
+ export * from './types'
7
+ export * from './constants'