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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/.eslintignore +96 -0
  2. package/.eslintrc.js +109 -0
  3. package/.github/pull_request_template.md +25 -0
  4. package/.github/workflows/ci.yml +31 -0
  5. package/.github/workflows/release-package.yml +48 -0
  6. package/.husky/pre-commit +5 -0
  7. package/.lintstagedrc +3 -0
  8. package/.nvmrc +1 -0
  9. package/.prettierrc.js +7 -0
  10. package/dist/Common/AddCDButton/AddCDButton.d.ts +3 -3
  11. package/dist/Common/AddCDButton/index.d.ts +2 -2
  12. package/dist/Common/AddCDButton/types.d.ts +26 -26
  13. package/dist/Common/AddCDButton/utils.d.ts +2 -2
  14. package/dist/Common/Api.d.ts +5 -5
  15. package/dist/Common/AppStatus/AppStatus.d.ts +3 -3
  16. package/dist/Common/AppStatus/constants.d.ts +51 -51
  17. package/dist/Common/AppStatus/index.d.ts +1 -1
  18. package/dist/Common/AppStatus/types.d.ts +12 -12
  19. package/dist/Common/AppStatus/utils.d.ts +1 -1
  20. package/dist/Common/BreadCrumb/BreadCrumb.d.ts +5 -5
  21. package/dist/Common/BreadCrumb/BreadcrumbStore.d.ts +17 -17
  22. package/dist/Common/BreadCrumb/Types.d.ts +28 -28
  23. package/dist/Common/CIPipeline.Types.d.ts +265 -265
  24. package/dist/Common/ChartVersionAndTypeSelector.d.ts +4 -3
  25. package/dist/Common/Checkbox.d.ts +5 -5
  26. package/dist/Common/ClipboardButton/ClipboardButton.d.ts +10 -10
  27. package/dist/Common/ClipboardButton/types.d.ts +8 -8
  28. package/dist/Common/Common.service.d.ts +20 -20
  29. package/dist/Common/Constants.d.ts +75 -81
  30. package/dist/Common/CustomInput/CustomInput.d.ts +3 -2
  31. package/dist/Common/CustomInput/Types.d.ts +31 -30
  32. package/dist/Common/CustomInput/index.d.ts +2 -2
  33. package/dist/Common/CustomTagSelector/PropagateTagInfo.d.ts +4 -4
  34. package/dist/Common/CustomTagSelector/ResizableTagTextArea.d.ts +3 -2
  35. package/dist/Common/CustomTagSelector/TagDetails.d.ts +3 -2
  36. package/dist/Common/CustomTagSelector/TagLabelSelect.d.ts +3 -2
  37. package/dist/Common/CustomTagSelector/TagLabelValueSelector.d.ts +3 -2
  38. package/dist/Common/CustomTagSelector/TagSelector.utils.d.ts +12 -12
  39. package/dist/Common/CustomTagSelector/Types.d.ts +68 -68
  40. package/dist/Common/CustomTagSelector/ValidationRules.d.ts +10 -10
  41. package/dist/Common/CustomTagSelector/index.d.ts +6 -6
  42. package/dist/Common/DebouncedSearch/DebouncedSearch.d.ts +17 -17
  43. package/dist/Common/DebouncedSearch/Types.d.ts +14 -14
  44. package/dist/Common/DebouncedSearch/Utils.d.ts +1 -1
  45. package/dist/Common/DeleteComponentModal/DeleteComponent.d.ts +4 -3
  46. package/dist/Common/DeleteComponentModal/types.d.ts +15 -15
  47. package/dist/Common/DevtronProgressing/DevtronProgressing.d.ts +3 -2
  48. package/dist/Common/DevtronProgressing/index.d.ts +1 -1
  49. package/dist/Common/DevtronProgressing/types.d.ts +4 -4
  50. package/dist/Common/Dialogs/ConfirmationDialog.d.ts +9 -8
  51. package/dist/Common/Dialogs/DeleteDialog.d.ts +5 -5
  52. package/dist/Common/Dialogs/DialogForm.d.ts +14 -14
  53. package/dist/Common/Dialogs/ForceDeleteDialog.d.ts +3 -3
  54. package/dist/Common/Dialogs/Types.d.ts +45 -45
  55. package/dist/Common/Dialogs/index.d.ts +4 -4
  56. package/dist/Common/DraggableWrapper/DraggableButton.d.ts +3 -3
  57. package/dist/Common/DraggableWrapper/DraggableWrapper.d.ts +9 -9
  58. package/dist/Common/DraggableWrapper/index.d.ts +3 -3
  59. package/dist/Common/DraggableWrapper/types.d.ts +23 -23
  60. package/dist/Common/Drawer/Drawer.d.ts +16 -14
  61. package/dist/Common/EmptyState/EmptyState.d.ts +25 -31
  62. package/dist/Common/EmptyState/GenericEmptyState.d.ts +5 -3
  63. package/dist/Common/Error.d.ts +17 -17
  64. package/dist/Common/ErrorScreenNotFound.d.ts +3 -2
  65. package/dist/Common/Grid/Grid.d.ts +3 -3
  66. package/dist/Common/Grid/types.d.ts +10 -10
  67. package/dist/Common/Helper.d.ts +64 -65
  68. package/dist/Common/Hooks/UseClickOutside/UseClickOutside.d.ts +1 -1
  69. package/dist/Common/Hooks/UseSuperAdmin/UseSuperAdmin.d.ts +6 -6
  70. package/dist/Common/Hooks/UseSuperAdmin/types.d.ts +3 -3
  71. package/dist/Common/Hooks/UseWindowSize/UseWindowSize.d.ts +4 -4
  72. package/dist/Common/Hooks/index.d.ts +3 -3
  73. package/dist/Common/ImageTags.Types.d.ts +40 -40
  74. package/dist/Common/ImageTags.d.ts +4 -3
  75. package/dist/Common/InfoColorBar/InfoColourbar.d.ts +5 -3
  76. package/dist/Common/Modals/Modal.d.ts +3 -3
  77. package/dist/Common/Modals/OpaqueModal.d.ts +12 -12
  78. package/dist/Common/Modals/VisibleModal.d.ts +15 -15
  79. package/dist/Common/Modals/VisibleModal2.d.ts +12 -12
  80. package/dist/Common/MultiSelectCustomization.d.ts +37 -37
  81. package/dist/Common/Pagination/PageSizeSelector.d.ts +4 -3
  82. package/dist/Common/Pagination/Pagination.d.ts +5 -3
  83. package/dist/Common/Pagination/constants.d.ts +5 -5
  84. package/dist/Common/Pagination/index.d.ts +1 -1
  85. package/dist/Common/Pagination/types.d.ts +51 -51
  86. package/dist/Common/Pagination/utils.d.ts +6 -6
  87. package/dist/Common/Policy.Types.d.ts +56 -56
  88. package/dist/Common/PopupMenu.d.ts +8 -7
  89. package/dist/Common/Progressing.d.ts +4 -3
  90. package/dist/Common/RJSF/Form.d.ts +4 -2
  91. package/dist/Common/RJSF/common/FieldRow.d.ts +6 -5
  92. package/dist/Common/RJSF/common/types.d.ts +8 -8
  93. package/dist/Common/RJSF/config.d.ts +4 -4
  94. package/dist/Common/RJSF/constants.d.ts +7 -7
  95. package/dist/Common/RJSF/index.d.ts +3 -3
  96. package/dist/Common/RJSF/templates/ArrayFieldItemTemplate.d.ts +3 -2
  97. package/dist/Common/RJSF/templates/ArrayFieldTemplate.d.ts +3 -2
  98. package/dist/Common/RJSF/templates/BaseInput.d.ts +3 -2
  99. package/dist/Common/RJSF/templates/ButtonTemplates/AddButton.d.ts +3 -2
  100. package/dist/Common/RJSF/templates/ButtonTemplates/RemoveButton.d.ts +3 -2
  101. package/dist/Common/RJSF/templates/ButtonTemplates/SubmitButton.d.ts +3 -2
  102. package/dist/Common/RJSF/templates/ButtonTemplates/index.d.ts +3 -3
  103. package/dist/Common/RJSF/templates/Description.d.ts +3 -2
  104. package/dist/Common/RJSF/templates/Field.d.ts +3 -2
  105. package/dist/Common/RJSF/templates/FieldErrorTemplate.d.ts +3 -2
  106. package/dist/Common/RJSF/templates/ObjectFieldTemplate.d.ts +3 -2
  107. package/dist/Common/RJSF/templates/TitleField.d.ts +3 -2
  108. package/dist/Common/RJSF/templates/WrapIfAdditionalTemplate.d.ts +3 -2
  109. package/dist/Common/RJSF/templates/index.d.ts +10 -10
  110. package/dist/Common/RJSF/types.d.ts +3 -3
  111. package/dist/Common/RJSF/utils.d.ts +26 -25
  112. package/dist/Common/RJSF/widgets/Checkbox.d.ts +3 -2
  113. package/dist/Common/RJSF/widgets/Select.d.ts +3 -2
  114. package/dist/Common/RJSF/widgets/index.d.ts +2 -2
  115. package/dist/Common/RadioGroup/RadioGroup.d.ts +17 -16
  116. package/dist/Common/RadioGroup.d.ts +8 -8
  117. package/dist/Common/Reload.d.ts +3 -3
  118. package/dist/Common/ResizableTextarea.d.ts +3 -3
  119. package/dist/Common/SearchBar/SearchBar.component.d.ts +39 -37
  120. package/dist/Common/SearchBar/index.d.ts +2 -2
  121. package/dist/Common/SearchBar/types.d.ts +44 -35
  122. package/dist/Common/Security/ScanVulnerabilitiesTable.d.ts +4 -3
  123. package/dist/Common/ServerError.d.ts +15 -15
  124. package/dist/Common/TippyCustomized.d.ts +4 -2
  125. package/dist/Common/ToastBody.d.ts +23 -23
  126. package/dist/Common/Toggle/Toggle.d.ts +14 -12
  127. package/dist/Common/Types.d.ts +691 -691
  128. package/dist/Common/index.d.ts +50 -51
  129. package/dist/index.d.ts +1 -1
  130. package/dist/index.js +28883 -225
  131. package/package.json +23 -35
  132. package/rollup.config.js +31 -0
  133. package/src/Assets/Icon/ic-add.svg +3 -0
  134. package/src/Assets/Icon/ic-appstatus-cancelled.svg +6 -0
  135. package/src/Assets/Icon/ic-arrow-counter-clockwise.svg +5 -0
  136. package/src/Assets/Icon/ic-check.svg +5 -0
  137. package/src/Assets/Icon/ic-chevron-down.svg +5 -0
  138. package/src/Assets/Icon/ic-copy.svg +3 -0
  139. package/src/Assets/Icon/ic-cross.svg +3 -0
  140. package/src/Assets/Icon/ic-drag.svg +8 -0
  141. package/src/Assets/Icon/ic-enter.svg +3 -0
  142. package/src/Assets/Icon/ic-error-cross.svg +8 -0
  143. package/src/Assets/Icon/ic-error-exclamation.svg +6 -0
  144. package/src/Assets/Icon/ic-error-medium.svg +6 -0
  145. package/src/Assets/Icon/ic-help-outline.svg +3 -0
  146. package/src/Assets/Icon/ic-help.svg +3 -0
  147. package/src/Assets/Icon/ic-info-filled.svg +7 -0
  148. package/src/Assets/Icon/ic-info-outlined.svg +13 -0
  149. package/src/Assets/Icon/ic-minus.svg +3 -0
  150. package/src/Assets/Icon/ic-pencil.svg +3 -0
  151. package/src/Assets/Icon/ic-progressing.svg +6 -0
  152. package/src/Assets/Icon/ic-rotate-devtron.svg +103 -0
  153. package/src/Assets/Icon/ic-search.svg +6 -0
  154. package/src/Assets/Icon/ic-warning.svg +7 -0
  155. package/src/Assets/Icon/inject-tag.svg +5 -0
  156. package/src/Assets/Img/app-not-deployed.png +0 -0
  157. package/src/Assets/Img/delete-medium.svg +15 -0
  158. package/src/Assets/Img/ic-empty-error@2x.png +0 -0
  159. package/src/Assets/Img/ic-loading-failure.png +0 -0
  160. package/src/Assets/Img/ic-not-authorized.svg +62 -0
  161. package/src/Common/AddCDButton/AddCDButton.tsx +68 -0
  162. package/src/Common/AddCDButton/index.ts +2 -0
  163. package/src/Common/AddCDButton/types.ts +38 -0
  164. package/src/Common/AddCDButton/utils.tsx +35 -0
  165. package/src/Common/Api.ts +230 -0
  166. package/src/Common/AppStatus/AppStatus.tsx +64 -0
  167. package/src/Common/AppStatus/constants.ts +53 -0
  168. package/src/Common/AppStatus/index.ts +1 -0
  169. package/src/Common/AppStatus/types.ts +12 -0
  170. package/src/Common/AppStatus/utils.ts +14 -0
  171. package/src/Common/BreadCrumb/BreadCrumb.tsx +105 -0
  172. package/src/Common/BreadCrumb/BreadcrumbStore.tsx +25 -0
  173. package/src/Common/BreadCrumb/Types.ts +30 -0
  174. package/src/Common/CIPipeline.Types.ts +277 -0
  175. package/src/Common/ChartVersionAndTypeSelector.tsx +78 -0
  176. package/src/Common/Checkbox.tsx +36 -0
  177. package/src/Common/ClipboardButton/ClipboardButton.tsx +61 -0
  178. package/src/Common/ClipboardButton/__tests__/ClipboardButton.test.tsx +43 -0
  179. package/src/Common/ClipboardButton/types.ts +7 -0
  180. package/src/Common/Common.service.ts +315 -0
  181. package/src/Common/Constants.ts +254 -0
  182. package/src/Common/CustomInput/CustomInput.tsx +133 -0
  183. package/src/Common/CustomInput/Types.ts +32 -0
  184. package/src/Common/CustomInput/index.ts +2 -0
  185. package/src/Common/CustomTagSelector/PropagateTagInfo.tsx +46 -0
  186. package/src/Common/CustomTagSelector/ResizableTagTextArea.tsx +84 -0
  187. package/src/Common/CustomTagSelector/TagDetails.tsx +76 -0
  188. package/src/Common/CustomTagSelector/TagLabelSelect.tsx +61 -0
  189. package/src/Common/CustomTagSelector/TagLabelValueSelector.tsx +198 -0
  190. package/src/Common/CustomTagSelector/TagSelector.utils.ts +71 -0
  191. package/src/Common/CustomTagSelector/Types.ts +72 -0
  192. package/src/Common/CustomTagSelector/ValidationRules.ts +58 -0
  193. package/src/Common/CustomTagSelector/index.ts +6 -0
  194. package/src/Common/DebouncedSearch/DebouncedSearch.tsx +78 -0
  195. package/src/Common/DebouncedSearch/Types.ts +13 -0
  196. package/src/Common/DebouncedSearch/Utils.ts +19 -0
  197. package/src/Common/DebouncedSearch/__tests__/DebouncedSearch.test.tsx +61 -0
  198. package/src/Common/DeleteComponentModal/DeleteComponent.tsx +95 -0
  199. package/src/Common/DeleteComponentModal/types.ts +15 -0
  200. package/src/Common/DevtronProgressing/DevtronProgressing.tsx +11 -0
  201. package/src/Common/DevtronProgressing/index.ts +1 -0
  202. package/src/Common/DevtronProgressing/types.ts +4 -0
  203. package/src/Common/Dialogs/ConfirmationDialog.tsx +34 -0
  204. package/src/Common/Dialogs/DeleteDialog.tsx +69 -0
  205. package/src/Common/Dialogs/DialogForm.tsx +86 -0
  206. package/src/Common/Dialogs/ForceDeleteDialog.tsx +19 -0
  207. package/src/Common/Dialogs/Types.ts +47 -0
  208. package/src/Common/Dialogs/index.ts +4 -0
  209. package/src/Common/DraggableWrapper/DraggableButton.tsx +14 -0
  210. package/src/Common/DraggableWrapper/DraggableWrapper.tsx +116 -0
  211. package/src/Common/DraggableWrapper/index.ts +3 -0
  212. package/src/Common/DraggableWrapper/types.ts +27 -0
  213. package/src/Common/Drawer/Drawer.scss +40 -0
  214. package/src/Common/Drawer/Drawer.tsx +49 -0
  215. package/src/Common/EmptyState/EmptyState.tsx +42 -0
  216. package/src/Common/EmptyState/GenericEmptyState.tsx +81 -0
  217. package/src/Common/EmptyState/emptyState.scss +74 -0
  218. package/src/Common/Error.tsx +61 -0
  219. package/src/Common/ErrorScreenNotFound.tsx +31 -0
  220. package/src/Common/Grid/Grid.tsx +44 -0
  221. package/src/Common/Grid/types.ts +11 -0
  222. package/src/Common/Helper.tsx +576 -0
  223. package/src/Common/Hooks/UseClickOutside/UseClickOutside.tsx +15 -0
  224. package/src/Common/Hooks/UseSuperAdmin/UseSuperAdmin.tsx +24 -0
  225. package/src/Common/Hooks/UseSuperAdmin/types.ts +3 -0
  226. package/src/Common/Hooks/UseWindowSize/UseWindowSize.tsx +31 -0
  227. package/src/Common/Hooks/index.ts +3 -0
  228. package/src/Common/ImageTags.Types.ts +44 -0
  229. package/src/Common/ImageTags.tsx +586 -0
  230. package/src/Common/InfoColorBar/InfoColourbar.tsx +80 -0
  231. package/src/Common/InfoColorBar/infoColourBar.scss +28 -0
  232. package/src/Common/Modals/Modal.tsx +68 -0
  233. package/src/Common/Modals/OpaqueModal.tsx +36 -0
  234. package/src/Common/Modals/VisibleModal.tsx +55 -0
  235. package/src/Common/Modals/VisibleModal2.tsx +35 -0
  236. package/src/Common/MultiSelectCustomization.tsx +148 -0
  237. package/src/Common/Pagination/PageSizeSelector.tsx +78 -0
  238. package/src/Common/Pagination/Pagination.tsx +127 -0
  239. package/src/Common/Pagination/constants.ts +6 -0
  240. package/src/Common/Pagination/index.tsx +3 -0
  241. package/src/Common/Pagination/pagination.scss +123 -0
  242. package/src/Common/Pagination/types.ts +55 -0
  243. package/src/Common/Pagination/utils.tsx +24 -0
  244. package/src/Common/Policy.Types.ts +63 -0
  245. package/src/Common/PopupMenu.tsx +199 -0
  246. package/src/Common/Progressing.tsx +53 -0
  247. package/src/Common/RJSF/Form.tsx +29 -0
  248. package/src/Common/RJSF/common/FieldRow.tsx +35 -0
  249. package/src/Common/RJSF/common/types.ts +9 -0
  250. package/src/Common/RJSF/config.ts +37 -0
  251. package/src/Common/RJSF/constants.ts +10 -0
  252. package/src/Common/RJSF/index.ts +3 -0
  253. package/src/Common/RJSF/rjsfForm.scss +18 -0
  254. package/src/Common/RJSF/templates/ArrayFieldItemTemplate.tsx +31 -0
  255. package/src/Common/RJSF/templates/ArrayFieldTemplate.tsx +78 -0
  256. package/src/Common/RJSF/templates/BaseInput.tsx +16 -0
  257. package/src/Common/RJSF/templates/ButtonTemplates/AddButton.tsx +18 -0
  258. package/src/Common/RJSF/templates/ButtonTemplates/RemoveButton.tsx +10 -0
  259. package/src/Common/RJSF/templates/ButtonTemplates/SubmitButton.tsx +18 -0
  260. package/src/Common/RJSF/templates/ButtonTemplates/index.ts +3 -0
  261. package/src/Common/RJSF/templates/Description.tsx +12 -0
  262. package/src/Common/RJSF/templates/Field.tsx +30 -0
  263. package/src/Common/RJSF/templates/FieldErrorTemplate.tsx +25 -0
  264. package/src/Common/RJSF/templates/ObjectFieldTemplate.tsx +105 -0
  265. package/src/Common/RJSF/templates/TitleField.tsx +9 -0
  266. package/src/Common/RJSF/templates/WrapIfAdditionalTemplate.tsx +51 -0
  267. package/src/Common/RJSF/templates/index.ts +10 -0
  268. package/src/Common/RJSF/types.ts +4 -0
  269. package/src/Common/RJSF/utils.ts +123 -0
  270. package/src/Common/RJSF/widgets/Checkbox.tsx +44 -0
  271. package/src/Common/RJSF/widgets/Select.tsx +77 -0
  272. package/src/Common/RJSF/widgets/index.ts +2 -0
  273. package/src/Common/RadioGroup/RadioGroup.tsx +105 -0
  274. package/src/Common/RadioGroup/radioGroup.scss +46 -0
  275. package/src/Common/RadioGroup.tsx +53 -0
  276. package/src/Common/Reload.tsx +23 -0
  277. package/src/Common/ResizableTextarea.tsx +73 -0
  278. package/src/Common/SearchBar/SearchBar.component.tsx +122 -0
  279. package/src/Common/SearchBar/index.ts +2 -0
  280. package/src/Common/SearchBar/searchBar.scss +31 -0
  281. package/src/Common/SearchBar/types.ts +45 -0
  282. package/src/Common/Security/ScanVulnerabilitiesTable.tsx +55 -0
  283. package/src/Common/Security/scanVulnerabilities.css +69 -0
  284. package/src/Common/ServerError.ts +31 -0
  285. package/src/Common/TippyCustomized.tsx +172 -0
  286. package/src/Common/ToastBody.tsx +62 -0
  287. package/src/Common/Toggle/Toggle.scss +78 -0
  288. package/src/Common/Toggle/Toggle.tsx +50 -0
  289. package/src/Common/Types.ts +764 -0
  290. package/src/Common/index.ts +50 -0
  291. package/src/custom.d.ts +13 -0
  292. package/src/index.ts +1 -0
  293. package/tsconfig.json +40 -0
  294. package/dist/CodeEditor-f831f400.js +0 -103695
  295. package/dist/Common/AddCDButton/AddCDButton.js +0 -59
  296. package/dist/Common/AddCDButton/index.js +0 -6
  297. package/dist/Common/AddCDButton/types.js +0 -1
  298. package/dist/Common/AddCDButton/utils.js +0 -19
  299. package/dist/Common/Api.js +0 -169
  300. package/dist/Common/AppStatus/AppStatus.js +0 -37
  301. package/dist/Common/AppStatus/constants.js +0 -37
  302. package/dist/Common/AppStatus/index.js +0 -4
  303. package/dist/Common/AppStatus/types.js +0 -1
  304. package/dist/Common/AppStatus/utils.js +0 -8
  305. package/dist/Common/BreadCrumb/BreadCrumb.js +0 -73
  306. package/dist/Common/BreadCrumb/BreadcrumbStore.js +0 -22
  307. package/dist/Common/BreadCrumb/Types.js +0 -1
  308. package/dist/Common/CIPipeline.Types.js +0 -10
  309. package/dist/Common/ChartVersionAndTypeSelector.js +0 -61
  310. package/dist/Common/Checkbox.js +0 -28
  311. package/dist/Common/ClipboardButton/ClipboardButton.js +0 -40
  312. package/dist/Common/ClipboardButton/__tests__/ClipboardButton.test.js +0 -27
  313. package/dist/Common/ClipboardButton/types.js +0 -1
  314. package/dist/Common/CodeEditor/CodeEditor.d.ts +0 -47
  315. package/dist/Common/CodeEditor/CodeEditor.js +0 -15
  316. package/dist/Common/Common.service.js +0 -196
  317. package/dist/Common/Constants.js +0 -239
  318. package/dist/Common/CustomInput/CustomInput.js +0 -81
  319. package/dist/Common/CustomInput/Types.js +0 -1
  320. package/dist/Common/CustomInput/index.js +0 -4
  321. package/dist/Common/CustomTagSelector/PropagateTagInfo.js +0 -43
  322. package/dist/Common/CustomTagSelector/ResizableTagTextArea.js +0 -58
  323. package/dist/Common/CustomTagSelector/TagDetails.js +0 -73
  324. package/dist/Common/CustomTagSelector/TagLabelSelect.js +0 -53
  325. package/dist/Common/CustomTagSelector/TagLabelValueSelector.js +0 -121
  326. package/dist/Common/CustomTagSelector/TagSelector.utils.js +0 -61
  327. package/dist/Common/CustomTagSelector/Types.js +0 -1
  328. package/dist/Common/CustomTagSelector/ValidationRules.js +0 -35
  329. package/dist/Common/CustomTagSelector/index.js +0 -12
  330. package/dist/Common/DebouncedSearch/DebouncedSearch.js +0 -56
  331. package/dist/Common/DebouncedSearch/Types.js +0 -1
  332. package/dist/Common/DebouncedSearch/Utils.js +0 -19
  333. package/dist/Common/DebouncedSearch/__tests__/DebouncedSearch.test.js +0 -34
  334. package/dist/Common/DeleteComponentModal/DeleteComponent.js +0 -63
  335. package/dist/Common/DeleteComponentModal/types.js +0 -1
  336. package/dist/Common/DevtronProgressing/DevtronProgressing.js +0 -95
  337. package/dist/Common/DevtronProgressing/index.js +0 -4
  338. package/dist/Common/DevtronProgressing/types.js +0 -1
  339. package/dist/Common/Dialogs/ConfirmationDialog.js +0 -13
  340. package/dist/Common/Dialogs/DeleteDialog.js +0 -46
  341. package/dist/Common/Dialogs/DialogForm.js +0 -63
  342. package/dist/Common/Dialogs/ForceDeleteDialog.js +0 -28
  343. package/dist/Common/Dialogs/Types.js +0 -1
  344. package/dist/Common/Dialogs/index.js +0 -11
  345. package/dist/Common/DraggableWrapper/DraggableButton.js +0 -16
  346. package/dist/Common/DraggableWrapper/DraggableWrapper.js +0 -73
  347. package/dist/Common/DraggableWrapper/index.js +0 -8
  348. package/dist/Common/DraggableWrapper/types.js +0 -4
  349. package/dist/Common/Drawer/Drawer.js +0 -22
  350. package/dist/Common/EmptyState/EmptyState.js +0 -25
  351. package/dist/Common/EmptyState/GenericEmptyState.js +0 -79
  352. package/dist/Common/Error.js +0 -49
  353. package/dist/Common/ErrorScreenNotFound.js +0 -22
  354. package/dist/Common/Grid/Grid.js +0 -31
  355. package/dist/Common/Grid/types.js +0 -1
  356. package/dist/Common/Helper.js +0 -39
  357. package/dist/Common/Hooks/UseClickOutside/UseClickOutside.js +0 -14
  358. package/dist/Common/Hooks/UseSuperAdmin/UseSuperAdmin.js +0 -16
  359. package/dist/Common/Hooks/UseSuperAdmin/types.js +0 -1
  360. package/dist/Common/Hooks/UseWindowSize/UseWindowSize.js +0 -17
  361. package/dist/Common/Hooks/index.js +0 -8
  362. package/dist/Common/ImageTags.Types.js +0 -1
  363. package/dist/Common/ImageTags.js +0 -382
  364. package/dist/Common/InfoColorBar/InfoColourbar.js +0 -67
  365. package/dist/Common/Modals/Modal.js +0 -48
  366. package/dist/Common/Modals/OpaqueModal.js +0 -40
  367. package/dist/Common/Modals/VisibleModal.js +0 -39
  368. package/dist/Common/Modals/VisibleModal2.js +0 -39
  369. package/dist/Common/MultiSelectCustomization.js +0 -97
  370. package/dist/Common/Pagination/PageSizeSelector.js +0 -51
  371. package/dist/Common/Pagination/Pagination.js +0 -98
  372. package/dist/Common/Pagination/constants.js +0 -9
  373. package/dist/Common/Pagination/index.js +0 -4
  374. package/dist/Common/Pagination/types.js +0 -1
  375. package/dist/Common/Pagination/utils.js +0 -15
  376. package/dist/Common/Policy.Types.js +0 -6
  377. package/dist/Common/PopupMenu.js +0 -146
  378. package/dist/Common/Progressing.js +0 -49
  379. package/dist/Common/RJSF/Form.js +0 -25
  380. package/dist/Common/RJSF/common/FieldRow.js +0 -25
  381. package/dist/Common/RJSF/common/types.js +0 -1
  382. package/dist/Common/RJSF/config.js +0 -33
  383. package/dist/Common/RJSF/constants.js +0 -10
  384. package/dist/Common/RJSF/index.js +0 -7
  385. package/dist/Common/RJSF/templates/ArrayFieldItemTemplate.js +0 -30
  386. package/dist/Common/RJSF/templates/ArrayFieldTemplate.js +0 -60
  387. package/dist/Common/RJSF/templates/BaseInput.js +0 -16
  388. package/dist/Common/RJSF/templates/ButtonTemplates/AddButton.js +0 -18
  389. package/dist/Common/RJSF/templates/ButtonTemplates/RemoveButton.js +0 -6
  390. package/dist/Common/RJSF/templates/ButtonTemplates/SubmitButton.js +0 -9
  391. package/dist/Common/RJSF/templates/ButtonTemplates/index.js +0 -8
  392. package/dist/Common/RJSF/templates/Description.js +0 -9
  393. package/dist/Common/RJSF/templates/Field.js +0 -31
  394. package/dist/Common/RJSF/templates/FieldErrorTemplate.js +0 -13
  395. package/dist/Common/RJSF/templates/ObjectFieldTemplate.js +0 -71
  396. package/dist/Common/RJSF/templates/TitleField.js +0 -8
  397. package/dist/Common/RJSF/templates/WrapIfAdditionalTemplate.js +0 -43
  398. package/dist/Common/RJSF/templates/index.js +0 -26
  399. package/dist/Common/RJSF/types.js +0 -1
  400. package/dist/Common/RJSF/utils.js +0 -95
  401. package/dist/Common/RJSF/widgets/Checkbox.js +0 -39
  402. package/dist/Common/RJSF/widgets/Select.js +0 -625
  403. package/dist/Common/RJSF/widgets/index.js +0 -6
  404. package/dist/Common/RadioGroup/RadioGroup.js +0 -69
  405. package/dist/Common/RadioGroup.js +0 -53
  406. package/dist/Common/Reload.js +0 -16
  407. package/dist/Common/ResizableTextarea.js +0 -60
  408. package/dist/Common/SearchBar/SearchBar.component.js +0 -66
  409. package/dist/Common/SearchBar/index.js +0 -4
  410. package/dist/Common/SearchBar/types.js +0 -1
  411. package/dist/Common/Security/ScanVulnerabilitiesTable.js +0 -49
  412. package/dist/Common/Select/Select.d.ts +0 -4
  413. package/dist/Common/Select/Select.js +0 -193
  414. package/dist/Common/Select/types.d.ts +0 -29
  415. package/dist/Common/Select/types.js +0 -1
  416. package/dist/Common/ServerError.js +0 -26
  417. package/dist/Common/TippyCustomized.js +0 -10
  418. package/dist/Common/ToastBody.js +0 -41
  419. package/dist/Common/Toggle/Toggle.js +0 -40
  420. package/dist/Common/Types.js +0 -24
  421. package/dist/Common/index.js +0 -226
  422. package/dist/Helper-b720768b.js +0 -9837
  423. package/dist/TippyCustomized-b66513ba.js +0 -124
  424. package/dist/_commonjsHelpers-aeeeeb92.js +0 -30
  425. package/dist/abap-9f67f57a.js +0 -1314
  426. package/dist/apex-ff62e532.js +0 -315
  427. package/dist/assets/CodeEditor.css +0 -1
  428. package/dist/assets/Drawer.css +0 -1
  429. package/dist/assets/Form.css +0 -1
  430. package/dist/assets/GenericEmptyState.css +0 -1
  431. package/dist/assets/InfoColourbar.css +0 -1
  432. package/dist/assets/Pagination.css +0 -1
  433. package/dist/assets/RadioGroup.css +0 -1
  434. package/dist/assets/ScanVulnerabilitiesTable.css +0 -1
  435. package/dist/assets/SearchBar.component.css +0 -1
  436. package/dist/assets/Select.css +0 -1
  437. package/dist/assets/TippyCustomized.css +0 -1
  438. package/dist/assets/Toggle.css +0 -1
  439. package/dist/assets/editor.worker-d26000ef.js +0 -9
  440. package/dist/assets/json.worker-f23a4654.js +0 -40
  441. package/dist/assets/yaml.worker-64fecd27.js +0 -463
  442. package/dist/azcli-31e64a7f.js +0 -74
  443. package/dist/bat-0ffe897e.js +0 -95
  444. package/dist/bicep-3414a2b1.js +0 -108
  445. package/dist/cameligo-df1f3f25.js +0 -168
  446. package/dist/clojure-65b0f010.js +0 -754
  447. package/dist/coffee-437f0fba.js +0 -228
  448. package/dist/cpp-66843dd5.js +0 -390
  449. package/dist/csharp-621d9a49.js +0 -320
  450. package/dist/csp-de0d5244.js +0 -57
  451. package/dist/css-7cd5ed4c.js +0 -186
  452. package/dist/cssMode-3b27e147.js +0 -1446
  453. package/dist/cypher-70ad96fe.js +0 -262
  454. package/dist/dart-33ae3739.js +0 -270
  455. package/dist/dockerfile-f2274a50.js +0 -132
  456. package/dist/ecl-3b8294a3.js +0 -454
  457. package/dist/elixir-b9dcc73a.js +0 -489
  458. package/dist/extends-70f3d2a3.js +0 -13
  459. package/dist/flow9-bdde8316.js +0 -141
  460. package/dist/freemarker2-fdbf3c64.js +0 -643
  461. package/dist/fsharp-eac2e449.js +0 -210
  462. package/dist/go-d12ed8d4.js +0 -208
  463. package/dist/graphql-c7356b69.js +0 -141
  464. package/dist/handlebars-42bbca08.js +0 -391
  465. package/dist/hcl-e883a0d4.js +0 -177
  466. package/dist/html-2b761b4c.js +0 -281
  467. package/dist/htmlMode-5e3287f4.js +0 -1456
  468. package/dist/ic-add-4787ded5.js +0 -5
  469. package/dist/ic-chevron-down-eb7fd953.js +0 -6
  470. package/dist/ic-copy-118b83dc.js +0 -5
  471. package/dist/ic-cross-0e71861d.js +0 -6
  472. package/dist/ic-error-cross-2760059a.js +0 -5
  473. package/dist/ic-error-exclamation-5f9af461.js +0 -5
  474. package/dist/ic-info-filled-31a15add.js +0 -6
  475. package/dist/ic-info-outlined-8fa45e87.js +0 -5
  476. package/dist/ic-warning-42534af1.js +0 -5
  477. package/dist/ini-425ab711.js +0 -68
  478. package/dist/inject-tag-824bf92c.js +0 -5
  479. package/dist/java-2bc0fd68.js +0 -221
  480. package/dist/javascript-7349b260.js +0 -75
  481. package/dist/jsonMode-b06032c4.js +0 -1867
  482. package/dist/jsx-runtime-0dcb030c.js +0 -667
  483. package/dist/julia-1c932615.js +0 -496
  484. package/dist/kotlin-1ab839c8.js +0 -245
  485. package/dist/less-6fe856f5.js +0 -168
  486. package/dist/lexon-4955ac52.js +0 -151
  487. package/dist/liquid-4f07e77f.js +0 -238
  488. package/dist/lua-3cca0047.js +0 -157
  489. package/dist/m3-132e9cb6.js +0 -210
  490. package/dist/markdown-ea59a0c1.js +0 -202
  491. package/dist/mips-19811f4b.js +0 -194
  492. package/dist/msdax-69954a10.js +0 -377
  493. package/dist/mysql-82088e5d.js +0 -876
  494. package/dist/objective-c-1976eccc.js +0 -188
  495. package/dist/pascal-8ef177cb.js +0 -245
  496. package/dist/pascaligo-bc517b9e.js +0 -158
  497. package/dist/perl-8b93582c.js +0 -599
  498. package/dist/pgsql-00c11a6d.js +0 -847
  499. package/dist/php-4c8c276f.js +0 -471
  500. package/dist/pla-e9b4ffb1.js +0 -131
  501. package/dist/postiats-2071af8c.js +0 -544
  502. package/dist/powerquery-8e388ceb.js +0 -890
  503. package/dist/powershell-e35db398.js +0 -233
  504. package/dist/protobuf-a24b9176.js +0 -422
  505. package/dist/pug-2c94d9b8.js +0 -393
  506. package/dist/python-16256213.js +0 -259
  507. package/dist/qsharp-d730d7fe.js +0 -282
  508. package/dist/r-be193556.js +0 -245
  509. package/dist/razor-b4aa4372.js +0 -512
  510. package/dist/react-select.esm-97f26847.js +0 -4160
  511. package/dist/react-toastify.esm-1042de65.js +0 -792
  512. package/dist/react.esm-2c92920f.js +0 -13727
  513. package/dist/redis-9690c6ac.js +0 -298
  514. package/dist/redshift-6bdcdeaa.js +0 -806
  515. package/dist/restructuredtext-a08c1d20.js +0 -162
  516. package/dist/ruby-2247692b.js +0 -444
  517. package/dist/rust-1dffb4d5.js +0 -337
  518. package/dist/sb-136598e9.js +0 -110
  519. package/dist/scala-b1100fed.js +0 -353
  520. package/dist/scheme-038c8094.js +0 -114
  521. package/dist/scss-700d1b52.js +0 -244
  522. package/dist/shell-86c16e0f.js +0 -224
  523. package/dist/solidity-c05fdf3c.js +0 -1351
  524. package/dist/sophia-cd645d71.js +0 -190
  525. package/dist/sparql-01d9ec9c.js +0 -193
  526. package/dist/sql-4c33df41.js +0 -818
  527. package/dist/st-52cf1408.js +0 -414
  528. package/dist/swift-13c792ba.js +0 -315
  529. package/dist/systemverilog-0bd8b730.js +0 -556
  530. package/dist/tcl-463d7c75.js +0 -232
  531. package/dist/tippy-react.esm-8dc66a75.js +0 -2018
  532. package/dist/tsMode-426d35c9.js +0 -811
  533. package/dist/twig-0d98f5ec.js +0 -323
  534. package/dist/typescript-936e1f48.js +0 -328
  535. package/dist/vb-3a2b0a51.js +0 -364
  536. package/dist/wgsl-b2ddb3e4.js +0 -420
  537. package/dist/xml-5430ab58.js +0 -95
  538. package/dist/yaml-9bde48c0.js +0 -184
