@devtron-labs/devtron-fe-common-lib 0.0.63-beta-7 → 0.0.63

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 (471) 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 +14 -14
  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 +90 -96
  30. package/dist/Common/CustomInput/CustomInput.d.ts +3 -2
  31. package/dist/Common/CustomInput/Types.d.ts +31 -31
  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 -0
  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 +67 -68
  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 +4 -4
  73. package/dist/Common/Hooks/useUrlFilters/constants.d.ts +8 -8
  74. package/dist/Common/Hooks/useUrlFilters/index.d.ts +2 -2
  75. package/dist/Common/Hooks/useUrlFilters/types.d.ts +6 -6
  76. package/dist/Common/Hooks/useUrlFilters/useUrlFilters.d.ts +32 -32
  77. package/dist/Common/ImageTags.Types.d.ts +40 -40
  78. package/dist/Common/ImageTags.d.ts +4 -3
  79. package/dist/Common/InfoColorBar/InfoColourbar.d.ts +5 -3
  80. package/dist/Common/Modals/Modal.d.ts +3 -3
  81. package/dist/Common/Modals/OpaqueModal.d.ts +12 -12
  82. package/dist/Common/Modals/VisibleModal.d.ts +15 -15
  83. package/dist/Common/Modals/VisibleModal2.d.ts +12 -12
  84. package/dist/Common/MultiSelectCustomization.d.ts +37 -37
  85. package/dist/Common/Pagination/PageSizeSelector.d.ts +4 -3
  86. package/dist/Common/Pagination/Pagination.d.ts +5 -3
  87. package/dist/Common/Pagination/constants.d.ts +5 -5
  88. package/dist/Common/Pagination/index.d.ts +1 -1
  89. package/dist/Common/Pagination/types.d.ts +51 -51
  90. package/dist/Common/Pagination/utils.d.ts +6 -6
  91. package/dist/Common/Policy.Types.d.ts +56 -56
  92. package/dist/Common/PopupMenu.d.ts +8 -7
  93. package/dist/Common/Progressing.d.ts +4 -3
  94. package/dist/Common/RJSF/Form.d.ts +4 -2
  95. package/dist/Common/RJSF/common/FieldRow.d.ts +6 -5
  96. package/dist/Common/RJSF/common/types.d.ts +8 -8
  97. package/dist/Common/RJSF/config.d.ts +4 -4
  98. package/dist/Common/RJSF/constants.d.ts +7 -7
  99. package/dist/Common/RJSF/index.d.ts +3 -3
  100. package/dist/Common/RJSF/templates/ArrayFieldItemTemplate.d.ts +3 -2
  101. package/dist/Common/RJSF/templates/ArrayFieldTemplate.d.ts +3 -2
  102. package/dist/Common/RJSF/templates/BaseInput.d.ts +3 -2
  103. package/dist/Common/RJSF/templates/ButtonTemplates/AddButton.d.ts +3 -2
  104. package/dist/Common/RJSF/templates/ButtonTemplates/RemoveButton.d.ts +3 -2
  105. package/dist/Common/RJSF/templates/ButtonTemplates/SubmitButton.d.ts +3 -2
  106. package/dist/Common/RJSF/templates/ButtonTemplates/index.d.ts +3 -3
  107. package/dist/Common/RJSF/templates/Description.d.ts +3 -2
  108. package/dist/Common/RJSF/templates/Field.d.ts +3 -2
  109. package/dist/Common/RJSF/templates/FieldErrorTemplate.d.ts +3 -2
  110. package/dist/Common/RJSF/templates/ObjectFieldTemplate.d.ts +3 -2
  111. package/dist/Common/RJSF/templates/TitleField.d.ts +3 -2
  112. package/dist/Common/RJSF/templates/WrapIfAdditionalTemplate.d.ts +3 -2
  113. package/dist/Common/RJSF/templates/index.d.ts +10 -10
  114. package/dist/Common/RJSF/types.d.ts +3 -3
  115. package/dist/Common/RJSF/utils.d.ts +26 -25
  116. package/dist/Common/RJSF/widgets/Checkbox.d.ts +3 -2
  117. package/dist/Common/RJSF/widgets/Select.d.ts +3 -2
  118. package/dist/Common/RJSF/widgets/index.d.ts +2 -2
  119. package/dist/Common/RadioGroup/RadioGroup.d.ts +17 -16
  120. package/dist/Common/RadioGroup.d.ts +8 -8
  121. package/dist/Common/Reload.d.ts +3 -3
  122. package/dist/Common/ResizableTextarea.d.ts +3 -3
  123. package/dist/Common/SearchBar/SearchBar.component.d.ts +39 -37
  124. package/dist/Common/SearchBar/index.d.ts +2 -2
  125. package/dist/Common/SearchBar/types.d.ts +35 -35
  126. package/dist/Common/Security/ScanVulnerabilitiesTable.d.ts +4 -3
  127. package/dist/Common/ServerError.d.ts +15 -15
  128. package/dist/Common/SortableTableHeaderCell/SortableTableHeaderCell.d.ts +18 -17
  129. package/dist/Common/SortableTableHeaderCell/index.d.ts +2 -2
  130. package/dist/Common/SortableTableHeaderCell/types.d.ts +25 -25
  131. package/dist/Common/TippyCustomized.d.ts +4 -2
  132. package/dist/Common/ToastBody.d.ts +23 -23
  133. package/dist/Common/Toggle/Toggle.d.ts +14 -12
  134. package/dist/Common/Types.d.ts +704 -704
  135. package/dist/Common/index.d.ts +51 -51
  136. package/dist/Pages/GlobalConfigurations/Authorization/constants.d.ts +15 -15
  137. package/dist/Pages/GlobalConfigurations/Authorization/index.d.ts +1 -1
  138. package/dist/Pages/GlobalConfigurations/BuildInfra/BuildInfraConfigForm.d.ts +4 -4
  139. package/dist/Pages/GlobalConfigurations/BuildInfra/BuildInfraDescriptionField.d.ts +4 -4
  140. package/dist/Pages/GlobalConfigurations/BuildInfra/BuildInfraFormAction.d.ts +7 -7
  141. package/dist/Pages/GlobalConfigurations/BuildInfra/BuildInfraFormItem.d.ts +4 -4
  142. package/dist/Pages/GlobalConfigurations/BuildInfra/BuildInfraProfileNameField.d.ts +4 -4
  143. package/dist/Pages/GlobalConfigurations/BuildInfra/Descriptor.d.ts +4 -3
  144. package/dist/Pages/GlobalConfigurations/BuildInfra/Footer.d.ts +4 -4
  145. package/dist/Pages/GlobalConfigurations/BuildInfra/constants.d.ts +50 -50
  146. package/dist/Pages/GlobalConfigurations/BuildInfra/index.d.ts +7 -7
  147. package/dist/Pages/GlobalConfigurations/BuildInfra/services.d.ts +6 -6
  148. package/dist/Pages/GlobalConfigurations/BuildInfra/types.d.ts +286 -286
  149. package/dist/Pages/GlobalConfigurations/BuildInfra/utils.d.ts +12 -12
  150. package/dist/Pages/GlobalConfigurations/index.d.ts +2 -2
  151. package/dist/Pages/index.d.ts +1 -1
  152. package/dist/Shared/Components/APIResponseHandler/APIResponseHandler.d.ts +4 -3
  153. package/dist/Shared/Components/APIResponseHandler/constants.d.ts +4 -4
  154. package/dist/Shared/Components/APIResponseHandler/index.d.ts +2 -2
  155. package/dist/Shared/Components/APIResponseHandler/types.d.ts +37 -37
  156. package/dist/Shared/Components/BulkSelection/BulkSelection.d.ts +4 -3
  157. package/dist/Shared/Components/BulkSelection/BulkSelectionDropdownItems.d.ts +4 -3
  158. package/dist/Shared/Components/BulkSelection/BulkSelectionProvider.d.ts +4 -3
  159. package/dist/Shared/Components/BulkSelection/constants.d.ts +10 -10
  160. package/dist/Shared/Components/BulkSelection/index.d.ts +4 -4
  161. package/dist/Shared/Components/BulkSelection/types.d.ts +54 -54
  162. package/dist/Shared/Components/ReactSelect/index.d.ts +1 -1
  163. package/dist/Shared/Components/ReactSelect/utils.d.ts +12 -11
  164. package/dist/Shared/Components/index.d.ts +3 -3
  165. package/dist/Shared/Helpers.d.ts +16 -16
  166. package/dist/Shared/index.d.ts +3 -3
  167. package/dist/Shared/validations.d.ts +8 -8
  168. package/dist/index.d.ts +3 -9
  169. package/dist/index.js +30407 -216
  170. package/package.json +23 -34
  171. package/rollup.config.js +31 -0
  172. package/src/Assets/Icon/ic-add.svg +3 -0
  173. package/src/Assets/Icon/ic-appstatus-cancelled.svg +6 -0
  174. package/src/Assets/Icon/ic-arrow-counter-clockwise.svg +5 -0
  175. package/src/Assets/Icon/ic-arrow-up-down.svg +3 -0
  176. package/src/Assets/Icon/ic-check-all.svg +5 -0
  177. package/src/Assets/Icon/ic-check-square.svg +4 -0
  178. package/src/Assets/Icon/ic-check.svg +5 -0
  179. package/src/Assets/Icon/ic-chevron-down.svg +5 -0
  180. package/src/Assets/Icon/ic-close.svg +9 -0
  181. package/src/Assets/Icon/ic-copy.svg +3 -0
  182. package/src/Assets/Icon/ic-cpu.svg +4 -0
  183. package/src/Assets/Icon/ic-cross.svg +3 -0
  184. package/src/Assets/Icon/ic-drag.svg +8 -0
  185. package/src/Assets/Icon/ic-enter.svg +3 -0
  186. package/src/Assets/Icon/ic-error-cross.svg +8 -0
  187. package/src/Assets/Icon/ic-error-exclamation.svg +6 -0
  188. package/src/Assets/Icon/ic-error-medium.svg +6 -0
  189. package/src/Assets/Icon/ic-help-outline.svg +3 -0
  190. package/src/Assets/Icon/ic-help.svg +3 -0
  191. package/src/Assets/Icon/ic-info-filled.svg +7 -0
  192. package/src/Assets/Icon/ic-info-outlined.svg +13 -0
  193. package/src/Assets/Icon/ic-memory.svg +3 -0
  194. package/src/Assets/Icon/ic-minus.svg +3 -0
  195. package/src/Assets/Icon/ic-pencil.svg +3 -0
  196. package/src/Assets/Icon/ic-progressing.svg +6 -0
  197. package/src/Assets/Icon/ic-rotate-devtron.svg +103 -0
  198. package/src/Assets/Icon/ic-search.svg +6 -0
  199. package/src/Assets/Icon/ic-sort-arrow-down.svg +3 -0
  200. package/src/Assets/Icon/ic-timer.svg +3 -0
  201. package/src/Assets/Icon/ic-warning.svg +7 -0
  202. package/src/Assets/Icon/inject-tag.svg +5 -0
  203. package/src/Assets/Img/app-not-deployed.png +0 -0
  204. package/src/Assets/Img/delete-medium.svg +15 -0
  205. package/src/Assets/Img/ic-empty-error@2x.png +0 -0
  206. package/src/Assets/Img/ic-loading-failure.png +0 -0
  207. package/src/Assets/Img/ic-not-authorized.svg +62 -0
  208. package/src/Common/AddCDButton/AddCDButton.tsx +68 -0
  209. package/src/Common/AddCDButton/index.ts +2 -0
  210. package/src/Common/AddCDButton/types.ts +38 -0
  211. package/src/Common/AddCDButton/utils.tsx +35 -0
  212. package/src/Common/Api.ts +251 -0
  213. package/src/Common/AppStatus/AppStatus.tsx +64 -0
  214. package/src/Common/AppStatus/constants.ts +53 -0
  215. package/src/Common/AppStatus/index.ts +1 -0
  216. package/src/Common/AppStatus/types.ts +12 -0
  217. package/src/Common/AppStatus/utils.ts +14 -0
  218. package/src/Common/BreadCrumb/BreadCrumb.tsx +105 -0
  219. package/src/Common/BreadCrumb/BreadcrumbStore.tsx +25 -0
  220. package/src/Common/BreadCrumb/Types.ts +29 -0
  221. package/src/Common/CIPipeline.Types.ts +277 -0
  222. package/src/Common/ChartVersionAndTypeSelector.tsx +78 -0
  223. package/src/Common/Checkbox.tsx +37 -0
  224. package/src/Common/ClipboardButton/ClipboardButton.tsx +61 -0
  225. package/src/Common/ClipboardButton/__tests__/ClipboardButton.test.tsx +43 -0
  226. package/src/Common/ClipboardButton/types.ts +7 -0
  227. package/src/Common/Common.service.ts +315 -0
  228. package/src/Common/Constants.ts +271 -0
  229. package/src/Common/CustomInput/CustomInput.tsx +135 -0
  230. package/src/Common/CustomInput/Types.ts +32 -0
  231. package/src/Common/CustomInput/index.ts +2 -0
  232. package/src/Common/CustomTagSelector/PropagateTagInfo.tsx +46 -0
  233. package/src/Common/CustomTagSelector/ResizableTagTextArea.tsx +84 -0
  234. package/src/Common/CustomTagSelector/TagDetails.tsx +76 -0
  235. package/src/Common/CustomTagSelector/TagLabelSelect.tsx +61 -0
  236. package/src/Common/CustomTagSelector/TagLabelValueSelector.tsx +198 -0
  237. package/src/Common/CustomTagSelector/TagSelector.utils.ts +71 -0
  238. package/src/Common/CustomTagSelector/Types.ts +72 -0
  239. package/src/Common/CustomTagSelector/ValidationRules.ts +58 -0
  240. package/src/Common/CustomTagSelector/index.ts +6 -0
  241. package/src/Common/DebouncedSearch/DebouncedSearch.tsx +78 -0
  242. package/src/Common/DebouncedSearch/Types.ts +13 -0
  243. package/src/Common/DebouncedSearch/Utils.ts +19 -0
  244. package/src/Common/DebouncedSearch/__tests__/DebouncedSearch.test.tsx +61 -0
  245. package/src/Common/DeleteComponentModal/DeleteComponent.tsx +95 -0
  246. package/src/Common/DeleteComponentModal/types.ts +15 -0
  247. package/src/Common/DevtronProgressing/DevtronProgressing.tsx +11 -0
  248. package/src/Common/DevtronProgressing/index.ts +1 -0
  249. package/src/Common/DevtronProgressing/types.ts +4 -0
  250. package/src/Common/Dialogs/ConfirmationDialog.tsx +34 -0
  251. package/src/Common/Dialogs/DeleteDialog.tsx +69 -0
  252. package/src/Common/Dialogs/DialogForm.tsx +86 -0
  253. package/src/Common/Dialogs/ForceDeleteDialog.tsx +19 -0
  254. package/src/Common/Dialogs/Types.ts +47 -0
  255. package/src/Common/Dialogs/index.ts +4 -0
  256. package/src/Common/DraggableWrapper/DraggableButton.tsx +14 -0
  257. package/src/Common/DraggableWrapper/DraggableWrapper.tsx +118 -0
  258. package/src/Common/DraggableWrapper/index.ts +3 -0
  259. package/src/Common/DraggableWrapper/types.ts +27 -0
  260. package/src/Common/Drawer/Drawer.scss +40 -0
  261. package/src/Common/Drawer/Drawer.tsx +49 -0
  262. package/src/Common/EmptyState/EmptyState.tsx +42 -0
  263. package/src/Common/EmptyState/GenericEmptyState.tsx +81 -0
  264. package/src/Common/EmptyState/emptyState.scss +74 -0
  265. package/src/Common/Error.tsx +61 -0
  266. package/src/Common/ErrorScreenNotFound.tsx +31 -0
  267. package/src/Common/Grid/Grid.tsx +44 -0
  268. package/src/Common/Grid/types.ts +11 -0
  269. package/src/Common/Helper.tsx +590 -0
  270. package/src/Common/Hooks/UseClickOutside/UseClickOutside.tsx +15 -0
  271. package/src/Common/Hooks/UseSuperAdmin/UseSuperAdmin.tsx +24 -0
  272. package/src/Common/Hooks/UseSuperAdmin/types.ts +3 -0
  273. package/src/Common/Hooks/UseWindowSize/UseWindowSize.tsx +31 -0
  274. package/src/Common/Hooks/index.ts +4 -0
  275. package/src/Common/Hooks/useUrlFilters/constants.ts +9 -0
  276. package/src/Common/Hooks/useUrlFilters/index.ts +2 -0
  277. package/src/Common/Hooks/useUrlFilters/types.ts +6 -0
  278. package/src/Common/Hooks/useUrlFilters/useUrlFilters.ts +121 -0
  279. package/src/Common/ImageTags.Types.ts +44 -0
  280. package/src/Common/ImageTags.tsx +586 -0
  281. package/src/Common/InfoColorBar/InfoColourbar.tsx +80 -0
  282. package/src/Common/InfoColorBar/infoColourBar.scss +28 -0
  283. package/src/Common/Modals/Modal.tsx +68 -0
  284. package/src/Common/Modals/OpaqueModal.tsx +36 -0
  285. package/src/Common/Modals/VisibleModal.tsx +55 -0
  286. package/src/Common/Modals/VisibleModal2.tsx +35 -0
  287. package/src/Common/MultiSelectCustomization.tsx +148 -0
  288. package/src/Common/Pagination/PageSizeSelector.tsx +78 -0
  289. package/src/Common/Pagination/Pagination.tsx +127 -0
  290. package/src/Common/Pagination/constants.ts +6 -0
  291. package/src/Common/Pagination/index.tsx +3 -0
  292. package/src/Common/Pagination/pagination.scss +123 -0
  293. package/src/Common/Pagination/types.ts +55 -0
  294. package/src/Common/Pagination/utils.tsx +24 -0
  295. package/src/Common/Policy.Types.ts +63 -0
  296. package/src/Common/PopupMenu.tsx +199 -0
  297. package/src/Common/Progressing.tsx +53 -0
  298. package/src/Common/RJSF/Form.tsx +29 -0
  299. package/src/Common/RJSF/common/FieldRow.tsx +35 -0
  300. package/src/Common/RJSF/common/types.ts +9 -0
  301. package/src/Common/RJSF/config.ts +37 -0
  302. package/src/Common/RJSF/constants.ts +10 -0
  303. package/src/Common/RJSF/index.ts +3 -0
  304. package/src/Common/RJSF/rjsfForm.scss +18 -0
  305. package/src/Common/RJSF/templates/ArrayFieldItemTemplate.tsx +31 -0
  306. package/src/Common/RJSF/templates/ArrayFieldTemplate.tsx +78 -0
  307. package/src/Common/RJSF/templates/BaseInput.tsx +16 -0
  308. package/src/Common/RJSF/templates/ButtonTemplates/AddButton.tsx +18 -0
  309. package/src/Common/RJSF/templates/ButtonTemplates/RemoveButton.tsx +10 -0
  310. package/src/Common/RJSF/templates/ButtonTemplates/SubmitButton.tsx +18 -0
  311. package/src/Common/RJSF/templates/ButtonTemplates/index.ts +3 -0
  312. package/src/Common/RJSF/templates/Description.tsx +12 -0
  313. package/src/Common/RJSF/templates/Field.tsx +30 -0
  314. package/src/Common/RJSF/templates/FieldErrorTemplate.tsx +25 -0
  315. package/src/Common/RJSF/templates/ObjectFieldTemplate.tsx +105 -0
  316. package/src/Common/RJSF/templates/TitleField.tsx +9 -0
  317. package/src/Common/RJSF/templates/WrapIfAdditionalTemplate.tsx +51 -0
  318. package/src/Common/RJSF/templates/index.ts +10 -0
  319. package/src/Common/RJSF/types.ts +4 -0
  320. package/src/Common/RJSF/utils.ts +125 -0
  321. package/src/Common/RJSF/widgets/Checkbox.tsx +44 -0
  322. package/src/Common/RJSF/widgets/Select.tsx +77 -0
  323. package/src/Common/RJSF/widgets/index.ts +2 -0
  324. package/src/Common/RadioGroup/RadioGroup.tsx +105 -0
  325. package/src/Common/RadioGroup/radioGroup.scss +46 -0
  326. package/src/Common/RadioGroup.tsx +53 -0
  327. package/src/Common/Reload.tsx +23 -0
  328. package/src/Common/ResizableTextarea.tsx +73 -0
  329. package/src/Common/SearchBar/SearchBar.component.tsx +131 -0
  330. package/src/Common/SearchBar/index.ts +2 -0
  331. package/src/Common/SearchBar/searchBar.scss +31 -0
  332. package/src/Common/SearchBar/types.ts +34 -0
  333. package/src/Common/Security/ScanVulnerabilitiesTable.tsx +55 -0
  334. package/src/Common/Security/scanVulnerabilities.css +69 -0
  335. package/src/Common/ServerError.ts +31 -0
  336. package/src/Common/SortableTableHeaderCell/SortableTableHeaderCell.tsx +44 -0
  337. package/src/Common/SortableTableHeaderCell/index.ts +2 -0
  338. package/src/Common/SortableTableHeaderCell/types.ts +26 -0
  339. package/src/Common/TippyCustomized.tsx +172 -0
  340. package/src/Common/ToastBody.tsx +62 -0
  341. package/src/Common/Toggle/Toggle.scss +78 -0
  342. package/src/Common/Toggle/Toggle.tsx +50 -0
  343. package/src/Common/Types.ts +778 -0
  344. package/src/Common/index.ts +51 -0
  345. package/src/Pages/GlobalConfigurations/Authorization/constants.ts +16 -0
  346. package/src/Pages/GlobalConfigurations/Authorization/index.ts +1 -0
  347. package/src/Pages/GlobalConfigurations/BuildInfra/BuildInfraConfigForm.tsx +127 -0
  348. package/src/Pages/GlobalConfigurations/BuildInfra/BuildInfraDescriptionField.tsx +44 -0
  349. package/src/Pages/GlobalConfigurations/BuildInfra/BuildInfraFormAction.tsx +106 -0
  350. package/src/Pages/GlobalConfigurations/BuildInfra/BuildInfraFormItem.tsx +55 -0
  351. package/src/Pages/GlobalConfigurations/BuildInfra/BuildInfraProfileNameField.tsx +32 -0
  352. package/src/Pages/GlobalConfigurations/BuildInfra/Descriptor.tsx +45 -0
  353. package/src/Pages/GlobalConfigurations/BuildInfra/Footer.tsx +56 -0
  354. package/src/Pages/GlobalConfigurations/BuildInfra/Readme.md +4 -0
  355. package/src/Pages/GlobalConfigurations/BuildInfra/constants.tsx +138 -0
  356. package/src/Pages/GlobalConfigurations/BuildInfra/index.ts +7 -0
  357. package/src/Pages/GlobalConfigurations/BuildInfra/services.tsx +167 -0
  358. package/src/Pages/GlobalConfigurations/BuildInfra/types.tsx +339 -0
  359. package/src/Pages/GlobalConfigurations/BuildInfra/utils.tsx +506 -0
  360. package/src/Pages/GlobalConfigurations/index.ts +2 -0
  361. package/src/Pages/index.ts +1 -0
  362. package/src/Shared/Components/APIResponseHandler/APIResponseHandler.tsx +41 -0
  363. package/src/Shared/Components/APIResponseHandler/constants.tsx +5 -0
  364. package/src/Shared/Components/APIResponseHandler/index.ts +2 -0
  365. package/src/Shared/Components/APIResponseHandler/types.tsx +39 -0
  366. package/src/Shared/Components/BulkSelection/BulkSelection.tsx +77 -0
  367. package/src/Shared/Components/BulkSelection/BulkSelectionDropdownItems.tsx +33 -0
  368. package/src/Shared/Components/BulkSelection/BulkSelectionProvider.tsx +171 -0
  369. package/src/Shared/Components/BulkSelection/constants.tsx +14 -0
  370. package/src/Shared/Components/BulkSelection/index.ts +4 -0
  371. package/src/Shared/Components/BulkSelection/types.tsx +65 -0
  372. package/src/Shared/Components/ReactSelect/index.ts +1 -0
  373. package/src/Shared/Components/ReactSelect/utils.tsx +97 -0
  374. package/src/Shared/Components/index.ts +3 -0
  375. package/src/Shared/Helpers.tsx +29 -0
  376. package/src/Shared/index.ts +3 -0
  377. package/src/Shared/validations.tsx +130 -0
  378. package/src/custom.d.ts +13 -0
  379. package/src/index.ts +3 -0
  380. package/tsconfig.json +40 -0
  381. package/dist/Common/CodeEditor/CodeEditor.d.ts +0 -47
  382. package/dist/Common/Select/Select.d.ts +0 -4
  383. package/dist/Common/Select/types.d.ts +0 -29
  384. package/dist/abap-9f67f57a.js +0 -1314
  385. package/dist/apex-ff62e532.js +0 -315
  386. package/dist/assets/editor.worker-d26000ef.js +0 -9
  387. package/dist/assets/index.css +0 -1
  388. package/dist/assets/json.worker-f23a4654.js +0 -40
  389. package/dist/assets/yaml.worker-35ea3f9a.js +0 -467
  390. package/dist/azcli-31e64a7f.js +0 -74
  391. package/dist/bat-0ffe897e.js +0 -95
  392. package/dist/bicep-3414a2b1.js +0 -108
  393. package/dist/cameligo-df1f3f25.js +0 -168
  394. package/dist/clojure-65b0f010.js +0 -754
  395. package/dist/coffee-437f0fba.js +0 -228
  396. package/dist/cpp-66843dd5.js +0 -390
  397. package/dist/csharp-621d9a49.js +0 -320
  398. package/dist/csp-de0d5244.js +0 -57
  399. package/dist/css-7cd5ed4c.js +0 -186
  400. package/dist/cssMode-0eb181b8.js +0 -1446
  401. package/dist/cypher-70ad96fe.js +0 -262
  402. package/dist/dart-33ae3739.js +0 -270
  403. package/dist/dockerfile-f2274a50.js +0 -132
  404. package/dist/ecl-3b8294a3.js +0 -454
  405. package/dist/elixir-b9dcc73a.js +0 -489
  406. package/dist/flow9-bdde8316.js +0 -141
  407. package/dist/freemarker2-4361569f.js +0 -643
  408. package/dist/fsharp-eac2e449.js +0 -210
  409. package/dist/go-d12ed8d4.js +0 -208
  410. package/dist/graphql-c7356b69.js +0 -141
  411. package/dist/handlebars-babdfc67.js +0 -391
  412. package/dist/hcl-e883a0d4.js +0 -177
  413. package/dist/html-23b49eab.js +0 -281
  414. package/dist/htmlMode-f37a1616.js +0 -1456
  415. package/dist/index-3a430320.js +0 -127405
  416. package/dist/ini-425ab711.js +0 -68
  417. package/dist/java-2bc0fd68.js +0 -221
  418. package/dist/javascript-3597fa14.js +0 -75
  419. package/dist/jsonMode-b97d1b5f.js +0 -1867
  420. package/dist/julia-1c932615.js +0 -496
  421. package/dist/kotlin-1ab839c8.js +0 -245
  422. package/dist/less-6fe856f5.js +0 -168
  423. package/dist/lexon-4955ac52.js +0 -151
  424. package/dist/liquid-9778cbb4.js +0 -238
  425. package/dist/lua-3cca0047.js +0 -157
  426. package/dist/m3-132e9cb6.js +0 -210
  427. package/dist/markdown-ea59a0c1.js +0 -202
  428. package/dist/mips-19811f4b.js +0 -194
  429. package/dist/msdax-69954a10.js +0 -377
  430. package/dist/mysql-82088e5d.js +0 -876
  431. package/dist/objective-c-1976eccc.js +0 -188
  432. package/dist/pascal-8ef177cb.js +0 -245
  433. package/dist/pascaligo-bc517b9e.js +0 -158
  434. package/dist/perl-8b93582c.js +0 -599
  435. package/dist/pgsql-00c11a6d.js +0 -847
  436. package/dist/php-4c8c276f.js +0 -471
  437. package/dist/pla-e9b4ffb1.js +0 -131
  438. package/dist/postiats-2071af8c.js +0 -544
  439. package/dist/powerquery-8e388ceb.js +0 -890
  440. package/dist/powershell-e35db398.js +0 -233
  441. package/dist/protobuf-a24b9176.js +0 -422
  442. package/dist/pug-2c94d9b8.js +0 -393
  443. package/dist/python-e4dba3c0.js +0 -259
  444. package/dist/qsharp-d730d7fe.js +0 -282
  445. package/dist/r-be193556.js +0 -245
  446. package/dist/razor-242f0a8f.js +0 -512
  447. package/dist/redis-9690c6ac.js +0 -298
  448. package/dist/redshift-6bdcdeaa.js +0 -806
  449. package/dist/restructuredtext-a08c1d20.js +0 -162
  450. package/dist/ruby-2247692b.js +0 -444
  451. package/dist/rust-1dffb4d5.js +0 -337
  452. package/dist/sb-136598e9.js +0 -110
  453. package/dist/scala-b1100fed.js +0 -353
  454. package/dist/scheme-038c8094.js +0 -114
  455. package/dist/scss-700d1b52.js +0 -244
  456. package/dist/shell-86c16e0f.js +0 -224
  457. package/dist/solidity-c05fdf3c.js +0 -1351
  458. package/dist/sophia-cd645d71.js +0 -190
  459. package/dist/sparql-01d9ec9c.js +0 -193
  460. package/dist/sql-4c33df41.js +0 -818
  461. package/dist/st-52cf1408.js +0 -414
  462. package/dist/swift-13c792ba.js +0 -315
  463. package/dist/systemverilog-0bd8b730.js +0 -556
  464. package/dist/tcl-463d7c75.js +0 -232
  465. package/dist/tsMode-bf606946.js +0 -811
  466. package/dist/twig-0d98f5ec.js +0 -323
  467. package/dist/typescript-9ed04bdd.js +0 -328
  468. package/dist/vb-3a2b0a51.js +0 -364
  469. package/dist/wgsl-b2ddb3e4.js +0 -420
  470. package/dist/xml-825eaa31.js +0 -95
  471. package/dist/yaml-c9fb7842.js +0 -184
