diff --git a/src/actions/email-actions.js b/src/actions/email-actions.js index ea13a97bf..0b4e4741b 100644 --- a/src/actions/email-actions.js +++ b/src/actions/email-actions.js @@ -29,7 +29,7 @@ import { escapeFilterValue } from "openstack-uicore-foundation/lib/utils/actions"; import URI from "urijs"; -import debounce from "lodash/debounce" +import debounce from "lodash/debounce"; import history from "../history"; import { checkOrFilter, getAccessTokenSafely } from "../utils/methods"; import { saveMarketingSetting } from "./marketing-actions"; @@ -99,7 +99,7 @@ export const getEmailTemplates = createAction(RECEIVE_TEMPLATES), `${window.EMAIL_API_BASE_URL}/api/v1/mail-templates`, authErrorHandler, - { order, orderDir, term } + { order, orderDir, term, page, perPage } )(params)(dispatch).then(() => { dispatch(stopLoading()); }); diff --git a/src/pages/emails/email-template-list-page.js b/src/pages/emails/email-template-list-page.js index c7138eb9e..36cdcb9f6 100644 --- a/src/pages/emails/email-template-list-page.js +++ b/src/pages/emails/email-template-list-page.js @@ -12,13 +12,14 @@ * */ import React, { useEffect } from "react"; +import Button from "@mui/material/Button"; +import Grid2 from "@mui/material/Grid2"; +import AddIcon from "@mui/icons-material/Add"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; -import Swal from "sweetalert2"; -import { Pagination } from "react-bootstrap"; -import FreeTextSearch from "openstack-uicore-foundation/lib/components/free-text-search" -import Table from "openstack-uicore-foundation/lib/components/table"; -import { getSummitById } from "../../actions/summit-actions"; +import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; +import { DEFAULT_CURRENT_PAGE } from "../../utils/constants"; import { getEmailTemplates, deleteEmailTemplate @@ -26,7 +27,6 @@ import { const EmailTemplateListPage = ({ templates, - lastPage, currentPage, perPage, term, @@ -34,26 +34,43 @@ const EmailTemplateListPage = ({ orderDir, totalTemplates, history, - ...props + getEmailTemplates: fetchEmailTemplates, + deleteEmailTemplate: removeEmailTemplate }) => { useEffect(() => { - props.getEmailTemplates(term, currentPage, perPage, order, orderDir); - }, []); + fetchEmailTemplates(term, currentPage, perPage, order, orderDir); + }, [fetchEmailTemplates]); - const handleEdit = (template_id) => { - history.push(`/app/emails/templates/${template_id}`); + const handleEdit = (row) => { + history.push(`/app/emails/templates/${row.id}`); }; - const handlePageChange = (newPage) => { - props.getEmailTemplates(term, newPage, perPage, order, orderDir); + const handlePageChange = (page) => { + fetchEmailTemplates(term, page, perPage, order, orderDir); }; - const handleSort = (index, key, dir) => { - props.getEmailTemplates(term, currentPage, perPage, key, dir); + const handlePerPageChange = (newPerPage) => { + fetchEmailTemplates( + term, + DEFAULT_CURRENT_PAGE, + newPerPage, + order, + orderDir + ); + }; + + const handleSort = (key, dir) => { + fetchEmailTemplates(term, currentPage, perPage, key, dir); }; const handleSearch = (newTerm) => { - props.getEmailTemplates(newTerm, 1, perPage, order, orderDir); + fetchEmailTemplates( + newTerm, + DEFAULT_CURRENT_PAGE, + perPage, + order, + orderDir + ); }; const handleNewEmailTemplate = (ev) => { @@ -61,69 +78,75 @@ const EmailTemplateListPage = ({ history.push("/app/emails/templates/new"); }; - const handleDeleteEmailTemplate = (templateId) => { - const template = templates.find((t) => t.id === templateId); - - Swal.fire({ - title: T.translate("general.are_you_sure"), - text: `${T.translate("emails.delete_template_warning")} ${ - template.identifier - }`, - type: "warning", - showCancelButton: true, - confirmButtonColor: "#DD6B55", - confirmButtonText: T.translate("general.yes_delete") - }).then((result) => { - if (result.value) { - props.deleteEmailTemplate(templateId); - } - }); + const handleDeleteEmailTemplate = (row) => { + removeEmailTemplate(row.id); }; const columns = [ - { columnKey: "id", value: T.translate("general.id"), sortable: true }, + { + columnKey: "id", + header: T.translate("general.id"), + sortable: true, + width: 70 + }, { columnKey: "identifier", - value: T.translate("emails.name"), - styles: { wordBreak: "break-all" }, + header: T.translate("emails.name"), + render: (row) => ( +