@devtron-labs/devtron-fe-common-lib 0.0.58-beta-13 → 0.0.58-beta-18

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 (538) 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 +5 -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 +75 -81
  30. package/dist/Common/CustomInput/CustomInput.d.ts +3 -2
  31. package/dist/Common/CustomInput/Types.d.ts +31 -30
  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 -31
  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 +44 -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 +691 -691
  128. package/dist/Common/index.d.ts +50 -51
  129. package/dist/index.d.ts +1 -1
  130. package/dist/index.js +28883 -225
  131. package/package.json +23 -35
  132. package/rollup.config.js +31 -0
  133. package/src/Assets/Icon/ic-add.svg +3 -0
  134. package/src/Assets/Icon/ic-appstatus-cancelled.svg +6 -0
  135. package/src/Assets/Icon/ic-arrow-counter-clockwise.svg +5 -0
  136. package/src/Assets/Icon/ic-check.svg +5 -0
  137. package/src/Assets/Icon/ic-chevron-down.svg +5 -0
  138. package/src/Assets/Icon/ic-copy.svg +3 -0
  139. package/src/Assets/Icon/ic-cross.svg +3 -0
  140. package/src/Assets/Icon/ic-drag.svg +8 -0
  141. package/src/Assets/Icon/ic-enter.svg +3 -0
  142. package/src/Assets/Icon/ic-error-cross.svg +8 -0
  143. package/src/Assets/Icon/ic-error-exclamation.svg +6 -0
  144. package/src/Assets/Icon/ic-error-medium.svg +6 -0
  145. package/src/Assets/Icon/ic-help-outline.svg +3 -0
  146. package/src/Assets/Icon/ic-help.svg +3 -0
  147. package/src/Assets/Icon/ic-info-filled.svg +7 -0
  148. package/src/Assets/Icon/ic-info-outlined.svg +13 -0
  149. package/src/Assets/Icon/ic-minus.svg +3 -0
  150. package/src/Assets/Icon/ic-pencil.svg +3 -0
  151. package/src/Assets/Icon/ic-progressing.svg +6 -0
  152. package/src/Assets/Icon/ic-rotate-devtron.svg +103 -0
  153. package/src/Assets/Icon/ic-search.svg +6 -0
  154. package/src/Assets/Icon/ic-warning.svg +7 -0
  155. package/src/Assets/Icon/inject-tag.svg +5 -0
  156. package/src/Assets/Img/app-not-deployed.png +0 -0
  157. package/src/Assets/Img/delete-medium.svg +15 -0
  158. package/src/Assets/Img/ic-empty-error@2x.png +0 -0
  159. package/src/Assets/Img/ic-loading-failure.png +0 -0
  160. package/src/Assets/Img/ic-not-authorized.svg +62 -0
  161. package/src/Common/AddCDButton/AddCDButton.tsx +68 -0
  162. package/src/Common/AddCDButton/index.ts +2 -0
  163. package/src/Common/AddCDButton/types.ts +38 -0
  164. package/src/Common/AddCDButton/utils.tsx +35 -0
  165. package/src/Common/Api.ts +230 -0
  166. package/src/Common/AppStatus/AppStatus.tsx +64 -0
  167. package/src/Common/AppStatus/constants.ts +53 -0
  168. package/src/Common/AppStatus/index.ts +1 -0
  169. package/src/Common/AppStatus/types.ts +12 -0
  170. package/src/Common/AppStatus/utils.ts +14 -0
  171. package/src/Common/BreadCrumb/BreadCrumb.tsx +105 -0
  172. package/src/Common/BreadCrumb/BreadcrumbStore.tsx +25 -0
  173. package/src/Common/BreadCrumb/Types.ts +30 -0
  174. package/src/Common/CIPipeline.Types.ts +277 -0
  175. package/src/Common/ChartVersionAndTypeSelector.tsx +78 -0
  176. package/src/Common/Checkbox.tsx +36 -0
  177. package/src/Common/ClipboardButton/ClipboardButton.tsx +61 -0
  178. package/src/Common/ClipboardButton/__tests__/ClipboardButton.test.tsx +43 -0
  179. package/src/Common/ClipboardButton/types.ts +7 -0
  180. package/src/Common/Common.service.ts +315 -0
  181. package/src/Common/Constants.ts +254 -0
  182. package/src/Common/CustomInput/CustomInput.tsx +133 -0
  183. package/src/Common/CustomInput/Types.ts +32 -0
  184. package/src/Common/CustomInput/index.ts +2 -0
  185. package/src/Common/CustomTagSelector/PropagateTagInfo.tsx +46 -0
  186. package/src/Common/CustomTagSelector/ResizableTagTextArea.tsx +84 -0
  187. package/src/Common/CustomTagSelector/TagDetails.tsx +76 -0
  188. package/src/Common/CustomTagSelector/TagLabelSelect.tsx +61 -0
  189. package/src/Common/CustomTagSelector/TagLabelValueSelector.tsx +198 -0
  190. package/src/Common/CustomTagSelector/TagSelector.utils.ts +71 -0
  191. package/src/Common/CustomTagSelector/Types.ts +72 -0
  192. package/src/Common/CustomTagSelector/ValidationRules.ts +58 -0
  193. package/src/Common/CustomTagSelector/index.ts +6 -0
  194. package/src/Common/DebouncedSearch/DebouncedSearch.tsx +78 -0
  195. package/src/Common/DebouncedSearch/Types.ts +13 -0
  196. package/src/Common/DebouncedSearch/Utils.ts +19 -0
  197. package/src/Common/DebouncedSearch/__tests__/DebouncedSearch.test.tsx +61 -0
  198. package/src/Common/DeleteComponentModal/DeleteComponent.tsx +95 -0
  199. package/src/Common/DeleteComponentModal/types.ts +15 -0
  200. package/src/Common/DevtronProgressing/DevtronProgressing.tsx +11 -0
  201. package/src/Common/DevtronProgressing/index.ts +1 -0
  202. package/src/Common/DevtronProgressing/types.ts +4 -0
  203. package/src/Common/Dialogs/ConfirmationDialog.tsx +34 -0
  204. package/src/Common/Dialogs/DeleteDialog.tsx +69 -0
  205. package/src/Common/Dialogs/DialogForm.tsx +86 -0
  206. package/src/Common/Dialogs/ForceDeleteDialog.tsx +19 -0
  207. package/src/Common/Dialogs/Types.ts +47 -0
  208. package/src/Common/Dialogs/index.ts +4 -0
  209. package/src/Common/DraggableWrapper/DraggableButton.tsx +14 -0
  210. package/src/Common/DraggableWrapper/DraggableWrapper.tsx +116 -0
  211. package/src/Common/DraggableWrapper/index.ts +3 -0
  212. package/src/Common/DraggableWrapper/types.ts +27 -0
  213. package/src/Common/Drawer/Drawer.scss +40 -0
  214. package/src/Common/Drawer/Drawer.tsx +49 -0
  215. package/src/Common/EmptyState/EmptyState.tsx +42 -0
  216. package/src/Common/EmptyState/GenericEmptyState.tsx +81 -0
  217. package/src/Common/EmptyState/emptyState.scss +74 -0
  218. package/src/Common/Error.tsx +61 -0
  219. package/src/Common/ErrorScreenNotFound.tsx +31 -0
  220. package/src/Common/Grid/Grid.tsx +44 -0
  221. package/src/Common/Grid/types.ts +11 -0
  222. package/src/Common/Helper.tsx +576 -0
  223. package/src/Common/Hooks/UseClickOutside/UseClickOutside.tsx +15 -0
  224. package/src/Common/Hooks/UseSuperAdmin/UseSuperAdmin.tsx +24 -0
  225. package/src/Common/Hooks/UseSuperAdmin/types.ts +3 -0
  226. package/src/Common/Hooks/UseWindowSize/UseWindowSize.tsx +31 -0
  227. package/src/Common/Hooks/index.ts +3 -0
  228. package/src/Common/ImageTags.Types.ts +44 -0
  229. package/src/Common/ImageTags.tsx +586 -0
  230. package/src/Common/InfoColorBar/InfoColourbar.tsx +80 -0
  231. package/src/Common/InfoColorBar/infoColourBar.scss +28 -0
  232. package/src/Common/Modals/Modal.tsx +68 -0
  233. package/src/Common/Modals/OpaqueModal.tsx +36 -0
  234. package/src/Common/Modals/VisibleModal.tsx +55 -0
  235. package/src/Common/Modals/VisibleModal2.tsx +35 -0
  236. package/src/Common/MultiSelectCustomization.tsx +148 -0
  237. package/src/Common/Pagination/PageSizeSelector.tsx +78 -0
  238. package/src/Common/Pagination/Pagination.tsx +127 -0
  239. package/src/Common/Pagination/constants.ts +6 -0
  240. package/src/Common/Pagination/index.tsx +3 -0
  241. package/src/Common/Pagination/pagination.scss +123 -0
  242. package/src/Common/Pagination/types.ts +55 -0
  243. package/src/Common/Pagination/utils.tsx +24 -0
  244. package/src/Common/Policy.Types.ts +63 -0
  245. package/src/Common/PopupMenu.tsx +199 -0
  246. package/src/Common/Progressing.tsx +53 -0
  247. package/src/Common/RJSF/Form.tsx +29 -0
  248. package/src/Common/RJSF/common/FieldRow.tsx +35 -0
  249. package/src/Common/RJSF/common/types.ts +9 -0
  250. package/src/Common/RJSF/config.ts +37 -0
  251. package/src/Common/RJSF/constants.ts +10 -0
  252. package/src/Common/RJSF/index.ts +3 -0
  253. package/src/Common/RJSF/rjsfForm.scss +18 -0
  254. package/src/Common/RJSF/templates/ArrayFieldItemTemplate.tsx +31 -0
  255. package/src/Common/RJSF/templates/ArrayFieldTemplate.tsx +78 -0
  256. package/src/Common/RJSF/templates/BaseInput.tsx +16 -0
  257. package/src/Common/RJSF/templates/ButtonTemplates/AddButton.tsx +18 -0
  258. package/src/Common/RJSF/templates/ButtonTemplates/RemoveButton.tsx +10 -0
  259. package/src/Common/RJSF/templates/ButtonTemplates/SubmitButton.tsx +18 -0
  260. package/src/Common/RJSF/templates/ButtonTemplates/index.ts +3 -0
  261. package/src/Common/RJSF/templates/Description.tsx +12 -0
  262. package/src/Common/RJSF/templates/Field.tsx +30 -0
  263. package/src/Common/RJSF/templates/FieldErrorTemplate.tsx +25 -0
  264. package/src/Common/RJSF/templates/ObjectFieldTemplate.tsx +105 -0
  265. package/src/Common/RJSF/templates/TitleField.tsx +9 -0
  266. package/src/Common/RJSF/templates/WrapIfAdditionalTemplate.tsx +51 -0
  267. package/src/Common/RJSF/templates/index.ts +10 -0
  268. package/src/Common/RJSF/types.ts +4 -0
  269. package/src/Common/RJSF/utils.ts +123 -0
  270. package/src/Common/RJSF/widgets/Checkbox.tsx +44 -0
  271. package/src/Common/RJSF/widgets/Select.tsx +77 -0
  272. package/src/Common/RJSF/widgets/index.ts +2 -0
  273. package/src/Common/RadioGroup/RadioGroup.tsx +105 -0
  274. package/src/Common/RadioGroup/radioGroup.scss +46 -0
  275. package/src/Common/RadioGroup.tsx +53 -0
  276. package/src/Common/Reload.tsx +23 -0
  277. package/src/Common/ResizableTextarea.tsx +73 -0
  278. package/src/Common/SearchBar/SearchBar.component.tsx +122 -0
  279. package/src/Common/SearchBar/index.ts +2 -0
  280. package/src/Common/SearchBar/searchBar.scss +31 -0
  281. package/src/Common/SearchBar/types.ts +45 -0
  282. package/src/Common/Security/ScanVulnerabilitiesTable.tsx +55 -0
  283. package/src/Common/Security/scanVulnerabilities.css +69 -0
  284. package/src/Common/ServerError.ts +31 -0
  285. package/src/Common/TippyCustomized.tsx +172 -0
  286. package/src/Common/ToastBody.tsx +62 -0
  287. package/src/Common/Toggle/Toggle.scss +78 -0
  288. package/src/Common/Toggle/Toggle.tsx +50 -0
  289. package/src/Common/Types.ts +764 -0
  290. package/src/Common/index.ts +50 -0
  291. package/src/custom.d.ts +13 -0
  292. package/src/index.ts +1 -0
  293. package/tsconfig.json +40 -0
  294. package/dist/CodeEditor-f831f400.js +0 -103695
  295. package/dist/Common/AddCDButton/AddCDButton.js +0 -59
  296. package/dist/Common/AddCDButton/index.js +0 -6
  297. package/dist/Common/AddCDButton/types.js +0 -1
  298. package/dist/Common/AddCDButton/utils.js +0 -19
  299. package/dist/Common/Api.js +0 -169
  300. package/dist/Common/AppStatus/AppStatus.js +0 -37
  301. package/dist/Common/AppStatus/constants.js +0 -37
  302. package/dist/Common/AppStatus/index.js +0 -4
  303. package/dist/Common/AppStatus/types.js +0 -1
  304. package/dist/Common/AppStatus/utils.js +0 -8
  305. package/dist/Common/BreadCrumb/BreadCrumb.js +0 -73
  306. package/dist/Common/BreadCrumb/BreadcrumbStore.js +0 -22
  307. package/dist/Common/BreadCrumb/Types.js +0 -1
  308. package/dist/Common/CIPipeline.Types.js +0 -10
  309. package/dist/Common/ChartVersionAndTypeSelector.js +0 -61
  310. package/dist/Common/Checkbox.js +0 -28
  311. package/dist/Common/ClipboardButton/ClipboardButton.js +0 -40
  312. package/dist/Common/ClipboardButton/__tests__/ClipboardButton.test.js +0 -27
  313. package/dist/Common/ClipboardButton/types.js +0 -1
  314. package/dist/Common/CodeEditor/CodeEditor.d.ts +0 -47
  315. package/dist/Common/CodeEditor/CodeEditor.js +0 -15
  316. package/dist/Common/Common.service.js +0 -196
  317. package/dist/Common/Constants.js +0 -239
  318. package/dist/Common/CustomInput/CustomInput.js +0 -81
  319. package/dist/Common/CustomInput/Types.js +0 -1
  320. package/dist/Common/CustomInput/index.js +0 -4
  321. package/dist/Common/CustomTagSelector/PropagateTagInfo.js +0 -43
  322. package/dist/Common/CustomTagSelector/ResizableTagTextArea.js +0 -58
  323. package/dist/Common/CustomTagSelector/TagDetails.js +0 -73
  324. package/dist/Common/CustomTagSelector/TagLabelSelect.js +0 -53
  325. package/dist/Common/CustomTagSelector/TagLabelValueSelector.js +0 -121
  326. package/dist/Common/CustomTagSelector/TagSelector.utils.js +0 -61
  327. package/dist/Common/CustomTagSelector/Types.js +0 -1
  328. package/dist/Common/CustomTagSelector/ValidationRules.js +0 -35
  329. package/dist/Common/CustomTagSelector/index.js +0 -12
  330. package/dist/Common/DebouncedSearch/DebouncedSearch.js +0 -56
  331. package/dist/Common/DebouncedSearch/Types.js +0 -1
  332. package/dist/Common/DebouncedSearch/Utils.js +0 -19
  333. package/dist/Common/DebouncedSearch/__tests__/DebouncedSearch.test.js +0 -34
  334. package/dist/Common/DeleteComponentModal/DeleteComponent.js +0 -63
  335. package/dist/Common/DeleteComponentModal/types.js +0 -1
  336. package/dist/Common/DevtronProgressing/DevtronProgressing.js +0 -95
  337. package/dist/Common/DevtronProgressing/index.js +0 -4
  338. package/dist/Common/DevtronProgressing/types.js +0 -1
  339. package/dist/Common/Dialogs/ConfirmationDialog.js +0 -13
  340. package/dist/Common/Dialogs/DeleteDialog.js +0 -46
  341. package/dist/Common/Dialogs/DialogForm.js +0 -63
  342. package/dist/Common/Dialogs/ForceDeleteDialog.js +0 -28
  343. package/dist/Common/Dialogs/Types.js +0 -1
  344. package/dist/Common/Dialogs/index.js +0 -11
  345. package/dist/Common/DraggableWrapper/DraggableButton.js +0 -16
  346. package/dist/Common/DraggableWrapper/DraggableWrapper.js +0 -73
  347. package/dist/Common/DraggableWrapper/index.js +0 -8
  348. package/dist/Common/DraggableWrapper/types.js +0 -4
  349. package/dist/Common/Drawer/Drawer.js +0 -22
  350. package/dist/Common/EmptyState/EmptyState.js +0 -25
  351. package/dist/Common/EmptyState/GenericEmptyState.js +0 -79
  352. package/dist/Common/Error.js +0 -49
  353. package/dist/Common/ErrorScreenNotFound.js +0 -22
  354. package/dist/Common/Grid/Grid.js +0 -31
  355. package/dist/Common/Grid/types.js +0 -1
  356. package/dist/Common/Helper.js +0 -39
  357. package/dist/Common/Hooks/UseClickOutside/UseClickOutside.js +0 -14
  358. package/dist/Common/Hooks/UseSuperAdmin/UseSuperAdmin.js +0 -16
  359. package/dist/Common/Hooks/UseSuperAdmin/types.js +0 -1
  360. package/dist/Common/Hooks/UseWindowSize/UseWindowSize.js +0 -17
  361. package/dist/Common/Hooks/index.js +0 -8
  362. package/dist/Common/ImageTags.Types.js +0 -1
  363. package/dist/Common/ImageTags.js +0 -382
  364. package/dist/Common/InfoColorBar/InfoColourbar.js +0 -67
  365. package/dist/Common/Modals/Modal.js +0 -48
  366. package/dist/Common/Modals/OpaqueModal.js +0 -40
  367. package/dist/Common/Modals/VisibleModal.js +0 -39
  368. package/dist/Common/Modals/VisibleModal2.js +0 -39
  369. package/dist/Common/MultiSelectCustomization.js +0 -97
  370. package/dist/Common/Pagination/PageSizeSelector.js +0 -51
  371. package/dist/Common/Pagination/Pagination.js +0 -98
  372. package/dist/Common/Pagination/constants.js +0 -9
  373. package/dist/Common/Pagination/index.js +0 -4
  374. package/dist/Common/Pagination/types.js +0 -1
  375. package/dist/Common/Pagination/utils.js +0 -15
  376. package/dist/Common/Policy.Types.js +0 -6
  377. package/dist/Common/PopupMenu.js +0 -146
  378. package/dist/Common/Progressing.js +0 -49
  379. package/dist/Common/RJSF/Form.js +0 -25
  380. package/dist/Common/RJSF/common/FieldRow.js +0 -25
  381. package/dist/Common/RJSF/common/types.js +0 -1
  382. package/dist/Common/RJSF/config.js +0 -33
  383. package/dist/Common/RJSF/constants.js +0 -10
  384. package/dist/Common/RJSF/index.js +0 -7
  385. package/dist/Common/RJSF/templates/ArrayFieldItemTemplate.js +0 -30
  386. package/dist/Common/RJSF/templates/ArrayFieldTemplate.js +0 -60
  387. package/dist/Common/RJSF/templates/BaseInput.js +0 -16
  388. package/dist/Common/RJSF/templates/ButtonTemplates/AddButton.js +0 -18
  389. package/dist/Common/RJSF/templates/ButtonTemplates/RemoveButton.js +0 -6
  390. package/dist/Common/RJSF/templates/ButtonTemplates/SubmitButton.js +0 -9
  391. package/dist/Common/RJSF/templates/ButtonTemplates/index.js +0 -8
  392. package/dist/Common/RJSF/templates/Description.js +0 -9
  393. package/dist/Common/RJSF/templates/Field.js +0 -31
  394. package/dist/Common/RJSF/templates/FieldErrorTemplate.js +0 -13
  395. package/dist/Common/RJSF/templates/ObjectFieldTemplate.js +0 -71
  396. package/dist/Common/RJSF/templates/TitleField.js +0 -8
  397. package/dist/Common/RJSF/templates/WrapIfAdditionalTemplate.js +0 -43
  398. package/dist/Common/RJSF/templates/index.js +0 -26
  399. package/dist/Common/RJSF/types.js +0 -1
  400. package/dist/Common/RJSF/utils.js +0 -95
  401. package/dist/Common/RJSF/widgets/Checkbox.js +0 -39
  402. package/dist/Common/RJSF/widgets/Select.js +0 -625
  403. package/dist/Common/RJSF/widgets/index.js +0 -6
  404. package/dist/Common/RadioGroup/RadioGroup.js +0 -69
  405. package/dist/Common/RadioGroup.js +0 -53
  406. package/dist/Common/Reload.js +0 -16
  407. package/dist/Common/ResizableTextarea.js +0 -60
  408. package/dist/Common/SearchBar/SearchBar.component.js +0 -66
  409. package/dist/Common/SearchBar/index.js +0 -4
  410. package/dist/Common/SearchBar/types.js +0 -1
  411. package/dist/Common/Security/ScanVulnerabilitiesTable.js +0 -49
  412. package/dist/Common/Select/Select.d.ts +0 -4
  413. package/dist/Common/Select/Select.js +0 -193
  414. package/dist/Common/Select/types.d.ts +0 -29
  415. package/dist/Common/Select/types.js +0 -1
  416. package/dist/Common/ServerError.js +0 -26
  417. package/dist/Common/TippyCustomized.js +0 -10
  418. package/dist/Common/ToastBody.js +0 -41
  419. package/dist/Common/Toggle/Toggle.js +0 -40
  420. package/dist/Common/Types.js +0 -24
  421. package/dist/Common/index.js +0 -226
  422. package/dist/Helper-b720768b.js +0 -9837
  423. package/dist/TippyCustomized-b66513ba.js +0 -124
  424. package/dist/_commonjsHelpers-aeeeeb92.js +0 -30
  425. package/dist/abap-9f67f57a.js +0 -1314
  426. package/dist/apex-ff62e532.js +0 -315
  427. package/dist/assets/CodeEditor.css +0 -1
  428. package/dist/assets/Drawer.css +0 -1
  429. package/dist/assets/Form.css +0 -1
  430. package/dist/assets/GenericEmptyState.css +0 -1
  431. package/dist/assets/InfoColourbar.css +0 -1
  432. package/dist/assets/Pagination.css +0 -1
  433. package/dist/assets/RadioGroup.css +0 -1
  434. package/dist/assets/ScanVulnerabilitiesTable.css +0 -1
  435. package/dist/assets/SearchBar.component.css +0 -1
  436. package/dist/assets/Select.css +0 -1
  437. package/dist/assets/TippyCustomized.css +0 -1
  438. package/dist/assets/Toggle.css +0 -1
  439. package/dist/assets/editor.worker-d26000ef.js +0 -9
  440. package/dist/assets/json.worker-f23a4654.js +0 -40
  441. package/dist/assets/yaml.worker-64fecd27.js +0 -463
  442. package/dist/azcli-31e64a7f.js +0 -74
  443. package/dist/bat-0ffe897e.js +0 -95
  444. package/dist/bicep-3414a2b1.js +0 -108
  445. package/dist/cameligo-df1f3f25.js +0 -168
  446. package/dist/clojure-65b0f010.js +0 -754
  447. package/dist/coffee-437f0fba.js +0 -228
  448. package/dist/cpp-66843dd5.js +0 -390
  449. package/dist/csharp-621d9a49.js +0 -320
  450. package/dist/csp-de0d5244.js +0 -57
  451. package/dist/css-7cd5ed4c.js +0 -186
  452. package/dist/cssMode-3b27e147.js +0 -1446
  453. package/dist/cypher-70ad96fe.js +0 -262
  454. package/dist/dart-33ae3739.js +0 -270
  455. package/dist/dockerfile-f2274a50.js +0 -132
  456. package/dist/ecl-3b8294a3.js +0 -454
  457. package/dist/elixir-b9dcc73a.js +0 -489
  458. package/dist/extends-70f3d2a3.js +0 -13
  459. package/dist/flow9-bdde8316.js +0 -141
  460. package/dist/freemarker2-fdbf3c64.js +0 -643
  461. package/dist/fsharp-eac2e449.js +0 -210
  462. package/dist/go-d12ed8d4.js +0 -208
  463. package/dist/graphql-c7356b69.js +0 -141
  464. package/dist/handlebars-42bbca08.js +0 -391
  465. package/dist/hcl-e883a0d4.js +0 -177
  466. package/dist/html-2b761b4c.js +0 -281
  467. package/dist/htmlMode-5e3287f4.js +0 -1456
  468. package/dist/ic-add-4787ded5.js +0 -5
  469. package/dist/ic-chevron-down-eb7fd953.js +0 -6
  470. package/dist/ic-copy-118b83dc.js +0 -5
  471. package/dist/ic-cross-0e71861d.js +0 -6
  472. package/dist/ic-error-cross-2760059a.js +0 -5
  473. package/dist/ic-error-exclamation-5f9af461.js +0 -5
  474. package/dist/ic-info-filled-31a15add.js +0 -6
  475. package/dist/ic-info-outlined-8fa45e87.js +0 -5
  476. package/dist/ic-warning-42534af1.js +0 -5
  477. package/dist/ini-425ab711.js +0 -68
  478. package/dist/inject-tag-824bf92c.js +0 -5
  479. package/dist/java-2bc0fd68.js +0 -221
  480. package/dist/javascript-7349b260.js +0 -75
  481. package/dist/jsonMode-b06032c4.js +0 -1867
  482. package/dist/jsx-runtime-0dcb030c.js +0 -667
  483. package/dist/julia-1c932615.js +0 -496
  484. package/dist/kotlin-1ab839c8.js +0 -245
  485. package/dist/less-6fe856f5.js +0 -168
  486. package/dist/lexon-4955ac52.js +0 -151
  487. package/dist/liquid-4f07e77f.js +0 -238
  488. package/dist/lua-3cca0047.js +0 -157
  489. package/dist/m3-132e9cb6.js +0 -210
  490. package/dist/markdown-ea59a0c1.js +0 -202
  491. package/dist/mips-19811f4b.js +0 -194
  492. package/dist/msdax-69954a10.js +0 -377
  493. package/dist/mysql-82088e5d.js +0 -876
  494. package/dist/objective-c-1976eccc.js +0 -188
  495. package/dist/pascal-8ef177cb.js +0 -245
  496. package/dist/pascaligo-bc517b9e.js +0 -158
  497. package/dist/perl-8b93582c.js +0 -599
  498. package/dist/pgsql-00c11a6d.js +0 -847
  499. package/dist/php-4c8c276f.js +0 -471
  500. package/dist/pla-e9b4ffb1.js +0 -131
  501. package/dist/postiats-2071af8c.js +0 -544
  502. package/dist/powerquery-8e388ceb.js +0 -890
  503. package/dist/powershell-e35db398.js +0 -233
  504. package/dist/protobuf-a24b9176.js +0 -422
  505. package/dist/pug-2c94d9b8.js +0 -393
  506. package/dist/python-16256213.js +0 -259
  507. package/dist/qsharp-d730d7fe.js +0 -282
  508. package/dist/r-be193556.js +0 -245
  509. package/dist/razor-b4aa4372.js +0 -512
  510. package/dist/react-select.esm-97f26847.js +0 -4160
  511. package/dist/react-toastify.esm-1042de65.js +0 -792
  512. package/dist/react.esm-2c92920f.js +0 -13727
  513. package/dist/redis-9690c6ac.js +0 -298
  514. package/dist/redshift-6bdcdeaa.js +0 -806
  515. package/dist/restructuredtext-a08c1d20.js +0 -162
  516. package/dist/ruby-2247692b.js +0 -444
  517. package/dist/rust-1dffb4d5.js +0 -337
  518. package/dist/sb-136598e9.js +0 -110
  519. package/dist/scala-b1100fed.js +0 -353
  520. package/dist/scheme-038c8094.js +0 -114
  521. package/dist/scss-700d1b52.js +0 -244
  522. package/dist/shell-86c16e0f.js +0 -224
  523. package/dist/solidity-c05fdf3c.js +0 -1351
  524. package/dist/sophia-cd645d71.js +0 -190
  525. package/dist/sparql-01d9ec9c.js +0 -193
  526. package/dist/sql-4c33df41.js +0 -818
  527. package/dist/st-52cf1408.js +0 -414
  528. package/dist/swift-13c792ba.js +0 -315
  529. package/dist/systemverilog-0bd8b730.js +0 -556
  530. package/dist/tcl-463d7c75.js +0 -232
  531. package/dist/tippy-react.esm-8dc66a75.js +0 -2018
  532. package/dist/tsMode-426d35c9.js +0 -811
  533. package/dist/twig-0d98f5ec.js +0 -323
  534. package/dist/typescript-936e1f48.js +0 -328
  535. package/dist/vb-3a2b0a51.js +0 -364
  536. package/dist/wgsl-b2ddb3e4.js +0 -420
  537. package/dist/xml-5430ab58.js +0 -95
  538. package/dist/yaml-9bde48c0.js +0 -184
