@devtron-labs/devtron-fe-common-lib 0.0.55-beta-1 → 0.0.55

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 (551) 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 +67 -73
  30. package/dist/Common/CustomInput/CustomInput.d.ts +3 -3
  31. package/dist/Common/CustomInput/Types.d.ts +29 -29
  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 -3
  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 -4
  46. package/dist/Common/DeleteComponentModal/types.d.ts +15 -15
  47. package/dist/Common/DevtronProgressing/DevtronProgressing.d.ts +3 -3
  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 -9
  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 -28
  62. package/dist/Common/EmptyState/GenericEmptyState.d.ts +5 -4
  63. package/dist/Common/Error.d.ts +17 -17
  64. package/dist/Common/ErrorScreenNotFound.d.ts +3 -3
  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 -4
  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 -8
  89. package/dist/Common/Progressing.d.ts +4 -4
  90. package/dist/Common/RJSF/Form.d.ts +4 -2
  91. package/dist/Common/RJSF/common/FieldRow.d.ts +6 -5
  92. package/dist/Common/RJSF/common/types.d.ts +8 -8
  93. package/dist/Common/RJSF/config.d.ts +4 -4
  94. package/dist/Common/RJSF/constants.d.ts +7 -7
  95. package/dist/Common/RJSF/index.d.ts +3 -3
  96. package/dist/Common/RJSF/templates/ArrayFieldItemTemplate.d.ts +3 -2
  97. package/dist/Common/RJSF/templates/ArrayFieldTemplate.d.ts +3 -2
  98. package/dist/Common/RJSF/templates/BaseInput.d.ts +3 -2
  99. package/dist/Common/RJSF/templates/ButtonTemplates/AddButton.d.ts +3 -2
  100. package/dist/Common/RJSF/templates/ButtonTemplates/RemoveButton.d.ts +3 -2
  101. package/dist/Common/RJSF/templates/ButtonTemplates/SubmitButton.d.ts +3 -2
  102. package/dist/Common/RJSF/templates/ButtonTemplates/index.d.ts +3 -3
  103. package/dist/Common/RJSF/templates/Description.d.ts +3 -2
  104. package/dist/Common/RJSF/templates/Field.d.ts +3 -2
  105. package/dist/Common/RJSF/templates/FieldErrorTemplate.d.ts +3 -2
  106. package/dist/Common/RJSF/templates/ObjectFieldTemplate.d.ts +3 -2
  107. package/dist/Common/RJSF/templates/TitleField.d.ts +3 -2
  108. package/dist/Common/RJSF/templates/WrapIfAdditionalTemplate.d.ts +3 -2
  109. package/dist/Common/RJSF/templates/index.d.ts +10 -10
  110. package/dist/Common/RJSF/types.d.ts +3 -3
  111. package/dist/Common/RJSF/utils.d.ts +26 -25
  112. package/dist/Common/RJSF/widgets/Checkbox.d.ts +3 -2
  113. package/dist/Common/RJSF/widgets/Select.d.ts +3 -2
  114. package/dist/Common/RJSF/widgets/index.d.ts +2 -2
  115. package/dist/Common/RadioGroup/RadioGroup.d.ts +17 -16
  116. package/dist/Common/RadioGroup.d.ts +8 -8
  117. package/dist/Common/Reload.d.ts +3 -3
  118. package/dist/Common/ResizableTextarea.d.ts +3 -3
  119. package/dist/Common/SearchBar/SearchBar.component.d.ts +39 -37
  120. package/dist/Common/SearchBar/index.d.ts +2 -2
  121. package/dist/Common/SearchBar/types.d.ts +35 -35
  122. package/dist/Common/Security/ScanVulnerabilitiesTable.d.ts +4 -3
  123. package/dist/Common/ServerError.d.ts +15 -15
  124. package/dist/Common/TippyCustomized.d.ts +4 -3
  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 +690 -690
  128. package/dist/Common/index.d.ts +50 -51
  129. package/dist/index.d.ts +1 -1
  130. package/dist/index.js +28865 -223
  131. package/package.json +13 -34
  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 +245 -0
  182. package/src/Common/CustomInput/CustomInput.tsx +131 -0
  183. package/src/Common/CustomInput/Types.ts +30 -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 +49 -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 +120 -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 +36 -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 +763 -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/BaseInput-8101e714.js +0 -1686
  295. package/dist/CodeEditor-0a5bfd53.js +0 -103695
  296. package/dist/Common/AddCDButton/AddCDButton.js +0 -61
  297. package/dist/Common/AddCDButton/index.js +0 -6
  298. package/dist/Common/AddCDButton/types.js +0 -1
  299. package/dist/Common/AddCDButton/utils.js +0 -19
  300. package/dist/Common/Api.js +0 -167
  301. package/dist/Common/AppStatus/AppStatus.js +0 -37
  302. package/dist/Common/AppStatus/constants.js +0 -37
  303. package/dist/Common/AppStatus/index.js +0 -4
  304. package/dist/Common/AppStatus/types.js +0 -1
  305. package/dist/Common/AppStatus/utils.js +0 -8
  306. package/dist/Common/BreadCrumb/BreadCrumb.js +0 -71
  307. package/dist/Common/BreadCrumb/BreadcrumbStore.js +0 -22
  308. package/dist/Common/BreadCrumb/Types.js +0 -1
  309. package/dist/Common/CIPipeline.Types.js +0 -10
  310. package/dist/Common/ChartVersionAndTypeSelector.js +0 -61
  311. package/dist/Common/Checkbox.js +0 -28
  312. package/dist/Common/ClipboardButton/ClipboardButton.js +0 -40
  313. package/dist/Common/ClipboardButton/__tests__/ClipboardButton.test.d.ts +0 -1
  314. package/dist/Common/ClipboardButton/__tests__/ClipboardButton.test.js +0 -27
  315. package/dist/Common/ClipboardButton/types.js +0 -1
  316. package/dist/Common/CodeEditor/CodeEditor.d.ts +0 -47
  317. package/dist/Common/CodeEditor/CodeEditor.js +0 -15
  318. package/dist/Common/Common.service.js +0 -191
  319. package/dist/Common/Constants.js +0 -234
  320. package/dist/Common/CustomInput/CustomInput.js +0 -80
  321. package/dist/Common/CustomInput/Types.js +0 -1
  322. package/dist/Common/CustomInput/index.js +0 -4
  323. package/dist/Common/CustomTagSelector/PropagateTagInfo.js +0 -43
  324. package/dist/Common/CustomTagSelector/ResizableTagTextArea.js +0 -58
  325. package/dist/Common/CustomTagSelector/TagDetails.js +0 -65
  326. package/dist/Common/CustomTagSelector/TagLabelSelect.js +0 -50
  327. package/dist/Common/CustomTagSelector/TagLabelValueSelector.js +0 -121
  328. package/dist/Common/CustomTagSelector/TagSelector.utils.js +0 -61
  329. package/dist/Common/CustomTagSelector/Types.js +0 -1
  330. package/dist/Common/CustomTagSelector/ValidationRules.js +0 -35
  331. package/dist/Common/CustomTagSelector/index.js +0 -12
  332. package/dist/Common/DebouncedSearch/DebouncedSearch.js +0 -56
  333. package/dist/Common/DebouncedSearch/Types.js +0 -1
  334. package/dist/Common/DebouncedSearch/Utils.js +0 -19
  335. package/dist/Common/DebouncedSearch/__tests__/DebouncedSearch.test.d.ts +0 -1
  336. package/dist/Common/DebouncedSearch/__tests__/DebouncedSearch.test.js +0 -34
  337. package/dist/Common/DeleteComponentModal/DeleteComponent.js +0 -63
  338. package/dist/Common/DeleteComponentModal/types.js +0 -1
  339. package/dist/Common/DevtronProgressing/DevtronProgressing.js +0 -98
  340. package/dist/Common/DevtronProgressing/index.js +0 -4
  341. package/dist/Common/DevtronProgressing/types.js +0 -1
  342. package/dist/Common/Dialogs/ConfirmationDialog.js +0 -24
  343. package/dist/Common/Dialogs/DeleteDialog.js +0 -49
  344. package/dist/Common/Dialogs/DialogForm.js +0 -63
  345. package/dist/Common/Dialogs/ForceDeleteDialog.js +0 -23
  346. package/dist/Common/Dialogs/Types.js +0 -1
  347. package/dist/Common/Dialogs/index.js +0 -11
  348. package/dist/Common/DraggableWrapper/DraggableButton.js +0 -16
  349. package/dist/Common/DraggableWrapper/DraggableWrapper.js +0 -1499
  350. package/dist/Common/DraggableWrapper/index.js +0 -8
  351. package/dist/Common/DraggableWrapper/types.js +0 -4
  352. package/dist/Common/Drawer/Drawer.js +0 -22
  353. package/dist/Common/EmptyState/EmptyState.js +0 -32
  354. package/dist/Common/EmptyState/GenericEmptyState.js +0 -53
  355. package/dist/Common/Error.js +0 -49
  356. package/dist/Common/ErrorScreenNotFound.js +0 -23
  357. package/dist/Common/Grid/Grid.js +0 -31
  358. package/dist/Common/Grid/types.js +0 -1
  359. package/dist/Common/Helper.js +0 -39
  360. package/dist/Common/Hooks/UseClickOutside/UseClickOutside.js +0 -14
  361. package/dist/Common/Hooks/UseSuperAdmin/UseSuperAdmin.js +0 -16
  362. package/dist/Common/Hooks/UseSuperAdmin/types.js +0 -1
  363. package/dist/Common/Hooks/UseWindowSize/UseWindowSize.js +0 -17
  364. package/dist/Common/Hooks/index.js +0 -8
  365. package/dist/Common/ImageTags.Types.js +0 -1
  366. package/dist/Common/ImageTags.js +0 -381
  367. package/dist/Common/InfoColorBar/InfoColourbar.js +0 -65
  368. package/dist/Common/Modals/Modal.js +0 -48
  369. package/dist/Common/Modals/OpaqueModal.js +0 -32
  370. package/dist/Common/Modals/VisibleModal.js +0 -31
  371. package/dist/Common/Modals/VisibleModal2.js +0 -31
  372. package/dist/Common/MultiSelectCustomization.js +0 -97
  373. package/dist/Common/Pagination/PageSizeSelector.js +0 -49
  374. package/dist/Common/Pagination/Pagination.js +0 -95
  375. package/dist/Common/Pagination/constants.js +0 -9
  376. package/dist/Common/Pagination/index.js +0 -4
  377. package/dist/Common/Pagination/types.js +0 -1
  378. package/dist/Common/Pagination/utils.js +0 -15
  379. package/dist/Common/Policy.Types.js +0 -6
  380. package/dist/Common/PopupMenu.js +0 -148
  381. package/dist/Common/Progressing.js +0 -52
  382. package/dist/Common/RJSF/Form.js +0 -9888
  383. package/dist/Common/RJSF/common/FieldRow.js +0 -25
  384. package/dist/Common/RJSF/common/types.js +0 -1
  385. package/dist/Common/RJSF/config.js +0 -33
  386. package/dist/Common/RJSF/constants.js +0 -10
  387. package/dist/Common/RJSF/index.js +0 -7
  388. package/dist/Common/RJSF/templates/ArrayFieldItemTemplate.js +0 -30
  389. package/dist/Common/RJSF/templates/ArrayFieldTemplate.js +0 -63
  390. package/dist/Common/RJSF/templates/BaseInput.js +0 -8
  391. package/dist/Common/RJSF/templates/ButtonTemplates/AddButton.js +0 -18
  392. package/dist/Common/RJSF/templates/ButtonTemplates/RemoveButton.js +0 -6
  393. package/dist/Common/RJSF/templates/ButtonTemplates/SubmitButton.js +0 -19
  394. package/dist/Common/RJSF/templates/ButtonTemplates/index.js +0 -8
  395. package/dist/Common/RJSF/templates/Description.js +0 -9
  396. package/dist/Common/RJSF/templates/Field.js +0 -21
  397. package/dist/Common/RJSF/templates/FieldErrorTemplate.js +0 -15
  398. package/dist/Common/RJSF/templates/ObjectFieldTemplate.js +0 -76
  399. package/dist/Common/RJSF/templates/TitleField.js +0 -8
  400. package/dist/Common/RJSF/templates/WrapIfAdditionalTemplate.js +0 -44
  401. package/dist/Common/RJSF/templates/index.js +0 -26
  402. package/dist/Common/RJSF/types.js +0 -1
  403. package/dist/Common/RJSF/utils.js +0 -98
  404. package/dist/Common/RJSF/widgets/Checkbox.js +0 -39
  405. package/dist/Common/RJSF/widgets/Select.js +0 -56
  406. package/dist/Common/RJSF/widgets/index.js +0 -6
  407. package/dist/Common/RadioGroup/RadioGroup.js +0 -76
  408. package/dist/Common/RadioGroup.js +0 -47
  409. package/dist/Common/Reload.js +0 -16
  410. package/dist/Common/ResizableTextarea.js +0 -60
  411. package/dist/Common/SearchBar/SearchBar.component.js +0 -66
  412. package/dist/Common/SearchBar/index.js +0 -4
  413. package/dist/Common/SearchBar/types.js +0 -1
  414. package/dist/Common/Security/ScanVulnerabilitiesTable.js +0 -49
  415. package/dist/Common/Select/Select.d.ts +0 -4
  416. package/dist/Common/Select/Select.js +0 -193
  417. package/dist/Common/Select/types.d.ts +0 -29
  418. package/dist/Common/Select/types.js +0 -1
  419. package/dist/Common/ServerError.js +0 -26
  420. package/dist/Common/TippyCustomized.js +0 -10
  421. package/dist/Common/ToastBody.js +0 -41
  422. package/dist/Common/Toggle/Toggle.js +0 -40
  423. package/dist/Common/Types.js +0 -24
  424. package/dist/Common/UseWindowSize.d.ts +0 -4
  425. package/dist/Common/UseWindowSize.js +0 -20
  426. package/dist/Common/index.js +0 -224
  427. package/dist/Helper-e1262739.js +0 -9834
  428. package/dist/TippyCustomized-c58fd46a.js +0 -124
  429. package/dist/_commonjsHelpers-c5d32002.js +0 -30
  430. package/dist/abap-9f67f57a.js +0 -1314
  431. package/dist/apex-ff62e532.js +0 -315
  432. package/dist/assets/CodeEditor.css +0 -1
  433. package/dist/assets/Drawer.css +0 -1
  434. package/dist/assets/Form.css +0 -1
  435. package/dist/assets/GenericEmptyState.css +0 -1
  436. package/dist/assets/InfoColourbar.css +0 -1
  437. package/dist/assets/Pagination.css +0 -1
  438. package/dist/assets/RadioGroup.css +0 -1
  439. package/dist/assets/ScanVulnerabilitiesTable.css +0 -1
  440. package/dist/assets/SearchBar.component.css +0 -1
  441. package/dist/assets/Select.css +0 -1
  442. package/dist/assets/TippyCustomized.css +0 -1
  443. package/dist/assets/Toggle.css +0 -1
  444. package/dist/assets/editor.worker-d26000ef.js +0 -9
  445. package/dist/assets/json.worker-f23a4654.js +0 -40
  446. package/dist/assets/yaml.worker-64fecd27.js +0 -463
  447. package/dist/azcli-31e64a7f.js +0 -74
  448. package/dist/bat-0ffe897e.js +0 -95
  449. package/dist/bicep-3414a2b1.js +0 -108
  450. package/dist/cameligo-df1f3f25.js +0 -168
  451. package/dist/canExpand-ab1f6741.js +0 -10
  452. package/dist/clojure-65b0f010.js +0 -754
  453. package/dist/coffee-437f0fba.js +0 -228
  454. package/dist/cpp-66843dd5.js +0 -390
  455. package/dist/csharp-621d9a49.js +0 -320
  456. package/dist/csp-de0d5244.js +0 -57
  457. package/dist/css-7cd5ed4c.js +0 -186
  458. package/dist/cssMode-c259da7f.js +0 -1446
  459. package/dist/cypher-70ad96fe.js +0 -262
  460. package/dist/dart-33ae3739.js +0 -270
  461. package/dist/dockerfile-f2274a50.js +0 -132
  462. package/dist/ecl-3b8294a3.js +0 -454
  463. package/dist/elixir-b9dcc73a.js +0 -489
  464. package/dist/englishStringTranslator-2c9a30fc.js +0 -17
  465. package/dist/enums-d0bd3f97.js +0 -6618
  466. package/dist/extends-70f3d2a3.js +0 -13
  467. package/dist/flow9-bdde8316.js +0 -141
  468. package/dist/freemarker2-d852fa33.js +0 -643
  469. package/dist/fsharp-eac2e449.js +0 -210
  470. package/dist/getSubmitButtonOptions-a1be9bb0.js +0 -20
  471. package/dist/getTemplate-91d3260d.js +0 -11
  472. package/dist/getUiOptions-844b45a7.js +0 -10
  473. package/dist/go-d12ed8d4.js +0 -208
  474. package/dist/graphql-c7356b69.js +0 -141
  475. package/dist/handlebars-7e868cd0.js +0 -391
  476. package/dist/hcl-e883a0d4.js +0 -177
  477. package/dist/html-1faea799.js +0 -281
  478. package/dist/htmlMode-175871d9.js +0 -1456
  479. package/dist/ic-add-4787ded5.js +0 -5
  480. package/dist/ic-chevron-down-eb7fd953.js +0 -6
  481. package/dist/ic-copy-118b83dc.js +0 -5
  482. package/dist/ic-cross-0e71861d.js +0 -6
  483. package/dist/ic-error-cross-2760059a.js +0 -5
  484. package/dist/ic-error-exclamation-5f9af461.js +0 -5
  485. package/dist/ic-info-filled-31a15add.js +0 -6
  486. package/dist/ic-info-outlined-8fa45e87.js +0 -5
  487. package/dist/ic-warning-42534af1.js +0 -5
  488. package/dist/idGenerators-0b33693c.js +0 -35
  489. package/dist/index-5a231705.js +0 -17417
  490. package/dist/index-c855d89c.js +0 -173
  491. package/dist/ini-425ab711.js +0 -68
  492. package/dist/inject-tag-824bf92c.js +0 -5
  493. package/dist/java-2bc0fd68.js +0 -221
  494. package/dist/javascript-46245cbe.js +0 -75
  495. package/dist/jsonMode-bbe5176f.js +0 -1867
  496. package/dist/julia-1c932615.js +0 -496
  497. package/dist/kotlin-1ab839c8.js +0 -245
  498. package/dist/less-6fe856f5.js +0 -168
  499. package/dist/lexon-4955ac52.js +0 -151
  500. package/dist/liquid-e6b820e1.js +0 -238
  501. package/dist/lua-3cca0047.js +0 -157
  502. package/dist/m3-132e9cb6.js +0 -210
  503. package/dist/markdown-ea59a0c1.js +0 -202
  504. package/dist/mips-19811f4b.js +0 -194
  505. package/dist/msdax-69954a10.js +0 -377
  506. package/dist/mysql-82088e5d.js +0 -876
  507. package/dist/objective-c-1976eccc.js +0 -188
  508. package/dist/pascal-8ef177cb.js +0 -245
  509. package/dist/pascaligo-bc517b9e.js +0 -158
  510. package/dist/perl-8b93582c.js +0 -599
  511. package/dist/pgsql-00c11a6d.js +0 -847
  512. package/dist/php-4c8c276f.js +0 -471
  513. package/dist/pla-e9b4ffb1.js +0 -131
  514. package/dist/postiats-2071af8c.js +0 -544
  515. package/dist/powerquery-8e388ceb.js +0 -890
  516. package/dist/powershell-e35db398.js +0 -233
  517. package/dist/protobuf-a24b9176.js +0 -422
  518. package/dist/pug-2c94d9b8.js +0 -393
  519. package/dist/python-7d292338.js +0 -259
  520. package/dist/qsharp-d730d7fe.js +0 -282
  521. package/dist/r-be193556.js +0 -245
  522. package/dist/razor-c6ab49dd.js +0 -512
  523. package/dist/react-select.esm-27b8d563.js +0 -3992
  524. package/dist/react-toastify.esm-e28f7200.js +0 -798
  525. package/dist/react.esm-5465a283.js +0 -13191
  526. package/dist/redis-9690c6ac.js +0 -298
  527. package/dist/redshift-6bdcdeaa.js +0 -806
  528. package/dist/restructuredtext-a08c1d20.js +0 -162
  529. package/dist/ruby-2247692b.js +0 -444
  530. package/dist/rust-1dffb4d5.js +0 -337
  531. package/dist/sb-136598e9.js +0 -110
  532. package/dist/scala-b1100fed.js +0 -353
  533. package/dist/scheme-038c8094.js +0 -114
  534. package/dist/scss-700d1b52.js +0 -244
  535. package/dist/shell-86c16e0f.js +0 -224
  536. package/dist/solidity-c05fdf3c.js +0 -1351
  537. package/dist/sophia-cd645d71.js +0 -190
  538. package/dist/sparql-01d9ec9c.js +0 -193
  539. package/dist/sql-4c33df41.js +0 -818
  540. package/dist/st-52cf1408.js +0 -414
  541. package/dist/swift-13c792ba.js +0 -315
  542. package/dist/systemverilog-0bd8b730.js +0 -556
  543. package/dist/tcl-463d7c75.js +0 -232
  544. package/dist/tippy-react.esm-d5c56a0a.js +0 -2018
  545. package/dist/tsMode-4d1329d1.js +0 -811
  546. package/dist/twig-0d98f5ec.js +0 -323
  547. package/dist/typescript-402306e6.js +0 -328
  548. package/dist/vb-3a2b0a51.js +0 -364
  549. package/dist/wgsl-b2ddb3e4.js +0 -420
  550. package/dist/xml-8975e1f9.js +0 -95
  551. package/dist/yaml-680c02bf.js +0 -184
