@devtron-labs/devtron-fe-common-lib 0.0.59-beta-5 → 0.0.59-beta-8

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 (408) 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 -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 +89 -81
  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 +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 +4 -3
  73. package/dist/Common/Hooks/useUrlFilters/constants.d.ts +8 -0
  74. package/dist/Common/Hooks/useUrlFilters/index.d.ts +2 -0
  75. package/dist/Common/Hooks/useUrlFilters/types.d.ts +6 -0
  76. package/dist/Common/Hooks/useUrlFilters/useUrlFilters.d.ts +32 -0
  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 -0
  129. package/dist/Common/SortableTableHeaderCell/index.d.ts +2 -0
  130. package/dist/Common/SortableTableHeaderCell/types.d.ts +25 -0
  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 +703 -691
  135. package/dist/Common/index.d.ts +51 -50
  136. package/dist/Pages/GlobalConfigurations/Authorization/constants.d.ts +15 -0
  137. package/dist/Pages/GlobalConfigurations/Authorization/index.d.ts +1 -0
  138. package/dist/Pages/GlobalConfigurations/index.d.ts +1 -0
  139. package/dist/Pages/index.d.ts +1 -0
  140. package/dist/index.d.ts +2 -7
  141. package/dist/index.js +29110 -162
  142. package/package.json +23 -34
  143. package/rollup.config.js +31 -0
  144. package/src/Assets/Icon/ic-add.svg +3 -0
  145. package/src/Assets/Icon/ic-appstatus-cancelled.svg +6 -0
  146. package/src/Assets/Icon/ic-arrow-counter-clockwise.svg +5 -0
  147. package/src/Assets/Icon/ic-arrow-up-down.svg +3 -0
  148. package/src/Assets/Icon/ic-check.svg +5 -0
  149. package/src/Assets/Icon/ic-chevron-down.svg +5 -0
  150. package/src/Assets/Icon/ic-copy.svg +3 -0
  151. package/src/Assets/Icon/ic-cross.svg +3 -0
  152. package/src/Assets/Icon/ic-drag.svg +8 -0
  153. package/src/Assets/Icon/ic-enter.svg +3 -0
  154. package/src/Assets/Icon/ic-error-cross.svg +8 -0
  155. package/src/Assets/Icon/ic-error-exclamation.svg +6 -0
  156. package/src/Assets/Icon/ic-error-medium.svg +6 -0
  157. package/src/Assets/Icon/ic-help-outline.svg +3 -0
  158. package/src/Assets/Icon/ic-help.svg +3 -0
  159. package/src/Assets/Icon/ic-info-filled.svg +7 -0
  160. package/src/Assets/Icon/ic-info-outlined.svg +13 -0
  161. package/src/Assets/Icon/ic-minus.svg +3 -0
  162. package/src/Assets/Icon/ic-pencil.svg +3 -0
  163. package/src/Assets/Icon/ic-progressing.svg +6 -0
  164. package/src/Assets/Icon/ic-rotate-devtron.svg +103 -0
  165. package/src/Assets/Icon/ic-search.svg +6 -0
  166. package/src/Assets/Icon/ic-sort-arrow-down.svg +3 -0
  167. package/src/Assets/Icon/ic-warning.svg +7 -0
  168. package/src/Assets/Icon/inject-tag.svg +5 -0
  169. package/src/Assets/Img/app-not-deployed.png +0 -0
  170. package/src/Assets/Img/delete-medium.svg +15 -0
  171. package/src/Assets/Img/ic-empty-error@2x.png +0 -0
  172. package/src/Assets/Img/ic-loading-failure.png +0 -0
  173. package/src/Assets/Img/ic-not-authorized.svg +62 -0
  174. package/src/Common/AddCDButton/AddCDButton.tsx +68 -0
  175. package/src/Common/AddCDButton/index.ts +2 -0
  176. package/src/Common/AddCDButton/types.ts +38 -0
  177. package/src/Common/AddCDButton/utils.tsx +35 -0
  178. package/src/Common/Api.ts +251 -0
  179. package/src/Common/AppStatus/AppStatus.tsx +64 -0
  180. package/src/Common/AppStatus/constants.ts +53 -0
  181. package/src/Common/AppStatus/index.ts +1 -0
  182. package/src/Common/AppStatus/types.ts +12 -0
  183. package/src/Common/AppStatus/utils.ts +14 -0
  184. package/src/Common/BreadCrumb/BreadCrumb.tsx +105 -0
  185. package/src/Common/BreadCrumb/BreadcrumbStore.tsx +25 -0
  186. package/src/Common/BreadCrumb/Types.ts +30 -0
  187. package/src/Common/CIPipeline.Types.ts +277 -0
  188. package/src/Common/ChartVersionAndTypeSelector.tsx +78 -0
  189. package/src/Common/Checkbox.tsx +36 -0
  190. package/src/Common/ClipboardButton/ClipboardButton.tsx +61 -0
  191. package/src/Common/ClipboardButton/__tests__/ClipboardButton.test.tsx +43 -0
  192. package/src/Common/ClipboardButton/types.ts +7 -0
  193. package/src/Common/Common.service.ts +315 -0
  194. package/src/Common/Constants.ts +270 -0
  195. package/src/Common/CustomInput/CustomInput.tsx +134 -0
  196. package/src/Common/CustomInput/Types.ts +32 -0
  197. package/src/Common/CustomInput/index.ts +2 -0
  198. package/src/Common/CustomTagSelector/PropagateTagInfo.tsx +46 -0
  199. package/src/Common/CustomTagSelector/ResizableTagTextArea.tsx +84 -0
  200. package/src/Common/CustomTagSelector/TagDetails.tsx +76 -0
  201. package/src/Common/CustomTagSelector/TagLabelSelect.tsx +61 -0
  202. package/src/Common/CustomTagSelector/TagLabelValueSelector.tsx +198 -0
  203. package/src/Common/CustomTagSelector/TagSelector.utils.ts +71 -0
  204. package/src/Common/CustomTagSelector/Types.ts +72 -0
  205. package/src/Common/CustomTagSelector/ValidationRules.ts +58 -0
  206. package/src/Common/CustomTagSelector/index.ts +6 -0
  207. package/src/Common/DebouncedSearch/DebouncedSearch.tsx +78 -0
  208. package/src/Common/DebouncedSearch/Types.ts +13 -0
  209. package/src/Common/DebouncedSearch/Utils.ts +19 -0
  210. package/src/Common/DebouncedSearch/__tests__/DebouncedSearch.test.tsx +61 -0
  211. package/src/Common/DeleteComponentModal/DeleteComponent.tsx +95 -0
  212. package/src/Common/DeleteComponentModal/types.ts +15 -0
  213. package/src/Common/DevtronProgressing/DevtronProgressing.tsx +11 -0
  214. package/src/Common/DevtronProgressing/index.ts +1 -0
  215. package/src/Common/DevtronProgressing/types.ts +4 -0
  216. package/src/Common/Dialogs/ConfirmationDialog.tsx +34 -0
  217. package/src/Common/Dialogs/DeleteDialog.tsx +69 -0
  218. package/src/Common/Dialogs/DialogForm.tsx +86 -0
  219. package/src/Common/Dialogs/ForceDeleteDialog.tsx +19 -0
  220. package/src/Common/Dialogs/Types.ts +47 -0
  221. package/src/Common/Dialogs/index.ts +4 -0
  222. package/src/Common/DraggableWrapper/DraggableButton.tsx +14 -0
  223. package/src/Common/DraggableWrapper/DraggableWrapper.tsx +116 -0
  224. package/src/Common/DraggableWrapper/index.ts +3 -0
  225. package/src/Common/DraggableWrapper/types.ts +27 -0
  226. package/src/Common/Drawer/Drawer.scss +40 -0
  227. package/src/Common/Drawer/Drawer.tsx +49 -0
  228. package/src/Common/EmptyState/EmptyState.tsx +42 -0
  229. package/src/Common/EmptyState/GenericEmptyState.tsx +81 -0
  230. package/src/Common/EmptyState/emptyState.scss +74 -0
  231. package/src/Common/Error.tsx +61 -0
  232. package/src/Common/ErrorScreenNotFound.tsx +31 -0
  233. package/src/Common/Grid/Grid.tsx +44 -0
  234. package/src/Common/Grid/types.ts +11 -0
  235. package/src/Common/Helper.tsx +576 -0
  236. package/src/Common/Hooks/UseClickOutside/UseClickOutside.tsx +15 -0
  237. package/src/Common/Hooks/UseSuperAdmin/UseSuperAdmin.tsx +24 -0
  238. package/src/Common/Hooks/UseSuperAdmin/types.ts +3 -0
  239. package/src/Common/Hooks/UseWindowSize/UseWindowSize.tsx +31 -0
  240. package/src/Common/Hooks/index.ts +4 -0
  241. package/src/Common/Hooks/useUrlFilters/constants.ts +9 -0
  242. package/src/Common/Hooks/useUrlFilters/index.ts +2 -0
  243. package/src/Common/Hooks/useUrlFilters/types.ts +6 -0
  244. package/src/Common/Hooks/useUrlFilters/useUrlFilters.ts +121 -0
  245. package/src/Common/ImageTags.Types.ts +44 -0
  246. package/src/Common/ImageTags.tsx +586 -0
  247. package/src/Common/InfoColorBar/InfoColourbar.tsx +80 -0
  248. package/src/Common/InfoColorBar/infoColourBar.scss +28 -0
  249. package/src/Common/Modals/Modal.tsx +68 -0
  250. package/src/Common/Modals/OpaqueModal.tsx +36 -0
  251. package/src/Common/Modals/VisibleModal.tsx +55 -0
  252. package/src/Common/Modals/VisibleModal2.tsx +35 -0
  253. package/src/Common/MultiSelectCustomization.tsx +148 -0
  254. package/src/Common/Pagination/PageSizeSelector.tsx +78 -0
  255. package/src/Common/Pagination/Pagination.tsx +127 -0
  256. package/src/Common/Pagination/constants.ts +6 -0
  257. package/src/Common/Pagination/index.tsx +3 -0
  258. package/src/Common/Pagination/pagination.scss +123 -0
  259. package/src/Common/Pagination/types.ts +55 -0
  260. package/src/Common/Pagination/utils.tsx +24 -0
  261. package/src/Common/Policy.Types.ts +63 -0
  262. package/src/Common/PopupMenu.tsx +199 -0
  263. package/src/Common/Progressing.tsx +53 -0
  264. package/src/Common/RJSF/Form.tsx +29 -0
  265. package/src/Common/RJSF/common/FieldRow.tsx +35 -0
  266. package/src/Common/RJSF/common/types.ts +9 -0
  267. package/src/Common/RJSF/config.ts +37 -0
  268. package/src/Common/RJSF/constants.ts +10 -0
  269. package/src/Common/RJSF/index.ts +3 -0
  270. package/src/Common/RJSF/rjsfForm.scss +18 -0
  271. package/src/Common/RJSF/templates/ArrayFieldItemTemplate.tsx +31 -0
  272. package/src/Common/RJSF/templates/ArrayFieldTemplate.tsx +78 -0
  273. package/src/Common/RJSF/templates/BaseInput.tsx +16 -0
  274. package/src/Common/RJSF/templates/ButtonTemplates/AddButton.tsx +18 -0
  275. package/src/Common/RJSF/templates/ButtonTemplates/RemoveButton.tsx +10 -0
  276. package/src/Common/RJSF/templates/ButtonTemplates/SubmitButton.tsx +18 -0
  277. package/src/Common/RJSF/templates/ButtonTemplates/index.ts +3 -0
  278. package/src/Common/RJSF/templates/Description.tsx +12 -0
  279. package/src/Common/RJSF/templates/Field.tsx +30 -0
  280. package/src/Common/RJSF/templates/FieldErrorTemplate.tsx +25 -0
  281. package/src/Common/RJSF/templates/ObjectFieldTemplate.tsx +105 -0
  282. package/src/Common/RJSF/templates/TitleField.tsx +9 -0
  283. package/src/Common/RJSF/templates/WrapIfAdditionalTemplate.tsx +51 -0
  284. package/src/Common/RJSF/templates/index.ts +10 -0
  285. package/src/Common/RJSF/types.ts +4 -0
  286. package/src/Common/RJSF/utils.ts +123 -0
  287. package/src/Common/RJSF/widgets/Checkbox.tsx +44 -0
  288. package/src/Common/RJSF/widgets/Select.tsx +77 -0
  289. package/src/Common/RJSF/widgets/index.ts +2 -0
  290. package/src/Common/RadioGroup/RadioGroup.tsx +105 -0
  291. package/src/Common/RadioGroup/radioGroup.scss +46 -0
  292. package/src/Common/RadioGroup.tsx +53 -0
  293. package/src/Common/Reload.tsx +23 -0
  294. package/src/Common/ResizableTextarea.tsx +73 -0
  295. package/src/Common/SearchBar/SearchBar.component.tsx +131 -0
  296. package/src/Common/SearchBar/index.ts +2 -0
  297. package/src/Common/SearchBar/searchBar.scss +31 -0
  298. package/src/Common/SearchBar/types.ts +34 -0
  299. package/src/Common/Security/ScanVulnerabilitiesTable.tsx +55 -0
  300. package/src/Common/Security/scanVulnerabilities.css +69 -0
  301. package/src/Common/ServerError.ts +31 -0
  302. package/src/Common/SortableTableHeaderCell/SortableTableHeaderCell.tsx +44 -0
  303. package/src/Common/SortableTableHeaderCell/index.ts +2 -0
  304. package/src/Common/SortableTableHeaderCell/types.ts +26 -0
  305. package/src/Common/TippyCustomized.tsx +172 -0
  306. package/src/Common/ToastBody.tsx +62 -0
  307. package/src/Common/Toggle/Toggle.scss +78 -0
  308. package/src/Common/Toggle/Toggle.tsx +50 -0
  309. package/src/Common/Types.ts +776 -0
  310. package/src/Common/index.ts +51 -0
  311. package/src/Pages/GlobalConfigurations/Authorization/constants.ts +16 -0
  312. package/src/Pages/GlobalConfigurations/Authorization/index.ts +1 -0
  313. package/src/Pages/GlobalConfigurations/index.ts +1 -0
  314. package/src/Pages/index.ts +1 -0
  315. package/src/custom.d.ts +13 -0
  316. package/src/index.ts +2 -0
  317. package/tsconfig.json +40 -0
  318. package/dist/Common/CodeEditor/CodeEditor.d.ts +0 -47
  319. package/dist/Common/Select/Select.d.ts +0 -4
  320. package/dist/Common/Select/types.d.ts +0 -29
  321. package/dist/abap-9f67f57a.js +0 -1314
  322. package/dist/apex-ff62e532.js +0 -315
  323. package/dist/assets/editor.worker-d26000ef.js +0 -9
  324. package/dist/assets/index.css +0 -1
  325. package/dist/assets/json.worker-f23a4654.js +0 -40
  326. package/dist/assets/yaml.worker-35ea3f9a.js +0 -467
  327. package/dist/azcli-31e64a7f.js +0 -74
  328. package/dist/bat-0ffe897e.js +0 -95
  329. package/dist/bicep-3414a2b1.js +0 -108
  330. package/dist/cameligo-df1f3f25.js +0 -168
  331. package/dist/clojure-65b0f010.js +0 -754
  332. package/dist/coffee-437f0fba.js +0 -228
  333. package/dist/cpp-66843dd5.js +0 -390
  334. package/dist/csharp-621d9a49.js +0 -320
  335. package/dist/csp-de0d5244.js +0 -57
  336. package/dist/css-7cd5ed4c.js +0 -186
  337. package/dist/cssMode-dc5f347f.js +0 -1446
  338. package/dist/cypher-70ad96fe.js +0 -262
  339. package/dist/dart-33ae3739.js +0 -270
  340. package/dist/dockerfile-f2274a50.js +0 -132
  341. package/dist/ecl-3b8294a3.js +0 -454
  342. package/dist/elixir-b9dcc73a.js +0 -489
  343. package/dist/flow9-bdde8316.js +0 -141
  344. package/dist/freemarker2-adb1a1bb.js +0 -643
  345. package/dist/fsharp-eac2e449.js +0 -210
  346. package/dist/go-d12ed8d4.js +0 -208
  347. package/dist/graphql-c7356b69.js +0 -141
  348. package/dist/handlebars-096fff05.js +0 -391
  349. package/dist/hcl-e883a0d4.js +0 -177
  350. package/dist/html-0cbfb620.js +0 -281
  351. package/dist/htmlMode-cb96e200.js +0 -1456
  352. package/dist/index-3e12a5d1.js +0 -126104
  353. package/dist/ini-425ab711.js +0 -68
  354. package/dist/java-2bc0fd68.js +0 -221
  355. package/dist/javascript-198e562f.js +0 -75
  356. package/dist/jsonMode-9c219fc6.js +0 -1867
  357. package/dist/julia-1c932615.js +0 -496
  358. package/dist/kotlin-1ab839c8.js +0 -245
  359. package/dist/less-6fe856f5.js +0 -168
  360. package/dist/lexon-4955ac52.js +0 -151
  361. package/dist/liquid-7405cc0a.js +0 -238
  362. package/dist/lua-3cca0047.js +0 -157
  363. package/dist/m3-132e9cb6.js +0 -210
  364. package/dist/markdown-ea59a0c1.js +0 -202
  365. package/dist/mips-19811f4b.js +0 -194
  366. package/dist/msdax-69954a10.js +0 -377
  367. package/dist/mysql-82088e5d.js +0 -876
  368. package/dist/objective-c-1976eccc.js +0 -188
  369. package/dist/pascal-8ef177cb.js +0 -245
  370. package/dist/pascaligo-bc517b9e.js +0 -158
  371. package/dist/perl-8b93582c.js +0 -599
  372. package/dist/pgsql-00c11a6d.js +0 -847
  373. package/dist/php-4c8c276f.js +0 -471
  374. package/dist/pla-e9b4ffb1.js +0 -131
  375. package/dist/postiats-2071af8c.js +0 -544
  376. package/dist/powerquery-8e388ceb.js +0 -890
  377. package/dist/powershell-e35db398.js +0 -233
  378. package/dist/protobuf-a24b9176.js +0 -422
  379. package/dist/pug-2c94d9b8.js +0 -393
  380. package/dist/python-2df08096.js +0 -259
  381. package/dist/qsharp-d730d7fe.js +0 -282
  382. package/dist/r-be193556.js +0 -245
  383. package/dist/razor-11eb7ebc.js +0 -512
  384. package/dist/redis-9690c6ac.js +0 -298
  385. package/dist/redshift-6bdcdeaa.js +0 -806
  386. package/dist/restructuredtext-a08c1d20.js +0 -162
  387. package/dist/ruby-2247692b.js +0 -444
  388. package/dist/rust-1dffb4d5.js +0 -337
  389. package/dist/sb-136598e9.js +0 -110
  390. package/dist/scala-b1100fed.js +0 -353
  391. package/dist/scheme-038c8094.js +0 -114
  392. package/dist/scss-700d1b52.js +0 -244
  393. package/dist/shell-86c16e0f.js +0 -224
  394. package/dist/solidity-c05fdf3c.js +0 -1351
  395. package/dist/sophia-cd645d71.js +0 -190
  396. package/dist/sparql-01d9ec9c.js +0 -193
  397. package/dist/sql-4c33df41.js +0 -818
  398. package/dist/st-52cf1408.js +0 -414
  399. package/dist/swift-13c792ba.js +0 -315
  400. package/dist/systemverilog-0bd8b730.js +0 -556
  401. package/dist/tcl-463d7c75.js +0 -232
  402. package/dist/tsMode-35934209.js +0 -811
  403. package/dist/twig-0d98f5ec.js +0 -323
  404. package/dist/typescript-999619a1.js +0 -328
  405. package/dist/vb-3a2b0a51.js +0 -364
  406. package/dist/wgsl-b2ddb3e4.js +0 -420
  407. package/dist/xml-ebd03a57.js +0 -95
  408. package/dist/yaml-d1cda485.js +0 -184