@@ -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
@@ -0,0 +1,86 @@
1
+ import React, { Component, createContext } from 'react';
2
+ import { VisibleModal } from '../Modals/VisibleModal';
3
+ import close from '../../Assets/Icon/ic-cross.svg';
4
+ import { Progressing } from '../Progressing'
5
+ import { DialogFormProps } from './Types';
6
+ //TODO: may not need context
7
+ const DialogFormContext = createContext({ title: '', isLoading: false, close: (event) => {}, onSave: (event) => {} });
8
+
9
+ export class DialogForm extends Component<DialogFormProps> {
10
+ constructor(props) {
11
+ super(props);
12
+ this.escFunction = this.escFunction.bind(this);
13
+ }
14
+
15
+ componentDidMount() {
16
+ document.addEventListener('keydown', this.escFunction);
17
+ }
18
+
19
+ componentWillUnmount() {
20
+ document.removeEventListener('keydown', this.escFunction);
21
+ }
22
+
23
+ escFunction(event) {
24
+ if (event.keyCode === 27 && this.props.closeOnESC) {
25
+ this.props.close(event);
26
+ }
27
+ }
28
+
29
+ render() {
30
+ return (
31
+ <DialogFormContext.Provider
32
+ value={{
33
+ title: this.props.title,
34
+ isLoading: this.props.isLoading,
35
+ close: this.props.close,
36
+ onSave: this.props.onSave,
37
+ }}
38
+ >
39
+ <VisibleModal className="">
40
+ <div className={`modal__body ${this.props.className || ''}`}>
41
+ <div className={`modal__header ${this.props.headerClassName || ''}`}>
42
+ <h1 className="modal__title">{this.props.title}</h1>
43
+ <button type="button" className="dc__transparent" onClick={this.props.close}>
44
+ {' '}
45
+ <img src={close} alt="close" />
46
+ </button>
47
+ </div>
48
+ <DialogFormContext.Consumer>
49
+ {(context) => {
50
+ return (
51
+ <form
52
+ noValidate
53
+ onSubmit={(e) => {
54
+ e.preventDefault();
55
+ if (!context.isLoading) {
56
+ context.onSave(e);
57
+ }
58
+ }}
59
+ >
60
+ {this.props.children}
61
+ </form>
62
+ );
63
+ }}
64
+ </DialogFormContext.Consumer>
65
+ </div>
66
+ </VisibleModal>
67
+ </DialogFormContext.Provider>
68
+ );
69
+ }
70
+ }
71
+
72
+ export class DialogFormSubmit extends Component<{ tabIndex: number }> {
73
+ render() {
74
+ return (
75
+ <DialogFormContext.Consumer>
76
+ {(context) => {
77
+ return (
78
+ <button type="submit" className="cta dc__align-right" tabIndex={this.props.tabIndex}>
79
+ {context.isLoading ? <Progressing /> : this.props.children}
80
+ </button>
81
+ );
82
+ }}
83
+ </DialogFormContext.Consumer>
84
+ );
85
+ }
86
+ }
@@ -0,0 +1,19 @@
1
+ import React from 'react'
2
+ import { ForceDeleteDialogType } from './Types';
3
+ import { DeleteDialog } from './DeleteDialog';
4
+
5
+ export default function ForceDeleteDialog({ onClickDelete, closeDeleteModal, forceDeleteDialogTitle, forceDeleteDialogMessage }: ForceDeleteDialogType) {
6
+ return (
7
+ <div>
8
+ <DeleteDialog title={forceDeleteDialogTitle}
9
+ delete={onClickDelete}
10
+ closeDelete={closeDeleteModal}
11
+ deletePrefix="Force ">
12
+ <DeleteDialog.Description >
13
+ <p className="mt-12 mb-12 p-8 dc__break-word dc__window-bg">Error: {forceDeleteDialogMessage}</p>
14
+ <p>Do you want to force delete?</p>
15
+ </DeleteDialog.Description>
16
+ </DeleteDialog>
17
+ </div>
18
+ )
19
+ }
@@ -0,0 +1,47 @@
1
+ import { ReactNode } from "react"
2
+
3
+ export interface DeleteDialogProps {
4
+ title: string
5
+ description?: string
6
+ closeDelete: () => void
7
+ delete: () => any
8
+ deletePrefix?: string
9
+ deletePostfix?: string
10
+ apiCallInProgress?: boolean
11
+ dataTestId?: string
12
+ buttonPrimaryText?: string
13
+ shouldStopPropagation?: boolean
14
+ disabled?: boolean
15
+ }
16
+
17
+ export interface ForceDeleteDialogType {
18
+ onClickDelete: () => void
19
+ closeDeleteModal: () => void
20
+ forceDeleteDialogTitle: string
21
+ forceDeleteDialogMessage: string
22
+ }
23
+ export interface ConfirmationDialogType {
24
+ className?: string
25
+ children: any
26
+ }
27
+ export interface ConfirmationDialogIconType {
28
+ src: string
29
+ className?: string
30
+ }
31
+ export interface ConfirmationDialogBodyType {
32
+ title: string
33
+ subtitle?: ReactNode
34
+ children?: any
35
+ }
36
+ export interface ConfirmationDialogButtonGroupType {
37
+ children: any
38
+ }
39
+ export interface DialogFormProps {
40
+ className: string;
41
+ title: string;
42
+ isLoading: boolean;
43
+ closeOnESC?: boolean;
44
+ close: (event) => void;
45
+ onSave: (event) => void;
46
+ headerClassName?: string;
47
+ }
@@ -0,0 +1,4 @@
1
+ export { default as ConfirmationDialog } from './ConfirmationDialog'
2
+ export * from './DeleteDialog'
3
+ export * from './DialogForm'
4
+ export { default as ForceDeleteDialog } from './ForceDeleteDialog'
@@ -0,0 +1,14 @@
1
+ import React from 'react'
2
+ import { ReactComponent as ICDrag } from '../../Assets/Icon/ic-drag.svg'
3
+ import { DraggableButtonProps } from './types'
4
+
5
+ export default function DraggableButton({ dragClassName }: DraggableButtonProps) {
6
+ return (
7
+ <button
8
+ type="button"
9
+ className={`${dragClassName} dc__outline-none-imp dc__no-border p-0 dc__transparent h-20`}
10
+ >
11
+ <ICDrag className="dc__grabbable icon-dim-20 fcn-6" />
12
+ </button>
13
+ )
14
+ }