@@ -0,0 +1,135 @@
1
+ import { CustomInputProps } from './Types'
2
+ import { ReactComponent as Info } from '../../Assets/Icon/ic-info-filled.svg'
3
+ import { ReactComponent as ErrorIcon } from '../../Assets/Icon/ic-warning.svg'
4
+
5
+ // TODO: label association with input
6
+ export function CustomInput({
7
+ name,
8
+ value,
9
+ error,
10
+ onChange,
11
+ onFocus = (e) => {},
12
+ label,
13
+ type = 'text',
14
+ disabled = false,
15
+ labelClassName = '',
16
+ placeholder = '',
17
+ tabIndex = 0,
18
+ dataTestid = '',
19
+ isRequiredField = false,
20
+ autoFocus = false,
21
+ rootClassName = '',
22
+ autoComplete = 'off',
23
+ helperText = '',
24
+ handleOnBlur,
25
+ readOnly = false,
26
+ noTrim = false,
27
+ ref,
28
+ onKeyPress,
29
+ defaultValue,
30
+ onKeyDown,
31
+ required,
32
+ additionalErrorInfo,
33
+ inputWrapClassName = '',
34
+ inputProps = {},
35
+ }: CustomInputProps) {
36
+ function handleError(error: any): any[] {
37
+ if (!Array.isArray(error)) {
38
+ return [error]
39
+ }
40
+ return error
41
+ }
42
+
43
+ const onBlur = (event) => {
44
+ //NOTE: This is to prevent the input from being trimmed when the user do not want to trim the input
45
+ if (!noTrim) {
46
+ event.stopPropagation()
47
+ event.target.value = event.target.value?.trim()
48
+ onChange(event)
49
+ }
50
+ if (typeof handleOnBlur === 'function') {
51
+ handleOnBlur(event)
52
+ }
53
+ }
54
+
55
+ const renderFormErrorWithIcon = (error: string) => {
56
+ return (
57
+ <div className="form__error" key={error}>
58
+ <ErrorIcon className="form__icon form__icon--error" />
59
+ {error}
60
+ {error && typeof additionalErrorInfo === 'function' && additionalErrorInfo()}
61
+ </div>
62
+ )
63
+ }
64
+
65
+ const getInputError = () => {
66
+ if (!error?.length) {
67
+ return null
68
+ } else {
69
+ if (typeof error === 'object') {
70
+ return handleError(error).map((err: string) => renderFormErrorWithIcon(err))
71
+ }
72
+ return renderFormErrorWithIcon(error)
73
+ }
74
+ }
75
+
76
+ const renderInputLabelConditionally = () => {
77
+ if (typeof label === 'string') {
78
+ return <span className={`${isRequiredField ? 'dc__required-field' : ''}`}>{label}</span>
79
+ } else {
80
+ return label
81
+ }
82
+ }
83
+
84
+ const renderInputLabel = () => {
85
+ if (!label) {
86
+ return null
87
+ } else {
88
+ return (
89
+ <label className={`form__label ${labelClassName}`} data-testid={`label-${dataTestid}`}>
90
+ {renderInputLabelConditionally()}
91
+ </label>
92
+ )
93
+ }
94
+ }
95
+
96
+ return (
97
+ <div className={`flex column left top ${inputWrapClassName}`}>
98
+ {renderInputLabel()}
99
+ <input
100
+ data-testid={dataTestid}
101
+ type={type}
102
+ name={name}
103
+ autoComplete={autoComplete}
104
+ className={`form__input ${rootClassName}`}
105
+ onChange={(e) => {
106
+ e.persist()
107
+ onChange(e)
108
+ }}
109
+ onBlur={onBlur}
110
+ onFocus={onFocus}
111
+ placeholder={placeholder}
112
+ value={value}
113
+ disabled={disabled}
114
+ tabIndex={tabIndex}
115
+ autoFocus={autoFocus}
116
+ readOnly={readOnly}
117
+ ref={ref}
118
+ onKeyPress={onKeyPress}
119
+ defaultValue={defaultValue}
120
+ onKeyDown={onKeyDown}
121
+ required={required}
122
+ // Will be passing other props like other data attributes etc from inputProps
123
+ {...inputProps}
124
+ />
125
+
126
+ {getInputError()}
127
+ {helperText && (
128
+ <div className="form__text-field-info">
129
+ <Info className="form__icon form__icon--info" />
130
+ <p className="sentence-case">{helperText}</p>
131
+ </div>
132
+ )}
133
+ </div>
134
+ )
135
+ }
@@ -0,0 +1,32 @@
1
+ import React, { HTMLInputTypeAttribute, InputHTMLAttributes } 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
+ inputProps?: InputHTMLAttributes<HTMLInputElement>
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
+ }