@@ -0,0 +1,46 @@
1
+ .radio-group {
2
+ .label,
3
+ .radio,
4
+ .checkbox {
5
+ margin: 0;
6
+ }
7
+ height: 30px;
8
+ background: white;
9
+ display: flex;
10
+ justify-content: center;
11
+ align-items: center;
12
+ padding: 4px;
13
+ border-radius: 4px;
14
+ .radio {
15
+ height: 100%;
16
+ width: auto;
17
+ color: var(--N400);
18
+ display: flex;
19
+ align-items: center;
20
+ }
21
+ .radio+.radio {
22
+ margin-top: 0;
23
+ }
24
+ input[type=checkbox] {
25
+ display: contents;
26
+ overflow: hidden;
27
+ max-width: 0px;
28
+ height: 0;
29
+ opacity: 0;
30
+ margin: unset;
31
+ }
32
+ input+.radio__item-label {
33
+ padding: 4px 6px;
34
+ height: 100%;
35
+ width: 100%;
36
+ display: flex;
37
+ align-items: center;
38
+ transition: all 0.5s;
39
+ cursor: pointer;
40
+ }
41
+ input[type=checkbox]:checked+.radio__item-label {
42
+ background: #2c3354;
43
+ color: white;
44
+ border-radius: 4px;
45
+ }
46
+ }
@@ -0,0 +1,53 @@
1
+ import React, { Component, createContext } from 'react'
2
+ import { RadioGroupItemProps, RadioGroupProps } from './Types'
3
+ const RadioGroupContext = createContext({ name: '', value: '', disabled: false, onChange: (event) => {} })
4
+
5
+ export class RadioGroupItem extends Component<RadioGroupItemProps> {
6
+ render() {
7
+ return (
8
+ <RadioGroupContext.Consumer>
9
+ {(context) => {
10
+ return (
11
+ <>
12
+ <label className={(this.props.disabled || context.disabled) ? 'form__radio-item disabled' : 'form__radio-item'}>
13
+ <input
14
+ type="radio"
15
+ className="form__checkbox"
16
+ name={context.name}
17
+ disabled={context.disabled || this.props.disabled}
18
+ onChange={context.onChange}
19
+ value={this.props.value}
20
+ checked={context.value === this.props.value}
21
+ data-testid={this.props.dataTestId}
22
+ />
23
+ <span className="form__radio-item-content" data-testid={`${this.props.dataTestId}-span`}>
24
+ <span className="radio__button"></span>
25
+ <span className="radio__title">{this.props.children}</span>
26
+ </span>
27
+ </label>
28
+ </>
29
+ )
30
+ }}
31
+ </RadioGroupContext.Consumer>
32
+ )
33
+ }
34
+ }
35
+
36
+ export class RadioGroup extends Component<RadioGroupProps> {
37
+ render() {
38
+ return (
39
+ <div className={`form__radio-group ${this.props.className || ''}`}>
40
+ <RadioGroupContext.Provider
41
+ value={{
42
+ name: this.props.name,
43
+ value: this.props.value,
44
+ disabled: this.props.disabled,
45
+ onChange: this.props.onChange,
46
+ }}
47
+ >
48
+ {this.props.children}
49
+ </RadioGroupContext.Provider>
50
+ </div>
51
+ )
52
+ }
53
+ }
@@ -0,0 +1,23 @@
1
+ import React from 'react'
2
+ import loadingFailure from '../Assets/Img/ic-loading-failure.png'
3
+ import { ReloadType } from './Types'
4
+
5
+ export default function Reload({ reload, className = '' }: ReloadType) {
6
+ function refresh(e) {
7
+ window.location.reload()
8
+ }
9
+ return (
10
+ <article className={`flex w-100 h-100 ${className}`}>
11
+ <div className="flex column w-250 dc__align-center" data-testid="reload">
12
+ <img src={loadingFailure} style={{ height: 'auto' }} className="w-100 mb-12" alt="load-error" />
13
+ <h3 className="title dc__bold">Failed to load</h3>
14
+ <div className="dc__empty__subtitle mb-20">
15
+ We could not load this page. Please give us another try.
16
+ </div>
17
+ <button type="button" className="cta ghosted" onClick={typeof reload === 'function' ? reload : refresh}>
18
+ Retry
19
+ </button>
20
+ </div>
21
+ </article>
22
+ )
23
+ }
@@ -0,0 +1,73 @@
1
+ import React, { useState, useEffect, useRef } from 'react'
2
+ import { useThrottledEffect } from './Helper'
3
+ import { ResizableTextareaProps } from './Types'
4
+
5
+ export const ResizableTextarea: React.FC<ResizableTextareaProps> = ({
6
+ minHeight,
7
+ maxHeight,
8
+ value,
9
+ onChange = null,
10
+ onBlur = null,
11
+ onFocus = null,
12
+ className = '',
13
+ placeholder = 'Enter your text here..',
14
+ lineHeight = 14,
15
+ padding = 12,
16
+ disabled = false,
17
+ dataTestId,
18
+ ...props
19
+ }) => {
20
+ const [text, setText] = useState('')
21
+ const _textRef = useRef(null)
22
+
23
+ useEffect(() => {
24
+ setText(value)
25
+ }, [value])
26
+
27
+ function handleChange(e) {
28
+ e.persist()
29
+ setText(e.target.value)
30
+ if (typeof onChange === 'function') onChange(e)
31
+ }
32
+
33
+ function handleBlur(e) {
34
+ if (typeof onBlur === 'function') onBlur(e)
35
+ }
36
+
37
+ function handleFocus(e) {
38
+ if (typeof onFocus === 'function') onFocus(e)
39
+ }
40
+
41
+ useThrottledEffect(
42
+ () => {
43
+ _textRef.current.style.height = 'auto'
44
+ let nextHeight = _textRef.current.scrollHeight
45
+ if (minHeight && nextHeight < minHeight) {
46
+ nextHeight = minHeight
47
+ }
48
+ if (maxHeight && nextHeight > maxHeight) {
49
+ nextHeight = maxHeight
50
+ }
51
+ _textRef.current.style.height = nextHeight + 2 + 'px'
52
+ },
53
+ 500,
54
+ [text],
55
+ )
56
+
57
+ return (
58
+ <textarea
59
+ data-testid={dataTestId}
60
+ ref={(el) => (_textRef.current = el)}
61
+ value={text}
62
+ placeholder={placeholder}
63
+ className={`dc__resizable-textarea ${className}`}
64
+ onChange={handleChange}
65
+ onBlur={handleBlur}
66
+ onFocus={handleFocus}
67
+ style={{ lineHeight: `${lineHeight}px`, padding: `${padding}px` }}
68
+ spellCheck={false}
69
+ disabled={disabled}
70
+ {...props}
71
+ />
72
+ )
73
+ }
@@ -0,0 +1,131 @@
1
+ import { ChangeEvent, useCallback, useRef, useState, KeyboardEvent, useEffect } from 'react'
2
+ import { ReactComponent as Search } from '../../Assets/Icon/ic-search.svg'
3
+ import { ReactComponent as Clear } from '../../Assets/Icon/ic-error-cross.svg'
4
+ import { SearchBarProps } from './types'
5
+ import './searchBar.scss'
6
+ import { debounce } from '../Helper'
7
+
8
+ /**
9
+ * Generic search input component with support for enter based and debounced search
10
+ * Note: The component is uncontrolled
11
+ *
12
+ * @example Usage with default debounced search
13
+ * ```tsx
14
+ * <SearchBar handleSearchChange={triggerSearchApi} shouldDebounce />
15
+ * ```
16
+ *
17
+ * @example Initial search text
18
+ * ```tsx
19
+ * <SearchBar initialSearchText="Keyword" />
20
+ * ```
21
+ *
22
+ * @example Custom width
23
+ * ```tsx
24
+ * <SearchBar containerClassName="w-300" />
25
+ * ```
26
+ *
27
+ * @example Trigger search on enter key press
28
+ * ```tsx
29
+ * <SearchBar handleEnter={triggerSearchApi} />
30
+ * ```
31
+ *
32
+ * @example Custom timeout for debounced search
33
+ * ```tsx
34
+ * <SearchBar handleSearchChange={triggerSearchApi} shouldDebounce debounceTimeout={500} />
35
+ * ```
36
+ *
37
+ * @example Placeholder for the search
38
+ * ```tsx
39
+ * <SearchBar inputProps={{ placeholder: 'Enter search text' }} />
40
+ * ```
41
+ */
42
+ const SearchBar = ({
43
+ initialSearchText = '',
44
+ handleSearchChange = () => {},
45
+ handleEnter = () => {},
46
+ inputProps = {},
47
+ containerClassName,
48
+ shouldDebounce = false,
49
+ debounceTimeout = 300,
50
+ }: SearchBarProps) => {
51
+ const [showClearButton, setShowClearButton] = useState(!!initialSearchText)
52
+ const inputRef = useRef<HTMLInputElement>()
53
+ const debouncedSearchChange = useCallback(debounce(handleSearchChange, debounceTimeout), [
54
+ handleSearchChange,
55
+ debounceTimeout,
56
+ ])
57
+
58
+ // assuming initialSearchText will change if we are changing history otherwise will be constant and will not change
59
+ // since on changing history we expect to make api call using useAsync so not applying handleEnter
60
+ useEffect(() => {
61
+ inputRef.current.value = initialSearchText
62
+ setShowClearButton(!!initialSearchText)
63
+ }, [initialSearchText])
64
+
65
+ const _applySearch = (value: string) => {
66
+ handleSearchChange(value)
67
+ handleEnter(value)
68
+ }
69
+
70
+ const clearSearch = () => {
71
+ inputRef.current.value = ''
72
+ _applySearch('')
73
+ setShowClearButton(false)
74
+ }
75
+
76
+ const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
77
+ const { value } = e.target
78
+ setShowClearButton(!!value)
79
+
80
+ if (shouldDebounce) {
81
+ debouncedSearchChange(value)
82
+ } else {
83
+ handleSearchChange(value)
84
+ }
85
+ }
86
+
87
+ const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {
88
+ const { key } = e
89
+
90
+ if (key === 'Enter') {
91
+ e.preventDefault()
92
+ const inputTarget = e.target as HTMLInputElement
93
+ const value = inputTarget.value.trim()
94
+ _applySearch(value)
95
+ }
96
+ }
97
+
98
+ return (
99
+ <div className={containerClassName}>
100
+ <div className="search-bar bc-n50 focus-within-border-b5 dc__hover-border-n300 dc__block w-100 min-w-200 dc__position-rel en-2 bw-1 br-4 h-32">
101
+ <Search className="search-bar__icon dc__position-abs icon-color-n6 icon-dim-16" />
102
+ <input
103
+ placeholder="Search"
104
+ data-testid="search-bar"
105
+ type="text"
106
+ {...inputProps}
107
+ defaultValue={initialSearchText}
108
+ className={`search-bar__input bc-n50 dc__position-abs w-100 h-100 br-4 dc__no-border pt-6 pr-10 pb-6 pl-30 fs-13 lh-20 fw-4 cn-9 placeholder-cn5 ${
109
+ showClearButton ? 'pr-30' : 'pr-10'
110
+ }`}
111
+ onChange={handleChange}
112
+ onKeyDown={handleKeyDown}
113
+ ref={inputRef}
114
+ />
115
+ {/* TODO: Sync with product since it should have ic-enter in case of not applied */}
116
+ {showClearButton && (
117
+ <button
118
+ className="flex search-bar__clear-button dc__position-abs dc__transparent mt-0 mb-0 mr-5 ml-5"
119
+ type="button"
120
+ onClick={clearSearch}
121
+ aria-label="Clear search"
122
+ >
123
+ <Clear className="icon-dim-16 icon-n4 dc__vertical-align-middle" />
124
+ </button>
125
+ )}
126
+ </div>
127
+ </div>
128
+ )
129
+ }
130
+
131
+ export default SearchBar
@@ -0,0 +1,2 @@
1
+ export { default as SearchBar } from './SearchBar.component'
2
+ export type { SearchBarProps } from './types'
@@ -0,0 +1,31 @@
1
+ .search-bar {
2
+
3
+ &:focus,
4
+ &:focus-within {
5
+ outline: none;
6
+ border: solid 1px var(--B500);
7
+ }
8
+
9
+ &__input {
10
+
11
+ &:focus,
12
+ &:focus-visible {
13
+ border: none;
14
+ outline: none;
15
+ }
16
+ }
17
+
18
+ &__icon {
19
+ z-index: 1;
20
+ top: 50%;
21
+ left: 8px;
22
+ transform: translateY(-50%);
23
+ }
24
+
25
+ &__clear-button {
26
+ right: 0;
27
+ top: 50%;
28
+ transform: translateY(-50%);
29
+ z-index: 1;
30
+ }
31
+ }
@@ -0,0 +1,34 @@
1
+ export interface SearchBarProps {
2
+ /**
3
+ * Initial search text
4
+ *
5
+ * @default ''
6
+ */
7
+ initialSearchText?: string
8
+ /**
9
+ * Search handler for the search input
10
+ */
11
+ handleSearchChange?: (searchText: string) => void
12
+ /**
13
+ * Enter event handler for the search input
14
+ */
15
+ handleEnter?: (searchText: string) => void
16
+ /**
17
+ * Input props for the search input
18
+ */
19
+ inputProps?: React.InputHTMLAttributes<HTMLInputElement>
20
+ /**
21
+ * Class name for the container; can be used for handling width
22
+ */
23
+ containerClassName?: string
24
+ /**
25
+ * If true, the change handler would be triggered with debounce
26
+ *
27
+ * @default false
28
+ */
29
+ shouldDebounce?: boolean
30
+ /**
31
+ * Timeout for the debounce handler to be triggered
32
+ */
33
+ debounceTimeout?: number
34
+ }
@@ -0,0 +1,55 @@
1
+ import React from 'react'
2
+ import { ScanVulnerabilitiesTableProps, VulnerabilityType } from '../Types'
3
+ import './scanVulnerabilities.css'
4
+
5
+ export default function ScanVulnerabilitiesTable({ vulnerabilities }: ScanVulnerabilitiesTableProps) {
6
+ const renderRow = (vulnerability: VulnerabilityType) => {
7
+ return (
8
+ <tr
9
+ className="dc__security-tab__table-row cursor"
10
+ onClick={(e) => {
11
+ window.open(`https://cve.mitre.org/cgi-bin/cvename.cgi?name=${vulnerability.name}`, '_blank')
12
+ }}
13
+ >
14
+ <td className="security-tab__cell-cve dc__cve-cell">
15
+ <a
16
+ href={`https://cve.mitre.org/cgi-bin/cvename.cgi?name=${vulnerability.name}`}
17
+ rel="noopener noreferrer"
18
+ target="_blank"
19
+ >
20
+ {vulnerability.name}
21
+ </a>
22
+ </td>
23
+ <td className="security-tab__cell-severity">
24
+ <span className={`fill-${vulnerability.severity?.toLowerCase()}`}>{vulnerability.severity}</span>
25
+ </td>
26
+ <td className="security-tab__cell-package">{vulnerability.package}</td>
27
+ <td className="security-tab__cell-current-ver">{vulnerability.version}</td>
28
+ <td className="security-tab__cell-fixed-ver">{vulnerability.fixedVersion}</td>
29
+ <td
30
+ className={`security-tab__cell-policy security-tab__cell-policy--${vulnerability.policy?.toLowerCase()}`}
31
+ >
32
+ {vulnerability.policy?.toLowerCase()}
33
+ </td>
34
+ </tr>
35
+ )
36
+ }
37
+
38
+ return (
39
+ <table className="security-tab__table">
40
+ <tbody>
41
+ <tr className="security-tab__table-header">
42
+ <th className="security-cell-header security-tab__cell-cve">CVE</th>
43
+ <th className="security-cell-header security-tab__cell-severity">Severity</th>
44
+ <th className="security-cell-header security-tab__cell-package">Package</th>
45
+ <th className="security-cell-header security-tab__cell-current-ver">Current Version</th>
46
+ <th className="security-cell-header security-tab__cell-fixed-ver">Fixed In Version</th>
47
+ <th className="security-cell-header security-tab__cell-policy">Policy</th>
48
+ </tr>
49
+ {vulnerabilities.map((vulnerability) => {
50
+ return renderRow(vulnerability)
51
+ })}
52
+ </tbody>
53
+ </table>
54
+ )
55
+ }
@@ -0,0 +1,69 @@
1
+ .modal-body--scan-details {
2
+ position: fixed;
3
+ top: 0;
4
+ right: 0;
5
+ background: var(--N000);
6
+ width: 800px;
7
+ }
8
+
9
+ .security-tab__table {
10
+ width: 100%;
11
+ }
12
+
13
+ .security-tab__table-header {
14
+ border-bottom: solid 1px var(--N200);
15
+ }
16
+
17
+ .security-cell-header {
18
+ font-size: 12px;
19
+ font-weight: 600;
20
+ line-height: 1.5;
21
+ letter-spacing: normal;
22
+ text-transform: uppercase;
23
+ color: var(--N500);
24
+ }
25
+
26
+ .dc__security-tab__table-row {
27
+ font-size: 13px;
28
+ font-weight: normal;
29
+ line-height: 1.54;
30
+ letter-spacing: normal;
31
+ color: var(--N900);
32
+ box-shadow: inset 0 -1px 0 0 #f5f5f5;
33
+ }
34
+
35
+ .security-tab__cell-cve,
36
+ .security-tab__cell-severity,
37
+ .security-tab__cell-package,
38
+ .security-tab__cell-current-ver,
39
+ .security-tab__cell-fixed-ver,
40
+ .security-tab__cell-policy {
41
+ padding: 10px;
42
+ max-width: 120px;
43
+ word-wrap: break-word;
44
+ }
45
+
46
+ .security-tab__cell-cve {
47
+ padding-left: 0px;
48
+ text-align: left;
49
+ width: 20%;
50
+ }
51
+
52
+ .security-tab__cell-policy {
53
+ padding-right: 0px;
54
+ }
55
+
56
+ .security-tab__cell-policy--whitelist,
57
+ .security-tab__cell-policy--whitelisted {
58
+ color: var(--G500);
59
+ text-transform: capitalize;
60
+ }
61
+
62
+ .security-tab__cell-policy--block {
63
+ color: var(--R500);
64
+ text-transform: capitalize;
65
+ }
66
+
67
+ .scanned-object__results {
68
+ margin: 0 20px;
69
+ }
@@ -0,0 +1,31 @@
1
+ export class ServerError {
2
+ code: number
3
+ internalMessage: string | null
4
+ userMessage: string | null
5
+ moreInfo?: string | null
6
+
7
+ constructor(error) {
8
+ this.code = error.code || 0
9
+ this.userMessage = error.userMessage || ''
10
+ this.internalMessage = error.internalMessage || ''
11
+ this.moreInfo = error.moreInfo || ''
12
+ }
13
+ }
14
+
15
+ export class ServerErrors extends Error {
16
+ code: number
17
+ errors: ServerError[]
18
+
19
+ constructor(obj: { code: number; errors: ServerError[] }) {
20
+ super()
21
+ this.code = obj.code
22
+ let message = obj.errors.reduce((str: string, err: ServerError) => {
23
+ str += `${err.internalMessage || err.userMessage}`
24
+ return str
25
+ }, '')
26
+ this.name = `[${obj.code.toString()}]`
27
+ this.message = message
28
+ this.errors = obj.errors.map((err) => new ServerError(err))
29
+ Object.setPrototypeOf(this, ServerErrors.prototype)
30
+ }
31
+ }
@@ -0,0 +1,44 @@
1
+ import { ReactComponent as SortIcon } from '../../Assets/Icon/ic-arrow-up-down.svg'
2
+ import { ReactComponent as SortArrowDown } from '../../Assets/Icon/ic-sort-arrow-down.svg'
3
+ import { SortingOrder } from '../Constants'
4
+ import { SortableTableHeaderCellProps } from './types'
5
+
6
+ /**
7
+ * Reusable component for the table header cell with support for sorting icons
8
+ *
9
+ * @example Usage
10
+ * ```tsx
11
+ * <SortableTableHeaderCell
12
+ * isSorted={currentSortedCell === 'cell'}
13
+ * triggerSorting={() => {}}
14
+ * sortOrder={SortingOrder.ASC}
15
+ * title="Header Cell"
16
+ * disabled={isDisabled}
17
+ * />
18
+ * ```
19
+ */
20
+ const SortableTableHeaderCell = ({
21
+ isSorted,
22
+ triggerSorting,
23
+ sortOrder,
24
+ title,
25
+ disabled,
26
+ }: SortableTableHeaderCellProps) => (
27
+ <button
28
+ type="button"
29
+ className="dc__transparent p-0 bcn-0 cn-7 flex dc__content-start dc__gap-4 cursor"
30
+ onClick={triggerSorting}
31
+ disabled={disabled}
32
+ >
33
+ <span className="dc__uppercase dc__ellipsis-right">{title}</span>
34
+ {isSorted ? (
35
+ <SortArrowDown
36
+ className={`icon-dim-12 mw-12 scn-7 ${sortOrder === SortingOrder.DESC ? 'dc__flip-180' : ''}`}
37
+ />
38
+ ) : (
39
+ <SortIcon className="icon-dim-12 mw-12 scn-7" />
40
+ )}
41
+ </button>
42
+ )
43
+
44
+ export default SortableTableHeaderCell
@@ -0,0 +1,2 @@
1
+ export { default as SortableTableHeaderCell } from './SortableTableHeaderCell'
2
+ export type { SortableTableHeaderCellProps } from './types'
@@ -0,0 +1,26 @@
1
+ import { SortingOrder } from '../Constants'
2
+
3
+ export interface SortableTableHeaderCellProps {
4
+ /**
5
+ * If true, the cell is sorted
6
+ */
7
+ isSorted: boolean
8
+ /**
9
+ * Callback for handling the sorting of the cell
10
+ */
11
+ triggerSorting: () => void
12
+ /**
13
+ * Current sort order
14
+ *
15
+ * Note: On click, the sort order should be updated as required
16
+ */
17
+ sortOrder: SortingOrder
18
+ /**
19
+ * Label for the cell
20
+ */
21
+ title: string
22
+ /**
23
+ * If true, the cell is disabled
24
+ */
25
+ disabled: boolean
26
+ }