@devtron-labs/devtron-fe-common-lib 0.0.52-beta-1 → 0.0.52-beta-3

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