@@ -0,0 +1,32 @@
1
+ import React, { HTMLInputTypeAttribute } from 'react'
2
+
3
+ export interface CustomInputProps {
4
+ name: string
5
+ value: string | number
6
+ onChange: (e: any) => void
7
+ onFocus?: (e: any) => void
8
+ autoComplete?: string
9
+ label?: string | React.ReactNode
10
+ labelClassName?: string
11
+ type?: HTMLInputTypeAttribute
12
+ disabled?: boolean
13
+ placeholder?: string
14
+ tabIndex?: number
15
+ dataTestid?: string
16
+ isRequiredField?: boolean
17
+ autoFocus?: boolean
18
+ rootClassName?: string
19
+ error?: string[] | string
20
+ helperText?: string
21
+ handleOnBlur?: (e) => void
22
+ readOnly?: boolean
23
+ noTrim?: boolean
24
+ ref?: React.LegacyRef<HTMLInputElement>
25
+ onKeyPress?: (e) => void
26
+ defaultValue?: string | number | ReadonlyArray<string> | undefined
27
+ onKeyDown?: (e) => void
28
+ required?: boolean
29
+ additionalErrorInfo?: React.ReactNode
30
+ inputWrapClassName?: string
31
+ dataIndex?: string
32
+ }
@@ -0,0 +1,2 @@
1
+ export * from './CustomInput'
2
+ export * from './Types'
@@ -0,0 +1,46 @@
1
+ import React from 'react'
2
+ import { ReactComponent as InjectTag } from '../../Assets/Icon/inject-tag.svg'
3
+ import { ReactComponent as Help } from '../../Assets/Icon/ic-help-outline.svg'
4
+ import { TippyCustomized } from '../TippyCustomized'
5
+ import { TippyTheme } from '../Types'
6
+ import { DOCUMENTATION } from '../Constants'
7
+
8
+ export default function PropagateTagInfo({ isCreateApp }: { isCreateApp: boolean }) {
9
+ const additionalInfo = () => {
10
+ return (
11
+ <div className="p-12 fs-13">
12
+ <div className="mb-20">
13
+ <span className="flex left">
14
+ Add a tag and click on the
15
+ <InjectTag className="icon-dim-16 ml-4 mr-4" />
16
+ icon to
17
+ </span>
18
+ propagate tags as labels to Kubernetes resources
19
+ </div>
20
+ <div>Use these tags to filter/identify resources via CLI or in other Kubernetes tools.</div>
21
+ </div>
22
+ )
23
+ }
24
+ return (
25
+ <TippyCustomized
26
+ theme={TippyTheme.white}
27
+ className="w-300"
28
+ placement="top"
29
+ Icon={InjectTag}
30
+ heading={'Propagate tags to K8s resources'}
31
+ infoText=""
32
+ additionalContent={additionalInfo()}
33
+ showCloseButton={true}
34
+ trigger="click"
35
+ interactive={true}
36
+ documentationLink={isCreateApp ? DOCUMENTATION.APP_TAGS : DOCUMENTATION.APP_OVERVIEW_TAGS}
37
+ documentationLinkText="View Documentation"
38
+ >
39
+ <div className="flexbox cursor">
40
+ <InjectTag className="icon-dim-16 mt-2 mr-4" />
41
+ <span>Propagate tags</span>
42
+ <Help className="icon-dim-16 mt-2 ml-4" />
43
+ </div>
44
+ </TippyCustomized>
45
+ )
46
+ }
@@ -0,0 +1,84 @@
1
+ import React, { useEffect, useState } from 'react'
2
+ import { useThrottledEffect } from '../Helper'
3
+ import { ResizableTagTextAreaProps } from './Types'
4
+
5
+ export function ResizableTagTextArea({
6
+ className,
7
+ minHeight,
8
+ maxHeight,
9
+ value,
10
+ onChange,
11
+ onBlur,
12
+ onFocus,
13
+ placeholder,
14
+ tabIndex,
15
+ refVar,
16
+ dependentRef,
17
+ dataTestId,
18
+ handleKeyDown,
19
+ }: ResizableTagTextAreaProps) {
20
+ const [text, setText] = useState('')
21
+
22
+ useEffect(() => {
23
+ setText(value)
24
+ }, [value])
25
+
26
+ const handleChange = (event) => {
27
+ setText(event.target.value)
28
+ onChange(event)
29
+ }
30
+
31
+ const reInitHeight = () => {
32
+ if (document.activeElement !== refVar.current) return
33
+ refVar.current.style.height = minHeight + 'px'
34
+ if (dependentRef) {
35
+ dependentRef.current.style.height = minHeight + 'px'
36
+ }
37
+ let nextHeight = refVar.current.scrollHeight
38
+ if (dependentRef && nextHeight < dependentRef.current.scrollHeight) {
39
+ nextHeight = dependentRef.current.scrollHeight
40
+ }
41
+ if (minHeight && nextHeight < minHeight) {
42
+ nextHeight = minHeight
43
+ }
44
+ if (maxHeight && nextHeight > maxHeight) {
45
+ nextHeight = maxHeight
46
+ }
47
+ refVar.current.style.height = nextHeight + 'px'
48
+ if (dependentRef) {
49
+ dependentRef.current.style.height = nextHeight + 'px'
50
+ }
51
+ }
52
+
53
+ useThrottledEffect(reInitHeight, 500, [text])
54
+
55
+ const handleOnBlur = (event) => {
56
+ refVar.current.style.height = minHeight + 'px'
57
+ if (dependentRef) {
58
+ dependentRef.current.style.height = minHeight + 'px'
59
+ }
60
+ onBlur && onBlur(event)
61
+ }
62
+
63
+ const handleOnFocus = (event) => {
64
+ reInitHeight()
65
+ onFocus && onFocus(event)
66
+ }
67
+
68
+ return (
69
+ <textarea
70
+ rows={1}
71
+ ref={refVar}
72
+ value={text}
73
+ placeholder={placeholder}
74
+ className={`${className || ''} lh-20`}
75
+ style={{ resize: 'none' }}
76
+ onChange={handleChange}
77
+ onBlur={handleOnBlur}
78
+ onFocus={handleOnFocus}
79
+ tabIndex={tabIndex}
80
+ data-testid={dataTestId}
81
+ onKeyDown={handleKeyDown}
82
+ />
83
+ )
84
+ }
@@ -0,0 +1,76 @@
1
+ import React, { useRef } from 'react'
2
+ import { ReactComponent as DeleteCross } from '../../Assets/Icon/ic-cross.svg'
3
+ import { ReactComponent as InjectTag } from '../../Assets/Icon/inject-tag.svg'
4
+ import { TagLabelValueSelector } from './TagLabelValueSelector'
5
+ import { KEY_VALUE } from '../Constants'
6
+ import { stopPropagation } from '../Helper'
7
+ import { TagDetailType } from './Types'
8
+ import { ValidationRules } from './ValidationRules'
9
+
10
+ export const TagDetails = ({
11
+ index,
12
+ tagData,
13
+ setTagData,
14
+ removeTag,
15
+ tabIndex = 1,
16
+ suggestedTagsOptions,
17
+ }: TagDetailType) => {
18
+ const keyRef = useRef(null)
19
+ const valueRef = useRef(null)
20
+ const validationRules = new ValidationRules()
21
+
22
+ const deleteTag = (e): void => {
23
+ stopPropagation(e)
24
+ removeTag(index)
25
+ }
26
+ const propagateTagToResource = (): void => {
27
+ const _tagData = { ...tagData }
28
+ _tagData.propagate = !_tagData.propagate
29
+ if (_tagData.propagate) {
30
+ _tagData.isInvalidKey = _tagData.isInvalidKey || !_tagData.key
31
+ _tagData.isInvalidValue = _tagData.isInvalidValue || !_tagData.value
32
+ } else {
33
+ _tagData.isInvalidKey =
34
+ _tagData.key || _tagData.value ? !validationRules.propagateTagKey(_tagData.key).isValid : false
35
+ _tagData.isInvalidValue = _tagData.value
36
+ ? !validationRules.propagateTagValue(_tagData.value, _tagData.key).isValid
37
+ : false
38
+ }
39
+ setTagData(index, _tagData)
40
+ }
41
+ return (
42
+ <div className="flexbox mb-8">
43
+ <div
44
+ className={`dc__border h-30 pl-4 pr-4 br-4 mr-8 pointer ${tagData.propagate ? 'bcn-7' : ''} ${tagData.key.startsWith("devtron.ai/") ? 'cursor-not-allowed bcn-1' : ''}`}
45
+ onClick={propagateTagToResource}
46
+ data-testid={`propagate-tag-${index}`}
47
+ >
48
+ <InjectTag className={`icon-dim-20 mt-4 ${tagData.propagate ? 'scn-0' : ''}`} />
49
+ </div>
50
+ <TagLabelValueSelector
51
+ selectedTagIndex={index}
52
+ tagData={tagData}
53
+ setTagData={setTagData}
54
+ tagInputType={KEY_VALUE.KEY}
55
+ placeholder="Enter key"
56
+ tabIndex={tabIndex - 1}
57
+ refVar={keyRef}
58
+ dependentRef={valueRef}
59
+ tagOptions={suggestedTagsOptions}
60
+ />
61
+ <TagLabelValueSelector
62
+ selectedTagIndex={index}
63
+ tagData={tagData}
64
+ setTagData={setTagData}
65
+ tagInputType={KEY_VALUE.VALUE}
66
+ placeholder="Enter value"
67
+ tabIndex={tabIndex}
68
+ refVar={valueRef}
69
+ dependentRef={keyRef}
70
+ />
71
+ <div className="dc__border pl-4 pr-4 dc__right-radius-4 pointer flex top" onClick={deleteTag} data-testid={`delete-tag-${index}`}>
72
+ <DeleteCross className="icon-dim-20 mt-4" />
73
+ </div>
74
+ </div>
75
+ )
76
+ }
@@ -0,0 +1,61 @@
1
+ import React from 'react'
2
+ import PropagateTagInfo from './PropagateTagInfo'
3
+ import { ReactComponent as Add } from '../../Assets/Icon/ic-add.svg'
4
+ import { DEFAULT_TAG_DATA } from '../Constants'
5
+ import { TagLabelSelectType } from './Types'
6
+ import { TagDetails } from './TagDetails'
7
+
8
+ export const TagLabelSelect = ({
9
+ isCreateApp,
10
+ labelTags,
11
+ setLabelTags,
12
+ tabIndex = 0
13
+ }: TagLabelSelectType) => {
14
+ const setTagData = (index, tagValue): void => {
15
+ const _tags = [...labelTags]
16
+ const _tagValue = tagValue
17
+ if(_tagValue.key.startsWith("devtron.ai/")){
18
+ _tagValue.propagate = false
19
+ }
20
+ _tags[index] = _tagValue
21
+ setLabelTags(_tags)
22
+ }
23
+
24
+ const addNewTag = (): void => {
25
+ const _tags = [...labelTags]
26
+ _tags.splice(0, 0, DEFAULT_TAG_DATA)
27
+ setLabelTags(_tags)
28
+ }
29
+
30
+ const removeTag = (index: number): void => {
31
+ const _tags = [...labelTags]
32
+ _tags.splice(index, 1)
33
+ setLabelTags(_tags)
34
+ }
35
+
36
+ return (
37
+ <div>
38
+ <div className="flexbox dc__content-space mb-8">
39
+ <span>Tags</span>
40
+ <PropagateTagInfo isCreateApp={isCreateApp} />
41
+ </div>
42
+ <div>
43
+ <div className="dc_width-max-content cb-5 fw-6 fs-13 flexbox mr-20 mb-8 cursor" onClick={addNewTag} data-testid="add-tag-button">
44
+ <Add className="icon-dim-20 fcb-5" /> Add tag
45
+ </div>
46
+ <div className="mb-8" data-testid="tag-rows-container">
47
+ {labelTags?.map((tagData, index) => (
48
+ <TagDetails
49
+ key={`tag-${index}`}
50
+ index={index}
51
+ tagData={tagData}
52
+ setTagData={setTagData}
53
+ removeTag={removeTag}
54
+ tabIndex={tabIndex + (index + 2)}
55
+ />
56
+ ))}
57
+ </div>
58
+ </div>
59
+ </div>
60
+ )
61
+ }
@@ -0,0 +1,198 @@
1
+ import React, { useState, useEffect } from 'react'
2
+ import PopupMenu from '../PopupMenu'
3
+ import { ReactComponent as ErrorCross } from '../../Assets/Icon/ic-cross.svg'
4
+ import { ReactComponent as Info } from '../../Assets/Icon/ic-info-outlined.svg'
5
+ import { KEY_VALUE } from '../Constants'
6
+ import { stopPropagation } from '../Helper'
7
+ import { ResizableTagTextArea } from './ResizableTagTextArea'
8
+ import { SuggestedTagOptionType, TagLabelValueSelectorType } from './Types'
9
+ import Tippy from '@tippyjs/react'
10
+ import { ValidationRules } from './ValidationRules'
11
+
12
+ export const TagLabelValueSelector = ({
13
+ selectedTagIndex,
14
+ tagData,
15
+ setTagData,
16
+ tagOptions,
17
+ isRequired,
18
+ tagInputType,
19
+ placeholder,
20
+ tabIndex = null,
21
+ refVar,
22
+ dependentRef,
23
+ noBackDrop,
24
+ }: TagLabelValueSelectorType) => {
25
+ const [selectedValue, setSelectedValue] = useState<string>('')
26
+ const [activeElement, setActiveElement] = useState<string>('')
27
+ const validationRules = new ValidationRules()
28
+
29
+ useEffect(() => {
30
+ setSelectedValue(tagData?.[tagInputType] || '')
31
+ }, [selectedTagIndex, tagData, tagInputType])
32
+
33
+ const handleOnFocus = (e) => {
34
+ setTimeout(() => {
35
+ setActiveElement(`tag-${tagInputType}-${selectedTagIndex}`)
36
+ }, 300)
37
+ }
38
+ const handleOnBlur = (e) => {
39
+ if (
40
+ !e.relatedTarget ||
41
+ !e.relatedTarget.classList.value ||
42
+ !e.relatedTarget.classList.value.includes(`tag-${selectedTagIndex}-class`)
43
+ ) {
44
+ setActiveElement('')
45
+ const _tagData = { ...tagData }
46
+ _tagData[tagInputType] = selectedValue
47
+ if (tagInputType === KEY_VALUE.KEY) {
48
+ _tagData.isInvalidKey =
49
+ selectedValue || _tagData.propagate
50
+ ? !validationRules.propagateTagKey(selectedValue).isValid
51
+ : _tagData.value !== ''
52
+ } else if (selectedValue || isRequired || _tagData.propagate) {
53
+ _tagData.isInvalidValue = !validationRules.propagateTagValue(selectedValue, _tagData.key).isValid
54
+ _tagData.isInvalidKey = !_tagData.key || _tagData.isInvalidKey
55
+ } else {
56
+ _tagData.isInvalidValue = false
57
+ _tagData.isInvalidKey = !_tagData.key ? false : _tagData.isInvalidKey
58
+ }
59
+ setTagData(selectedTagIndex, _tagData)
60
+ }
61
+ }
62
+
63
+ const handleInputChange = (e): void => {
64
+ setSelectedValue(e.target.value)
65
+ }
66
+
67
+ const onSelectValue = (e): void => {
68
+ stopPropagation(e)
69
+ const _tagData = { ...tagData }
70
+ _tagData[tagInputType] = e.currentTarget.dataset.key
71
+ _tagData.propagate = e.currentTarget.dataset.propagate === 'true'
72
+ setTagData(selectedTagIndex, _tagData)
73
+ setActiveElement('')
74
+ }
75
+
76
+ const renderValidationsSuggestions = (): JSX.Element => {
77
+ let field = { isValid: true, messages: [] }
78
+ if (tagInputType === KEY_VALUE.KEY) {
79
+ if (selectedValue || tagData.value) {
80
+ field = validationRules.propagateTagKey(selectedValue)
81
+ }
82
+ } else if (isRequired || selectedValue || tagData.propagate) {
83
+ field = validationRules.propagateTagValue(selectedValue, tagData.key)
84
+ }
85
+ if (!field.isValid) {
86
+ return (
87
+ <div className="p-4" onClick={stopPropagation} data-testid="tag-label-cross-stop-propagation">
88
+ {field.messages.map((error) => (
89
+ <div key={error} className="flexbox pr-4 pl-4">
90
+ <span>
91
+ <ErrorCross className="icon-dim-14 scr-5 mt-3 mr-4" />
92
+ </span>
93
+ <span>{error}</span>
94
+ </div>
95
+ ))}
96
+ {tagInputType === KEY_VALUE.KEY && (
97
+ <div className="flexbox pr-4 pl-4">
98
+ <span>
99
+ <Info className="icon-dim-14 mt-3 mr-4" />
100
+ </span>
101
+ <span className="dc__italic-font-style">Key format: prefix/name or name</span>
102
+ </div>
103
+ )}
104
+ </div>
105
+ )
106
+ }
107
+ return null
108
+ }
109
+
110
+ const option = (tag: SuggestedTagOptionType, index: number): JSX.Element => {
111
+ return (
112
+ <div
113
+ key={`${tag.value}-${index}`}
114
+ data-key={tag.label}
115
+ data-propagate={tag.propagate}
116
+ className="dc__hover-n50 dc__ellipsis-right lh-20 fs-13 fw-4 pt-6 pr-8 pb-6 pl-8 cursor"
117
+ onClick={onSelectValue}
118
+ data-testid={`tag-label-value-${index}`}
119
+ >
120
+ {tag.label}
121
+ </div>
122
+ )
123
+ }
124
+
125
+ const optionWithTippy = (tag: SuggestedTagOptionType, index: number): JSX.Element => {
126
+ return (
127
+ <Tippy
128
+ className="default-tt"
129
+ arrow={false}
130
+ placement="right"
131
+ content={
132
+ <div>
133
+ <div className="mb-10 fs-12 fw-6 cn-0 dc__break-word">{tag.label}</div>
134
+ <div className="fs-12 fw-4 cn-0 dc__break-word">{tag.description}</div>
135
+ </div>
136
+ }
137
+ >
138
+ {option(tag, index)}
139
+ </Tippy>
140
+ )
141
+ }
142
+
143
+ const renderSuggestions = (): JSX.Element => {
144
+ if (tagOptions?.length) {
145
+ const filteredTags = tagOptions.filter((tag) => tag.label.indexOf(selectedValue) >= 0)
146
+ if (filteredTags.length) {
147
+ return (
148
+ <div>
149
+ {filteredTags.map((tag, index) =>
150
+ tag.description ? optionWithTippy(tag, index) : option(tag, index),
151
+ )}
152
+ </div>
153
+ )
154
+ }
155
+ }
156
+ return renderValidationsSuggestions()
157
+ }
158
+
159
+ const popupMenuBody = activeElement === `tag-${tagInputType}-${selectedTagIndex}` ? renderSuggestions() : null
160
+ return (
161
+ <PopupMenu autoClose autoPosition>
162
+ <PopupMenu.Button rootClassName="dc__bg-n50 flex top dc__no-border-imp">
163
+ <ResizableTagTextArea
164
+ minHeight={30}
165
+ maxHeight={80}
166
+ className={`form__input tag-input pt-4-imp pb-4-imp fs-13 ${
167
+ tagInputType === KEY_VALUE.KEY
168
+ ? `dc__no-right-radius`
169
+ : `dc__no-border-radius dc__no-right-border dc__no-left-border`
170
+ } ${
171
+ tagData[tagInputType === KEY_VALUE.KEY ? 'isInvalidKey' : 'isInvalidValue']
172
+ ? 'form__input--error'
173
+ : ''
174
+ }`}
175
+ value={selectedValue}
176
+ onChange={handleInputChange}
177
+ onBlur={handleOnBlur}
178
+ onFocus={handleOnFocus}
179
+ placeholder={placeholder}
180
+ tabIndex={tabIndex}
181
+ refVar={refVar}
182
+ dependentRef={dependentRef}
183
+ dataTestId={`tag-${tagInputType === KEY_VALUE.KEY ? 'key' : 'value'}-${selectedTagIndex}`}
184
+ />
185
+ </PopupMenu.Button>
186
+ {popupMenuBody && (
187
+ <PopupMenu.Body
188
+ rootClassName={`mxh-210 dc__overflow-auto tag-${selectedTagIndex}-class`}
189
+ autoWidth={true}
190
+ preventWheelDisable={true}
191
+ noBackDrop={noBackDrop}
192
+ >
193
+ {popupMenuBody}
194
+ </PopupMenu.Body>
195
+ )}
196
+ </PopupMenu>
197
+ )
198
+ }
@@ -0,0 +1,71 @@
1
+ export const baseSelectStyles = {
2
+ control: (base, state) => ({
3
+ ...base,
4
+ border: '1px solid var(--N200)',
5
+ boxShadow: 'none',
6
+ minHeight: 'auto',
7
+ borderRadius: 'none',
8
+ height: '32px',
9
+ fontSize: '12px',
10
+ borderRight: '0',
11
+ cursor: state.isDisabled ? 'not-allowed' : 'normal',
12
+ }),
13
+ singleValue: (base, state) => ({
14
+ ...base,
15
+ fontWeight: '500',
16
+ }),
17
+ placeholder: (base, state) => ({
18
+ ...base,
19
+ fontWeight: '500',
20
+ }),
21
+ option: (base, state) => ({
22
+ ...base,
23
+ fontWeight: '500',
24
+ color: 'var(--N900)',
25
+ fontSize: '12px',
26
+ padding: '5px 10px',
27
+ }),
28
+ dropdownIndicator: (styles) => ({ ...styles, padding: 0 }),
29
+ valueContainer: (base, state) => ({
30
+ ...base,
31
+ color: 'var(--N900)',
32
+ background: state.isDisabled ? 'var(--N100) !important' : 'var(--N50) !important',
33
+ padding: '0px 10px',
34
+ display: 'flex',
35
+ height: '30px',
36
+ fontSize: '12px',
37
+ cursor: state.isDisabled ? 'not-allowed' : 'normal',
38
+ pointerEvents: 'all',
39
+ width: '100px',
40
+ whiteSpace: 'nowrap',
41
+ }),
42
+ indicatorsContainer: (base, state) => ({
43
+ ...base,
44
+ background: state.isDisabled ? 'var(--N100) !important' : 'var(--N50) !important',
45
+ }),
46
+ menu: (base, state) => ({
47
+ ...base,
48
+ marginTop: '0',
49
+ }),
50
+ }
51
+
52
+ export const validateKubernetesKey = (key: string) => {
53
+ const invalidMessageList = []
54
+ if (!key || key.split('/')) {
55
+ invalidMessageList.push('Name is required')
56
+ } else {
57
+ const re = new RegExp('/', 'g')
58
+ const noOfSlashInKey = key.match(re).length
59
+ if (noOfSlashInKey > 1) {
60
+ invalidMessageList.push('Key: Max 1 ( / ) allowed')
61
+ } else {
62
+ let name = key
63
+ if (noOfSlashInKey === 1) {
64
+ const [prefix, name]=key.split('/')
65
+
66
+ }
67
+ }
68
+ }
69
+ }
70
+
71
+ export const validateKubernetesValue = (value: string) => {}
@@ -0,0 +1,72 @@
1
+ import { KEY_VALUE } from '../Constants'
2
+ import { OptionType } from '../Types'
3
+
4
+ export interface SuggestedTagOptionType extends OptionType {
5
+ description: string
6
+ propagate: boolean
7
+ }
8
+ export interface TagType {
9
+ id?: number
10
+ key: string
11
+ value?: string
12
+ description?: string
13
+ propagate: boolean
14
+ mandatoryProjectIdsCsv?: string
15
+ isInvalidKey?: boolean
16
+ isInvalidValue?: boolean
17
+ isSuggested?: boolean
18
+ isPropagateDisabled?: boolean
19
+ }
20
+
21
+ export interface TagErrorType {
22
+ isValid: boolean
23
+ messages: string[]
24
+ }
25
+ export interface TagLabelSelectType {
26
+ isCreateApp?: boolean
27
+ labelTags: TagType[]
28
+ setLabelTags: (tagList: TagType[]) => void
29
+ tabIndex?: number
30
+ selectedProjectId?: number
31
+ suggestedTagsOptions?: SuggestedTagOptionType[]
32
+ reloadProjectTags?: boolean
33
+ }
34
+
35
+ export interface TagDetailType {
36
+ index: number
37
+ tagData: TagType
38
+ setTagData: (index: number, tagData: TagType) => void
39
+ removeTag?: (index: number) => void
40
+ tabIndex?: number
41
+ suggestedTagsOptions?: SuggestedTagOptionType[]
42
+ }
43
+
44
+ export interface TagLabelValueSelectorType {
45
+ selectedTagIndex: number
46
+ tagData: TagType
47
+ setTagData: (index: number, tagData: TagType) => void
48
+ tagOptions?: SuggestedTagOptionType[]
49
+ isRequired?: boolean
50
+ tagInputType?: KEY_VALUE
51
+ placeholder?: string
52
+ tabIndex?: number
53
+ refVar?: React.MutableRefObject<HTMLTextAreaElement>
54
+ dependentRef?: React.MutableRefObject<HTMLTextAreaElement>
55
+ noBackDrop?: boolean
56
+ }
57
+
58
+ export interface ResizableTagTextAreaProps {
59
+ className?: string
60
+ minHeight?: number
61
+ maxHeight?: number
62
+ value?: string
63
+ onChange?: (e) => void
64
+ onBlur?: (e) => void
65
+ onFocus?: (e) => void
66
+ placeholder?: string
67
+ tabIndex?: number
68
+ refVar?: React.MutableRefObject<HTMLTextAreaElement>
69
+ dependentRef?: React.MutableRefObject<HTMLTextAreaElement>
70
+ dataTestId?: string
71
+ handleKeyDown?: any
72
+ }