@devtron-labs/devtron-fe-common-lib 0.0.60-beta-1 → 0.0.60-beta-2

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 (427) 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 +89 -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 -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 -3
  73. package/dist/Common/Hooks/useUrlFilters/constants.d.ts +8 -0
  74. package/dist/Common/Hooks/useUrlFilters/index.d.ts +2 -0
  75. package/dist/Common/Hooks/useUrlFilters/types.d.ts +19 -0
  76. package/dist/Common/Hooks/useUrlFilters/useUrlFilters.d.ts +20 -0
  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 -0
  129. package/dist/Common/SortableTableHeaderCell/index.d.ts +2 -0
  130. package/dist/Common/SortableTableHeaderCell/types.d.ts +25 -0
  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 -691
  135. package/dist/Common/index.d.ts +51 -50
  136. package/dist/Pages/GlobalConfigurations/Authorization/constants.d.ts +15 -0
  137. package/dist/Pages/GlobalConfigurations/Authorization/index.d.ts +1 -0
  138. package/dist/Pages/GlobalConfigurations/index.d.ts +1 -0
  139. package/dist/Pages/index.d.ts +1 -0
  140. package/dist/Shared/Components/BulkSelection/BulkSelection.d.ts +4 -0
  141. package/dist/Shared/Components/BulkSelection/BulkSelectionDropdownItems.d.ts +4 -0
  142. package/dist/Shared/Components/BulkSelection/BulkSelectionProvider.d.ts +4 -0
  143. package/dist/Shared/Components/BulkSelection/constants.d.ts +9 -0
  144. package/dist/Shared/Components/BulkSelection/index.d.ts +4 -0
  145. package/dist/Shared/Components/BulkSelection/types.d.ts +54 -0
  146. package/dist/Shared/Components/index.d.ts +1 -0
  147. package/dist/Shared/index.d.ts +1 -0
  148. package/dist/index.d.ts +3 -7
  149. package/dist/index.js +29384 -162
  150. package/package.json +23 -34
  151. package/rollup.config.js +31 -0
  152. package/src/Assets/Icon/ic-add.svg +3 -0
  153. package/src/Assets/Icon/ic-appstatus-cancelled.svg +6 -0
  154. package/src/Assets/Icon/ic-arrow-counter-clockwise.svg +5 -0
  155. package/src/Assets/Icon/ic-arrow-up-down.svg +3 -0
  156. package/src/Assets/Icon/ic-check-all.svg +5 -0
  157. package/src/Assets/Icon/ic-check-square.svg +4 -0
  158. package/src/Assets/Icon/ic-check.svg +5 -0
  159. package/src/Assets/Icon/ic-chevron-down.svg +5 -0
  160. package/src/Assets/Icon/ic-close.svg +9 -0
  161. package/src/Assets/Icon/ic-copy.svg +3 -0
  162. package/src/Assets/Icon/ic-cross.svg +3 -0
  163. package/src/Assets/Icon/ic-drag.svg +8 -0
  164. package/src/Assets/Icon/ic-enter.svg +3 -0
  165. package/src/Assets/Icon/ic-error-cross.svg +8 -0
  166. package/src/Assets/Icon/ic-error-exclamation.svg +6 -0
  167. package/src/Assets/Icon/ic-error-medium.svg +6 -0
  168. package/src/Assets/Icon/ic-help-outline.svg +3 -0
  169. package/src/Assets/Icon/ic-help.svg +3 -0
  170. package/src/Assets/Icon/ic-info-filled.svg +7 -0
  171. package/src/Assets/Icon/ic-info-outlined.svg +13 -0
  172. package/src/Assets/Icon/ic-minus.svg +3 -0
  173. package/src/Assets/Icon/ic-pencil.svg +3 -0
  174. package/src/Assets/Icon/ic-progressing.svg +6 -0
  175. package/src/Assets/Icon/ic-rotate-devtron.svg +103 -0
  176. package/src/Assets/Icon/ic-search.svg +6 -0
  177. package/src/Assets/Icon/ic-sort-arrow-down.svg +3 -0
  178. package/src/Assets/Icon/ic-warning.svg +7 -0
  179. package/src/Assets/Icon/inject-tag.svg +5 -0
  180. package/src/Assets/Img/app-not-deployed.png +0 -0
  181. package/src/Assets/Img/delete-medium.svg +15 -0
  182. package/src/Assets/Img/ic-empty-error@2x.png +0 -0
  183. package/src/Assets/Img/ic-loading-failure.png +0 -0
  184. package/src/Assets/Img/ic-not-authorized.svg +62 -0
  185. package/src/Common/AddCDButton/AddCDButton.tsx +68 -0
  186. package/src/Common/AddCDButton/index.ts +2 -0
  187. package/src/Common/AddCDButton/types.ts +38 -0
  188. package/src/Common/AddCDButton/utils.tsx +35 -0
  189. package/src/Common/Api.ts +251 -0
  190. package/src/Common/AppStatus/AppStatus.tsx +64 -0
  191. package/src/Common/AppStatus/constants.ts +53 -0
  192. package/src/Common/AppStatus/index.ts +1 -0
  193. package/src/Common/AppStatus/types.ts +12 -0
  194. package/src/Common/AppStatus/utils.ts +14 -0
  195. package/src/Common/BreadCrumb/BreadCrumb.tsx +105 -0
  196. package/src/Common/BreadCrumb/BreadcrumbStore.tsx +25 -0
  197. package/src/Common/BreadCrumb/Types.ts +30 -0
  198. package/src/Common/CIPipeline.Types.ts +277 -0
  199. package/src/Common/ChartVersionAndTypeSelector.tsx +78 -0
  200. package/src/Common/Checkbox.tsx +36 -0
  201. package/src/Common/ClipboardButton/ClipboardButton.tsx +61 -0
  202. package/src/Common/ClipboardButton/__tests__/ClipboardButton.test.tsx +43 -0
  203. package/src/Common/ClipboardButton/types.ts +7 -0
  204. package/src/Common/Common.service.ts +315 -0
  205. package/src/Common/Constants.ts +270 -0
  206. package/src/Common/CustomInput/CustomInput.tsx +134 -0
  207. package/src/Common/CustomInput/Types.ts +32 -0
  208. package/src/Common/CustomInput/index.ts +2 -0
  209. package/src/Common/CustomTagSelector/PropagateTagInfo.tsx +46 -0
  210. package/src/Common/CustomTagSelector/ResizableTagTextArea.tsx +84 -0
  211. package/src/Common/CustomTagSelector/TagDetails.tsx +76 -0
  212. package/src/Common/CustomTagSelector/TagLabelSelect.tsx +61 -0
  213. package/src/Common/CustomTagSelector/TagLabelValueSelector.tsx +198 -0
  214. package/src/Common/CustomTagSelector/TagSelector.utils.ts +71 -0
  215. package/src/Common/CustomTagSelector/Types.ts +72 -0
  216. package/src/Common/CustomTagSelector/ValidationRules.ts +58 -0
  217. package/src/Common/CustomTagSelector/index.ts +6 -0
  218. package/src/Common/DebouncedSearch/DebouncedSearch.tsx +78 -0
  219. package/src/Common/DebouncedSearch/Types.ts +13 -0
  220. package/src/Common/DebouncedSearch/Utils.ts +19 -0
  221. package/src/Common/DebouncedSearch/__tests__/DebouncedSearch.test.tsx +61 -0
  222. package/src/Common/DeleteComponentModal/DeleteComponent.tsx +95 -0
  223. package/src/Common/DeleteComponentModal/types.ts +15 -0
  224. package/src/Common/DevtronProgressing/DevtronProgressing.tsx +11 -0
  225. package/src/Common/DevtronProgressing/index.ts +1 -0
  226. package/src/Common/DevtronProgressing/types.ts +4 -0
  227. package/src/Common/Dialogs/ConfirmationDialog.tsx +34 -0
  228. package/src/Common/Dialogs/DeleteDialog.tsx +69 -0
  229. package/src/Common/Dialogs/DialogForm.tsx +86 -0
  230. package/src/Common/Dialogs/ForceDeleteDialog.tsx +19 -0
  231. package/src/Common/Dialogs/Types.ts +47 -0
  232. package/src/Common/Dialogs/index.ts +4 -0
  233. package/src/Common/DraggableWrapper/DraggableButton.tsx +14 -0
  234. package/src/Common/DraggableWrapper/DraggableWrapper.tsx +116 -0
  235. package/src/Common/DraggableWrapper/index.ts +3 -0
  236. package/src/Common/DraggableWrapper/types.ts +27 -0
  237. package/src/Common/Drawer/Drawer.scss +40 -0
  238. package/src/Common/Drawer/Drawer.tsx +49 -0
  239. package/src/Common/EmptyState/EmptyState.tsx +42 -0
  240. package/src/Common/EmptyState/GenericEmptyState.tsx +81 -0
  241. package/src/Common/EmptyState/emptyState.scss +74 -0
  242. package/src/Common/Error.tsx +61 -0
  243. package/src/Common/ErrorScreenNotFound.tsx +31 -0
  244. package/src/Common/Grid/Grid.tsx +44 -0
  245. package/src/Common/Grid/types.ts +11 -0
  246. package/src/Common/Helper.tsx +576 -0
  247. package/src/Common/Hooks/UseClickOutside/UseClickOutside.tsx +15 -0
  248. package/src/Common/Hooks/UseSuperAdmin/UseSuperAdmin.tsx +24 -0
  249. package/src/Common/Hooks/UseSuperAdmin/types.ts +3 -0
  250. package/src/Common/Hooks/UseWindowSize/UseWindowSize.tsx +31 -0
  251. package/src/Common/Hooks/index.ts +4 -0
  252. package/src/Common/Hooks/useUrlFilters/constants.ts +9 -0
  253. package/src/Common/Hooks/useUrlFilters/index.ts +2 -0
  254. package/src/Common/Hooks/useUrlFilters/types.ts +21 -0
  255. package/src/Common/Hooks/useUrlFilters/useUrlFilters.ts +121 -0
  256. package/src/Common/ImageTags.Types.ts +44 -0
  257. package/src/Common/ImageTags.tsx +586 -0
  258. package/src/Common/InfoColorBar/InfoColourbar.tsx +80 -0
  259. package/src/Common/InfoColorBar/infoColourBar.scss +28 -0
  260. package/src/Common/Modals/Modal.tsx +68 -0
  261. package/src/Common/Modals/OpaqueModal.tsx +36 -0
  262. package/src/Common/Modals/VisibleModal.tsx +55 -0
  263. package/src/Common/Modals/VisibleModal2.tsx +35 -0
  264. package/src/Common/MultiSelectCustomization.tsx +148 -0
  265. package/src/Common/Pagination/PageSizeSelector.tsx +78 -0
  266. package/src/Common/Pagination/Pagination.tsx +127 -0
  267. package/src/Common/Pagination/constants.ts +6 -0
  268. package/src/Common/Pagination/index.tsx +3 -0
  269. package/src/Common/Pagination/pagination.scss +123 -0
  270. package/src/Common/Pagination/types.ts +55 -0
  271. package/src/Common/Pagination/utils.tsx +24 -0
  272. package/src/Common/Policy.Types.ts +63 -0
  273. package/src/Common/PopupMenu.tsx +199 -0
  274. package/src/Common/Progressing.tsx +53 -0
  275. package/src/Common/RJSF/Form.tsx +29 -0
  276. package/src/Common/RJSF/common/FieldRow.tsx +35 -0
  277. package/src/Common/RJSF/common/types.ts +9 -0
  278. package/src/Common/RJSF/config.ts +37 -0
  279. package/src/Common/RJSF/constants.ts +10 -0
  280. package/src/Common/RJSF/index.ts +3 -0
  281. package/src/Common/RJSF/rjsfForm.scss +18 -0
  282. package/src/Common/RJSF/templates/ArrayFieldItemTemplate.tsx +31 -0
  283. package/src/Common/RJSF/templates/ArrayFieldTemplate.tsx +78 -0
  284. package/src/Common/RJSF/templates/BaseInput.tsx +16 -0
  285. package/src/Common/RJSF/templates/ButtonTemplates/AddButton.tsx +18 -0
  286. package/src/Common/RJSF/templates/ButtonTemplates/RemoveButton.tsx +10 -0
  287. package/src/Common/RJSF/templates/ButtonTemplates/SubmitButton.tsx +18 -0
  288. package/src/Common/RJSF/templates/ButtonTemplates/index.ts +3 -0
  289. package/src/Common/RJSF/templates/Description.tsx +12 -0
  290. package/src/Common/RJSF/templates/Field.tsx +30 -0
  291. package/src/Common/RJSF/templates/FieldErrorTemplate.tsx +25 -0
  292. package/src/Common/RJSF/templates/ObjectFieldTemplate.tsx +105 -0
  293. package/src/Common/RJSF/templates/TitleField.tsx +9 -0
  294. package/src/Common/RJSF/templates/WrapIfAdditionalTemplate.tsx +51 -0
  295. package/src/Common/RJSF/templates/index.ts +10 -0
  296. package/src/Common/RJSF/types.ts +4 -0
  297. package/src/Common/RJSF/utils.ts +123 -0
  298. package/src/Common/RJSF/widgets/Checkbox.tsx +44 -0
  299. package/src/Common/RJSF/widgets/Select.tsx +77 -0
  300. package/src/Common/RJSF/widgets/index.ts +2 -0
  301. package/src/Common/RadioGroup/RadioGroup.tsx +105 -0
  302. package/src/Common/RadioGroup/radioGroup.scss +46 -0
  303. package/src/Common/RadioGroup.tsx +53 -0
  304. package/src/Common/Reload.tsx +23 -0
  305. package/src/Common/ResizableTextarea.tsx +73 -0
  306. package/src/Common/SearchBar/SearchBar.component.tsx +131 -0
  307. package/src/Common/SearchBar/index.ts +2 -0
  308. package/src/Common/SearchBar/searchBar.scss +31 -0
  309. package/src/Common/SearchBar/types.ts +34 -0
  310. package/src/Common/Security/ScanVulnerabilitiesTable.tsx +55 -0
  311. package/src/Common/Security/scanVulnerabilities.css +69 -0
  312. package/src/Common/ServerError.ts +31 -0
  313. package/src/Common/SortableTableHeaderCell/SortableTableHeaderCell.tsx +44 -0
  314. package/src/Common/SortableTableHeaderCell/index.ts +2 -0
  315. package/src/Common/SortableTableHeaderCell/types.ts +26 -0
  316. package/src/Common/TippyCustomized.tsx +172 -0
  317. package/src/Common/ToastBody.tsx +62 -0
  318. package/src/Common/Toggle/Toggle.scss +78 -0
  319. package/src/Common/Toggle/Toggle.tsx +50 -0
  320. package/src/Common/Types.ts +778 -0
  321. package/src/Common/index.ts +51 -0
  322. package/src/Pages/GlobalConfigurations/Authorization/constants.ts +16 -0
  323. package/src/Pages/GlobalConfigurations/Authorization/index.ts +1 -0
  324. package/src/Pages/GlobalConfigurations/index.ts +1 -0
  325. package/src/Pages/index.ts +1 -0
  326. package/src/Shared/Components/BulkSelection/BulkSelection.tsx +77 -0
  327. package/src/Shared/Components/BulkSelection/BulkSelectionDropdownItems.tsx +31 -0
  328. package/src/Shared/Components/BulkSelection/BulkSelectionProvider.tsx +160 -0
  329. package/src/Shared/Components/BulkSelection/constants.tsx +13 -0
  330. package/src/Shared/Components/BulkSelection/index.ts +4 -0
  331. package/src/Shared/Components/BulkSelection/types.tsx +65 -0
  332. package/src/Shared/Components/index.ts +1 -0
  333. package/src/Shared/index.ts +1 -0
  334. package/src/custom.d.ts +13 -0
  335. package/src/index.ts +3 -0
  336. package/tsconfig.json +40 -0
  337. package/dist/Common/CodeEditor/CodeEditor.d.ts +0 -47
  338. package/dist/Common/Select/Select.d.ts +0 -4
  339. package/dist/Common/Select/types.d.ts +0 -29
  340. package/dist/abap-9f67f57a.js +0 -1314
  341. package/dist/apex-ff62e532.js +0 -315
  342. package/dist/assets/editor.worker-d26000ef.js +0 -9
  343. package/dist/assets/index.css +0 -1
  344. package/dist/assets/json.worker-f23a4654.js +0 -40
  345. package/dist/assets/yaml.worker-35ea3f9a.js +0 -467
  346. package/dist/azcli-31e64a7f.js +0 -74
  347. package/dist/bat-0ffe897e.js +0 -95
  348. package/dist/bicep-3414a2b1.js +0 -108
  349. package/dist/cameligo-df1f3f25.js +0 -168
  350. package/dist/clojure-65b0f010.js +0 -754
  351. package/dist/coffee-437f0fba.js +0 -228
  352. package/dist/cpp-66843dd5.js +0 -390
  353. package/dist/csharp-621d9a49.js +0 -320
  354. package/dist/csp-de0d5244.js +0 -57
  355. package/dist/css-7cd5ed4c.js +0 -186
  356. package/dist/cssMode-6b75f943.js +0 -1446
  357. package/dist/cypher-70ad96fe.js +0 -262
  358. package/dist/dart-33ae3739.js +0 -270
  359. package/dist/dockerfile-f2274a50.js +0 -132
  360. package/dist/ecl-3b8294a3.js +0 -454
  361. package/dist/elixir-b9dcc73a.js +0 -489
  362. package/dist/flow9-bdde8316.js +0 -141
  363. package/dist/freemarker2-af9f92ac.js +0 -643
  364. package/dist/fsharp-eac2e449.js +0 -210
  365. package/dist/go-d12ed8d4.js +0 -208
  366. package/dist/graphql-c7356b69.js +0 -141
  367. package/dist/handlebars-cc9800dd.js +0 -391
  368. package/dist/hcl-e883a0d4.js +0 -177
  369. package/dist/html-edc1e4c2.js +0 -281
  370. package/dist/htmlMode-17cc8a79.js +0 -1456
  371. package/dist/index-32e797ab.js +0 -126102
  372. package/dist/ini-425ab711.js +0 -68
  373. package/dist/java-2bc0fd68.js +0 -221
  374. package/dist/javascript-5e615a9b.js +0 -75
  375. package/dist/jsonMode-742c1a1b.js +0 -1867
  376. package/dist/julia-1c932615.js +0 -496
  377. package/dist/kotlin-1ab839c8.js +0 -245
  378. package/dist/less-6fe856f5.js +0 -168
  379. package/dist/lexon-4955ac52.js +0 -151
  380. package/dist/liquid-843d0e9e.js +0 -238
  381. package/dist/lua-3cca0047.js +0 -157
  382. package/dist/m3-132e9cb6.js +0 -210
  383. package/dist/markdown-ea59a0c1.js +0 -202
  384. package/dist/mips-19811f4b.js +0 -194
  385. package/dist/msdax-69954a10.js +0 -377
  386. package/dist/mysql-82088e5d.js +0 -876
  387. package/dist/objective-c-1976eccc.js +0 -188
  388. package/dist/pascal-8ef177cb.js +0 -245
  389. package/dist/pascaligo-bc517b9e.js +0 -158
  390. package/dist/perl-8b93582c.js +0 -599
  391. package/dist/pgsql-00c11a6d.js +0 -847
  392. package/dist/php-4c8c276f.js +0 -471
  393. package/dist/pla-e9b4ffb1.js +0 -131
  394. package/dist/postiats-2071af8c.js +0 -544
  395. package/dist/powerquery-8e388ceb.js +0 -890
  396. package/dist/powershell-e35db398.js +0 -233
  397. package/dist/protobuf-a24b9176.js +0 -422
  398. package/dist/pug-2c94d9b8.js +0 -393
  399. package/dist/python-67e4059c.js +0 -259
  400. package/dist/qsharp-d730d7fe.js +0 -282
  401. package/dist/r-be193556.js +0 -245
  402. package/dist/razor-8e9d6aa5.js +0 -512
  403. package/dist/redis-9690c6ac.js +0 -298
  404. package/dist/redshift-6bdcdeaa.js +0 -806
  405. package/dist/restructuredtext-a08c1d20.js +0 -162
  406. package/dist/ruby-2247692b.js +0 -444
  407. package/dist/rust-1dffb4d5.js +0 -337
  408. package/dist/sb-136598e9.js +0 -110
  409. package/dist/scala-b1100fed.js +0 -353
  410. package/dist/scheme-038c8094.js +0 -114
  411. package/dist/scss-700d1b52.js +0 -244
  412. package/dist/shell-86c16e0f.js +0 -224
  413. package/dist/solidity-c05fdf3c.js +0 -1351
  414. package/dist/sophia-cd645d71.js +0 -190
  415. package/dist/sparql-01d9ec9c.js +0 -193
  416. package/dist/sql-4c33df41.js +0 -818
  417. package/dist/st-52cf1408.js +0 -414
  418. package/dist/swift-13c792ba.js +0 -315
  419. package/dist/systemverilog-0bd8b730.js +0 -556
  420. package/dist/tcl-463d7c75.js +0 -232
  421. package/dist/tsMode-d5db18bc.js +0 -811
  422. package/dist/twig-0d98f5ec.js +0 -323
  423. package/dist/typescript-302557e6.js +0 -328
  424. package/dist/vb-3a2b0a51.js +0 -364
  425. package/dist/wgsl-b2ddb3e4.js +0 -420
  426. package/dist/xml-47f08bc4.js +0 -95
  427. package/dist/yaml-49f075d9.js +0 -184
