@devtron-labs/devtron-fe-common-lib 0.0.55-beta-1 → 0.0.55-beta-2
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.
- package/.eslintrc.js +41 -0
- package/.github/workflows/release-package.yml +49 -0
- package/.prettierrc.js +7 -0
- package/dist/Common/AddCDButton/AddCDButton.d.ts +3 -3
- package/dist/Common/AddCDButton/index.d.ts +2 -2
- package/dist/Common/AddCDButton/types.d.ts +26 -26
- package/dist/Common/AddCDButton/utils.d.ts +2 -2
- package/dist/Common/Api.d.ts +5 -5
- package/dist/Common/AppStatus/AppStatus.d.ts +3 -3
- package/dist/Common/AppStatus/constants.d.ts +51 -51
- package/dist/Common/AppStatus/index.d.ts +1 -1
- package/dist/Common/AppStatus/types.d.ts +12 -12
- package/dist/Common/AppStatus/utils.d.ts +1 -1
- package/dist/Common/BreadCrumb/BreadCrumb.d.ts +5 -5
- package/dist/Common/BreadCrumb/BreadcrumbStore.d.ts +17 -17
- package/dist/Common/BreadCrumb/Types.d.ts +28 -28
- package/dist/Common/CIPipeline.Types.d.ts +265 -265
- package/dist/Common/ChartVersionAndTypeSelector.d.ts +4 -3
- package/dist/Common/Checkbox.d.ts +5 -5
- package/dist/Common/ClipboardButton/ClipboardButton.d.ts +10 -10
- package/dist/Common/ClipboardButton/types.d.ts +8 -8
- package/dist/Common/Common.service.d.ts +20 -20
- package/dist/Common/Constants.d.ts +66 -73
- package/dist/Common/CustomInput/CustomInput.d.ts +3 -3
- package/dist/Common/CustomInput/Types.d.ts +29 -29
- package/dist/Common/CustomInput/index.d.ts +2 -2
- package/dist/Common/CustomTagSelector/PropagateTagInfo.d.ts +4 -4
- package/dist/Common/CustomTagSelector/ResizableTagTextArea.d.ts +3 -3
- package/dist/Common/CustomTagSelector/TagDetails.d.ts +3 -2
- package/dist/Common/CustomTagSelector/TagLabelSelect.d.ts +3 -2
- package/dist/Common/CustomTagSelector/TagLabelValueSelector.d.ts +3 -2
- package/dist/Common/CustomTagSelector/TagSelector.utils.d.ts +12 -12
- package/dist/Common/CustomTagSelector/Types.d.ts +68 -68
- package/dist/Common/CustomTagSelector/ValidationRules.d.ts +10 -10
- package/dist/Common/CustomTagSelector/index.d.ts +6 -6
- package/dist/Common/DebouncedSearch/DebouncedSearch.d.ts +15 -17
- package/dist/Common/DebouncedSearch/Types.d.ts +14 -14
- package/dist/Common/DebouncedSearch/Utils.d.ts +1 -1
- package/dist/Common/DeleteComponentModal/DeleteComponent.d.ts +4 -4
- package/dist/Common/DeleteComponentModal/types.d.ts +15 -15
- package/dist/Common/DevtronProgressing/DevtronProgressing.d.ts +3 -3
- package/dist/Common/DevtronProgressing/index.d.ts +1 -1
- package/dist/Common/DevtronProgressing/types.d.ts +4 -4
- package/dist/Common/Dialogs/ConfirmationDialog.d.ts +9 -9
- package/dist/Common/Dialogs/DeleteDialog.d.ts +5 -5
- package/dist/Common/Dialogs/DialogForm.d.ts +14 -14
- package/dist/Common/Dialogs/ForceDeleteDialog.d.ts +3 -3
- package/dist/Common/Dialogs/Types.d.ts +45 -45
- package/dist/Common/Dialogs/index.d.ts +4 -4
- package/dist/Common/Drawer/Drawer.d.ts +16 -14
- package/dist/Common/EmptyState/EmptyState.d.ts +25 -28
- package/dist/Common/EmptyState/GenericEmptyState.d.ts +5 -4
- package/dist/Common/Error.d.ts +17 -17
- package/dist/Common/ErrorScreenNotFound.d.ts +3 -3
- package/dist/Common/Grid/Grid.d.ts +3 -3
- package/dist/Common/Grid/types.d.ts +10 -10
- package/dist/Common/Helper.d.ts +63 -65
- package/dist/Common/Hooks/UseClickOutside/UseClickOutside.d.ts +1 -1
- package/dist/Common/Hooks/UseSuperAdmin/UseSuperAdmin.d.ts +6 -6
- package/dist/Common/Hooks/UseSuperAdmin/types.d.ts +3 -3
- package/dist/Common/Hooks/index.d.ts +2 -3
- package/dist/Common/ImageTags.Types.d.ts +40 -40
- package/dist/Common/ImageTags.d.ts +4 -3
- package/dist/Common/InfoColorBar/InfoColourbar.d.ts +5 -4
- package/dist/Common/Modals/Modal.d.ts +3 -3
- package/dist/Common/Modals/OpaqueModal.d.ts +12 -12
- package/dist/Common/Modals/VisibleModal.d.ts +15 -15
- package/dist/Common/Modals/VisibleModal2.d.ts +12 -12
- package/dist/Common/MultiSelectCustomization.d.ts +37 -37
- package/dist/Common/Policy.Types.d.ts +56 -56
- package/dist/Common/PopupMenu.d.ts +8 -8
- package/dist/Common/Progressing.d.ts +4 -4
- package/dist/Common/RJSF/Form.d.ts +4 -2
- package/dist/Common/RJSF/common/FieldRow.d.ts +6 -5
- package/dist/Common/RJSF/common/types.d.ts +8 -8
- package/dist/Common/RJSF/config.d.ts +4 -4
- package/dist/Common/RJSF/constants.d.ts +7 -7
- package/dist/Common/RJSF/index.d.ts +3 -3
- package/dist/Common/RJSF/templates/ArrayFieldItemTemplate.d.ts +3 -2
- package/dist/Common/RJSF/templates/ArrayFieldTemplate.d.ts +3 -2
- package/dist/Common/RJSF/templates/BaseInput.d.ts +3 -2
- package/dist/Common/RJSF/templates/ButtonTemplates/AddButton.d.ts +3 -2
- package/dist/Common/RJSF/templates/ButtonTemplates/RemoveButton.d.ts +3 -2
- package/dist/Common/RJSF/templates/ButtonTemplates/SubmitButton.d.ts +3 -2
- package/dist/Common/RJSF/templates/ButtonTemplates/index.d.ts +3 -3
- package/dist/Common/RJSF/templates/Description.d.ts +3 -2
- package/dist/Common/RJSF/templates/Field.d.ts +3 -2
- package/dist/Common/RJSF/templates/FieldErrorTemplate.d.ts +3 -2
- package/dist/Common/RJSF/templates/ObjectFieldTemplate.d.ts +3 -2
- package/dist/Common/RJSF/templates/TitleField.d.ts +3 -2
- package/dist/Common/RJSF/templates/WrapIfAdditionalTemplate.d.ts +3 -2
- package/dist/Common/RJSF/templates/index.d.ts +10 -10
- package/dist/Common/RJSF/types.d.ts +3 -3
- package/dist/Common/RJSF/utils.d.ts +26 -25
- package/dist/Common/RJSF/widgets/Checkbox.d.ts +3 -2
- package/dist/Common/RJSF/widgets/Select.d.ts +3 -2
- package/dist/Common/RJSF/widgets/index.d.ts +2 -2
- package/dist/Common/RadioGroup/RadioGroup.d.ts +17 -16
- package/dist/Common/RadioGroup.d.ts +8 -8
- package/dist/Common/Reload.d.ts +3 -3
- package/dist/Common/ResizableTextarea.d.ts +3 -3
- package/dist/Common/Security/ScanVulnerabilitiesTable.d.ts +4 -3
- package/dist/Common/ServerError.d.ts +15 -15
- package/dist/Common/TippyCustomized.d.ts +4 -3
- package/dist/Common/ToastBody.d.ts +23 -23
- package/dist/Common/Toggle/Toggle.d.ts +14 -12
- package/dist/Common/Types.d.ts +677 -690
- package/dist/Common/index.d.ts +47 -51
- package/dist/index.d.ts +1 -1
- package/dist/index.js +28504 -223
- package/package.json +10 -49
- package/rollup.config.js +31 -0
- package/src/Assets/Icon/ic-add.svg +3 -0
- package/src/Assets/Icon/ic-appstatus-cancelled.svg +6 -0
- package/src/Assets/Icon/ic-arrow-counter-clockwise.svg +5 -0
- package/src/Assets/Icon/ic-check.svg +5 -0
- package/src/Assets/Icon/ic-chevron-down.svg +5 -0
- package/src/Assets/Icon/ic-copy.svg +3 -0
- package/src/Assets/Icon/ic-cross.svg +3 -0
- package/src/Assets/Icon/ic-enter.svg +3 -0
- package/src/Assets/Icon/ic-error-cross.svg +8 -0
- package/src/Assets/Icon/ic-error-exclamation.svg +6 -0
- package/src/Assets/Icon/ic-error-medium.svg +6 -0
- package/src/Assets/Icon/ic-help-outline.svg +3 -0
- package/src/Assets/Icon/ic-help.svg +3 -0
- package/src/Assets/Icon/ic-info-filled.svg +7 -0
- package/src/Assets/Icon/ic-info-outlined.svg +13 -0
- package/src/Assets/Icon/ic-minus.svg +3 -0
- package/src/Assets/Icon/ic-pencil.svg +3 -0
- package/src/Assets/Icon/ic-progressing.svg +6 -0
- package/src/Assets/Icon/ic-rotate-devtron.svg +103 -0
- package/src/Assets/Icon/ic-warning.svg +7 -0
- package/src/Assets/Icon/inject-tag.svg +5 -0
- package/src/Assets/Img/app-not-deployed.png +0 -0
- package/src/Assets/Img/delete-medium.svg +15 -0
- package/src/Assets/Img/ic-empty-error@2x.png +0 -0
- package/src/Assets/Img/ic-loading-failure.png +0 -0
- package/src/Assets/Img/ic-not-authorized.svg +62 -0
- package/src/Common/AddCDButton/AddCDButton.tsx +68 -0
- package/src/Common/AddCDButton/index.ts +2 -0
- package/src/Common/AddCDButton/types.ts +38 -0
- package/src/Common/AddCDButton/utils.tsx +35 -0
- package/src/Common/Api.ts +230 -0
- package/src/Common/AppStatus/AppStatus.tsx +64 -0
- package/src/Common/AppStatus/constants.ts +53 -0
- package/src/Common/AppStatus/index.ts +1 -0
- package/src/Common/AppStatus/types.ts +12 -0
- package/src/Common/AppStatus/utils.ts +14 -0
- package/src/Common/BreadCrumb/BreadCrumb.tsx +105 -0
- package/src/Common/BreadCrumb/BreadcrumbStore.tsx +25 -0
- package/src/Common/BreadCrumb/Types.ts +30 -0
- package/src/Common/CIPipeline.Types.ts +277 -0
- package/src/Common/ChartVersionAndTypeSelector.tsx +78 -0
- package/src/Common/Checkbox.tsx +36 -0
- package/src/Common/ClipboardButton/ClipboardButton.tsx +61 -0
- package/src/Common/ClipboardButton/__tests__/ClipboardButton.test.tsx +43 -0
- package/src/Common/ClipboardButton/types.ts +7 -0
- package/src/Common/Common.service.ts +315 -0
- package/src/Common/Constants.ts +243 -0
- package/src/Common/CustomInput/CustomInput.tsx +131 -0
- package/src/Common/CustomInput/Types.ts +30 -0
- package/src/Common/CustomInput/index.ts +2 -0
- package/src/Common/CustomTagSelector/PropagateTagInfo.tsx +46 -0
- package/src/Common/CustomTagSelector/ResizableTagTextArea.tsx +84 -0
- package/src/Common/CustomTagSelector/TagDetails.tsx +76 -0
- package/src/Common/CustomTagSelector/TagLabelSelect.tsx +61 -0
- package/src/Common/CustomTagSelector/TagLabelValueSelector.tsx +198 -0
- package/src/Common/CustomTagSelector/TagSelector.utils.ts +71 -0
- package/src/Common/CustomTagSelector/Types.ts +72 -0
- package/src/Common/CustomTagSelector/ValidationRules.ts +58 -0
- package/src/Common/CustomTagSelector/index.ts +6 -0
- package/src/Common/DebouncedSearch/DebouncedSearch.tsx +76 -0
- package/src/Common/DebouncedSearch/Types.ts +13 -0
- package/src/Common/DebouncedSearch/Utils.ts +19 -0
- package/src/Common/DebouncedSearch/__tests__/DebouncedSearch.test.tsx +61 -0
- package/src/Common/DeleteComponentModal/DeleteComponent.tsx +95 -0
- package/src/Common/DeleteComponentModal/types.ts +15 -0
- package/src/Common/DevtronProgressing/DevtronProgressing.tsx +11 -0
- package/src/Common/DevtronProgressing/index.ts +1 -0
- package/src/Common/DevtronProgressing/types.ts +4 -0
- package/src/Common/Dialogs/ConfirmationDialog.tsx +34 -0
- package/src/Common/Dialogs/DeleteDialog.tsx +69 -0
- package/src/Common/Dialogs/DialogForm.tsx +86 -0
- package/src/Common/Dialogs/ForceDeleteDialog.tsx +19 -0
- package/src/Common/Dialogs/Types.ts +47 -0
- package/src/Common/Dialogs/index.ts +4 -0
- package/src/Common/Drawer/Drawer.scss +40 -0
- package/src/Common/Drawer/Drawer.tsx +49 -0
- package/src/Common/EmptyState/EmptyState.tsx +42 -0
- package/src/Common/EmptyState/GenericEmptyState.tsx +49 -0
- package/src/Common/EmptyState/emptyState.scss +74 -0
- package/src/Common/Error.tsx +61 -0
- package/src/Common/ErrorScreenNotFound.tsx +31 -0
- package/src/Common/Grid/Grid.tsx +39 -0
- package/src/Common/Grid/types.ts +9 -0
- package/src/Common/Helper.tsx +568 -0
- package/src/Common/Hooks/UseClickOutside/UseClickOutside.tsx +15 -0
- package/src/Common/Hooks/UseSuperAdmin/UseSuperAdmin.tsx +24 -0
- package/src/Common/Hooks/UseSuperAdmin/types.ts +3 -0
- package/src/Common/Hooks/index.ts +2 -0
- package/src/Common/ImageTags.Types.ts +44 -0
- package/src/Common/ImageTags.tsx +586 -0
- package/src/Common/InfoColorBar/InfoColourbar.tsx +80 -0
- package/src/Common/InfoColorBar/infoColourBar.scss +28 -0
- package/src/Common/Modals/Modal.tsx +68 -0
- package/src/Common/Modals/OpaqueModal.tsx +36 -0
- package/src/Common/Modals/VisibleModal.tsx +55 -0
- package/src/Common/Modals/VisibleModal2.tsx +35 -0
- package/src/Common/MultiSelectCustomization.tsx +148 -0
- package/src/Common/Policy.Types.ts +63 -0
- package/src/Common/PopupMenu.tsx +199 -0
- package/src/Common/Progressing.tsx +53 -0
- package/src/Common/RJSF/Form.tsx +29 -0
- package/src/Common/RJSF/common/FieldRow.tsx +35 -0
- package/src/Common/RJSF/common/types.ts +9 -0
- package/src/Common/RJSF/config.ts +37 -0
- package/src/Common/RJSF/constants.ts +10 -0
- package/src/Common/RJSF/index.ts +3 -0
- package/src/Common/RJSF/rjsfForm.scss +18 -0
- package/src/Common/RJSF/templates/ArrayFieldItemTemplate.tsx +31 -0
- package/src/Common/RJSF/templates/ArrayFieldTemplate.tsx +78 -0
- package/src/Common/RJSF/templates/BaseInput.tsx +16 -0
- package/src/Common/RJSF/templates/ButtonTemplates/AddButton.tsx +18 -0
- package/src/Common/RJSF/templates/ButtonTemplates/RemoveButton.tsx +10 -0
- package/src/Common/RJSF/templates/ButtonTemplates/SubmitButton.tsx +18 -0
- package/src/Common/RJSF/templates/ButtonTemplates/index.ts +3 -0
- package/src/Common/RJSF/templates/Description.tsx +12 -0
- package/src/Common/RJSF/templates/Field.tsx +30 -0
- package/src/Common/RJSF/templates/FieldErrorTemplate.tsx +25 -0
- package/src/Common/RJSF/templates/ObjectFieldTemplate.tsx +105 -0
- package/src/Common/RJSF/templates/TitleField.tsx +9 -0
- package/src/Common/RJSF/templates/WrapIfAdditionalTemplate.tsx +51 -0
- package/src/Common/RJSF/templates/index.ts +10 -0
- package/src/Common/RJSF/types.ts +4 -0
- package/src/Common/RJSF/utils.ts +123 -0
- package/src/Common/RJSF/widgets/Checkbox.tsx +44 -0
- package/src/Common/RJSF/widgets/Select.tsx +77 -0
- package/src/Common/RJSF/widgets/index.ts +2 -0
- package/src/Common/RadioGroup/RadioGroup.tsx +105 -0
- package/src/Common/RadioGroup/radioGroup.scss +46 -0
- package/src/Common/RadioGroup.tsx +53 -0
- package/src/Common/Reload.tsx +23 -0
- package/src/Common/ResizableTextarea.tsx +73 -0
- package/src/Common/Security/ScanVulnerabilitiesTable.tsx +55 -0
- package/src/Common/Security/scanVulnerabilities.css +69 -0
- package/src/Common/ServerError.ts +31 -0
- package/src/Common/TippyCustomized.tsx +172 -0
- package/src/Common/ToastBody.tsx +62 -0
- package/src/Common/Toggle/Toggle.scss +78 -0
- package/src/Common/Toggle/Toggle.tsx +50 -0
- package/src/Common/Types.ts +750 -0
- package/src/Common/index.ts +47 -0
- package/src/custom.d.ts +13 -0
- package/src/index.ts +1 -0
- package/tsconfig.json +40 -0
- package/dist/BaseInput-8101e714.js +0 -1686
- package/dist/CodeEditor-0a5bfd53.js +0 -103695
- package/dist/Common/AddCDButton/AddCDButton.js +0 -61
- package/dist/Common/AddCDButton/index.js +0 -6
- package/dist/Common/AddCDButton/types.js +0 -1
- package/dist/Common/AddCDButton/utils.js +0 -19
- package/dist/Common/Api.js +0 -167
- package/dist/Common/AppStatus/AppStatus.js +0 -37
- package/dist/Common/AppStatus/constants.js +0 -37
- package/dist/Common/AppStatus/index.js +0 -4
- package/dist/Common/AppStatus/types.js +0 -1
- package/dist/Common/AppStatus/utils.js +0 -8
- package/dist/Common/BreadCrumb/BreadCrumb.js +0 -71
- package/dist/Common/BreadCrumb/BreadcrumbStore.js +0 -22
- package/dist/Common/BreadCrumb/Types.js +0 -1
- package/dist/Common/CIPipeline.Types.js +0 -10
- package/dist/Common/ChartVersionAndTypeSelector.js +0 -61
- package/dist/Common/Checkbox.js +0 -28
- package/dist/Common/ClipboardButton/ClipboardButton.js +0 -40
- package/dist/Common/ClipboardButton/__tests__/ClipboardButton.test.d.ts +0 -1
- package/dist/Common/ClipboardButton/__tests__/ClipboardButton.test.js +0 -27
- package/dist/Common/ClipboardButton/types.js +0 -1
- package/dist/Common/CodeEditor/CodeEditor.d.ts +0 -47
- package/dist/Common/CodeEditor/CodeEditor.js +0 -15
- package/dist/Common/Common.service.js +0 -191
- package/dist/Common/Constants.js +0 -234
- package/dist/Common/CustomInput/CustomInput.js +0 -80
- package/dist/Common/CustomInput/Types.js +0 -1
- package/dist/Common/CustomInput/index.js +0 -4
- package/dist/Common/CustomTagSelector/PropagateTagInfo.js +0 -43
- package/dist/Common/CustomTagSelector/ResizableTagTextArea.js +0 -58
- package/dist/Common/CustomTagSelector/TagDetails.js +0 -65
- package/dist/Common/CustomTagSelector/TagLabelSelect.js +0 -50
- package/dist/Common/CustomTagSelector/TagLabelValueSelector.js +0 -121
- package/dist/Common/CustomTagSelector/TagSelector.utils.js +0 -61
- package/dist/Common/CustomTagSelector/Types.js +0 -1
- package/dist/Common/CustomTagSelector/ValidationRules.js +0 -35
- package/dist/Common/CustomTagSelector/index.js +0 -12
- package/dist/Common/DebouncedSearch/DebouncedSearch.js +0 -56
- package/dist/Common/DebouncedSearch/Types.js +0 -1
- package/dist/Common/DebouncedSearch/Utils.js +0 -19
- package/dist/Common/DebouncedSearch/__tests__/DebouncedSearch.test.d.ts +0 -1
- package/dist/Common/DebouncedSearch/__tests__/DebouncedSearch.test.js +0 -34
- package/dist/Common/DeleteComponentModal/DeleteComponent.js +0 -63
- package/dist/Common/DeleteComponentModal/types.js +0 -1
- package/dist/Common/DevtronProgressing/DevtronProgressing.js +0 -98
- package/dist/Common/DevtronProgressing/index.js +0 -4
- package/dist/Common/DevtronProgressing/types.js +0 -1
- package/dist/Common/Dialogs/ConfirmationDialog.js +0 -24
- package/dist/Common/Dialogs/DeleteDialog.js +0 -49
- package/dist/Common/Dialogs/DialogForm.js +0 -63
- package/dist/Common/Dialogs/ForceDeleteDialog.js +0 -23
- package/dist/Common/Dialogs/Types.js +0 -1
- package/dist/Common/Dialogs/index.js +0 -11
- package/dist/Common/DraggableWrapper/DraggableButton.d.ts +0 -3
- package/dist/Common/DraggableWrapper/DraggableButton.js +0 -16
- package/dist/Common/DraggableWrapper/DraggableWrapper.d.ts +0 -9
- package/dist/Common/DraggableWrapper/DraggableWrapper.js +0 -1499
- package/dist/Common/DraggableWrapper/index.d.ts +0 -3
- package/dist/Common/DraggableWrapper/index.js +0 -8
- package/dist/Common/DraggableWrapper/types.d.ts +0 -23
- package/dist/Common/DraggableWrapper/types.js +0 -4
- package/dist/Common/Drawer/Drawer.js +0 -22
- package/dist/Common/EmptyState/EmptyState.js +0 -32
- package/dist/Common/EmptyState/GenericEmptyState.js +0 -53
- package/dist/Common/Error.js +0 -49
- package/dist/Common/ErrorScreenNotFound.js +0 -23
- package/dist/Common/Grid/Grid.js +0 -31
- package/dist/Common/Grid/types.js +0 -1
- package/dist/Common/Helper.js +0 -39
- package/dist/Common/Hooks/UseClickOutside/UseClickOutside.js +0 -14
- package/dist/Common/Hooks/UseSuperAdmin/UseSuperAdmin.js +0 -16
- package/dist/Common/Hooks/UseSuperAdmin/types.js +0 -1
- package/dist/Common/Hooks/UseWindowSize/UseWindowSize.d.ts +0 -4
- package/dist/Common/Hooks/UseWindowSize/UseWindowSize.js +0 -17
- package/dist/Common/Hooks/index.js +0 -8
- package/dist/Common/ImageTags.Types.js +0 -1
- package/dist/Common/ImageTags.js +0 -381
- package/dist/Common/InfoColorBar/InfoColourbar.js +0 -65
- package/dist/Common/Modals/Modal.js +0 -48
- package/dist/Common/Modals/OpaqueModal.js +0 -32
- package/dist/Common/Modals/VisibleModal.js +0 -31
- package/dist/Common/Modals/VisibleModal2.js +0 -31
- package/dist/Common/MultiSelectCustomization.js +0 -97
- package/dist/Common/Pagination/PageSizeSelector.d.ts +0 -3
- package/dist/Common/Pagination/PageSizeSelector.js +0 -49
- package/dist/Common/Pagination/Pagination.d.ts +0 -3
- package/dist/Common/Pagination/Pagination.js +0 -95
- package/dist/Common/Pagination/constants.d.ts +0 -5
- package/dist/Common/Pagination/constants.js +0 -9
- package/dist/Common/Pagination/index.d.ts +0 -1
- package/dist/Common/Pagination/index.js +0 -4
- package/dist/Common/Pagination/types.d.ts +0 -51
- package/dist/Common/Pagination/types.js +0 -1
- package/dist/Common/Pagination/utils.d.ts +0 -6
- package/dist/Common/Pagination/utils.js +0 -15
- package/dist/Common/Policy.Types.js +0 -6
- package/dist/Common/PopupMenu.js +0 -148
- package/dist/Common/Progressing.js +0 -52
- package/dist/Common/RJSF/Form.js +0 -9888
- package/dist/Common/RJSF/common/FieldRow.js +0 -25
- package/dist/Common/RJSF/common/types.js +0 -1
- package/dist/Common/RJSF/config.js +0 -33
- package/dist/Common/RJSF/constants.js +0 -10
- package/dist/Common/RJSF/index.js +0 -7
- package/dist/Common/RJSF/templates/ArrayFieldItemTemplate.js +0 -30
- package/dist/Common/RJSF/templates/ArrayFieldTemplate.js +0 -63
- package/dist/Common/RJSF/templates/BaseInput.js +0 -8
- package/dist/Common/RJSF/templates/ButtonTemplates/AddButton.js +0 -18
- package/dist/Common/RJSF/templates/ButtonTemplates/RemoveButton.js +0 -6
- package/dist/Common/RJSF/templates/ButtonTemplates/SubmitButton.js +0 -19
- package/dist/Common/RJSF/templates/ButtonTemplates/index.js +0 -8
- package/dist/Common/RJSF/templates/Description.js +0 -9
- package/dist/Common/RJSF/templates/Field.js +0 -21
- package/dist/Common/RJSF/templates/FieldErrorTemplate.js +0 -15
- package/dist/Common/RJSF/templates/ObjectFieldTemplate.js +0 -76
- package/dist/Common/RJSF/templates/TitleField.js +0 -8
- package/dist/Common/RJSF/templates/WrapIfAdditionalTemplate.js +0 -44
- package/dist/Common/RJSF/templates/index.js +0 -26
- package/dist/Common/RJSF/types.js +0 -1
- package/dist/Common/RJSF/utils.js +0 -98
- package/dist/Common/RJSF/widgets/Checkbox.js +0 -39
- package/dist/Common/RJSF/widgets/Select.js +0 -56
- package/dist/Common/RJSF/widgets/index.js +0 -6
- package/dist/Common/RadioGroup/RadioGroup.js +0 -76
- package/dist/Common/RadioGroup.js +0 -47
- package/dist/Common/Reload.js +0 -16
- package/dist/Common/ResizableTextarea.js +0 -60
- package/dist/Common/SearchBar/SearchBar.component.d.ts +0 -37
- package/dist/Common/SearchBar/SearchBar.component.js +0 -66
- package/dist/Common/SearchBar/index.d.ts +0 -2
- package/dist/Common/SearchBar/index.js +0 -4
- package/dist/Common/SearchBar/types.d.ts +0 -35
- package/dist/Common/SearchBar/types.js +0 -1
- package/dist/Common/Security/ScanVulnerabilitiesTable.js +0 -49
- package/dist/Common/Select/Select.d.ts +0 -4
- package/dist/Common/Select/Select.js +0 -193
- package/dist/Common/Select/types.d.ts +0 -29
- package/dist/Common/Select/types.js +0 -1
- package/dist/Common/ServerError.js +0 -26
- package/dist/Common/TippyCustomized.js +0 -10
- package/dist/Common/ToastBody.js +0 -41
- package/dist/Common/Toggle/Toggle.js +0 -40
- package/dist/Common/Types.js +0 -24
- package/dist/Common/UseWindowSize.d.ts +0 -4
- package/dist/Common/UseWindowSize.js +0 -20
- package/dist/Common/index.js +0 -224
- package/dist/Helper-e1262739.js +0 -9834
- package/dist/TippyCustomized-c58fd46a.js +0 -124
- package/dist/_commonjsHelpers-c5d32002.js +0 -30
- package/dist/abap-9f67f57a.js +0 -1314
- package/dist/apex-ff62e532.js +0 -315
- package/dist/assets/CodeEditor.css +0 -1
- package/dist/assets/Drawer.css +0 -1
- package/dist/assets/Form.css +0 -1
- package/dist/assets/GenericEmptyState.css +0 -1
- package/dist/assets/InfoColourbar.css +0 -1
- package/dist/assets/Pagination.css +0 -1
- package/dist/assets/RadioGroup.css +0 -1
- package/dist/assets/ScanVulnerabilitiesTable.css +0 -1
- package/dist/assets/SearchBar.component.css +0 -1
- package/dist/assets/Select.css +0 -1
- package/dist/assets/TippyCustomized.css +0 -1
- package/dist/assets/Toggle.css +0 -1
- package/dist/assets/editor.worker-d26000ef.js +0 -9
- package/dist/assets/json.worker-f23a4654.js +0 -40
- package/dist/assets/yaml.worker-64fecd27.js +0 -463
- package/dist/azcli-31e64a7f.js +0 -74
- package/dist/bat-0ffe897e.js +0 -95
- package/dist/bicep-3414a2b1.js +0 -108
- package/dist/cameligo-df1f3f25.js +0 -168
- package/dist/canExpand-ab1f6741.js +0 -10
- package/dist/clojure-65b0f010.js +0 -754
- package/dist/coffee-437f0fba.js +0 -228
- package/dist/cpp-66843dd5.js +0 -390
- package/dist/csharp-621d9a49.js +0 -320
- package/dist/csp-de0d5244.js +0 -57
- package/dist/css-7cd5ed4c.js +0 -186
- package/dist/cssMode-c259da7f.js +0 -1446
- package/dist/cypher-70ad96fe.js +0 -262
- package/dist/dart-33ae3739.js +0 -270
- package/dist/dockerfile-f2274a50.js +0 -132
- package/dist/ecl-3b8294a3.js +0 -454
- package/dist/elixir-b9dcc73a.js +0 -489
- package/dist/englishStringTranslator-2c9a30fc.js +0 -17
- package/dist/enums-d0bd3f97.js +0 -6618
- package/dist/extends-70f3d2a3.js +0 -13
- package/dist/flow9-bdde8316.js +0 -141
- package/dist/freemarker2-d852fa33.js +0 -643
- package/dist/fsharp-eac2e449.js +0 -210
- package/dist/getSubmitButtonOptions-a1be9bb0.js +0 -20
- package/dist/getTemplate-91d3260d.js +0 -11
- package/dist/getUiOptions-844b45a7.js +0 -10
- package/dist/go-d12ed8d4.js +0 -208
- package/dist/graphql-c7356b69.js +0 -141
- package/dist/handlebars-7e868cd0.js +0 -391
- package/dist/hcl-e883a0d4.js +0 -177
- package/dist/html-1faea799.js +0 -281
- package/dist/htmlMode-175871d9.js +0 -1456
- package/dist/ic-add-4787ded5.js +0 -5
- package/dist/ic-chevron-down-eb7fd953.js +0 -6
- package/dist/ic-copy-118b83dc.js +0 -5
- package/dist/ic-cross-0e71861d.js +0 -6
- package/dist/ic-error-cross-2760059a.js +0 -5
- package/dist/ic-error-exclamation-5f9af461.js +0 -5
- package/dist/ic-info-filled-31a15add.js +0 -6
- package/dist/ic-info-outlined-8fa45e87.js +0 -5
- package/dist/ic-warning-42534af1.js +0 -5
- package/dist/idGenerators-0b33693c.js +0 -35
- package/dist/index-5a231705.js +0 -17417
- package/dist/index-c855d89c.js +0 -173
- package/dist/ini-425ab711.js +0 -68
- package/dist/inject-tag-824bf92c.js +0 -5
- package/dist/java-2bc0fd68.js +0 -221
- package/dist/javascript-46245cbe.js +0 -75
- package/dist/jsonMode-bbe5176f.js +0 -1867
- package/dist/julia-1c932615.js +0 -496
- package/dist/kotlin-1ab839c8.js +0 -245
- package/dist/less-6fe856f5.js +0 -168
- package/dist/lexon-4955ac52.js +0 -151
- package/dist/liquid-e6b820e1.js +0 -238
- package/dist/lua-3cca0047.js +0 -157
- package/dist/m3-132e9cb6.js +0 -210
- package/dist/markdown-ea59a0c1.js +0 -202
- package/dist/mips-19811f4b.js +0 -194
- package/dist/msdax-69954a10.js +0 -377
- package/dist/mysql-82088e5d.js +0 -876
- package/dist/objective-c-1976eccc.js +0 -188
- package/dist/pascal-8ef177cb.js +0 -245
- package/dist/pascaligo-bc517b9e.js +0 -158
- package/dist/perl-8b93582c.js +0 -599
- package/dist/pgsql-00c11a6d.js +0 -847
- package/dist/php-4c8c276f.js +0 -471
- package/dist/pla-e9b4ffb1.js +0 -131
- package/dist/postiats-2071af8c.js +0 -544
- package/dist/powerquery-8e388ceb.js +0 -890
- package/dist/powershell-e35db398.js +0 -233
- package/dist/protobuf-a24b9176.js +0 -422
- package/dist/pug-2c94d9b8.js +0 -393
- package/dist/python-7d292338.js +0 -259
- package/dist/qsharp-d730d7fe.js +0 -282
- package/dist/r-be193556.js +0 -245
- package/dist/razor-c6ab49dd.js +0 -512
- package/dist/react-select.esm-27b8d563.js +0 -3992
- package/dist/react-toastify.esm-e28f7200.js +0 -798
- package/dist/react.esm-5465a283.js +0 -13191
- package/dist/redis-9690c6ac.js +0 -298
- package/dist/redshift-6bdcdeaa.js +0 -806
- package/dist/restructuredtext-a08c1d20.js +0 -162
- package/dist/ruby-2247692b.js +0 -444
- package/dist/rust-1dffb4d5.js +0 -337
- package/dist/sb-136598e9.js +0 -110
- package/dist/scala-b1100fed.js +0 -353
- package/dist/scheme-038c8094.js +0 -114
- package/dist/scss-700d1b52.js +0 -244
- package/dist/shell-86c16e0f.js +0 -224
- package/dist/solidity-c05fdf3c.js +0 -1351
- package/dist/sophia-cd645d71.js +0 -190
- package/dist/sparql-01d9ec9c.js +0 -193
- package/dist/sql-4c33df41.js +0 -818
- package/dist/st-52cf1408.js +0 -414
- package/dist/swift-13c792ba.js +0 -315
- package/dist/systemverilog-0bd8b730.js +0 -556
- package/dist/tcl-463d7c75.js +0 -232
- package/dist/tippy-react.esm-d5c56a0a.js +0 -2018
- package/dist/tsMode-4d1329d1.js +0 -811
- package/dist/twig-0d98f5ec.js +0 -323
- package/dist/typescript-402306e6.js +0 -328
- package/dist/vb-3a2b0a51.js +0 -364
- package/dist/wgsl-b2ddb3e4.js +0 -420
- package/dist/xml-8975e1f9.js +0 -95
- package/dist/yaml-680c02bf.js +0 -184
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { PATTERNS } from '../Constants'
|
|
2
|
+
|
|
3
|
+
const validateTagValue = (value: string): string[] => {
|
|
4
|
+
const errorList = []
|
|
5
|
+
if (value.length > 63) {
|
|
6
|
+
errorList.push('Can be max 63 characters')
|
|
7
|
+
}
|
|
8
|
+
const firstLastAlphanumeric = PATTERNS.START_END_ALPHANUMERIC.test(value)
|
|
9
|
+
if (!firstLastAlphanumeric) {
|
|
10
|
+
errorList.push('Must start and end with an alphanumeric character')
|
|
11
|
+
}
|
|
12
|
+
const validValue = PATTERNS.ALPHANUMERIC_WITH_SPECIAL_CHAR.test(value)
|
|
13
|
+
if (!validValue) {
|
|
14
|
+
errorList.push('Can only contain alphanumeric chars and (-), (_), (.)')
|
|
15
|
+
}
|
|
16
|
+
return errorList
|
|
17
|
+
}
|
|
18
|
+
export class ValidationRules {
|
|
19
|
+
propagateTagKey = (key: string): { isValid: boolean; messages: string[] } => {
|
|
20
|
+
const errorList = []
|
|
21
|
+
if (!key) {
|
|
22
|
+
errorList.push('Key is required')
|
|
23
|
+
} else {
|
|
24
|
+
if(!key.startsWith("devtron.ai/")){
|
|
25
|
+
const re = new RegExp('/', 'g')
|
|
26
|
+
const noOfSlashInKey = key.match(re)?.length
|
|
27
|
+
if (noOfSlashInKey > 1) {
|
|
28
|
+
errorList.push('Key: Max 1 ( / ) allowed')
|
|
29
|
+
} else if (noOfSlashInKey === 1) {
|
|
30
|
+
const [prefix, name] = key.split('/')
|
|
31
|
+
errorList.push(...validateTagValue(name).map((error) => `Name: ${error}`))
|
|
32
|
+
if (prefix.length > 253) {
|
|
33
|
+
errorList.push('Prefix: Can be max 253 characters')
|
|
34
|
+
}
|
|
35
|
+
const validPrefix = PATTERNS.KUBERNETES_KEY_PREFIX.test(prefix)
|
|
36
|
+
if (!validPrefix) {
|
|
37
|
+
errorList.push('Prefix: Must be a DNS subdomain (a series of DNS labels separated by dots (.)')
|
|
38
|
+
}
|
|
39
|
+
} else {
|
|
40
|
+
errorList.push(...validateTagValue(key).map((error) => `Name: ${error}`))
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return { isValid: errorList.length === 0, messages: errorList }
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
propagateTagValue = (value: string, key: string): { isValid: boolean; messages: string[] } => {
|
|
48
|
+
const errorList = []
|
|
49
|
+
if (!value) {
|
|
50
|
+
errorList.push('Value is required')
|
|
51
|
+
} else {
|
|
52
|
+
if(!key.startsWith("devtron.ai/")){
|
|
53
|
+
errorList.push(...validateTagValue(value))
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return { isValid: errorList.length === 0, messages: errorList }
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react'
|
|
2
|
+
import { useDebouncedEffect } from './Utils'
|
|
3
|
+
import { ReactComponent as ICClear } from '../../Assets/Icon/ic-error-cross.svg'
|
|
4
|
+
import { DebouncedSearchProps } from './Types'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @param onSearch - Callback function to be called on search
|
|
8
|
+
* @param Icon - (Optional) Icon to be shown before the input
|
|
9
|
+
* @param iconClass - (Optional) Class for the icon
|
|
10
|
+
* @param children - (Optional) In case we want to add another button or any other element
|
|
11
|
+
* @param placeholder - (Optional) Placeholder for the input
|
|
12
|
+
* @param containerClass - (Optional) Class for the container
|
|
13
|
+
* @param inputClass - (Optional) Class for the input field
|
|
14
|
+
* @param debounceTimeout - (Optional) Timeout for the debounce with default value of 500ms
|
|
15
|
+
* @param clearSearch - (Optional) To clear the search text
|
|
16
|
+
* @param showClearIcon - (Optional) To show the clear icon default value is true
|
|
17
|
+
*/
|
|
18
|
+
export default function DebouncedSearch({
|
|
19
|
+
onSearch,
|
|
20
|
+
Icon,
|
|
21
|
+
children,
|
|
22
|
+
placeholder,
|
|
23
|
+
containerClass = '',
|
|
24
|
+
iconClass = '',
|
|
25
|
+
inputClass = '',
|
|
26
|
+
debounceTimeout = 500,
|
|
27
|
+
clearSearch,
|
|
28
|
+
showClearIcon = true,
|
|
29
|
+
autoFocus = true,
|
|
30
|
+
}: DebouncedSearchProps) {
|
|
31
|
+
const [searchText, setSearchText] = useState<string>('')
|
|
32
|
+
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
setSearchText('')
|
|
35
|
+
}, [clearSearch])
|
|
36
|
+
|
|
37
|
+
const handleSearchTextChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
38
|
+
setSearchText(e.target.value)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const handleClearSearch = () => {
|
|
42
|
+
setSearchText('')
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
useDebouncedEffect(() => onSearch(searchText), debounceTimeout, [searchText])
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<div className={containerClass}>
|
|
49
|
+
{Icon && <Icon className={iconClass} />}
|
|
50
|
+
|
|
51
|
+
<input
|
|
52
|
+
type="text"
|
|
53
|
+
className={inputClass}
|
|
54
|
+
placeholder={placeholder ?? 'Search'}
|
|
55
|
+
value={searchText}
|
|
56
|
+
onChange={handleSearchTextChange}
|
|
57
|
+
autoFocus={autoFocus}
|
|
58
|
+
data-testid="debounced-search"
|
|
59
|
+
/>
|
|
60
|
+
|
|
61
|
+
{showClearIcon && !!searchText && (
|
|
62
|
+
<button
|
|
63
|
+
type="button"
|
|
64
|
+
className="dc__outline-none-imp dc__no-border p-0 bc-n50 flex"
|
|
65
|
+
onClick={handleClearSearch}
|
|
66
|
+
data-testid="clear-search"
|
|
67
|
+
>
|
|
68
|
+
<ICClear className="icon-dim-20 icon-n6" />
|
|
69
|
+
</button>
|
|
70
|
+
)}
|
|
71
|
+
|
|
72
|
+
{/* In case we want to add another button or something */}
|
|
73
|
+
{children}
|
|
74
|
+
</div>
|
|
75
|
+
)
|
|
76
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface DebouncedSearchProps {
|
|
2
|
+
onSearch: (query: string) => void
|
|
3
|
+
Icon?: React.FunctionComponent<React.SVGProps<SVGSVGElement>>
|
|
4
|
+
placeholder?: string
|
|
5
|
+
inputClass?: string
|
|
6
|
+
containerClass?: string
|
|
7
|
+
iconClass?: string
|
|
8
|
+
children?: React.ReactNode
|
|
9
|
+
debounceTimeout?: number
|
|
10
|
+
clearSearch?: boolean
|
|
11
|
+
showClearIcon?: boolean
|
|
12
|
+
autoFocus?: boolean
|
|
13
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react'
|
|
2
|
+
|
|
3
|
+
export function useDebouncedEffect(callback, delay, deps: unknown[] = []) {
|
|
4
|
+
// function will be executed only after the specified time once the user stops firing the event.
|
|
5
|
+
const firstUpdate = useRef(true)
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
if (firstUpdate.current) {
|
|
8
|
+
firstUpdate.current = false
|
|
9
|
+
return
|
|
10
|
+
}
|
|
11
|
+
const handler = setTimeout(() => {
|
|
12
|
+
callback()
|
|
13
|
+
}, delay)
|
|
14
|
+
|
|
15
|
+
return () => {
|
|
16
|
+
clearTimeout(handler)
|
|
17
|
+
}
|
|
18
|
+
}, [delay, ...deps])
|
|
19
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { render, screen, fireEvent } from '@testing-library/react'
|
|
3
|
+
import { ReactComponent as ICClear } from '../../../../assets/icons/ic-error.svg'
|
|
4
|
+
import DebouncedSearch from '../DebouncedSearch'
|
|
5
|
+
|
|
6
|
+
jest.mock('../../helpers/Helpers', () => ({
|
|
7
|
+
useDebouncedEffect: jest.fn().mockImplementation((fn) => fn()),
|
|
8
|
+
}))
|
|
9
|
+
|
|
10
|
+
describe('When DebouncedSearch mounts', () => {
|
|
11
|
+
it('should have a input field', () => {
|
|
12
|
+
render(<DebouncedSearch onSearch={jest.fn()} />)
|
|
13
|
+
expect(screen.getByRole('textbox')).toBeTruthy()
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
it('should have a clear icon when clearSearch is true and user has typed something', () => {
|
|
17
|
+
const { getByTestId } = render(<DebouncedSearch onSearch={jest.fn()} clearSearch debounceTimeout={0} />)
|
|
18
|
+
fireEvent.change(screen.getByRole('textbox'), { target: { value: 'test' } })
|
|
19
|
+
expect(getByTestId('clear-search')).toBeTruthy()
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
it('should call onSearch when input value changes', () => {
|
|
23
|
+
const onSearch = jest.fn()
|
|
24
|
+
render(<DebouncedSearch onSearch={onSearch} debounceTimeout={0} />)
|
|
25
|
+
fireEvent.change(screen.getByRole('textbox'), { target: { value: 'test' } })
|
|
26
|
+
expect(onSearch).toHaveBeenCalled()
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
it('should clear input value when clear icon is clicked', () => {
|
|
30
|
+
const { container } = render(<DebouncedSearch onSearch={jest.fn()} clearSearch debounceTimeout={0} />)
|
|
31
|
+
fireEvent.change(screen.getByRole('textbox'), { target: { value: 'test' } })
|
|
32
|
+
const inputBar = container.querySelector('input')
|
|
33
|
+
expect(inputBar.value).toBe('test')
|
|
34
|
+
fireEvent.click(screen.getByRole('button'))
|
|
35
|
+
expect(inputBar.value).toBe('')
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
it('should have a placeholder', () => {
|
|
39
|
+
render(<DebouncedSearch onSearch={jest.fn()} placeholder="test" />)
|
|
40
|
+
expect(screen.getByPlaceholderText('test')).toBeTruthy()
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
it('should not show clear icon when showClearIcon is false', () => {
|
|
44
|
+
render(<DebouncedSearch onSearch={jest.fn()} showClearIcon={false} />)
|
|
45
|
+
expect(screen.queryByRole('button')).toBeNull()
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
it('should have a custom Icon', () => {
|
|
49
|
+
const { container } = render(<DebouncedSearch onSearch={jest.fn()} Icon={ICClear} iconClass="icon-class" />)
|
|
50
|
+
expect(container.querySelector('.icon-class')).toBeTruthy()
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
it('should support children', () => {
|
|
54
|
+
render(
|
|
55
|
+
<DebouncedSearch onSearch={jest.fn()}>
|
|
56
|
+
<div>test</div>
|
|
57
|
+
</DebouncedSearch>,
|
|
58
|
+
)
|
|
59
|
+
expect(screen.getByText('test')).toBeTruthy()
|
|
60
|
+
})
|
|
61
|
+
})
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import React, { useState } from 'react'
|
|
2
|
+
import { useHistory } from 'react-router-dom'
|
|
3
|
+
import { toast } from 'react-toastify'
|
|
4
|
+
import info from '../../Assets/Icon/ic-info-filled.svg'
|
|
5
|
+
import { ConfirmationDialog, DeleteDialog } from '../Dialogs'
|
|
6
|
+
import { ServerErrors } from '../ServerError'
|
|
7
|
+
import { DeleteComponentProps } from './types'
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
function DeleteComponent({
|
|
11
|
+
setDeleting,
|
|
12
|
+
toggleConfirmation,
|
|
13
|
+
deleteComponent,
|
|
14
|
+
title,
|
|
15
|
+
component,
|
|
16
|
+
payload,
|
|
17
|
+
confirmationDialogDescription = '',
|
|
18
|
+
redirectTo = false,
|
|
19
|
+
url = '',
|
|
20
|
+
reload,
|
|
21
|
+
configuration = '',
|
|
22
|
+
closeCustomComponent,
|
|
23
|
+
}: DeleteComponentProps) {
|
|
24
|
+
const [showCannotDeleteDialogModal, setCannotDeleteDialogModal] = useState(false)
|
|
25
|
+
const { push } = useHistory()
|
|
26
|
+
|
|
27
|
+
async function handleDelete() {
|
|
28
|
+
setDeleting(true)
|
|
29
|
+
try {
|
|
30
|
+
await deleteComponent(payload)
|
|
31
|
+
toast.success('Successfully deleted')
|
|
32
|
+
toggleConfirmation(false)
|
|
33
|
+
if (redirectTo) {
|
|
34
|
+
push(url)
|
|
35
|
+
} else {
|
|
36
|
+
reload()
|
|
37
|
+
}
|
|
38
|
+
if (typeof closeCustomComponent === 'function') {
|
|
39
|
+
closeCustomComponent()
|
|
40
|
+
}
|
|
41
|
+
} catch (serverError) {
|
|
42
|
+
if (serverError instanceof ServerErrors && serverError.code === 500) {
|
|
43
|
+
setCannotDeleteDialogModal(true)
|
|
44
|
+
}
|
|
45
|
+
} finally {
|
|
46
|
+
setDeleting(false)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const handleConfirmation = () => {
|
|
51
|
+
setCannotDeleteDialogModal(false)
|
|
52
|
+
toggleConfirmation(false)
|
|
53
|
+
if (typeof closeCustomComponent === 'function') {
|
|
54
|
+
closeCustomComponent()
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const renderCannotDeleteDialogModal = () => {
|
|
59
|
+
return (
|
|
60
|
+
<ConfirmationDialog className="confirmation-dialog__body--w-360">
|
|
61
|
+
<ConfirmationDialog.Icon src={info} />
|
|
62
|
+
<ConfirmationDialog.Body title={`Cannot delete ${component} '${title}'`} />
|
|
63
|
+
<p className="fs-13 cn-7 ">{confirmationDialogDescription}</p>
|
|
64
|
+
<ConfirmationDialog.ButtonGroup>
|
|
65
|
+
<button type="button" className="cta" onClick={handleConfirmation}>
|
|
66
|
+
Okay
|
|
67
|
+
</button>
|
|
68
|
+
</ConfirmationDialog.ButtonGroup>
|
|
69
|
+
</ConfirmationDialog>
|
|
70
|
+
)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const renderDeleteDialog = () => {
|
|
74
|
+
return (
|
|
75
|
+
<DeleteDialog
|
|
76
|
+
title={`Delete ${component} '${title}'`}
|
|
77
|
+
delete={handleDelete}
|
|
78
|
+
closeDelete={() => toggleConfirmation(false)}
|
|
79
|
+
dataTestId="delete-dialog"
|
|
80
|
+
>
|
|
81
|
+
<DeleteDialog.Description>
|
|
82
|
+
<p>Are you sure you want to delete this {configuration ? configuration : component}? </p>
|
|
83
|
+
</DeleteDialog.Description>
|
|
84
|
+
</DeleteDialog>
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
return (
|
|
88
|
+
<div>
|
|
89
|
+
{!showCannotDeleteDialogModal && renderDeleteDialog()}
|
|
90
|
+
{showCannotDeleteDialogModal && renderCannotDeleteDialogModal()}
|
|
91
|
+
</div>
|
|
92
|
+
)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export default DeleteComponent
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface DeleteComponentProps {
|
|
2
|
+
setDeleting: (boolean) => void
|
|
3
|
+
toggleConfirmation: any
|
|
4
|
+
deleteComponent: (any) => Promise<any>
|
|
5
|
+
title: string
|
|
6
|
+
component: string
|
|
7
|
+
payload: any
|
|
8
|
+
confirmationDialogDescription?: string
|
|
9
|
+
redirectTo?: boolean
|
|
10
|
+
url?: string
|
|
11
|
+
reload?: () => void
|
|
12
|
+
configuration?: string
|
|
13
|
+
dataTestid?: string
|
|
14
|
+
closeCustomComponent?: () => void
|
|
15
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { ReactComponent as ICRotateDevtron } from '../../Assets/Icon/ic-rotate-devtron.svg'
|
|
3
|
+
import { DevtronProgressingProps } from './types'
|
|
4
|
+
|
|
5
|
+
export function DevtronProgressing({ classes, parentClasses }: DevtronProgressingProps): JSX.Element {
|
|
6
|
+
return (
|
|
7
|
+
<div className={parentClasses ? parentClasses : ''}>
|
|
8
|
+
<ICRotateDevtron className={classes ? classes : ''} />
|
|
9
|
+
</div>
|
|
10
|
+
)
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './DevtronProgressing'
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { VisibleModal2 } from '../Modals/VisibleModal2'
|
|
3
|
+
import { ConfirmationDialogBodyType, ConfirmationDialogButtonGroupType, ConfirmationDialogIconType, ConfirmationDialogType } from './Types'
|
|
4
|
+
|
|
5
|
+
function ConfirmationDialog({ className = '', children }: ConfirmationDialogType) {
|
|
6
|
+
return (
|
|
7
|
+
<VisibleModal2 className="confirmation-dialog">
|
|
8
|
+
<div className={`confirmation-dialog__body ${className}`}>{children}</div>
|
|
9
|
+
</VisibleModal2>
|
|
10
|
+
)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function Icon({ src, className = '' }: ConfirmationDialogIconType) {
|
|
14
|
+
return <img src={src} className={`confirmation-dialog__icon ${className}`} alt="" />
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function Body({ title, subtitle = null, children = null }: ConfirmationDialogBodyType) {
|
|
18
|
+
return (
|
|
19
|
+
<div className="flex left column ">
|
|
20
|
+
<h3 className="confirmation-dialog__title lh-1-5 dc__break-word w-100">{title}</h3>
|
|
21
|
+
{subtitle && <div className="confirmation-dialog__subtitle">{subtitle}</div>}
|
|
22
|
+
{children}
|
|
23
|
+
</div>
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function ButtonGroup({ children }: ConfirmationDialogButtonGroupType) {
|
|
28
|
+
return <div className="flex right confirmation-dialog__button-group">{children}</div>
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
ConfirmationDialog.Icon = Icon
|
|
32
|
+
ConfirmationDialog.Body = Body
|
|
33
|
+
ConfirmationDialog.ButtonGroup = ButtonGroup
|
|
34
|
+
export default ConfirmationDialog
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import warn from '../../Assets/Img/delete-medium.svg'
|
|
3
|
+
import { Progressing } from '../Progressing'
|
|
4
|
+
import ConfirmationDialog from './ConfirmationDialog'
|
|
5
|
+
import { DeleteDialogProps } from './Types'
|
|
6
|
+
|
|
7
|
+
export const DeleteDialog: React.FC<DeleteDialogProps> & { Description?: React.FC<any> } = function (props) {
|
|
8
|
+
const handleDelete = (e: React.MouseEvent) => {
|
|
9
|
+
if (props.shouldStopPropagation) {
|
|
10
|
+
e.stopPropagation()
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
props.delete()
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const handleModalClose = (e: React.MouseEvent) => {
|
|
17
|
+
if (props.shouldStopPropagation) {
|
|
18
|
+
e.stopPropagation()
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
props.closeDelete()
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<ConfirmationDialog className="confirmation-dialog__body--w-400">
|
|
26
|
+
<ConfirmationDialog.Icon src={warn} />
|
|
27
|
+
<ConfirmationDialog.Body title={props.title}>
|
|
28
|
+
<div className="fs-13 cn-7 lh-1-54 w-100">
|
|
29
|
+
{props.description ? props.description : null}
|
|
30
|
+
{props.children}
|
|
31
|
+
</div>
|
|
32
|
+
</ConfirmationDialog.Body>
|
|
33
|
+
<ConfirmationDialog.ButtonGroup>
|
|
34
|
+
<div className="flex right">
|
|
35
|
+
<button
|
|
36
|
+
type="button"
|
|
37
|
+
className="cta cancel cta-cd-delete-modal ml-16"
|
|
38
|
+
onClick={handleModalClose}
|
|
39
|
+
disabled={props.apiCallInProgress}
|
|
40
|
+
data-testid="dialog-cancel"
|
|
41
|
+
>
|
|
42
|
+
Cancel
|
|
43
|
+
</button>
|
|
44
|
+
<button
|
|
45
|
+
type="button"
|
|
46
|
+
className="cta delete cta-cd-delete-modal ml-16"
|
|
47
|
+
onClick={handleDelete}
|
|
48
|
+
disabled={props.apiCallInProgress || props.disabled}
|
|
49
|
+
data-testid="dialog-delete"
|
|
50
|
+
>
|
|
51
|
+
{props.apiCallInProgress ? (
|
|
52
|
+
<Progressing />
|
|
53
|
+
) : (
|
|
54
|
+
`${props.deletePrefix || ''}${
|
|
55
|
+
props.buttonPrimaryText ? props.buttonPrimaryText : 'Delete'
|
|
56
|
+
}${props.deletePostfix || ''}`
|
|
57
|
+
)}
|
|
58
|
+
</button>
|
|
59
|
+
</div>
|
|
60
|
+
</ConfirmationDialog.ButtonGroup>
|
|
61
|
+
</ConfirmationDialog>
|
|
62
|
+
)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function DeleteDialogDescription(props) {
|
|
66
|
+
return <>{props.children}</>
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
DeleteDialog.Description = DeleteDialogDescription
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import React, { Component, createContext } from 'react';
|
|
2
|
+
import { VisibleModal } from '../Modals/VisibleModal';
|
|
3
|
+
import close from '../../Assets/Icon/ic-cross.svg';
|
|
4
|
+
import { Progressing } from '../Progressing'
|
|
5
|
+
import { DialogFormProps } from './Types';
|
|
6
|
+
//TODO: may not need context
|
|
7
|
+
const DialogFormContext = createContext({ title: '', isLoading: false, close: (event) => {}, onSave: (event) => {} });
|
|
8
|
+
|
|
9
|
+
export class DialogForm extends Component<DialogFormProps> {
|
|
10
|
+
constructor(props) {
|
|
11
|
+
super(props);
|
|
12
|
+
this.escFunction = this.escFunction.bind(this);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
componentDidMount() {
|
|
16
|
+
document.addEventListener('keydown', this.escFunction);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
componentWillUnmount() {
|
|
20
|
+
document.removeEventListener('keydown', this.escFunction);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
escFunction(event) {
|
|
24
|
+
if (event.keyCode === 27 && this.props.closeOnESC) {
|
|
25
|
+
this.props.close(event);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
render() {
|
|
30
|
+
return (
|
|
31
|
+
<DialogFormContext.Provider
|
|
32
|
+
value={{
|
|
33
|
+
title: this.props.title,
|
|
34
|
+
isLoading: this.props.isLoading,
|
|
35
|
+
close: this.props.close,
|
|
36
|
+
onSave: this.props.onSave,
|
|
37
|
+
}}
|
|
38
|
+
>
|
|
39
|
+
<VisibleModal className="">
|
|
40
|
+
<div className={`modal__body ${this.props.className || ''}`}>
|
|
41
|
+
<div className={`modal__header ${this.props.headerClassName || ''}`}>
|
|
42
|
+
<h1 className="modal__title">{this.props.title}</h1>
|
|
43
|
+
<button type="button" className="dc__transparent" onClick={this.props.close}>
|
|
44
|
+
{' '}
|
|
45
|
+
<img src={close} alt="close" />
|
|
46
|
+
</button>
|
|
47
|
+
</div>
|
|
48
|
+
<DialogFormContext.Consumer>
|
|
49
|
+
{(context) => {
|
|
50
|
+
return (
|
|
51
|
+
<form
|
|
52
|
+
noValidate
|
|
53
|
+
onSubmit={(e) => {
|
|
54
|
+
e.preventDefault();
|
|
55
|
+
if (!context.isLoading) {
|
|
56
|
+
context.onSave(e);
|
|
57
|
+
}
|
|
58
|
+
}}
|
|
59
|
+
>
|
|
60
|
+
{this.props.children}
|
|
61
|
+
</form>
|
|
62
|
+
);
|
|
63
|
+
}}
|
|
64
|
+
</DialogFormContext.Consumer>
|
|
65
|
+
</div>
|
|
66
|
+
</VisibleModal>
|
|
67
|
+
</DialogFormContext.Provider>
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export class DialogFormSubmit extends Component<{ tabIndex: number }> {
|
|
73
|
+
render() {
|
|
74
|
+
return (
|
|
75
|
+
<DialogFormContext.Consumer>
|
|
76
|
+
{(context) => {
|
|
77
|
+
return (
|
|
78
|
+
<button type="submit" className="cta dc__align-right" tabIndex={this.props.tabIndex}>
|
|
79
|
+
{context.isLoading ? <Progressing /> : this.props.children}
|
|
80
|
+
</button>
|
|
81
|
+
);
|
|
82
|
+
}}
|
|
83
|
+
</DialogFormContext.Consumer>
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { ForceDeleteDialogType } from './Types';
|
|
3
|
+
import { DeleteDialog } from './DeleteDialog';
|
|
4
|
+
|
|
5
|
+
export default function ForceDeleteDialog({ onClickDelete, closeDeleteModal, forceDeleteDialogTitle, forceDeleteDialogMessage }: ForceDeleteDialogType) {
|
|
6
|
+
return (
|
|
7
|
+
<div>
|
|
8
|
+
<DeleteDialog title={forceDeleteDialogTitle}
|
|
9
|
+
delete={onClickDelete}
|
|
10
|
+
closeDelete={closeDeleteModal}
|
|
11
|
+
deletePrefix="Force ">
|
|
12
|
+
<DeleteDialog.Description >
|
|
13
|
+
<p className="mt-12 mb-12 p-8 dc__break-word dc__window-bg">Error: {forceDeleteDialogMessage}</p>
|
|
14
|
+
<p>Do you want to force delete?</p>
|
|
15
|
+
</DeleteDialog.Description>
|
|
16
|
+
</DeleteDialog>
|
|
17
|
+
</div>
|
|
18
|
+
)
|
|
19
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ReactNode } from "react"
|
|
2
|
+
|
|
3
|
+
export interface DeleteDialogProps {
|
|
4
|
+
title: string
|
|
5
|
+
description?: string
|
|
6
|
+
closeDelete: () => void
|
|
7
|
+
delete: () => any
|
|
8
|
+
deletePrefix?: string
|
|
9
|
+
deletePostfix?: string
|
|
10
|
+
apiCallInProgress?: boolean
|
|
11
|
+
dataTestId?: string
|
|
12
|
+
buttonPrimaryText?: string
|
|
13
|
+
shouldStopPropagation?: boolean
|
|
14
|
+
disabled?: boolean
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface ForceDeleteDialogType {
|
|
18
|
+
onClickDelete: () => void
|
|
19
|
+
closeDeleteModal: () => void
|
|
20
|
+
forceDeleteDialogTitle: string
|
|
21
|
+
forceDeleteDialogMessage: string
|
|
22
|
+
}
|
|
23
|
+
export interface ConfirmationDialogType {
|
|
24
|
+
className?: string
|
|
25
|
+
children: any
|
|
26
|
+
}
|
|
27
|
+
export interface ConfirmationDialogIconType {
|
|
28
|
+
src: string
|
|
29
|
+
className?: string
|
|
30
|
+
}
|
|
31
|
+
export interface ConfirmationDialogBodyType {
|
|
32
|
+
title: string
|
|
33
|
+
subtitle?: ReactNode
|
|
34
|
+
children?: any
|
|
35
|
+
}
|
|
36
|
+
export interface ConfirmationDialogButtonGroupType {
|
|
37
|
+
children: any
|
|
38
|
+
}
|
|
39
|
+
export interface DialogFormProps {
|
|
40
|
+
className: string;
|
|
41
|
+
title: string;
|
|
42
|
+
isLoading: boolean;
|
|
43
|
+
closeOnESC?: boolean;
|
|
44
|
+
close: (event) => void;
|
|
45
|
+
onSave: (event) => void;
|
|
46
|
+
headerClassName?: string;
|
|
47
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
.drawer {
|
|
2
|
+
position: absolute;
|
|
3
|
+
overflow: hidden;
|
|
4
|
+
&.left,
|
|
5
|
+
&.right {
|
|
6
|
+
top: 0;
|
|
7
|
+
bottom: 0;
|
|
8
|
+
width: 0;
|
|
9
|
+
transition: width 200ms;
|
|
10
|
+
&.show {
|
|
11
|
+
min-width: var(--minWidth);
|
|
12
|
+
width: var(--width);
|
|
13
|
+
max-width: var(--maxWidth);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
&.top,
|
|
18
|
+
&.bottom {
|
|
19
|
+
left: 0;
|
|
20
|
+
right: 0;
|
|
21
|
+
height: 0;
|
|
22
|
+
transition: height 200ms;
|
|
23
|
+
&.show {
|
|
24
|
+
height: var(--height);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
&.right {
|
|
28
|
+
right: 0;
|
|
29
|
+
}
|
|
30
|
+
&.left {
|
|
31
|
+
left: 0;
|
|
32
|
+
}
|
|
33
|
+
&.top {
|
|
34
|
+
top: 0;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&.bottom {
|
|
38
|
+
bottom: 0;
|
|
39
|
+
}
|
|
40
|
+
}
|