@devtron-labs/devtron-fe-common-lib 0.0.55-beta-7 → 0.0.56

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 (522) hide show
  1. package/.eslintrc.js +41 -0
  2. package/.github/workflows/release-package.yml +49 -0
  3. package/.prettierrc.js +7 -0
  4. package/dist/Common/AddCDButton/AddCDButton.d.ts +3 -3
  5. package/dist/Common/AddCDButton/index.d.ts +2 -2
  6. package/dist/Common/AddCDButton/types.d.ts +26 -26
  7. package/dist/Common/AddCDButton/utils.d.ts +2 -2
  8. package/dist/Common/Api.d.ts +5 -5
  9. package/dist/Common/AppStatus/AppStatus.d.ts +3 -3
  10. package/dist/Common/AppStatus/constants.d.ts +51 -51
  11. package/dist/Common/AppStatus/index.d.ts +1 -1
  12. package/dist/Common/AppStatus/types.d.ts +12 -12
  13. package/dist/Common/AppStatus/utils.d.ts +1 -1
  14. package/dist/Common/BreadCrumb/BreadCrumb.d.ts +5 -5
  15. package/dist/Common/BreadCrumb/BreadcrumbStore.d.ts +17 -17
  16. package/dist/Common/BreadCrumb/Types.d.ts +28 -28
  17. package/dist/Common/CIPipeline.Types.d.ts +265 -265
  18. package/dist/Common/ChartVersionAndTypeSelector.d.ts +4 -3
  19. package/dist/Common/Checkbox.d.ts +5 -5
  20. package/dist/Common/ClipboardButton/ClipboardButton.d.ts +10 -10
  21. package/dist/Common/ClipboardButton/types.d.ts +8 -8
  22. package/dist/Common/Common.service.d.ts +20 -20
  23. package/dist/Common/Constants.d.ts +75 -73
  24. package/dist/Common/CustomInput/CustomInput.d.ts +3 -3
  25. package/dist/Common/CustomInput/Types.d.ts +30 -29
  26. package/dist/Common/CustomInput/index.d.ts +2 -2
  27. package/dist/Common/CustomTagSelector/PropagateTagInfo.d.ts +4 -4
  28. package/dist/Common/CustomTagSelector/ResizableTagTextArea.d.ts +3 -3
  29. package/dist/Common/CustomTagSelector/TagDetails.d.ts +3 -2
  30. package/dist/Common/CustomTagSelector/TagLabelSelect.d.ts +3 -2
  31. package/dist/Common/CustomTagSelector/TagLabelValueSelector.d.ts +3 -2
  32. package/dist/Common/CustomTagSelector/TagSelector.utils.d.ts +12 -12
  33. package/dist/Common/CustomTagSelector/Types.d.ts +68 -68
  34. package/dist/Common/CustomTagSelector/ValidationRules.d.ts +10 -10
  35. package/dist/Common/CustomTagSelector/index.d.ts +6 -6
  36. package/dist/Common/DebouncedSearch/DebouncedSearch.d.ts +15 -17
  37. package/dist/Common/DebouncedSearch/Types.d.ts +14 -14
  38. package/dist/Common/DebouncedSearch/Utils.d.ts +1 -1
  39. package/dist/Common/DeleteComponentModal/DeleteComponent.d.ts +4 -4
  40. package/dist/Common/DeleteComponentModal/types.d.ts +15 -15
  41. package/dist/Common/DevtronProgressing/DevtronProgressing.d.ts +3 -3
  42. package/dist/Common/DevtronProgressing/index.d.ts +1 -1
  43. package/dist/Common/DevtronProgressing/types.d.ts +4 -4
  44. package/dist/Common/Dialogs/ConfirmationDialog.d.ts +9 -9
  45. package/dist/Common/Dialogs/DeleteDialog.d.ts +5 -5
  46. package/dist/Common/Dialogs/DialogForm.d.ts +14 -14
  47. package/dist/Common/Dialogs/ForceDeleteDialog.d.ts +3 -3
  48. package/dist/Common/Dialogs/Types.d.ts +45 -45
  49. package/dist/Common/Dialogs/index.d.ts +4 -4
  50. package/dist/Common/DraggableWrapper/DraggableButton.d.ts +3 -3
  51. package/dist/Common/DraggableWrapper/DraggableWrapper.d.ts +9 -9
  52. package/dist/Common/DraggableWrapper/index.d.ts +3 -3
  53. package/dist/Common/DraggableWrapper/types.d.ts +23 -23
  54. package/dist/Common/Drawer/Drawer.d.ts +16 -14
  55. package/dist/Common/EmptyState/EmptyState.d.ts +25 -28
  56. package/dist/Common/EmptyState/GenericEmptyState.d.ts +5 -4
  57. package/dist/Common/Error.d.ts +17 -17
  58. package/dist/Common/ErrorScreenNotFound.d.ts +3 -3
  59. package/dist/Common/Grid/Grid.d.ts +3 -3
  60. package/dist/Common/Grid/types.d.ts +10 -10
  61. package/dist/Common/Helper.d.ts +60 -65
  62. package/dist/Common/Hooks/UseClickOutside/UseClickOutside.d.ts +1 -1
  63. package/dist/Common/Hooks/UseSuperAdmin/UseSuperAdmin.d.ts +6 -6
  64. package/dist/Common/Hooks/UseSuperAdmin/types.d.ts +3 -3
  65. package/dist/Common/Hooks/UseWindowSize/UseWindowSize.d.ts +4 -4
  66. package/dist/Common/Hooks/index.d.ts +3 -3
  67. package/dist/Common/ImageTags.Types.d.ts +40 -40
  68. package/dist/Common/ImageTags.d.ts +4 -3
  69. package/dist/Common/InfoColorBar/InfoColourbar.d.ts +5 -4
  70. package/dist/Common/Modals/Modal.d.ts +3 -3
  71. package/dist/Common/Modals/OpaqueModal.d.ts +12 -12
  72. package/dist/Common/Modals/VisibleModal.d.ts +15 -15
  73. package/dist/Common/Modals/VisibleModal2.d.ts +12 -12
  74. package/dist/Common/MultiSelectCustomization.d.ts +37 -37
  75. package/dist/Common/Policy.Types.d.ts +56 -56
  76. package/dist/Common/PopupMenu.d.ts +8 -8
  77. package/dist/Common/Progressing.d.ts +4 -4
  78. package/dist/Common/RJSF/Form.d.ts +4 -2
  79. package/dist/Common/RJSF/common/FieldRow.d.ts +6 -5
  80. package/dist/Common/RJSF/common/types.d.ts +8 -8
  81. package/dist/Common/RJSF/config.d.ts +4 -4
  82. package/dist/Common/RJSF/constants.d.ts +7 -7
  83. package/dist/Common/RJSF/index.d.ts +3 -3
  84. package/dist/Common/RJSF/templates/ArrayFieldItemTemplate.d.ts +3 -2
  85. package/dist/Common/RJSF/templates/ArrayFieldTemplate.d.ts +3 -2
  86. package/dist/Common/RJSF/templates/BaseInput.d.ts +3 -2
  87. package/dist/Common/RJSF/templates/ButtonTemplates/AddButton.d.ts +3 -2
  88. package/dist/Common/RJSF/templates/ButtonTemplates/RemoveButton.d.ts +3 -2
  89. package/dist/Common/RJSF/templates/ButtonTemplates/SubmitButton.d.ts +3 -2
  90. package/dist/Common/RJSF/templates/ButtonTemplates/index.d.ts +3 -3
  91. package/dist/Common/RJSF/templates/Description.d.ts +3 -2
  92. package/dist/Common/RJSF/templates/Field.d.ts +3 -2
  93. package/dist/Common/RJSF/templates/FieldErrorTemplate.d.ts +3 -2
  94. package/dist/Common/RJSF/templates/ObjectFieldTemplate.d.ts +3 -2
  95. package/dist/Common/RJSF/templates/TitleField.d.ts +3 -2
  96. package/dist/Common/RJSF/templates/WrapIfAdditionalTemplate.d.ts +3 -2
  97. package/dist/Common/RJSF/templates/index.d.ts +10 -10
  98. package/dist/Common/RJSF/types.d.ts +3 -3
  99. package/dist/Common/RJSF/utils.d.ts +26 -25
  100. package/dist/Common/RJSF/widgets/Checkbox.d.ts +3 -2
  101. package/dist/Common/RJSF/widgets/Select.d.ts +3 -2
  102. package/dist/Common/RJSF/widgets/index.d.ts +2 -2
  103. package/dist/Common/RadioGroup/RadioGroup.d.ts +17 -16
  104. package/dist/Common/RadioGroup.d.ts +8 -8
  105. package/dist/Common/Reload.d.ts +3 -3
  106. package/dist/Common/ResizableTextarea.d.ts +3 -3
  107. package/dist/Common/Security/ScanVulnerabilitiesTable.d.ts +4 -3
  108. package/dist/Common/ServerError.d.ts +15 -15
  109. package/dist/Common/TippyCustomized.d.ts +4 -3
  110. package/dist/Common/ToastBody.d.ts +23 -23
  111. package/dist/Common/Toggle/Toggle.d.ts +14 -12
  112. package/dist/Common/Types.d.ts +678 -690
  113. package/dist/Common/index.d.ts +48 -51
  114. package/dist/index.d.ts +1 -1
  115. package/dist/index.js +28649 -223
  116. package/package.json +19 -48
  117. package/rollup.config.js +31 -0
  118. package/src/Assets/Icon/ic-add.svg +3 -0
  119. package/src/Assets/Icon/ic-appstatus-cancelled.svg +6 -0
  120. package/src/Assets/Icon/ic-arrow-counter-clockwise.svg +5 -0
  121. package/src/Assets/Icon/ic-check.svg +5 -0
  122. package/src/Assets/Icon/ic-chevron-down.svg +5 -0
  123. package/src/Assets/Icon/ic-copy.svg +3 -0
  124. package/src/Assets/Icon/ic-cross.svg +3 -0
  125. package/src/Assets/Icon/ic-drag.svg +8 -0
  126. package/src/Assets/Icon/ic-enter.svg +3 -0
  127. package/src/Assets/Icon/ic-error-cross.svg +8 -0
  128. package/src/Assets/Icon/ic-error-exclamation.svg +6 -0
  129. package/src/Assets/Icon/ic-error-medium.svg +6 -0
  130. package/src/Assets/Icon/ic-help-outline.svg +3 -0
  131. package/src/Assets/Icon/ic-help.svg +3 -0
  132. package/src/Assets/Icon/ic-info-filled.svg +7 -0
  133. package/src/Assets/Icon/ic-info-outlined.svg +13 -0
  134. package/src/Assets/Icon/ic-minus.svg +3 -0
  135. package/src/Assets/Icon/ic-pencil.svg +3 -0
  136. package/src/Assets/Icon/ic-progressing.svg +6 -0
  137. package/src/Assets/Icon/ic-rotate-devtron.svg +103 -0
  138. package/src/Assets/Icon/ic-warning.svg +7 -0
  139. package/src/Assets/Icon/inject-tag.svg +5 -0
  140. package/src/Assets/Img/app-not-deployed.png +0 -0
  141. package/src/Assets/Img/delete-medium.svg +15 -0
  142. package/src/Assets/Img/ic-empty-error@2x.png +0 -0
  143. package/src/Assets/Img/ic-loading-failure.png +0 -0
  144. package/src/Assets/Img/ic-not-authorized.svg +62 -0
  145. package/src/Common/AddCDButton/AddCDButton.tsx +68 -0
  146. package/src/Common/AddCDButton/index.ts +2 -0
  147. package/src/Common/AddCDButton/types.ts +38 -0
  148. package/src/Common/AddCDButton/utils.tsx +35 -0
  149. package/src/Common/Api.ts +230 -0
  150. package/src/Common/AppStatus/AppStatus.tsx +64 -0
  151. package/src/Common/AppStatus/constants.ts +53 -0
  152. package/src/Common/AppStatus/index.ts +1 -0
  153. package/src/Common/AppStatus/types.ts +12 -0
  154. package/src/Common/AppStatus/utils.ts +14 -0
  155. package/src/Common/BreadCrumb/BreadCrumb.tsx +105 -0
  156. package/src/Common/BreadCrumb/BreadcrumbStore.tsx +25 -0
  157. package/src/Common/BreadCrumb/Types.ts +30 -0
  158. package/src/Common/CIPipeline.Types.ts +277 -0
  159. package/src/Common/ChartVersionAndTypeSelector.tsx +78 -0
  160. package/src/Common/Checkbox.tsx +36 -0
  161. package/src/Common/ClipboardButton/ClipboardButton.tsx +61 -0
  162. package/src/Common/ClipboardButton/__tests__/ClipboardButton.test.tsx +43 -0
  163. package/src/Common/ClipboardButton/types.ts +7 -0
  164. package/src/Common/Common.service.ts +315 -0
  165. package/src/Common/Constants.ts +254 -0
  166. package/src/Common/CustomInput/CustomInput.tsx +132 -0
  167. package/src/Common/CustomInput/Types.ts +31 -0
  168. package/src/Common/CustomInput/index.ts +2 -0
  169. package/src/Common/CustomTagSelector/PropagateTagInfo.tsx +46 -0
  170. package/src/Common/CustomTagSelector/ResizableTagTextArea.tsx +84 -0
  171. package/src/Common/CustomTagSelector/TagDetails.tsx +76 -0
  172. package/src/Common/CustomTagSelector/TagLabelSelect.tsx +61 -0
  173. package/src/Common/CustomTagSelector/TagLabelValueSelector.tsx +198 -0
  174. package/src/Common/CustomTagSelector/TagSelector.utils.ts +71 -0
  175. package/src/Common/CustomTagSelector/Types.ts +72 -0
  176. package/src/Common/CustomTagSelector/ValidationRules.ts +58 -0
  177. package/src/Common/CustomTagSelector/index.ts +6 -0
  178. package/src/Common/DebouncedSearch/DebouncedSearch.tsx +76 -0
  179. package/src/Common/DebouncedSearch/Types.ts +13 -0
  180. package/src/Common/DebouncedSearch/Utils.ts +19 -0
  181. package/src/Common/DebouncedSearch/__tests__/DebouncedSearch.test.tsx +61 -0
  182. package/src/Common/DeleteComponentModal/DeleteComponent.tsx +95 -0
  183. package/src/Common/DeleteComponentModal/types.ts +15 -0
  184. package/src/Common/DevtronProgressing/DevtronProgressing.tsx +11 -0
  185. package/src/Common/DevtronProgressing/index.ts +1 -0
  186. package/src/Common/DevtronProgressing/types.ts +4 -0
  187. package/src/Common/Dialogs/ConfirmationDialog.tsx +34 -0
  188. package/src/Common/Dialogs/DeleteDialog.tsx +69 -0
  189. package/src/Common/Dialogs/DialogForm.tsx +86 -0
  190. package/src/Common/Dialogs/ForceDeleteDialog.tsx +19 -0
  191. package/src/Common/Dialogs/Types.ts +47 -0
  192. package/src/Common/Dialogs/index.ts +4 -0
  193. package/src/Common/DraggableWrapper/DraggableButton.tsx +14 -0
  194. package/src/Common/DraggableWrapper/DraggableWrapper.tsx +116 -0
  195. package/src/Common/DraggableWrapper/index.ts +3 -0
  196. package/src/Common/DraggableWrapper/types.ts +27 -0
  197. package/src/Common/Drawer/Drawer.scss +40 -0
  198. package/src/Common/Drawer/Drawer.tsx +49 -0
  199. package/src/Common/EmptyState/EmptyState.tsx +42 -0
  200. package/src/Common/EmptyState/GenericEmptyState.tsx +81 -0
  201. package/src/Common/EmptyState/emptyState.scss +74 -0
  202. package/src/Common/Error.tsx +61 -0
  203. package/src/Common/ErrorScreenNotFound.tsx +31 -0
  204. package/src/Common/Grid/Grid.tsx +44 -0
  205. package/src/Common/Grid/types.ts +11 -0
  206. package/src/Common/Helper.tsx +561 -0
  207. package/src/Common/Hooks/UseClickOutside/UseClickOutside.tsx +15 -0
  208. package/src/Common/Hooks/UseSuperAdmin/UseSuperAdmin.tsx +24 -0
  209. package/src/Common/Hooks/UseSuperAdmin/types.ts +3 -0
  210. package/src/Common/Hooks/UseWindowSize/UseWindowSize.tsx +31 -0
  211. package/src/Common/Hooks/index.ts +3 -0
  212. package/src/Common/ImageTags.Types.ts +44 -0
  213. package/src/Common/ImageTags.tsx +586 -0
  214. package/src/Common/InfoColorBar/InfoColourbar.tsx +80 -0
  215. package/src/Common/InfoColorBar/infoColourBar.scss +28 -0
  216. package/src/Common/Modals/Modal.tsx +68 -0
  217. package/src/Common/Modals/OpaqueModal.tsx +36 -0
  218. package/src/Common/Modals/VisibleModal.tsx +55 -0
  219. package/src/Common/Modals/VisibleModal2.tsx +35 -0
  220. package/src/Common/MultiSelectCustomization.tsx +148 -0
  221. package/src/Common/Policy.Types.ts +63 -0
  222. package/src/Common/PopupMenu.tsx +199 -0
  223. package/src/Common/Progressing.tsx +53 -0
  224. package/src/Common/RJSF/Form.tsx +29 -0
  225. package/src/Common/RJSF/common/FieldRow.tsx +35 -0
  226. package/src/Common/RJSF/common/types.ts +9 -0
  227. package/src/Common/RJSF/config.ts +37 -0
  228. package/src/Common/RJSF/constants.ts +10 -0
  229. package/src/Common/RJSF/index.ts +3 -0
  230. package/src/Common/RJSF/rjsfForm.scss +18 -0
  231. package/src/Common/RJSF/templates/ArrayFieldItemTemplate.tsx +31 -0
  232. package/src/Common/RJSF/templates/ArrayFieldTemplate.tsx +78 -0
  233. package/src/Common/RJSF/templates/BaseInput.tsx +16 -0
  234. package/src/Common/RJSF/templates/ButtonTemplates/AddButton.tsx +18 -0
  235. package/src/Common/RJSF/templates/ButtonTemplates/RemoveButton.tsx +10 -0
  236. package/src/Common/RJSF/templates/ButtonTemplates/SubmitButton.tsx +18 -0
  237. package/src/Common/RJSF/templates/ButtonTemplates/index.ts +3 -0
  238. package/src/Common/RJSF/templates/Description.tsx +12 -0
  239. package/src/Common/RJSF/templates/Field.tsx +30 -0
  240. package/src/Common/RJSF/templates/FieldErrorTemplate.tsx +25 -0
  241. package/src/Common/RJSF/templates/ObjectFieldTemplate.tsx +105 -0
  242. package/src/Common/RJSF/templates/TitleField.tsx +9 -0
  243. package/src/Common/RJSF/templates/WrapIfAdditionalTemplate.tsx +51 -0
  244. package/src/Common/RJSF/templates/index.ts +10 -0
  245. package/src/Common/RJSF/types.ts +4 -0
  246. package/src/Common/RJSF/utils.ts +123 -0
  247. package/src/Common/RJSF/widgets/Checkbox.tsx +44 -0
  248. package/src/Common/RJSF/widgets/Select.tsx +77 -0
  249. package/src/Common/RJSF/widgets/index.ts +2 -0
  250. package/src/Common/RadioGroup/RadioGroup.tsx +105 -0
  251. package/src/Common/RadioGroup/radioGroup.scss +46 -0
  252. package/src/Common/RadioGroup.tsx +53 -0
  253. package/src/Common/Reload.tsx +23 -0
  254. package/src/Common/ResizableTextarea.tsx +73 -0
  255. package/src/Common/Security/ScanVulnerabilitiesTable.tsx +55 -0
  256. package/src/Common/Security/scanVulnerabilities.css +69 -0
  257. package/src/Common/ServerError.ts +31 -0
  258. package/src/Common/TippyCustomized.tsx +172 -0
  259. package/src/Common/ToastBody.tsx +62 -0
  260. package/src/Common/Toggle/Toggle.scss +78 -0
  261. package/src/Common/Toggle/Toggle.tsx +50 -0
  262. package/src/Common/Types.ts +751 -0
  263. package/src/Common/index.ts +48 -0
  264. package/src/custom.d.ts +13 -0
  265. package/src/index.ts +1 -0
  266. package/tsconfig.json +40 -0
  267. package/dist/CodeEditor-3c2aaef5.js +0 -103695
  268. package/dist/Common/AddCDButton/AddCDButton.js +0 -61
  269. package/dist/Common/AddCDButton/index.js +0 -6
  270. package/dist/Common/AddCDButton/types.js +0 -1
  271. package/dist/Common/AddCDButton/utils.js +0 -19
  272. package/dist/Common/Api.js +0 -167
  273. package/dist/Common/AppStatus/AppStatus.js +0 -37
  274. package/dist/Common/AppStatus/constants.js +0 -37
  275. package/dist/Common/AppStatus/index.js +0 -4
  276. package/dist/Common/AppStatus/types.js +0 -1
  277. package/dist/Common/AppStatus/utils.js +0 -8
  278. package/dist/Common/BreadCrumb/BreadCrumb.js +0 -71
  279. package/dist/Common/BreadCrumb/BreadcrumbStore.js +0 -22
  280. package/dist/Common/BreadCrumb/Types.js +0 -1
  281. package/dist/Common/CIPipeline.Types.js +0 -10
  282. package/dist/Common/ChartVersionAndTypeSelector.js +0 -61
  283. package/dist/Common/Checkbox.js +0 -28
  284. package/dist/Common/ClipboardButton/ClipboardButton.js +0 -40
  285. package/dist/Common/ClipboardButton/__tests__/ClipboardButton.test.d.ts +0 -1
  286. package/dist/Common/ClipboardButton/__tests__/ClipboardButton.test.js +0 -27
  287. package/dist/Common/ClipboardButton/types.js +0 -1
  288. package/dist/Common/CodeEditor/CodeEditor.d.ts +0 -47
  289. package/dist/Common/CodeEditor/CodeEditor.js +0 -15
  290. package/dist/Common/Common.service.js +0 -191
  291. package/dist/Common/Constants.js +0 -234
  292. package/dist/Common/CustomInput/CustomInput.js +0 -80
  293. package/dist/Common/CustomInput/Types.js +0 -1
  294. package/dist/Common/CustomInput/index.js +0 -4
  295. package/dist/Common/CustomTagSelector/PropagateTagInfo.js +0 -43
  296. package/dist/Common/CustomTagSelector/ResizableTagTextArea.js +0 -58
  297. package/dist/Common/CustomTagSelector/TagDetails.js +0 -65
  298. package/dist/Common/CustomTagSelector/TagLabelSelect.js +0 -50
  299. package/dist/Common/CustomTagSelector/TagLabelValueSelector.js +0 -121
  300. package/dist/Common/CustomTagSelector/TagSelector.utils.js +0 -61
  301. package/dist/Common/CustomTagSelector/Types.js +0 -1
  302. package/dist/Common/CustomTagSelector/ValidationRules.js +0 -35
  303. package/dist/Common/CustomTagSelector/index.js +0 -12
  304. package/dist/Common/DebouncedSearch/DebouncedSearch.js +0 -56
  305. package/dist/Common/DebouncedSearch/Types.js +0 -1
  306. package/dist/Common/DebouncedSearch/Utils.js +0 -19
  307. package/dist/Common/DebouncedSearch/__tests__/DebouncedSearch.test.d.ts +0 -1
  308. package/dist/Common/DebouncedSearch/__tests__/DebouncedSearch.test.js +0 -34
  309. package/dist/Common/DeleteComponentModal/DeleteComponent.js +0 -63
  310. package/dist/Common/DeleteComponentModal/types.js +0 -1
  311. package/dist/Common/DevtronProgressing/DevtronProgressing.js +0 -98
  312. package/dist/Common/DevtronProgressing/index.js +0 -4
  313. package/dist/Common/DevtronProgressing/types.js +0 -1
  314. package/dist/Common/Dialogs/ConfirmationDialog.js +0 -24
  315. package/dist/Common/Dialogs/DeleteDialog.js +0 -49
  316. package/dist/Common/Dialogs/DialogForm.js +0 -63
  317. package/dist/Common/Dialogs/ForceDeleteDialog.js +0 -23
  318. package/dist/Common/Dialogs/Types.js +0 -1
  319. package/dist/Common/Dialogs/index.js +0 -11
  320. package/dist/Common/DraggableWrapper/DraggableButton.js +0 -16
  321. package/dist/Common/DraggableWrapper/DraggableWrapper.js +0 -73
  322. package/dist/Common/DraggableWrapper/index.js +0 -8
  323. package/dist/Common/DraggableWrapper/types.js +0 -4
  324. package/dist/Common/Drawer/Drawer.js +0 -22
  325. package/dist/Common/EmptyState/EmptyState.js +0 -32
  326. package/dist/Common/EmptyState/GenericEmptyState.js +0 -53
  327. package/dist/Common/Error.js +0 -49
  328. package/dist/Common/ErrorScreenNotFound.js +0 -23
  329. package/dist/Common/Grid/Grid.js +0 -31
  330. package/dist/Common/Grid/types.js +0 -1
  331. package/dist/Common/Helper.js +0 -39
  332. package/dist/Common/Hooks/UseClickOutside/UseClickOutside.js +0 -14
  333. package/dist/Common/Hooks/UseSuperAdmin/UseSuperAdmin.js +0 -16
  334. package/dist/Common/Hooks/UseSuperAdmin/types.js +0 -1
  335. package/dist/Common/Hooks/UseWindowSize/UseWindowSize.js +0 -17
  336. package/dist/Common/Hooks/index.js +0 -8
  337. package/dist/Common/ImageTags.Types.js +0 -1
  338. package/dist/Common/ImageTags.js +0 -384
  339. package/dist/Common/InfoColorBar/InfoColourbar.js +0 -65
  340. package/dist/Common/Modals/Modal.js +0 -48
  341. package/dist/Common/Modals/OpaqueModal.js +0 -32
  342. package/dist/Common/Modals/VisibleModal.js +0 -31
  343. package/dist/Common/Modals/VisibleModal2.js +0 -31
  344. package/dist/Common/MultiSelectCustomization.js +0 -97
  345. package/dist/Common/Pagination/PageSizeSelector.d.ts +0 -3
  346. package/dist/Common/Pagination/PageSizeSelector.js +0 -52
  347. package/dist/Common/Pagination/Pagination.d.ts +0 -3
  348. package/dist/Common/Pagination/Pagination.js +0 -98
  349. package/dist/Common/Pagination/constants.d.ts +0 -5
  350. package/dist/Common/Pagination/constants.js +0 -9
  351. package/dist/Common/Pagination/index.d.ts +0 -1
  352. package/dist/Common/Pagination/index.js +0 -4
  353. package/dist/Common/Pagination/types.d.ts +0 -51
  354. package/dist/Common/Pagination/types.js +0 -1
  355. package/dist/Common/Pagination/utils.d.ts +0 -6
  356. package/dist/Common/Pagination/utils.js +0 -15
  357. package/dist/Common/Policy.Types.js +0 -6
  358. package/dist/Common/PopupMenu.js +0 -148
  359. package/dist/Common/Progressing.js +0 -52
  360. package/dist/Common/RJSF/Form.js +0 -25
  361. package/dist/Common/RJSF/common/FieldRow.js +0 -25
  362. package/dist/Common/RJSF/common/types.js +0 -1
  363. package/dist/Common/RJSF/config.js +0 -33
  364. package/dist/Common/RJSF/constants.js +0 -10
  365. package/dist/Common/RJSF/index.js +0 -7
  366. package/dist/Common/RJSF/templates/ArrayFieldItemTemplate.js +0 -30
  367. package/dist/Common/RJSF/templates/ArrayFieldTemplate.js +0 -60
  368. package/dist/Common/RJSF/templates/BaseInput.js +0 -16
  369. package/dist/Common/RJSF/templates/ButtonTemplates/AddButton.js +0 -18
  370. package/dist/Common/RJSF/templates/ButtonTemplates/RemoveButton.js +0 -6
  371. package/dist/Common/RJSF/templates/ButtonTemplates/SubmitButton.js +0 -17
  372. package/dist/Common/RJSF/templates/ButtonTemplates/index.js +0 -8
  373. package/dist/Common/RJSF/templates/Description.js +0 -9
  374. package/dist/Common/RJSF/templates/Field.js +0 -18
  375. package/dist/Common/RJSF/templates/FieldErrorTemplate.js +0 -13
  376. package/dist/Common/RJSF/templates/ObjectFieldTemplate.js +0 -71
  377. package/dist/Common/RJSF/templates/TitleField.js +0 -8
  378. package/dist/Common/RJSF/templates/WrapIfAdditionalTemplate.js +0 -43
  379. package/dist/Common/RJSF/templates/index.js +0 -26
  380. package/dist/Common/RJSF/types.js +0 -1
  381. package/dist/Common/RJSF/utils.js +0 -95
  382. package/dist/Common/RJSF/widgets/Checkbox.js +0 -39
  383. package/dist/Common/RJSF/widgets/Select.js +0 -625
  384. package/dist/Common/RJSF/widgets/index.js +0 -6
  385. package/dist/Common/RadioGroup/RadioGroup.js +0 -76
  386. package/dist/Common/RadioGroup.js +0 -47
  387. package/dist/Common/Reload.js +0 -16
  388. package/dist/Common/ResizableTextarea.js +0 -60
  389. package/dist/Common/SearchBar/SearchBar.component.d.ts +0 -37
  390. package/dist/Common/SearchBar/SearchBar.component.js +0 -66
  391. package/dist/Common/SearchBar/index.d.ts +0 -2
  392. package/dist/Common/SearchBar/index.js +0 -4
  393. package/dist/Common/SearchBar/types.d.ts +0 -35
  394. package/dist/Common/SearchBar/types.js +0 -1
  395. package/dist/Common/Security/ScanVulnerabilitiesTable.js +0 -49
  396. package/dist/Common/Select/Select.d.ts +0 -4
  397. package/dist/Common/Select/Select.js +0 -193
  398. package/dist/Common/Select/types.d.ts +0 -29
  399. package/dist/Common/Select/types.js +0 -1
  400. package/dist/Common/ServerError.js +0 -26
  401. package/dist/Common/TippyCustomized.js +0 -10
  402. package/dist/Common/ToastBody.js +0 -41
  403. package/dist/Common/Toggle/Toggle.js +0 -40
  404. package/dist/Common/Types.js +0 -24
  405. package/dist/Common/index.js +0 -224
  406. package/dist/Helper-a0caa238.js +0 -9834
  407. package/dist/TippyCustomized-7b9b46b9.js +0 -124
  408. package/dist/_commonjsHelpers-aeeeeb92.js +0 -30
  409. package/dist/abap-9f67f57a.js +0 -1314
  410. package/dist/apex-ff62e532.js +0 -315
  411. package/dist/assets/CodeEditor.css +0 -1
  412. package/dist/assets/Drawer.css +0 -1
  413. package/dist/assets/Form.css +0 -1
  414. package/dist/assets/GenericEmptyState.css +0 -1
  415. package/dist/assets/InfoColourbar.css +0 -1
  416. package/dist/assets/Pagination.css +0 -1
  417. package/dist/assets/RadioGroup.css +0 -1
  418. package/dist/assets/ScanVulnerabilitiesTable.css +0 -1
  419. package/dist/assets/SearchBar.component.css +0 -1
  420. package/dist/assets/Select.css +0 -1
  421. package/dist/assets/TippyCustomized.css +0 -1
  422. package/dist/assets/Toggle.css +0 -1
  423. package/dist/assets/editor.worker-d26000ef.js +0 -9
  424. package/dist/assets/json.worker-f23a4654.js +0 -40
  425. package/dist/assets/yaml.worker-64fecd27.js +0 -463
  426. package/dist/azcli-31e64a7f.js +0 -74
  427. package/dist/bat-0ffe897e.js +0 -95
  428. package/dist/bicep-3414a2b1.js +0 -108
  429. package/dist/cameligo-df1f3f25.js +0 -168
  430. package/dist/clojure-65b0f010.js +0 -754
  431. package/dist/coffee-437f0fba.js +0 -228
  432. package/dist/cpp-66843dd5.js +0 -390
  433. package/dist/csharp-621d9a49.js +0 -320
  434. package/dist/csp-de0d5244.js +0 -57
  435. package/dist/css-7cd5ed4c.js +0 -186
  436. package/dist/cssMode-c5cae484.js +0 -1446
  437. package/dist/cypher-70ad96fe.js +0 -262
  438. package/dist/dart-33ae3739.js +0 -270
  439. package/dist/dockerfile-f2274a50.js +0 -132
  440. package/dist/ecl-3b8294a3.js +0 -454
  441. package/dist/elixir-b9dcc73a.js +0 -489
  442. package/dist/extends-70f3d2a3.js +0 -13
  443. package/dist/flow9-bdde8316.js +0 -141
  444. package/dist/freemarker2-b9a8615c.js +0 -643
  445. package/dist/fsharp-eac2e449.js +0 -210
  446. package/dist/go-d12ed8d4.js +0 -208
  447. package/dist/graphql-c7356b69.js +0 -141
  448. package/dist/handlebars-3803af36.js +0 -391
  449. package/dist/hcl-e883a0d4.js +0 -177
  450. package/dist/html-498f0150.js +0 -281
  451. package/dist/htmlMode-a8ae8cc5.js +0 -1456
  452. package/dist/ic-add-4787ded5.js +0 -5
  453. package/dist/ic-chevron-down-eb7fd953.js +0 -6
  454. package/dist/ic-copy-118b83dc.js +0 -5
  455. package/dist/ic-cross-0e71861d.js +0 -6
  456. package/dist/ic-error-cross-2760059a.js +0 -5
  457. package/dist/ic-error-exclamation-5f9af461.js +0 -5
  458. package/dist/ic-info-filled-31a15add.js +0 -6
  459. package/dist/ic-info-outlined-8fa45e87.js +0 -5
  460. package/dist/ic-warning-42534af1.js +0 -5
  461. package/dist/ini-425ab711.js +0 -68
  462. package/dist/inject-tag-824bf92c.js +0 -5
  463. package/dist/java-2bc0fd68.js +0 -221
  464. package/dist/javascript-4363ced3.js +0 -75
  465. package/dist/jsonMode-80290b9e.js +0 -1867
  466. package/dist/jsx-runtime-0dcb030c.js +0 -667
  467. package/dist/julia-1c932615.js +0 -496
  468. package/dist/kotlin-1ab839c8.js +0 -245
  469. package/dist/less-6fe856f5.js +0 -168
  470. package/dist/lexon-4955ac52.js +0 -151
  471. package/dist/liquid-1398df0a.js +0 -238
  472. package/dist/lua-3cca0047.js +0 -157
  473. package/dist/m3-132e9cb6.js +0 -210
  474. package/dist/markdown-ea59a0c1.js +0 -202
  475. package/dist/mips-19811f4b.js +0 -194
  476. package/dist/msdax-69954a10.js +0 -377
  477. package/dist/mysql-82088e5d.js +0 -876
  478. package/dist/objective-c-1976eccc.js +0 -188
  479. package/dist/pascal-8ef177cb.js +0 -245
  480. package/dist/pascaligo-bc517b9e.js +0 -158
  481. package/dist/perl-8b93582c.js +0 -599
  482. package/dist/pgsql-00c11a6d.js +0 -847
  483. package/dist/php-4c8c276f.js +0 -471
  484. package/dist/pla-e9b4ffb1.js +0 -131
  485. package/dist/postiats-2071af8c.js +0 -544
  486. package/dist/powerquery-8e388ceb.js +0 -890
  487. package/dist/powershell-e35db398.js +0 -233
  488. package/dist/protobuf-a24b9176.js +0 -422
  489. package/dist/pug-2c94d9b8.js +0 -393
  490. package/dist/python-dd2d43e8.js +0 -259
  491. package/dist/qsharp-d730d7fe.js +0 -282
  492. package/dist/r-be193556.js +0 -245
  493. package/dist/razor-20a66096.js +0 -512
  494. package/dist/react-select.esm-97f26847.js +0 -4160
  495. package/dist/react-toastify.esm-1042de65.js +0 -792
  496. package/dist/react.esm-2c92920f.js +0 -13727
  497. package/dist/redis-9690c6ac.js +0 -298
  498. package/dist/redshift-6bdcdeaa.js +0 -806
  499. package/dist/restructuredtext-a08c1d20.js +0 -162
  500. package/dist/ruby-2247692b.js +0 -444
  501. package/dist/rust-1dffb4d5.js +0 -337
  502. package/dist/sb-136598e9.js +0 -110
  503. package/dist/scala-b1100fed.js +0 -353
  504. package/dist/scheme-038c8094.js +0 -114
  505. package/dist/scss-700d1b52.js +0 -244
  506. package/dist/shell-86c16e0f.js +0 -224
  507. package/dist/solidity-c05fdf3c.js +0 -1351
  508. package/dist/sophia-cd645d71.js +0 -190
  509. package/dist/sparql-01d9ec9c.js +0 -193
  510. package/dist/sql-4c33df41.js +0 -818
  511. package/dist/st-52cf1408.js +0 -414
  512. package/dist/swift-13c792ba.js +0 -315
  513. package/dist/systemverilog-0bd8b730.js +0 -556
  514. package/dist/tcl-463d7c75.js +0 -232
  515. package/dist/tippy-react.esm-8dc66a75.js +0 -2018
  516. package/dist/tsMode-3fa4eb6a.js +0 -811
  517. package/dist/twig-0d98f5ec.js +0 -323
  518. package/dist/typescript-1bbaf605.js +0 -328
  519. package/dist/vb-3a2b0a51.js +0 -364
  520. package/dist/wgsl-b2ddb3e4.js +0 -420
  521. package/dist/xml-a2693dbd.js +0 -95
  522. package/dist/yaml-01ce4fdd.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
+ }