@@ -0,0 +1,71 @@
1
+ export const baseSelectStyles = {
2
+ control: (base, state) => ({
3
+ ...base,
4
+ border: '1px solid var(--N200)',
5
+ boxShadow: 'none',
6
+ minHeight: 'auto',
7
+ borderRadius: 'none',
8
+ height: '32px',
9
+ fontSize: '12px',
10
+ borderRight: '0',
11
+ cursor: state.isDisabled ? 'not-allowed' : 'normal',
12
+ }),
13
+ singleValue: (base, state) => ({
14
+ ...base,
15
+ fontWeight: '500',
16
+ }),
17
+ placeholder: (base, state) => ({
18
+ ...base,
19
+ fontWeight: '500',
20
+ }),
21
+ option: (base, state) => ({
22
+ ...base,
23
+ fontWeight: '500',
24
+ color: 'var(--N900)',
25
+ fontSize: '12px',
26
+ padding: '5px 10px',
27
+ }),
28
+ dropdownIndicator: (styles) => ({ ...styles, padding: 0 }),
29
+ valueContainer: (base, state) => ({
30
+ ...base,
31
+ color: 'var(--N900)',
32
+ background: state.isDisabled ? 'var(--N100) !important' : 'var(--N50) !important',
33
+ padding: '0px 10px',
34
+ display: 'flex',
35
+ height: '30px',
36
+ fontSize: '12px',
37
+ cursor: state.isDisabled ? 'not-allowed' : 'normal',
38
+ pointerEvents: 'all',
39
+ width: '100px',
40
+ whiteSpace: 'nowrap',
41
+ }),
42
+ indicatorsContainer: (base, state) => ({
43
+ ...base,
44
+ background: state.isDisabled ? 'var(--N100) !important' : 'var(--N50) !important',
45
+ }),
46
+ menu: (base, state) => ({
47
+ ...base,
48
+ marginTop: '0',
49
+ }),
50
+ }
51
+
52
+ export const validateKubernetesKey = (key: string) => {
53
+ const invalidMessageList = []
54
+ if (!key || key.split('/')) {
55
+ invalidMessageList.push('Name is required')
56
+ } else {
57
+ const re = new RegExp('/', 'g')
58
+ const noOfSlashInKey = key.match(re).length
59
+ if (noOfSlashInKey > 1) {
60
+ invalidMessageList.push('Key: Max 1 ( / ) allowed')
61
+ } else {
62
+ let name = key
63
+ if (noOfSlashInKey === 1) {
64
+ const [prefix, name]=key.split('/')
65
+
66
+ }
67
+ }
68
+ }
69
+ }
70
+
71
+ export const validateKubernetesValue = (value: string) => {}
@@ -0,0 +1,72 @@
1
+ import { KEY_VALUE } from '../Constants'
2
+ import { OptionType } from '../Types'
3
+
4
+ export interface SuggestedTagOptionType extends OptionType {
5
+ description: string
6
+ propagate: boolean
7
+ }
8
+ export interface TagType {
9
+ id?: number
10
+ key: string
11
+ value?: string
12
+ description?: string
13
+ propagate: boolean
14
+ mandatoryProjectIdsCsv?: string
15
+ isInvalidKey?: boolean
16
+ isInvalidValue?: boolean
17
+ isSuggested?: boolean
18
+ isPropagateDisabled?: boolean
19
+ }
20
+
21
+ export interface TagErrorType {
22
+ isValid: boolean
23
+ messages: string[]
24
+ }
25
+ export interface TagLabelSelectType {
26
+ isCreateApp?: boolean
27
+ labelTags: TagType[]
28
+ setLabelTags: (tagList: TagType[]) => void
29
+ tabIndex?: number
30
+ selectedProjectId?: number
31
+ suggestedTagsOptions?: SuggestedTagOptionType[]
32
+ reloadProjectTags?: boolean
33
+ }
34
+
35
+ export interface TagDetailType {
36
+ index: number
37
+ tagData: TagType
38
+ setTagData: (index: number, tagData: TagType) => void
39
+ removeTag?: (index: number) => void
40
+ tabIndex?: number
41
+ suggestedTagsOptions?: SuggestedTagOptionType[]
42
+ }
43
+
44
+ export interface TagLabelValueSelectorType {
45
+ selectedTagIndex: number
46
+ tagData: TagType
47
+ setTagData: (index: number, tagData: TagType) => void
48
+ tagOptions?: SuggestedTagOptionType[]
49
+ isRequired?: boolean
50
+ tagInputType?: KEY_VALUE
51
+ placeholder?: string
52
+ tabIndex?: number
53
+ refVar?: React.MutableRefObject<HTMLTextAreaElement>
54
+ dependentRef?: React.MutableRefObject<HTMLTextAreaElement>
55
+ noBackDrop?: boolean
56
+ }
57
+
58
+ export interface ResizableTagTextAreaProps {
59
+ className?: string
60
+ minHeight?: number
61
+ maxHeight?: number
62
+ value?: string
63
+ onChange?: (e) => void
64
+ onBlur?: (e) => void
65
+ onFocus?: (e) => void
66
+ placeholder?: string
67
+ tabIndex?: number
68
+ refVar?: React.MutableRefObject<HTMLTextAreaElement>
69
+ dependentRef?: React.MutableRefObject<HTMLTextAreaElement>
70
+ dataTestId?: string
71
+ handleKeyDown?: any
72
+ }
@@ -0,0 +1,58 @@
1
+ import { PATTERNS } from '../Constants'
2
+
3
+ const validateTagValue = (value: string): string[] => {
4
+ const errorList = []
5
+ if (value.length > 63) {
6
+ errorList.push('Can be max 63 characters')
7
+ }
8
+ const firstLastAlphanumeric = PATTERNS.START_END_ALPHANUMERIC.test(value)
9
+ if (!firstLastAlphanumeric) {
10
+ errorList.push('Must start and end with an alphanumeric character')
11
+ }
12
+ const validValue = PATTERNS.ALPHANUMERIC_WITH_SPECIAL_CHAR.test(value)
13
+ if (!validValue) {
14
+ errorList.push('Can only contain alphanumeric chars and (-), (_), (.)')
15
+ }
16
+ return errorList
17
+ }
18
+ export class ValidationRules {
19
+ propagateTagKey = (key: string): { isValid: boolean; messages: string[] } => {
20
+ const errorList = []
21
+ if (!key) {
22
+ errorList.push('Key is required')
23
+ } else {
24
+ if(!key.startsWith("devtron.ai/")){
25
+ const re = new RegExp('/', 'g')
26
+ const noOfSlashInKey = key.match(re)?.length
27
+ if (noOfSlashInKey > 1) {
28
+ errorList.push('Key: Max 1 ( / ) allowed')
29
+ } else if (noOfSlashInKey === 1) {
30
+ const [prefix, name] = key.split('/')
31
+ errorList.push(...validateTagValue(name).map((error) => `Name: ${error}`))
32
+ if (prefix.length > 253) {
33
+ errorList.push('Prefix: Can be max 253 characters')
34
+ }
35
+ const validPrefix = PATTERNS.KUBERNETES_KEY_PREFIX.test(prefix)
36
+ if (!validPrefix) {
37
+ errorList.push('Prefix: Must be a DNS subdomain (a series of DNS labels separated by dots (.)')
38
+ }
39
+ } else {
40
+ errorList.push(...validateTagValue(key).map((error) => `Name: ${error}`))
41
+ }
42
+ }
43
+ }
44
+ return { isValid: errorList.length === 0, messages: errorList }
45
+ }
46
+
47
+ propagateTagValue = (value: string, key: string): { isValid: boolean; messages: string[] } => {
48
+ const errorList = []
49
+ if (!value) {
50
+ errorList.push('Value is required')
51
+ } else {
52
+ if(!key.startsWith("devtron.ai/")){
53
+ errorList.push(...validateTagValue(value))
54
+ }
55
+ }
56
+ return { isValid: errorList.length === 0, messages: errorList }
57
+ }
58
+ }
@@ -0,0 +1,6 @@
1
+ export {default as PropagateTagInfo} from './PropagateTagInfo'
2
+ export * from './TagDetails'
3
+ export * from './TagLabelSelect'
4
+ export * from './TagLabelValueSelector'
5
+ export * from './ResizableTagTextArea'
6
+ export * from './Types'
@@ -0,0 +1,78 @@
1
+ import React, { useEffect, useState } from 'react'
2
+ import { useDebouncedEffect } from './Utils'
3
+ import { ReactComponent as ICClear } from '../../Assets/Icon/ic-error-cross.svg'
4
+ import { DebouncedSearchProps } from './Types'
5
+
6
+ /**
7
+ * @deprecated Use `SearchBar` component instead.
8
+ *
9
+ * @param onSearch - Callback function to be called on search
10
+ * @param Icon - (Optional) Icon to be shown before the input
11
+ * @param iconClass - (Optional) Class for the icon
12
+ * @param children - (Optional) In case we want to add another button or any other element
13
+ * @param placeholder - (Optional) Placeholder for the input
14
+ * @param containerClass - (Optional) Class for the container
15
+ * @param inputClass - (Optional) Class for the input field
16
+ * @param debounceTimeout - (Optional) Timeout for the debounce with default value of 500ms
17
+ * @param clearSearch - (Optional) To clear the search text
18
+ * @param showClearIcon - (Optional) To show the clear icon default value is true
19
+ */
20
+ export default function DebouncedSearch({
21
+ onSearch,
22
+ Icon,
23
+ children,
24
+ placeholder,
25
+ containerClass = '',
26
+ iconClass = '',
27
+ inputClass = '',
28
+ debounceTimeout = 500,
29
+ clearSearch,
30
+ showClearIcon = true,
31
+ autoFocus = true,
32
+ }: DebouncedSearchProps) {
33
+ const [searchText, setSearchText] = useState<string>('')
34
+
35
+ useEffect(() => {
36
+ setSearchText('')
37
+ }, [clearSearch])
38
+
39
+ const handleSearchTextChange = (e: React.ChangeEvent<HTMLInputElement>) => {
40
+ setSearchText(e.target.value)
41
+ }
42
+
43
+ const handleClearSearch = () => {
44
+ setSearchText('')
45
+ }
46
+
47
+ useDebouncedEffect(() => onSearch(searchText), debounceTimeout, [searchText])
48
+
49
+ return (
50
+ <div className={containerClass}>
51
+ {Icon && <Icon className={iconClass} />}
52
+
53
+ <input
54
+ type="text"
55
+ className={inputClass}
56
+ placeholder={placeholder ?? 'Search'}
57
+ value={searchText}
58
+ onChange={handleSearchTextChange}
59
+ autoFocus={autoFocus}
60
+ data-testid="debounced-search"
61
+ />
62
+
63
+ {showClearIcon && !!searchText && (
64
+ <button
65
+ type="button"
66
+ className="dc__outline-none-imp dc__no-border p-0 bc-n50 flex"
67
+ onClick={handleClearSearch}
68
+ data-testid="clear-search"
69
+ >
70
+ <ICClear className="icon-dim-20 icon-n6" />
71
+ </button>
72
+ )}
73
+
74
+ {/* In case we want to add another button or something */}
75
+ {children}
76
+ </div>
77
+ )
78
+ }
@@ -0,0 +1,13 @@
1
+ export interface DebouncedSearchProps {
2
+ onSearch: (query: string) => void
3
+ Icon?: React.FunctionComponent<React.SVGProps<SVGSVGElement>>
4
+ placeholder?: string
5
+ inputClass?: string
6
+ containerClass?: string
7
+ iconClass?: string
8
+ children?: React.ReactNode
9
+ debounceTimeout?: number
10
+ clearSearch?: boolean
11
+ showClearIcon?: boolean
12
+ autoFocus?: boolean
13
+ }
@@ -0,0 +1,19 @@
1
+ import { useEffect, useRef } from 'react'
2
+
3
+ export function useDebouncedEffect(callback, delay, deps: unknown[] = []) {
4
+ // function will be executed only after the specified time once the user stops firing the event.
5
+ const firstUpdate = useRef(true)
6
+ useEffect(() => {
7
+ if (firstUpdate.current) {
8
+ firstUpdate.current = false
9
+ return
10
+ }
11
+ const handler = setTimeout(() => {
12
+ callback()
13
+ }, delay)
14
+
15
+ return () => {
16
+ clearTimeout(handler)
17
+ }
18
+ }, [delay, ...deps])
19
+ }
@@ -0,0 +1,61 @@
1
+ import React from 'react'
2
+ import { render, screen, fireEvent } from '@testing-library/react'
3
+ import { ReactComponent as ICClear } from '../../../../assets/icons/ic-error.svg'
4
+ import DebouncedSearch from '../DebouncedSearch'
5
+
6
+ jest.mock('../../helpers/Helpers', () => ({
7
+ useDebouncedEffect: jest.fn().mockImplementation((fn) => fn()),
8
+ }))
9
+
10
+ describe('When DebouncedSearch mounts', () => {
11
+ it('should have a input field', () => {
12
+ render(<DebouncedSearch onSearch={jest.fn()} />)
13
+ expect(screen.getByRole('textbox')).toBeTruthy()
14
+ })
15
+
16
+ it('should have a clear icon when clearSearch is true and user has typed something', () => {
17
+ const { getByTestId } = render(<DebouncedSearch onSearch={jest.fn()} clearSearch debounceTimeout={0} />)
18
+ fireEvent.change(screen.getByRole('textbox'), { target: { value: 'test' } })
19
+ expect(getByTestId('clear-search')).toBeTruthy()
20
+ })
21
+
22
+ it('should call onSearch when input value changes', () => {
23
+ const onSearch = jest.fn()
24
+ render(<DebouncedSearch onSearch={onSearch} debounceTimeout={0} />)
25
+ fireEvent.change(screen.getByRole('textbox'), { target: { value: 'test' } })
26
+ expect(onSearch).toHaveBeenCalled()
27
+ })
28
+
29
+ it('should clear input value when clear icon is clicked', () => {
30
+ const { container } = render(<DebouncedSearch onSearch={jest.fn()} clearSearch debounceTimeout={0} />)
31
+ fireEvent.change(screen.getByRole('textbox'), { target: { value: 'test' } })
32
+ const inputBar = container.querySelector('input')
33
+ expect(inputBar.value).toBe('test')
34
+ fireEvent.click(screen.getByRole('button'))
35
+ expect(inputBar.value).toBe('')
36
+ })
37
+
38
+ it('should have a placeholder', () => {
39
+ render(<DebouncedSearch onSearch={jest.fn()} placeholder="test" />)
40
+ expect(screen.getByPlaceholderText('test')).toBeTruthy()
41
+ })
42
+
43
+ it('should not show clear icon when showClearIcon is false', () => {
44
+ render(<DebouncedSearch onSearch={jest.fn()} showClearIcon={false} />)
45
+ expect(screen.queryByRole('button')).toBeNull()
46
+ })
47
+
48
+ it('should have a custom Icon', () => {
49
+ const { container } = render(<DebouncedSearch onSearch={jest.fn()} Icon={ICClear} iconClass="icon-class" />)
50
+ expect(container.querySelector('.icon-class')).toBeTruthy()
51
+ })
52
+
53
+ it('should support children', () => {
54
+ render(
55
+ <DebouncedSearch onSearch={jest.fn()}>
56
+ <div>test</div>
57
+ </DebouncedSearch>,
58
+ )
59
+ expect(screen.getByText('test')).toBeTruthy()
60
+ })
61
+ })
@@ -0,0 +1,95 @@
1
+ import React, { useState } from 'react'
2
+ import { useHistory } from 'react-router-dom'
3
+ import { toast } from 'react-toastify'
4
+ import info from '../../Assets/Icon/ic-info-filled.svg'
5
+ import { ConfirmationDialog, DeleteDialog } from '../Dialogs'
6
+ import { ServerErrors } from '../ServerError'
7
+ import { DeleteComponentProps } from './types'
8
+
9
+
10
+ function DeleteComponent({
11
+ setDeleting,
12
+ toggleConfirmation,
13
+ deleteComponent,
14
+ title,
15
+ component,
16
+ payload,
17
+ confirmationDialogDescription = '',
18
+ redirectTo = false,
19
+ url = '',
20
+ reload,
21
+ configuration = '',
22
+ closeCustomComponent,
23
+ }: DeleteComponentProps) {
24
+ const [showCannotDeleteDialogModal, setCannotDeleteDialogModal] = useState(false)
25
+ const { push } = useHistory()
26
+
27
+ async function handleDelete() {
28
+ setDeleting(true)
29
+ try {
30
+ await deleteComponent(payload)
31
+ toast.success('Successfully deleted')
32
+ toggleConfirmation(false)
33
+ if (redirectTo) {
34
+ push(url)
35
+ } else {
36
+ reload()
37
+ }
38
+ if (typeof closeCustomComponent === 'function') {
39
+ closeCustomComponent()
40
+ }
41
+ } catch (serverError) {
42
+ if (serverError instanceof ServerErrors && serverError.code === 500) {
43
+ setCannotDeleteDialogModal(true)
44
+ }
45
+ } finally {
46
+ setDeleting(false)
47
+ }
48
+ }
49
+
50
+ const handleConfirmation = () => {
51
+ setCannotDeleteDialogModal(false)
52
+ toggleConfirmation(false)
53
+ if (typeof closeCustomComponent === 'function') {
54
+ closeCustomComponent()
55
+ }
56
+ }
57
+
58
+ const renderCannotDeleteDialogModal = () => {
59
+ return (
60
+ <ConfirmationDialog className="confirmation-dialog__body--w-360">
61
+ <ConfirmationDialog.Icon src={info} />
62
+ <ConfirmationDialog.Body title={`Cannot delete ${component} '${title}'`} />
63
+ <p className="fs-13 cn-7 ">{confirmationDialogDescription}</p>
64
+ <ConfirmationDialog.ButtonGroup>
65
+ <button type="button" className="cta" onClick={handleConfirmation}>
66
+ Okay
67
+ </button>
68
+ </ConfirmationDialog.ButtonGroup>
69
+ </ConfirmationDialog>
70
+ )
71
+ }
72
+
73
+ const renderDeleteDialog = () => {
74
+ return (
75
+ <DeleteDialog
76
+ title={`Delete ${component} '${title}'`}
77
+ delete={handleDelete}
78
+ closeDelete={() => toggleConfirmation(false)}
79
+ dataTestId="delete-dialog"
80
+ >
81
+ <DeleteDialog.Description>
82
+ <p>Are you sure you want to delete this {configuration ? configuration : component}? </p>
83
+ </DeleteDialog.Description>
84
+ </DeleteDialog>
85
+ )
86
+ }
87
+ return (
88
+ <div>
89
+ {!showCannotDeleteDialogModal && renderDeleteDialog()}
90
+ {showCannotDeleteDialogModal && renderCannotDeleteDialogModal()}
91
+ </div>
92
+ )
93
+ }
94
+
95
+ export default DeleteComponent
@@ -0,0 +1,15 @@
1
+ export interface DeleteComponentProps {
2
+ setDeleting: (boolean) => void
3
+ toggleConfirmation: any
4
+ deleteComponent: (any) => Promise<any>
5
+ title: string
6
+ component: string
7
+ payload: any
8
+ confirmationDialogDescription?: string
9
+ redirectTo?: boolean
10
+ url?: string
11
+ reload?: () => void
12
+ configuration?: string
13
+ dataTestid?: string
14
+ closeCustomComponent?: () => void
15
+ }
@@ -0,0 +1,11 @@
1
+ import React from 'react'
2
+ import { ReactComponent as ICRotateDevtron } from '../../Assets/Icon/ic-rotate-devtron.svg'
3
+ import { DevtronProgressingProps } from './types'
4
+
5
+ export function DevtronProgressing({ classes, parentClasses }: DevtronProgressingProps): JSX.Element {
6
+ return (
7
+ <div className={parentClasses ? parentClasses : ''}>
8
+ <ICRotateDevtron className={classes ? classes : ''} />
9
+ </div>
10
+ )
11
+ }
@@ -0,0 +1 @@
1
+ export * from './DevtronProgressing'
@@ -0,0 +1,4 @@
1
+ export interface DevtronProgressingProps {
2
+ classes?: string
3
+ parentClasses?: string
4
+ }
@@ -0,0 +1,34 @@
1
+ import React from 'react'
2
+ import { VisibleModal2 } from '../Modals/VisibleModal2'
3
+ import { ConfirmationDialogBodyType, ConfirmationDialogButtonGroupType, ConfirmationDialogIconType, ConfirmationDialogType } from './Types'
4
+
5
+ function ConfirmationDialog({ className = '', children }: ConfirmationDialogType) {
6
+ return (
7
+ <VisibleModal2 className="confirmation-dialog">
8
+ <div className={`confirmation-dialog__body ${className}`}>{children}</div>
9
+ </VisibleModal2>
10
+ )
11
+ }
12
+
13
+ function Icon({ src, className = '' }: ConfirmationDialogIconType) {
14
+ return <img src={src} className={`confirmation-dialog__icon ${className}`} alt="" />
15
+ }
16
+
17
+ function Body({ title, subtitle = null, children = null }: ConfirmationDialogBodyType) {
18
+ return (
19
+ <div className="flex left column ">
20
+ <h3 className="confirmation-dialog__title lh-1-5 dc__break-word w-100">{title}</h3>
21
+ {subtitle && <div className="confirmation-dialog__subtitle">{subtitle}</div>}
22
+ {children}
23
+ </div>
24
+ )
25
+ }
26
+
27
+ function ButtonGroup({ children }: ConfirmationDialogButtonGroupType) {
28
+ return <div className="flex right confirmation-dialog__button-group">{children}</div>
29
+ }
30
+
31
+ ConfirmationDialog.Icon = Icon
32
+ ConfirmationDialog.Body = Body
33
+ ConfirmationDialog.ButtonGroup = ButtonGroup
34
+ export default ConfirmationDialog
@@ -0,0 +1,69 @@
1
+ import React from 'react'
2
+ import warn from '../../Assets/Img/delete-medium.svg'
3
+ import { Progressing } from '../Progressing'
4
+ import ConfirmationDialog from './ConfirmationDialog'
5
+ import { DeleteDialogProps } from './Types'
6
+
7
+ export const DeleteDialog: React.FC<DeleteDialogProps> & { Description?: React.FC<any> } = function (props) {
8
+ const handleDelete = (e: React.MouseEvent) => {
9
+ if (props.shouldStopPropagation) {
10
+ e.stopPropagation()
11
+ }
12
+
13
+ props.delete()
14
+ }
15
+
16
+ const handleModalClose = (e: React.MouseEvent) => {
17
+ if (props.shouldStopPropagation) {
18
+ e.stopPropagation()
19
+ }
20
+
21
+ props.closeDelete()
22
+ }
23
+
24
+ return (
25
+ <ConfirmationDialog className="confirmation-dialog__body--w-400">
26
+ <ConfirmationDialog.Icon src={warn} />
27
+ <ConfirmationDialog.Body title={props.title}>
28
+ <div className="fs-13 cn-7 lh-1-54 w-100">
29
+ {props.description ? props.description : null}
30
+ {props.children}
31
+ </div>
32
+ </ConfirmationDialog.Body>
33
+ <ConfirmationDialog.ButtonGroup>
34
+ <div className="flex right">
35
+ <button
36
+ type="button"
37
+ className="cta cancel cta-cd-delete-modal ml-16"
38
+ onClick={handleModalClose}
39
+ disabled={props.apiCallInProgress}
40
+ data-testid="dialog-cancel"
41
+ >
42
+ Cancel
43
+ </button>
44
+ <button
45
+ type="button"
46
+ className="cta delete cta-cd-delete-modal ml-16"
47
+ onClick={handleDelete}
48
+ disabled={props.apiCallInProgress || props.disabled}
49
+ data-testid="dialog-delete"
50
+ >
51
+ {props.apiCallInProgress ? (
52
+ <Progressing />
53
+ ) : (
54
+ `${props.deletePrefix || ''}${
55
+ props.buttonPrimaryText ? props.buttonPrimaryText : 'Delete'
56
+ }${props.deletePostfix || ''}`
57
+ )}
58
+ </button>
59
+ </div>
60
+ </ConfirmationDialog.ButtonGroup>
61
+ </ConfirmationDialog>
62
+ )
63
+ }
64
+
65
+ function DeleteDialogDescription(props) {
66
+ return <>{props.children}</>
67
+ }
68
+
69
+ DeleteDialog.Description = DeleteDialogDescription