@@ -0,0 +1,586 @@
1
+ import React, { useEffect, useMemo, useRef, useState } from 'react'
2
+ import { ReactComponent as Add } from '../Assets/Icon/ic-add.svg'
3
+ import { ReactComponent as Close } from '../Assets/Icon/ic-cross.svg'
4
+ import { ReactComponent as QuestionFilled } from '../Assets/Icon/ic-help.svg'
5
+ import { ReactComponent as Question } from '../Assets/Icon/ic-help-outline.svg'
6
+
7
+ import { ReactComponent as EditIcon } from '../Assets/Icon/ic-pencil.svg'
8
+ import { ReactComponent as Redo } from '../Assets/Icon/ic-arrow-counter-clockwise.svg'
9
+ import { ReactComponent as Minus } from '../Assets/Icon/ic-minus.svg'
10
+ import { toast } from 'react-toastify'
11
+ import { ReactComponent as Info } from '../Assets/Icon/ic-info-filled.svg'
12
+ import { ReactComponent as Error } from '../Assets/Icon/ic-warning.svg'
13
+ import { ReactComponent as Warning } from '../Assets/Icon/ic-error-exclamation.svg'
14
+ import { ReactComponent as Enter } from '../Assets/Icon/ic-enter.svg'
15
+ import { TippyTheme } from './Types'
16
+ import { ImageButtonType, ImageTaggingContainerType, ReleaseTag } from './ImageTags.Types'
17
+ import { showError, stopPropagation } from './Helper'
18
+ import { TippyCustomized } from './TippyCustomized'
19
+ import { setImageTags } from './Common.service'
20
+ import Tippy from '@tippyjs/react'
21
+ import { Progressing } from './Progressing'
22
+
23
+ export const ImageTagsContainer = ({
24
+ // Setting it to zero in case of external pipeline
25
+ ciPipelineId,
26
+ artifactId,
27
+ imageComment,
28
+ imageReleaseTags,
29
+ updateCurrentAppMaterial,
30
+ appReleaseTagNames,
31
+ setAppReleaseTagNames,
32
+ tagsEditable,
33
+ setTagsEditable,
34
+ toggleCardMode,
35
+ hideHardDelete,
36
+ forceReInit,
37
+ isSuperAdmin
38
+ }: ImageTaggingContainerType) => {
39
+ const [initialTags, setInitialTags] = useState<ReleaseTag[]>(imageReleaseTags ? imageReleaseTags : [])
40
+ const [initialDescription, setInitialDescription] = useState(imageComment ? imageComment.comment : '')
41
+ const [existingTags, setExistingTags] = useState(appReleaseTagNames ? appReleaseTagNames : [])
42
+ const [newDescription, setNewDescription] = useState(imageComment ? imageComment.comment : '')
43
+ const [isEditing, setIsEditing] = useState(false)
44
+ const [showTagsWarning, setShowTagsWarning] = useState(false)
45
+ const [displayedTags, setDisplayedTags] = useState<ReleaseTag[]>(imageReleaseTags ? imageReleaseTags : [])
46
+ const [tagErrorMessage, setTagErrorMessage] = useState('')
47
+ const [createTags, setCreateTags] = useState<ReleaseTag[]>([])
48
+ const [softDeleteTags, setSoftDeleteTags] = useState<ReleaseTag[]>([])
49
+ const [hardDeleteTags, setHardDeleteTags] = useState<ReleaseTag[]>([])
50
+ const [descriptionValidationMessage, setDescriptionValidationMessage] = useState<string>('')
51
+ const [textInput, setTextInput] = useState<string>('')
52
+ const [loading, setLoading] = useState<boolean>(false)
53
+
54
+
55
+ useEffect(() => {
56
+ reInitState()
57
+ }, [imageReleaseTags, imageComment, tagsEditable])
58
+
59
+ useEffect(() => {
60
+ setExistingTags(appReleaseTagNames ? appReleaseTagNames : [])
61
+ }, [appReleaseTagNames])
62
+
63
+
64
+ const reInitState = () => {
65
+ if (forceReInit || !isEditing) {
66
+ setInitialTags(imageReleaseTags ? imageReleaseTags : [])
67
+ setInitialDescription(imageComment ? imageComment.comment : '')
68
+ setNewDescription(imageComment ? imageComment.comment : '')
69
+ setDisplayedTags(imageReleaseTags ? imageReleaseTags : [])
70
+ setIsEditing(false)
71
+ }
72
+ }
73
+
74
+ const handleEditClick = () => {
75
+ setIsEditing(!isEditing)
76
+ if (typeof toggleCardMode === 'function') {
77
+ toggleCardMode(artifactId)
78
+ }
79
+ }
80
+
81
+ const handleDescriptionChange = (e) => {
82
+ const description = e.target.value
83
+ description?.length > 500
84
+ ? setDescriptionValidationMessage('comment length cannot exceed 500 characters')
85
+ : setDescriptionValidationMessage('')
86
+ setNewDescription(description)
87
+ }
88
+
89
+ const handleCancel = () => {
90
+ setDisplayedTags(initialTags)
91
+ setNewDescription(initialDescription)
92
+ setCreateTags([])
93
+ setSoftDeleteTags([])
94
+ setHardDeleteTags([])
95
+ handleEditClick()
96
+ setShowTagsWarning(false)
97
+ setTagErrorMessage('')
98
+ }
99
+
100
+ const validateTag = (lowercaseValue) : boolean => {
101
+ if (
102
+ lowercaseValue.length == 0 ||
103
+ lowercaseValue.length >= 128 ||
104
+ lowercaseValue[0] == '.' ||
105
+ lowercaseValue[0] == '-'
106
+ ) {
107
+ setTagErrorMessage('Tag name cannot be empty or exceed 128 characters or cannot start with . or -')
108
+ return false
109
+ }
110
+ setTagErrorMessage('')
111
+ const isTagExistsInExistingTags = existingTags.includes(lowercaseValue)
112
+ let isTagExistsInDisplayedTags = false
113
+ for (let i = 0; i < displayedTags?.length; i++) {
114
+ if (displayedTags[i].tagName.toLowerCase() === lowercaseValue) isTagExistsInDisplayedTags = true
115
+ }
116
+ if (isTagExistsInExistingTags || isTagExistsInDisplayedTags || lowercaseValue === 'latest') {
117
+ setTagErrorMessage('This tag is already being used in this application')
118
+ return false
119
+ }
120
+ return true
121
+ }
122
+
123
+ const handleTagCreate = (newValue) : ReleaseTag[] => {
124
+ const lowercaseValue = newValue.toLowerCase().trim()
125
+ if(validateTag(lowercaseValue)) {
126
+ const newTag: ReleaseTag = {
127
+ id: 0,
128
+ tagName: lowercaseValue,
129
+ appId: 0,
130
+ deleted: false,
131
+ artifactId: 0,
132
+ duplicateTag: false,
133
+ }
134
+ const newCreateTags = [...createTags, newTag]
135
+ setCreateTags(newCreateTags)
136
+ setDisplayedTags([...displayedTags, newTag])
137
+ setShowTagsWarning(true)
138
+ setTextInput('')
139
+ return newCreateTags
140
+ }
141
+ return createTags
142
+ }
143
+
144
+ const handleTagSoftDelete = (index) => {
145
+ const updatedTags = [...displayedTags]
146
+ updatedTags[index] = {
147
+ ...updatedTags[index],
148
+ deleted: !updatedTags[index].deleted,
149
+ }
150
+ const updatedTag = updatedTags[index]
151
+ let updatedSoftDeleteTags = [...softDeleteTags]
152
+ const tagIndex = updatedSoftDeleteTags.findIndex((tag) => tag.tagName === updatedTag.tagName)
153
+ if (tagIndex !== -1) {
154
+ // Tag already exists in softDeleteTags array, remove it
155
+ updatedSoftDeleteTags.splice(tagIndex, 1)
156
+ } else {
157
+ // Tag doesn't exist in softDeleteTags array, add it
158
+ updatedSoftDeleteTags.push(updatedTag)
159
+ }
160
+ setDisplayedTags(updatedTags)
161
+ setSoftDeleteTags(updatedSoftDeleteTags)
162
+ }
163
+
164
+ const handleTagHardDelete = (index) => {
165
+ const deletedTag = displayedTags[index]
166
+ const updatedCreateTags = createTags.filter((tag) => tag.tagName !== deletedTag.tagName)
167
+ setCreateTags(updatedCreateTags)
168
+ const updatedDisplayedTags = [...displayedTags]
169
+ updatedDisplayedTags.splice(index, 1)
170
+ setDisplayedTags(updatedDisplayedTags)
171
+ const updatedExistingTags = existingTags.filter((tag) => tag.toLowerCase() !== deletedTag.tagName.toLowerCase())
172
+ setExistingTags(updatedExistingTags)
173
+ if (deletedTag.id !== 0) {
174
+ const updatedHardDeleteTags = [...hardDeleteTags, deletedTag]
175
+ setHardDeleteTags(updatedHardDeleteTags)
176
+ }
177
+ }
178
+
179
+ const errorStateHandling = (err) => {
180
+ err.forEach(({ userMessage }) => {
181
+ const tagList = createTags.map((tags) => {
182
+ if (userMessage?.appReleaseTags?.includes(tags.tagName)) {
183
+ return {
184
+ ...tags,
185
+ duplicateTag: true,
186
+ }
187
+ }
188
+ return tags
189
+ })
190
+ setCreateTags(tagList)
191
+
192
+ const displayList = displayedTags.map((obj) => {
193
+ const matchingTag = tagList.find((tag) => tag.tagName === obj.tagName)
194
+ if (matchingTag) {
195
+ return { ...obj, duplicateTag: matchingTag.duplicateTag }
196
+ }
197
+ return obj
198
+ })
199
+
200
+ setDisplayedTags(displayList)
201
+ })
202
+ }
203
+
204
+ const handleSave = async (tagsToBeCreated: ReleaseTag[]) => {
205
+ if (tagErrorMessage) return
206
+
207
+ const payload = {
208
+ createTags: tagsToBeCreated,
209
+ softDeleteTags: softDeleteTags,
210
+ imageComment: {
211
+ id: 0,
212
+ comment: newDescription.trim(),
213
+ artifactId: 0,
214
+ },
215
+ hardDeleteTags: hardDeleteTags,
216
+ }
217
+
218
+ // set loading state true
219
+ setLoading(true)
220
+ setImageTags(payload, ciPipelineId ?? 0, artifactId)
221
+ .then((res) => {
222
+ const tags = res.result?.imageReleaseTags?.map((tag) => ({
223
+ id: tag.id,
224
+ tagName: tag.tagName,
225
+ deleted: tag.deleted,
226
+ appId: 0,
227
+ artifactId: 0,
228
+ }))
229
+ if (setAppReleaseTagNames) {
230
+ setAppReleaseTagNames(res.result?.appReleaseTags)
231
+ }
232
+ if (setTagsEditable) {
233
+ setTagsEditable(res.result?.tagsEditable)
234
+ }
235
+ setInitialTags(tags)
236
+ setInitialDescription(res.result?.imageComment?.comment)
237
+ setDisplayedTags(tags)
238
+ setNewDescription(res.result?.imageComment?.comment)
239
+ setCreateTags([])
240
+ setSoftDeleteTags([])
241
+ setHardDeleteTags([])
242
+ handleEditClick()
243
+ setShowTagsWarning(false)
244
+ setTagErrorMessage('')
245
+ if(updateCurrentAppMaterial)updateCurrentAppMaterial(artifactId,tags,res.result?.imageComment)
246
+ })
247
+ .catch((err) => {
248
+ // Fix toast message
249
+ if (err.errors?.[0]?.userMessage?.appReleaseTags?.length) {
250
+ toast.error(err.errors?.[0]?.internalMessage)
251
+ errorStateHandling(err.errors)
252
+ } else {
253
+ showError(err)
254
+ }
255
+ })
256
+ .finally(()=>{
257
+ setLoading(false)
258
+ })
259
+ }
260
+
261
+ const renderInfoCard = (): JSX.Element => {
262
+ return (
263
+ <TippyCustomized
264
+ theme={TippyTheme.white}
265
+ className="w-300 fcv-5"
266
+ placement="right"
267
+ Icon={QuestionFilled}
268
+ heading="Release tags"
269
+ showCloseButton={true}
270
+ trigger="click"
271
+ interactive={true}
272
+ additionalContent={getBuildContextAdditionalContent()}
273
+ >
274
+ <div className="flex">
275
+ <Question className="fcn-5 ml-8 cursor icon-dim-16"/>
276
+ </div>
277
+ </TippyCustomized>
278
+ )
279
+ }
280
+
281
+ const getBuildContextAdditionalContent = () => {
282
+ return (
283
+ <div className="h-250 fs-13 dc__overflow-scroll p-12">
284
+ <div>Release tags allow you to tag container images with readable and relatable tags eg. v1.0.</div>
285
+ <ul className="pl-20 mt-8">
286
+ <li>
287
+ A release tag can only be added if a workflow has CD pipelines deploying to Production
288
+ environments.
289
+ </li>
290
+ <li>Multiple tags can be added to an image.</li>
291
+ <li>Multiple images in an application cannot have the same tag.</li>
292
+ <li>
293
+ Tags cannot be deleted once saved. Although, you can soft delete a tag if an unwanted tag has
294
+ been added.
295
+ </li>
296
+ </ul>
297
+ </div>
298
+ )
299
+ }
300
+
301
+ const creatableRef = useRef(null)
302
+
303
+ if (newDescription === '' && displayedTags.length === 0 && !isEditing) {
304
+ return tagsEditable ? (
305
+ <div className="bcn-0 mt-8 add-image-button">
306
+ <AddImageButton handleEditClick={handleEditClick} />
307
+ </div>
308
+ ) : (
309
+ <div></div>
310
+ )
311
+ }
312
+
313
+ const handleKeydown = (event) => {
314
+ if (event.key === 'Enter' && event.target.value.trim()) {
315
+ handleTagCreate(event.target.value.trim())
316
+ }
317
+ }
318
+
319
+ const setInputValue = (e) => {
320
+ e.target.value && validateTag(e.target.value)
321
+ setTextInput(e.target.value)
322
+ }
323
+
324
+ const enterTagCreate = (e) => {
325
+ stopPropagation(e)
326
+ if (textInput.trim()) {
327
+ handleTagCreate(textInput.trim())
328
+ }
329
+ }
330
+
331
+ const onClickSave = () => {
332
+ let tagsToBeCreated = createTags
333
+ if (textInput.trim()) {
334
+ tagsToBeCreated = handleTagCreate(textInput)
335
+ }
336
+ handleSave(tagsToBeCreated)
337
+ }
338
+
339
+ return (
340
+ <div className="mt-8">
341
+ {isEditing && tagsEditable ? (
342
+ <div className="bcn-0 dc__border-top-n1 ">
343
+ <div className="cn-7 mt-12 flex left">
344
+ <div>Release tags (eg. v1.0)</div>
345
+ {renderInfoCard()}
346
+ </div>
347
+ <div className="mt-6 dc__position-rel-imp" data-testid="add-tag-text-area">
348
+ <input
349
+ className="form__input fs-13"
350
+ value={textInput}
351
+ onChange={setInputValue}
352
+ placeholder="Type a tag and press enter"
353
+ onKeyDown={handleKeydown}
354
+ onBlur={setInputValue}
355
+ ref={creatableRef}
356
+ />
357
+ {textInput.length > 0 && (
358
+ <div
359
+ onClick={enterTagCreate}
360
+ className="dc__position-abs bcn-0 flex cursor pt-2 pb-2 pr-4 pl-4 br-2 cn-7 dc__border dc__border-bottom-2"
361
+ style={{
362
+ top: '50%',
363
+ fontFamily: 'monospace',
364
+ right: '8px',
365
+ transform: 'translateY(-50%)',
366
+ }}
367
+ >
368
+ <Enter className="icon-dim-16 mr-4" />
369
+ Enter
370
+ </div>
371
+ )}
372
+ </div>
373
+
374
+ {tagErrorMessage && (
375
+ <div className="flex left">
376
+ <Error className="form__icon form__icon--error" />
377
+ <div className="form__error">{tagErrorMessage}</div>
378
+ </div>
379
+ )}
380
+ <div className="flex-wrap mt-8 flex left">
381
+ {displayedTags?.map((tag, index) => (
382
+ <ImageTagButton
383
+ key={tag.id}
384
+ text={tag?.tagName}
385
+ isSoftDeleted={tag?.deleted}
386
+ isEditing={isEditing}
387
+ onSoftDeleteClick={(e) => {
388
+ stopPropagation(e)
389
+ handleTagSoftDelete(index)
390
+ }}
391
+ onHardDeleteClick={(e) => {
392
+ stopPropagation(e)
393
+ handleTagHardDelete(index)
394
+ }}
395
+ tagId={tag.id}
396
+ softDeleteTags={softDeleteTags}
397
+ isSuperAdmin={isSuperAdmin}
398
+ duplicateTag={tag?.duplicateTag}
399
+ hideHardDelete={hideHardDelete}
400
+ />
401
+ ))}
402
+ </div>
403
+ {showTagsWarning && (
404
+ <div className="cn-7 mb-8 flex left">
405
+ <Info className="form__icon--info icon-dim-16 mr-2" />
406
+ Tags cannot be edited/removed later
407
+ </div>
408
+ )}
409
+ <div className="cn-7 mt-12">Comment</div>
410
+ <div
411
+ className="flex left flex-wrap dc__gap-8 w-100 mt-6 mb-12"
412
+ data-testid="add-image-comment-text-area"
413
+ >
414
+ <textarea
415
+ value={newDescription}
416
+ onChange={handleDescriptionChange}
417
+ className="flex left flex-wrap dc__gap-8 dc__description-textarea fs-13"
418
+ style={{ height: '90px !important' }}
419
+ />
420
+ </div>
421
+ {descriptionValidationMessage !== '' && (
422
+ <div className="flex left">
423
+ <Error className="form__icon form__icon--error" />
424
+ <div className="form__error">{descriptionValidationMessage}</div>
425
+ </div>
426
+ )}
427
+ <div className="w-100 flex right mt-12">
428
+ <button
429
+ className="cta flex cancel h-32 lh-32-imp"
430
+ type="button"
431
+ onClick={(e) => {
432
+ stopPropagation(e)
433
+ handleCancel()
434
+ }}
435
+ disabled={loading}
436
+ >
437
+ Cancel
438
+ </button>
439
+ <button
440
+ className="cta flex h-32 lh-32-imp ml-12"
441
+ data-testid="save-tags-button"
442
+ type="button"
443
+ onClick={(e) => {
444
+ stopPropagation(e)
445
+ onClickSave()
446
+ }}
447
+ disabled={loading}
448
+ >
449
+ {loading ? <Progressing /> : 'Save'}
450
+ </button>
451
+ </div>
452
+ </div>
453
+ ) : (
454
+ <div className="top br-4 bcn-0 image-tags-container flexbox">
455
+ <div
456
+ className="flex left image-tag-left-border w-100 mt-8 mb-8 pr-10 pl-10"
457
+ data-testid="image-tags-container-hover"
458
+ >
459
+ <div className='w-100'>
460
+ {initialDescription && <div className="mb-6 fs-13 lh-20 dc__word-break-all">{initialDescription}</div>}
461
+ <div className="flex-wrap flex left">
462
+ {initialTags?.map((tag, index) => (
463
+ <ImageTagButton
464
+ key={tag?.id}
465
+ text={tag?.tagName}
466
+ isSoftDeleted={tag?.deleted}
467
+ isEditing={isEditing}
468
+ onSoftDeleteClick={(e) => {
469
+ stopPropagation(e)
470
+ handleTagSoftDelete(index)
471
+ }}
472
+ onHardDeleteClick={(e) => {
473
+ stopPropagation(e)
474
+ handleTagHardDelete(index)
475
+ }}
476
+ tagId={tag.id}
477
+ softDeleteTags={softDeleteTags}
478
+ isSuperAdmin={isSuperAdmin}
479
+ duplicateTag={tag?.duplicateTag}
480
+ hideHardDelete={hideHardDelete}
481
+ />
482
+ ))}
483
+ </div>
484
+ </div>
485
+ </div>
486
+ <div className="mt-8 mr-10 icon-dim-16">
487
+ {tagsEditable && (
488
+ <EditIcon
489
+ className="icon-dim-16 image-tags-container-edit__icon cursor"
490
+ data-testid="edit-tags-icon"
491
+ onClick={(e) => {
492
+ stopPropagation(e)
493
+ handleEditClick()
494
+ }}
495
+ />
496
+ )}
497
+ </div>
498
+ </div>
499
+ )}
500
+ </div>
501
+ )
502
+ }
503
+
504
+ export const ImageTagButton = ({
505
+ text,
506
+ isSoftDeleted,
507
+ isEditing,
508
+ onSoftDeleteClick,
509
+ onHardDeleteClick,
510
+ tagId,
511
+ softDeleteTags,
512
+ isSuperAdmin,
513
+ duplicateTag,
514
+ hideHardDelete,
515
+ }: ImageButtonType) => {
516
+ const IconComponent = isSoftDeleted ? Redo : Minus
517
+ const isInSoftDeleteTags = isSoftDeleted && softDeleteTags.some((tag) => tag.tagName === text)
518
+ const canTagBeHardDelete = tagId === 0 || (isSuperAdmin && !hideHardDelete)
519
+
520
+ const tabColor = () => {
521
+ if (duplicateTag) {
522
+ return 'cr-5 bcr-1 er-2'
523
+ } else if (isSoftDeleted) {
524
+ return 'cy-7 bcy-1 dc__strike-through ey-2'
525
+ } else {
526
+ return 'cn-9'
527
+ }
528
+ }
529
+
530
+ return (
531
+ <div
532
+ className={`br-4 en-2 bw-1 mr-8 bcn-0 mb-4 pt-2 pr-8 pb-2 pl-8 tag-class dc__word-break-all flex ${
533
+ isEditing ? 'icon-hover' : ''
534
+ } ${tabColor()}`}
535
+ >
536
+ {duplicateTag ? (
537
+ <Warning className="icon-dim-12 mr-4" />
538
+ ) : (
539
+ <Tippy
540
+ className="default-tt"
541
+ arrow={true}
542
+ placement="top"
543
+ content={isInSoftDeleteTags ? 'Restore tag' : 'Soft delete tag'}
544
+ >
545
+ <div
546
+ className={`action-icon mr-4 lh-16 pt-3 ${
547
+ isInSoftDeleteTags || (tagId !== 0 && !isSoftDeleted) ? 'show-icon' : ''
548
+ }`}
549
+ >
550
+ <IconComponent
551
+ className={`icon-dim-12 cursor ${isSoftDeleted ? 'scn-6' : 'fcn-6'} `}
552
+ data-testid={`${text}-tag-soft-delete`}
553
+ onClick={onSoftDeleteClick}
554
+ />
555
+ </div>
556
+ </Tippy>
557
+ )}
558
+ {text}
559
+ <Tippy className="default-tt" arrow={true} placement="top" content="Remove tag">
560
+ <div className={`action-icon ml-4 lh-16 pt-3 ${canTagBeHardDelete ? 'show-icon' : ''}`}>
561
+ <Close
562
+ className="icon-dim-12 fcn-6 cursor"
563
+ data-testid={`${text}-tag-hard-delete`}
564
+ onClick={onHardDeleteClick}
565
+ />
566
+ </div>
567
+ </Tippy>
568
+ </div>
569
+ )
570
+ }
571
+
572
+ const AddImageButton = ({ handleEditClick }) => {
573
+ const handleClick = (e) => {
574
+ stopPropagation(e)
575
+ handleEditClick()
576
+ }
577
+
578
+ return (
579
+ <div className="add-tag-button flex pt-12 pr-12" data-testid="add-tags-button" onClick={handleClick}>
580
+ <div className="lh-16 flex">
581
+ <Add className="icon-dim-16 cn-6" />
582
+ <span className="cn-7">Add tags/comment</span>
583
+ </div>
584
+ </div>
585
+ )
586
+ }
@@ -0,0 +1,80 @@
1
+ import React from 'react'
2
+ import { Link } from 'react-router-dom'
3
+ import { InfoColourBarType } from '../Types'
4
+ import './infoColourBar.scss'
5
+
6
+ function InfoColourBar({
7
+ message,
8
+ classname,
9
+ Icon,
10
+ iconClass,
11
+ iconSize,
12
+ renderActionButton,
13
+ linkText,
14
+ redirectLink,
15
+ linkOnClick,
16
+ linkClass,
17
+ internalLink,
18
+ styles,
19
+ }: InfoColourBarType) {
20
+ const renderLink = () => {
21
+ if (!linkText) {
22
+ return null
23
+ } else if (redirectLink) {
24
+ if (internalLink) {
25
+ return (
26
+ <Link
27
+ to={redirectLink}
28
+ onClick={linkOnClick}
29
+ data-testid="info-bar-internal-link"
30
+ className="cursor dc__link dc__underline-onhover mr-5"
31
+ >
32
+ {linkText}
33
+ </Link>
34
+ )
35
+ }
36
+
37
+ return (
38
+ <a
39
+ href={redirectLink}
40
+ target="_blank"
41
+ onClick={linkOnClick}
42
+ data-testid="info-bar-redirectLink"
43
+ className="cursor dc__link dc__underline-onhover mr-5"
44
+ >
45
+ {linkText}
46
+ </a>
47
+ )
48
+ }
49
+
50
+ return (
51
+ linkOnClick && (
52
+ <div onClick={linkOnClick} className="cursor dc__link dc__underline-onhover" data-testid="info-bar-linkText">
53
+ {linkText}
54
+ </div>
55
+ )
56
+ )
57
+ }
58
+
59
+ return (
60
+ <div className="info-bar-container">
61
+ <div
62
+ className={`${classname} info_text flex dc__content-space pt-8 pb-8 pl-12 pr-12 br-4 top fs-13 fw-4`}
63
+ style={styles}
64
+ >
65
+ <div className={`flex top ${typeof renderActionButton === 'function' ? 'mr-5' : ''}`}>
66
+ <div className={`icon-dim-${iconSize ?? '20'} mr-10`}>
67
+ <Icon className={`icon-dim-${iconSize ?? '20'} ${iconClass || ''} mr-8`} />
68
+ </div>
69
+ <div className={`info-bar-message-wrapper ${linkClass || ''}`}>
70
+ <span className={linkText && redirectLink ? 'mr-5' : ''}>{message}</span>
71
+ {renderLink()}
72
+ </div>
73
+ </div>
74
+ {typeof renderActionButton === 'function' && renderActionButton()}
75
+ </div>
76
+ </div>
77
+ )
78
+ }
79
+
80
+ export default InfoColourBar
@@ -0,0 +1,28 @@
1
+ .info-bar-container {
2
+ .info_text .success {
3
+ background-color: var(--G100);
4
+ }
5
+ .warn {
6
+ background: var(--Y100);
7
+ border: solid var(--Y200);
8
+
9
+ .warning-icon path:nth-child(2) {
10
+ fill: var(--Y700);
11
+ }
12
+ }
13
+
14
+ .info_bar {
15
+ background-color: var(--B100);
16
+ border: 1px solid var(--B200);
17
+ }
18
+
19
+ .error_bar {
20
+ background-color: var(--R100);
21
+ border: 1px solid var(--R200);
22
+ }
23
+
24
+ .question-bar {
25
+ background-color: var(--V100);
26
+ border: 1px solid var(--V200);
27
+ }
28
+ }