diff --git a/package.json b/package.json index b6afdcd12..400c3d70a 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "moment-duration-format": "^2.3.2", "moment-timezone": "^0.5.33", "mui-color-input": "^9.0.0", - "openstack-uicore-foundation": "5.0.44", + "openstack-uicore-foundation": "5.0.49-beta.2", "p-limit": "^6.1.0", "path-browserify": "^1.0.1", "postcss-loader": "^6.2.1", diff --git a/src/actions/sponsor-forms-actions.js b/src/actions/sponsor-forms-actions.js index 5492628e7..bcfe40c6e 100644 --- a/src/actions/sponsor-forms-actions.js +++ b/src/actions/sponsor-forms-actions.js @@ -144,7 +144,9 @@ export const getSponsorForms = expand: "sponsorship_types" }; - filter.push(`is_archived==${showArchived ? 1 : 0}`); + if (!showArchived) { + filter.push("is_archived==0"); + } if (sponsorshipTypesId?.length > 0) { const formattedSponsorships = sponsorshipTypesId.join("&&"); diff --git a/src/components/CustomTheme.js b/src/components/CustomTheme.js index a977d4861..aefcee380 100644 --- a/src/components/CustomTheme.js +++ b/src/components/CustomTheme.js @@ -91,7 +91,7 @@ const theme = createTheme(CustomThemeBase, { ...(ownerState.size === "medium" && { fontSize: "14px", lineHeight: "20px", - padding: "10px 20px" + padding: "8px 12px" }), ...(ownerState.size === "large" && { fontSize: "16px", diff --git a/src/components/image-preview-cell.js b/src/components/image-preview-cell.js index 82b1bb082..af93ce840 100644 --- a/src/components/image-preview-cell.js +++ b/src/components/image-preview-cell.js @@ -36,11 +36,11 @@ export const ImagePreviewCell = React.memo( return ( <> setOpen(true)} > - + {open && ( diff --git a/src/components/mui/grid-toolbar.js b/src/components/mui/grid-toolbar.js new file mode 100644 index 000000000..1f023ba0b --- /dev/null +++ b/src/components/mui/grid-toolbar.js @@ -0,0 +1,125 @@ +import React from "react"; +import PropTypes from "prop-types"; +import { Checkbox, FormControlLabel, FormGroup, Grid2 } from "@mui/material"; +import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; + +const GridToolbar = ({ searchProps, checkboxProps, children, splitAt }) => { + const hasSearch = !!searchProps; + const hasCheckbox = !!checkboxProps; + + let searchSize; + let checkboxSize; + let actionsSize; + + if (hasSearch && hasCheckbox) { + searchSize = { xs: 12, sm: 6, md: 4 }; + checkboxSize = { xs: 12, sm: 6, md: 2 }; + actionsSize = { xs: 12, md: 6 }; + } else if (hasSearch) { + // has search but no checkbox + searchSize = { xs: 12, [splitAt]: 4 }; + actionsSize = { xs: 12, [splitAt]: 8 }; + } else if (hasCheckbox) { + // has checkbox but no search + checkboxSize = { xs: 12, [splitAt]: 4 }; + actionsSize = { xs: 12, [splitAt]: 8 }; + } else { + actionsSize = { xs: 12 }; + } + + // must match the breakpoint where actionsSize itself leaves its xs:12 + // (own full-width row) value — that's the point flexWrap needs to switch + // to nowrap, so children don't get squeezed once actionsSize starts + // sharing a row with a sibling + const actionsWidthBreakpoint = + hasSearch && hasCheckbox ? "md" : hasSearch || hasCheckbox ? splitAt : "xs"; + + // children go natural (auto) width starting at actionsWidthBreakpoint, + // never earlier than sm; between sm and that point (only a real window + // when actionsWidthBreakpoint is md) they fill the row evenly instead + const actionsAutoBreakpoint = + actionsWidthBreakpoint === "xs" ? "sm" : actionsWidthBreakpoint; + const hasFillTier = actionsAutoBreakpoint !== "sm"; + + return ( + + {hasSearch && ( + + + + )} + {hasCheckbox && ( + + + + } + label={checkboxProps.label} + sx={{ whiteSpace: "nowrap" }} + /> + + + )} + + {/* xs: stacked full width. sm through actionsAutoBreakpoint (only a + real window when that's md): fill the row evenly via flexGrow. + From actionsAutoBreakpoint on: natural/auto width. */} + {React.Children.map(children, (child) => + child + ? React.cloneElement(child, { + sx: { + width: { xs: "100%", [actionsAutoBreakpoint]: "auto" }, + ...(hasFillTier && { + flexGrow: { sm: 1, [actionsAutoBreakpoint]: 0 }, + flexBasis: { sm: 0, [actionsAutoBreakpoint]: "auto" } + }), + ...child.props.sx + } + }) + : child + )} + + + ); +}; + +GridToolbar.propTypes = { + searchProps: PropTypes.shape({ + term: PropTypes.string, + onSearch: PropTypes.func.isRequired, + placeholder: PropTypes.string, + debounced: PropTypes.bool + }), + checkboxProps: PropTypes.shape({ + checked: PropTypes.bool, + onChange: PropTypes.func, + label: PropTypes.node, + ariaLabel: PropTypes.string + }), + // breakpoint where search/checkbox split from the actions row into their + // compact ratio — raise it (e.g. "lg") when actions holds a lot of children + splitAt: PropTypes.oneOf(["xs", "sm", "md", "lg", "xl"]) +}; + +GridToolbar.defaultProps = { + searchProps: null, + checkboxProps: null, + splitAt: "sm" +}; + +export default GridToolbar; diff --git a/src/i18n/en.json b/src/i18n/en.json index 935ec2de4..9a7082ad9 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -858,8 +858,6 @@ }, "tag_list": { "tag_list": "Tag List", - "item": "item", - "items": "items", "tags": "Tags", "add_tag": "Add Tag", "delete_tag_warning": "Are you sure you want to delete tag", @@ -2765,14 +2763,12 @@ "sponsor_forms": { "forms": "Forms", "alert_info": "To add an order form, select Add Form to start the process. To edit an existing form, click on the form name. To edit the line items within the form click manage items on the form line you wish to edit.", - "show_archived": "Show archived Forms", + "show_archived": "Show archived", "using_global": "Using Global Template", "add_form": "New Form Template", "code_column_label": "Code", "name_column_label": "Name", "items_column_label": "Items", - "item_label_singular": "Item", - "item_label_plural": "Items", "tiers_column_label": "Tiers", "manage_items_button": "Manage Items", "form_delete_success": "Form successfully deleted.", @@ -2924,8 +2920,8 @@ "sponsor_users": { "users": "Users", "access_request": "access request", - "import_user": "import existing user", - "add_user": "add user", + "import_user": "import", + "add_user": "add", "name": "Name", "email": "Email", "sponsor": "Sponsor", @@ -3488,7 +3484,7 @@ "media_uploads": "Media Upload Types", "media_upload": "Media Upload Type", "media_upload_list": "Media Upload Type List", - "add": "Add Media Upload Type", + "add": "Add Type", "no_results": "No items found for this search criteria.", "id": "Id", "name": "Name", @@ -3504,7 +3500,7 @@ "public_storage_type": "Public Storage Type", "private_storage_type": "Private Storage Type", "presentation_types": "Presentation Types", - "copy_media_uploads": "Copy Media Uploads", + "copy_media_uploads": "Copy Types", "media_uploads_copied": "Media Upload Types copied successfully.", "delete_warning": "Are you sure you want to delete media media type ", "saved": "Media Upload Type saved successfully.", diff --git a/src/pages/admin_access/admin-access-list-page.js b/src/pages/admin_access/admin-access-list-page.js index 5be41f527..91da17f8d 100644 --- a/src/pages/admin_access/admin-access-list-page.js +++ b/src/pages/admin_access/admin-access-list-page.js @@ -16,10 +16,9 @@ import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; import Box from "@mui/material/Box"; import Button from "@mui/material/Button"; -import Grid2 from "@mui/material/Grid2"; import AddIcon from "@mui/icons-material/Add"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; -import MuiSearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import GridToolbar from "../../components/mui/grid-toolbar"; import { getAdminAccesses, deleteAdminAccess, @@ -109,46 +108,24 @@ const AdminAccessListPage = ({ return (

{T.translate("admin_access.admin_access_list")}

- - - - {totalAdminAccesses} {T.translate("general.items")} - - - } + onClick={handleNewAdminAccess} > - - - - - - + {T.translate("admin_access.add")} + + + + {totalAdminAccesses} {T.translate("general.items")} + {admin_accesses.length === 0 && (
{T.translate("admin_access.no_results")}
diff --git a/src/pages/companies/company-list-page.js b/src/pages/companies/company-list-page.js index fc50edb96..0812d95b3 100644 --- a/src/pages/companies/company-list-page.js +++ b/src/pages/companies/company-list-page.js @@ -14,10 +14,10 @@ import React, { useEffect, useState } from "react"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; -import { Box, Button, Grid2 } from "@mui/material"; +import { Box, Button } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import GridToolbar from "../../components/mui/grid-toolbar"; import { getCompanies, getCompany, @@ -125,54 +125,24 @@ const CompanyListPage = ({ return (

{T.translate("company_list.company_list")}

- - - - {totalCompanies} {T.translate("company_list.companies")} - - - } > - - - - - - + {T.translate("company_list.add_company")} + + + + {totalCompanies} {T.translate("company_list.companies")} + {companies.length > 0 && (

{T.translate("emails.template_list")}

- - - {totalTemplates} {T.translate("emails.templates")} - - - - - - - - + + + + {totalTemplates} {T.translate("emails.templates")} + {templates.length === 0 && (
{T.translate("emails.no_templates")}
diff --git a/src/pages/events/event-type-list-page.js b/src/pages/events/event-type-list-page.js index 8b8439ee0..abdc054db 100644 --- a/src/pages/events/event-type-list-page.js +++ b/src/pages/events/event-type-list-page.js @@ -17,10 +17,9 @@ import PropTypes from "prop-types"; import T from "i18n-react/dist/i18n-react"; import Box from "@mui/material/Box"; import Button from "@mui/material/Button"; -import Grid2 from "@mui/material/Grid2"; import AddIcon from "@mui/icons-material/Add"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import GridToolbar from "../../components/mui/grid-toolbar"; import { getEventTypes as getEventTypesAction, getEventType as getEventTypeAction, @@ -135,61 +134,17 @@ const EventTypeListPage = ({ return (

{T.translate("event_type_list.event_type_list")}

- - - - {totalEventTypes} {T.translate("event_type_list.event_types")} - - - - - - - - - - + + + + + + {totalEventTypes} {T.translate("event_type_list.event_types")} + {eventTypes.length > 0 && ( {T.translate("event_list.event_list")} ({totalEvents}) - - - - - - - - - - - - + + + + + +

{T.translate("media_file_type.media_file_type_list")}

- - - - {totalMediaFileTypes}{" "} - {T.translate("media_file_type.media_file_types")} - - - - - - - - - + + + + + {totalMediaFileTypes} {T.translate("media_file_type.media_file_types")} + {media_file_types.length > 0 && (

{T.translate("media_upload.media_upload_list")}

- - - - {totalMediaUploads} {T.translate("media_upload.media_uploads")} - - - - - - + + {/* TODO: remove this wrapper once SummitDropdown is migrated to MUI */} + - - - + + + + + {totalMediaUploads} {T.translate("media_upload.media_uploads")} + {media_uploads.length > 0 && (

{T.translate("selection_plan_list.selection_plan_list")}

- - - {totalSelectionPlans} items - - - - - - - - - - + + + {totalSelectionPlans} items {selectionPlans.length === 0 && (
{T.translate("selection_plan_list.no_selection_plans")}
diff --git a/src/pages/speakers/summit-speakers-list-page.js b/src/pages/speakers/summit-speakers-list-page.js index b63806699..69a5140f4 100644 --- a/src/pages/speakers/summit-speakers-list-page.js +++ b/src/pages/speakers/summit-speakers-list-page.js @@ -14,10 +14,10 @@ import React, { useEffect } from "react"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; -import { Box, Button, Grid2 } from "@mui/material"; +import { Box, Button } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import GridToolbar from "../../components/mui/grid-toolbar"; import { getSpeakers, deleteSpeaker } from "../../actions/speaker-actions"; import Member from "../../models/member"; import { DEFAULT_CURRENT_PAGE } from "../../utils/constants"; @@ -91,54 +91,26 @@ const SummitSpeakerListPage = ({ return (

{T.translate("speaker_list.speaker_list")}

- - - - {totalSpeakers} {T.translate("speaker_list.speakers")} - - - - - - - {memberObj.canAddSpeakers() && ( - - )} - - + {memberObj.canAddSpeakers() && ( + + )} + + + {totalSpeakers} {T.translate("speaker_list.speakers")} + {speakers.length > 0 && (

{T.translate("add_on_types_list.add_on_types")}

- - - - {totalAddOnTypes} {T.translate("add_on_types_list.add_on_types")} - - - handleNewAddOnType()} + startIcon={} > - - - - - - + {T.translate("add_on_types_list.add_add_on_type")} + + + + {totalAddOnTypes} {T.translate("add_on_types_list.add_on_types")} + {addOnTypes.length > 0 && (
diff --git a/src/pages/sponsors-global/form-templates/add-form-template-item-popup.js b/src/pages/sponsors-global/form-templates/add-form-template-item-popup.js index 86496b0ad..572222989 100644 --- a/src/pages/sponsors-global/form-templates/add-form-template-item-popup.js +++ b/src/pages/sponsors-global/form-templates/add-form-template-item-popup.js @@ -102,7 +102,6 @@ const AddFormTemplateItemDialog = ({ { columnKey: "select", header: "", - width: 30, align: "center", render: (row) => ( { const img = row.images?.[0]; diff --git a/src/pages/sponsors-global/form-templates/form-template-from-duplicate-popup.js b/src/pages/sponsors-global/form-templates/form-template-from-duplicate-popup.js index 17b79a843..d5a079d20 100644 --- a/src/pages/sponsors-global/form-templates/form-template-from-duplicate-popup.js +++ b/src/pages/sponsors-global/form-templates/form-template-from-duplicate-popup.js @@ -62,7 +62,6 @@ const FormTemplateFromDuplicateDialog = ({ { columnKey: "select", header: "", - width: 30, align: "center", render: (row) => ( { const img = row.images?.[0]; @@ -236,57 +228,22 @@ const FormTemplateItemListPage = ({ > {T.translate("form_template_item_list.alert_info")} - - - {totalFormTemplateItems} items - - handleNewInventoryItem()} + startIcon={} > - - - - } - label={T.translate("form_template_item_list.show_archived")} - /> - - - - - - - + {T.translate("form_template_item_list.add_item")} + + + {totalFormTemplateItems} items {formTemplateItems.length > 0 && (
diff --git a/src/pages/sponsors-global/form-templates/form-template-list-page.js b/src/pages/sponsors-global/form-templates/form-template-list-page.js index 302c0cc1b..f3fa811eb 100644 --- a/src/pages/sponsors-global/form-templates/form-template-list-page.js +++ b/src/pages/sponsors-global/form-templates/form-template-list-page.js @@ -12,20 +12,12 @@ * */ import React, { useEffect, useState } from "react"; -import { - Alert, - Button, - Checkbox, - FormControlLabel, - FormGroup, - Grid2 -} from "@mui/material"; -import Box from "@mui/material/Box"; +import { Alert, Box, Button } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; +import GridToolbar from "../../../components/mui/grid-toolbar"; import { archiveFormTemplate, deleteFormTemplate, @@ -231,11 +223,7 @@ const FormTemplateListPage = ({ return (
-

- {" "} - {T.translate("form_template_list.form_templates")} ({totalFormTemplates} - ){" "} -

+

{T.translate("form_template_list.form_templates")}

- handleShowArchivedForms(ev.target.checked), + label: T.translate("form_template_list.show_archived") }} > - - {totalFormTemplates} forms - - - - handleShowArchivedForms(ev.target.checked)} - checked={showArchived} - inputProps={{ - "aria-label": T.translate( - "form_template_list.show_archived" - ) - }} - /> - } - label={T.translate("form_template_list.show_archived")} - /> - - - - - - - - - + + + + {totalFormTemplates} forms {formTemplates.length > 0 && (
diff --git a/src/pages/sponsors-global/inventory/inventory-list-page.js b/src/pages/sponsors-global/inventory/inventory-list-page.js index a3ba172f5..edb95cc3e 100644 --- a/src/pages/sponsors-global/inventory/inventory-list-page.js +++ b/src/pages/sponsors-global/inventory/inventory-list-page.js @@ -12,20 +12,12 @@ * */ import React, { useEffect, useState } from "react"; -import { - Alert, - Button, - Checkbox, - FormControlLabel, - FormGroup, - Grid2 -} from "@mui/material"; -import Box from "@mui/material/Box"; +import { Alert, Box, Button } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; +import GridToolbar from "../../../components/mui/grid-toolbar"; import { archiveInventoryItem, deleteInventoryItemImage, @@ -165,7 +157,6 @@ const InventoryListPage = ({ { columnKey: "hasImage", header: "", - width: 40, align: "center", render: (row) => { const img = row.images?.[0]; @@ -202,68 +193,28 @@ const InventoryListPage = ({ > {T.translate("inventory_item_list.alert_info")} - - - {totalInventoryItems} items - - handleNewInventoryItem()} + startIcon={} > - - - } - label={T.translate("inventory_item_list.show_archived")} - /> - - - - - - - + {T.translate("inventory_item_list.add_inventory_item")} + + + {totalInventoryItems} items {inventoryItems.length > 0 && (
diff --git a/src/pages/sponsors-global/page-templates/page-template-list-page.js b/src/pages/sponsors-global/page-templates/page-template-list-page.js index f3ffedc6b..e58044600 100644 --- a/src/pages/sponsors-global/page-templates/page-template-list-page.js +++ b/src/pages/sponsors-global/page-templates/page-template-list-page.js @@ -12,20 +12,13 @@ * */ import React, { useEffect, useState } from "react"; -import { - Alert, - Button, - Checkbox, - FormControlLabel, - FormGroup, - Grid2 -} from "@mui/material"; +import { Alert, Button } from "@mui/material"; import Box from "@mui/material/Box"; import AddIcon from "@mui/icons-material/Add"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import GridToolbar from "../../../components/mui/grid-toolbar"; import { archivePageTemplate, deletePageTemplate, @@ -203,64 +196,36 @@ const PageTemplateListPage = ({ {T.translate("page_template_list.alert_info")} - - - {totalPageTemplates} pages - - } > - - - } - label={T.translate("page_template_list.show_archived")} - /> - - - - - - - - + {T.translate("page_template_list.add_template")} + + + + {totalPageTemplates} pages {pageTemplates.length === 0 && ( diff --git a/src/pages/sponsors/show-pages-list-page/__tests__/show-pages-list-page.test.js b/src/pages/sponsors/show-pages-list-page/__tests__/show-pages-list-page.test.js index 4ada962ec..8f50169df 100644 --- a/src/pages/sponsors/show-pages-list-page/__tests__/show-pages-list-page.test.js +++ b/src/pages/sponsors/show-pages-list-page/__tests__/show-pages-list-page.test.js @@ -275,7 +275,7 @@ describe("ShowPagesListPage", () => { } } ); - const archiveButton = screen.getByText("general.archive"); + const archiveButton = screen.getByTestId("action-archive"); await act(async () => { await userEvent.click(archiveButton); }); @@ -295,7 +295,7 @@ describe("ShowPagesListPage", () => { } } ); - const unarchiveButton = screen.getByText("general.unarchive"); + const unarchiveButton = screen.getByTestId("action-archive"); await act(async () => { await userEvent.click(unarchiveButton); }); diff --git a/src/pages/sponsors/show-pages-list-page/index.js b/src/pages/sponsors/show-pages-list-page/index.js index b93ad1914..56d523783 100644 --- a/src/pages/sponsors/show-pages-list-page/index.js +++ b/src/pages/sponsors/show-pages-list-page/index.js @@ -15,17 +15,10 @@ import React, { useEffect, useState } from "react"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; import { Breadcrumb } from "react-breadcrumbs"; -import { - Box, - Button, - Checkbox, - FormControlLabel, - FormGroup, - Grid2 -} from "@mui/material"; +import { Box, Button } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import GridToolbar from "../../../components/mui/grid-toolbar"; import { archiveShowPage, deleteShowPage, @@ -203,68 +196,36 @@ const ShowPagesListPage = ({

{T.translate("show_pages.pages")}

- - - - {totalCount} {T.translate("show_pages.pages")} - - - - - - } - label={T.translate("show_pages.show_archived")} - /> - - - - - - - - - - - - + + + + + {totalCount} {T.translate("show_pages.pages")} + {showPages.length === 0 && (
{T.translate("show_pages.no_sponsors_pages")}
diff --git a/src/pages/sponsors/show-purchase-list-page/index.js b/src/pages/sponsors/show-purchase-list-page/index.js index c20075a68..0688f7108 100644 --- a/src/pages/sponsors/show-purchase-list-page/index.js +++ b/src/pages/sponsors/show-purchase-list-page/index.js @@ -19,14 +19,13 @@ import { Box, Button, CircularProgress, - Grid2, IconButton, MenuItem, Select } from "@mui/material"; import DownloadIcon from "@mui/icons-material/Download"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import GridToolbar from "../../../components/mui/grid-toolbar"; import history from "../../../history"; import { approveSponsorPurchase, @@ -116,13 +115,14 @@ const ShowPurchaseListPage = ({ { columnKey: "purchased", header: T.translate("sponsor_show_purchases.purchased"), - width: 200, - sortable: true + sortable: true, + cellSx: { maxWidth: { md: 120, lg: 180 } } }, { columnKey: "sponsor_name", header: T.translate("sponsor_show_purchases.sponsor"), - sortable: true + sortable: true, + cellSx: { maxWidth: 200 } }, { columnKey: "payment_method", @@ -171,8 +171,9 @@ const ShowPurchaseListPage = ({ { columnKey: "details", header: "", - width: 100, align: "center", + width: 86, + cellSx: { p: 0 }, render: (row) => (

{T.translate("sponsor_show_purchases.purchases")}

- - - - {totalCount}{" "} - {T.translate("sponsor_show_purchases.purchases").toLowerCase()} - - - - - - - - - + + + + {totalCount}{" "} + {T.translate("sponsor_show_purchases.purchases").toLowerCase()} +
( { const img = row.images?.[0]; diff --git a/src/pages/sponsors/sponsor-form-item-list-page/index.js b/src/pages/sponsors/sponsor-form-item-list-page/index.js index 260924bd8..56447fbea 100644 --- a/src/pages/sponsors/sponsor-form-item-list-page/index.js +++ b/src/pages/sponsors/sponsor-form-item-list-page/index.js @@ -15,18 +15,11 @@ import React, { useEffect, useState } from "react"; import { Breadcrumb } from "react-breadcrumbs"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; -import { - Alert, - Box, - Button, - Checkbox, - FormControlLabel, - FormGroup, - Grid2 -} from "@mui/material"; +import { Alert, Box, Button } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; import MuiTableEditable from "openstack-uicore-foundation/lib/components/mui/editable-table"; import { ImagePreviewCell } from "../../../components/image-preview-cell"; +import GridToolbar from "../../../components/mui/grid-toolbar"; import { deleteSponsorFormItem, getSponsorFormItem, @@ -235,7 +228,6 @@ const SponsorFormItemListPage = ({ { columnKey: "hasImage", header: "", - width: 40, align: "center", render: (row) => { const img = row.images?.[0]; @@ -277,58 +269,29 @@ const SponsorFormItemListPage = ({ > {T.translate("sponsor_form_item_list.alert_info")} - - - {totalCount} items - - handleNewItem()} + startIcon={} + > + {T.translate("sponsor_form_item_list.add_item")} + + - - - + {T.translate("sponsor_form_item_list.add_item_from_inventory")} + + + {totalCount} items {items.length > 0 && (
diff --git a/src/pages/sponsors/sponsor-forms-list-page/index.js b/src/pages/sponsors/sponsor-forms-list-page/index.js index dc1cabe4d..598cbf130 100644 --- a/src/pages/sponsors/sponsor-forms-list-page/index.js +++ b/src/pages/sponsors/sponsor-forms-list-page/index.js @@ -15,18 +15,11 @@ import React, { useEffect, useState, useRef } from "react"; import { epochToMoment } from "openstack-uicore-foundation/lib/utils/methods"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; -import { - Box, - Button, - Checkbox, - FormControlLabel, - FormGroup, - Grid2 -} from "@mui/material"; +import { Box, Button } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; import MuiDropdownCheckbox from "openstack-uicore-foundation/lib/components/mui/dropdown-checkbox"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import GridToolbar from "../../../components/mui/grid-toolbar"; import history from "../../../history"; import { archiveSponsorForm, @@ -208,23 +201,21 @@ const SponsorFormsListPage = ({ { columnKey: "code", header: T.translate("sponsor_forms.code_column_label"), - sortable: true + sortable: true, + cellSx: { maxWidth: 120 } }, { columnKey: "name", header: T.translate("sponsor_forms.name_column_label"), - sortable: true + sortable: true, + cellSx: { maxWidth: 120 } }, { columnKey: "tiers", header: T.translate("sponsor_forms.tiers_column_label"), sortable: false, - width: 140, render: (row) => { const cellStyle = { - width: 140, - maxWidth: 140, - minWidth: 140, display: "block" }; if (editingTiersId === row.id) { @@ -280,8 +271,7 @@ const SponsorFormsListPage = ({ cursor: "pointer", textDecoration: "underline dotted", display: "block", - whiteSpace: "normal", - wordBreak: "break-word", + whiteSpace: "nowrap", verticalAlign: "middle" }} title={label} @@ -297,26 +287,26 @@ const SponsorFormsListPage = ({ columnKey: "opens_at", header: T.translate("edit_sponsor.forms_tab.opens_at"), sortable: true, - width: 115, + headSx: { whiteSpace: "nowrap" }, render: (row) => formatDate(row.opens_at) }, { columnKey: "expires_at", header: T.translate("edit_sponsor.forms_tab.expires_at"), sortable: true, - width: 120, + headSx: { whiteSpace: "nowrap" }, render: (row) => formatDate(row.expires_at) }, { columnKey: "items_qty", - width: 90, header: T.translate("sponsor_forms.items_column_label"), - sortable: false + sortable: false, + cellSx: { textAlign: "center" } }, { columnKey: "manage_items", header: "", - width: 140, + width: 132, align: "left", render: (row) => ( - - - - - + + + + {totalCount} forms {sponsorForms.length > 0 && (
diff --git a/src/pages/sponsors/sponsor-list-page.js b/src/pages/sponsors/sponsor-list-page.js index 9bc7d95f8..2567ef027 100644 --- a/src/pages/sponsors/sponsor-list-page.js +++ b/src/pages/sponsors/sponsor-list-page.js @@ -14,20 +14,20 @@ import React, { useEffect, useState } from "react"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; -import { Button, Grid2, Typography, Badge, Tooltip } from "@mui/material"; +import { Badge, Button, Tooltip, Typography } from "@mui/material"; import Box from "@mui/material/Box"; import AddIcon from "@mui/icons-material/Add"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import GridToolbar from "../../components/mui/grid-toolbar"; import { getLeadReportSettingsMeta, getSummitById, upsertLeadReportSettings } from "../../actions/summit-actions"; import { - getSponsors, addSponsorToSummit, deleteSponsor, + getSponsors, updateSponsorOrder } from "../../actions/sponsor-actions"; import Member from "../../models/member"; @@ -198,54 +198,27 @@ const SponsorListPage = ({ return (

{T.translate("sponsor_list.sponsor_list")}

- - - - {totalSponsors} sponsors - - - - - - - - {canAddSponsors && ( - - )} - - - + {canAddSponsors && ( + + )} + + {totalSponsors} sponsors {sponsors.length === 0 && (
{T.translate("sponsor_list.no_sponsors")}
diff --git a/src/pages/sponsors/sponsor-page/components/tab-nav.js b/src/pages/sponsors/sponsor-page/components/tab-nav.js index 94d54b47f..db8cd8855 100644 --- a/src/pages/sponsors/sponsor-page/components/tab-nav.js +++ b/src/pages/sponsors/sponsor-page/components/tab-nav.js @@ -32,6 +32,7 @@ const TabNav = ({ currentSummit, sponsor, member, history, location }) => { value={selectedTab} onChange={(ev, val) => handleTabChange(val)} sx={{ minHeight: "36px" }} + variant="scrollable" > {tabs .filter((t) => memberObj.hasAccess(t.accessRoute)) diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-badge-scans/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-badge-scans/index.js index b85c38f95..7f9e48423 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-badge-scans/index.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-badge-scans/index.js @@ -14,11 +14,11 @@ import React, { useEffect, useState } from "react"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; -import { Box, Button, Grid2 } from "@mui/material"; +import { Box, Button } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; import DownloadIcon from "@mui/icons-material/Download"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import GridToolbar from "../../../../../components/mui/grid-toolbar"; import { getSponsor, getBadgeScans, @@ -168,61 +168,44 @@ const SponsorBadgeScans = ({ return ( - - - - {totalBadgeScans} {T.translate("sponsor_badge_scans.badge_scanned")} - - - - - - - - - - + + + + + {totalBadgeScans} {T.translate("sponsor_badge_scans.badge_scanned")} + {badgeScans.length > 0 && (
diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/cart-view.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/cart-view.js index b7934a3a8..68e870b56 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/cart-view.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/cart-view.js @@ -14,20 +14,13 @@ import React, { useEffect } from "react"; import T from "i18n-react/dist/i18n-react"; import { connect } from "react-redux"; -import { - Box, - Button, - Grid2, - IconButton, - Paper, - Typography -} from "@mui/material"; +import { Box, Button, IconButton, Paper, Typography } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; import LockOpenIcon from "@mui/icons-material/LockOpen"; import LockClosedIcon from "@mui/icons-material/Lock"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; import { TotalRow } from "openstack-uicore-foundation/lib/components/mui/table/extra-rows"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import GridToolbar from "../../../../../../components/mui/grid-toolbar"; import history from "../../../../../../history"; import { checkoutCart, @@ -190,40 +183,17 @@ const CartView = ({ return ( <> - - - {cart && ( - {cart?.forms.length} forms in Cart - )} - - - - - - - - + + {!cart && ( {T.translate("edit_sponsor.cart_tab.no_cart")} @@ -231,11 +201,12 @@ const CartView = ({ )} {!!cart && ( <> + {cart?.forms.length} forms in Cart diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/add-sponsor-form-template-popup/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/add-sponsor-form-template-popup/index.js index 33b40332e..3154614a2 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/add-sponsor-form-template-popup/index.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/add-sponsor-form-template-popup/index.js @@ -140,7 +140,6 @@ const AddSponsorFormTemplatePopup = ({ { columnKey: "select", header: "", - width: 30, align: "center", render: (row) => ( ( { const img = row.images?.[0]; @@ -189,43 +186,38 @@ const SponsorFormItemFromInventoryPopup = ({ - - - {selectedRows.length} items selected - - - - handleSort("name", 1) - }, - { - label: T.translate( - "edit_sponsor.forms_tab.form_manage_items.sort_desc_label" - ), - onClick: () => handleSort("name", 0) - } - ]} - > - {" "} - {T.translate("general.sort_by")} - - - - - - - + + + handleSort("name", 1) + }, + { + label: T.translate( + "edit_sponsor.forms_tab.form_manage_items.sort_desc_label" + ), + onClick: () => handleSort("name", 0) + } + ]} + > + {" "} + {T.translate("general.sort_by")} + + + {selectedRows.length} items selected + {inventoryItems.length > 0 && ( diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/manage-items/sponsor-forms-manage-items.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/manage-items/sponsor-forms-manage-items.js index 86a48eae5..4e387ccb5 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/manage-items/sponsor-forms-manage-items.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/manage-items/sponsor-forms-manage-items.js @@ -14,20 +14,11 @@ import React, { useEffect, useState } from "react"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; -import { - Box, - Button, - Checkbox, - FormControlLabel, - FormGroup, - Grid2, - IconButton, - Tooltip -} from "@mui/material"; +import { Box, Button, IconButton, Tooltip } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; import ImageIcon from "@mui/icons-material/Image"; import MuiTableEditable from "openstack-uicore-foundation/lib/components/mui/editable-table"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import GridToolbar from "../../../../../../../components/mui/grid-toolbar"; import { addSponsorManagedFormItems, archiveSponsorCustomizedFormItem, @@ -257,7 +248,6 @@ const SponsorFormsManageItems = ({ { columnKey: "images", header: "", - width: 40, align: "center", render: (row) => row.images?.length > 0 ? ( @@ -287,72 +277,38 @@ const SponsorFormsManageItems = ({ )} hideIcon /> - - - {totalCount} items - - - - - } - label={T.translate( - "edit_sponsor.forms_tab.form_manage_items.show_archived" - )} - /> - - - - - - - - - - - - + + + + {totalCount} items
row.allowed_add_ons?.length > 0 ? row.allowed_add_ons.map((a) => `${a.type} ${a.name}`).join(", ") @@ -318,7 +309,6 @@ const SponsorFormsTab = ({ columnKey: "items_qty", header: T.translate("edit_sponsor.forms_tab.items"), sortable: true, - width: 90, render: (row) => `${row.items_count} ${ row.items_count === 1 @@ -405,70 +395,36 @@ const SponsorFormsTab = ({ message={T.translate("edit_sponsor.forms_tab.alert_info")} hideIcon /> - - - - {managedForms.totalCount + customizedForms.totalCount} forms - - - - - - } - label={T.translate("edit_sponsor.forms_tab.show_archived")} - /> - - - - - - - - - - - - + + + + + {managedForms.totalCount + customizedForms.totalCount} forms +
{ } ); - const archiveButton = screen.getByText("general.archive"); + const archiveButton = screen.getByTestId("action-archive"); await act(async () => { await userEvent.click(archiveButton); }); @@ -422,7 +422,7 @@ describe("SponsorPagesTab", () => { } ); - const unarchiveButton = screen.getByText("general.unarchive"); + const unarchiveButton = screen.getByTestId("action-archive"); await act(async () => { await userEvent.click(unarchiveButton); }); diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js index 90cf133cd..c423a096c 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js @@ -159,7 +159,6 @@ const AddSponsorPageTemplatePopup = ({ { columnKey: "select", header: "", - width: 30, align: "center", render: (row) => ( - - - - {managedPages.totalItems + customizedPages.totalItems}{" "} - {T.translate("edit_sponsor.pages_tab.pages")} - - - - - - } - label={T.translate("edit_sponsor.pages_tab.show_archived")} - /> - - - - - - - - - - - - + + + + + {managedPages.totalItems + customizedPages.totalItems}{" "} + {T.translate("edit_sponsor.pages_tab.pages")} +
- - - - {totalCount} {T.translate("edit_sponsor.purchase_tab.purchases")} - - - - - - + /> + + {totalCount} {T.translate("edit_sponsor.purchase_tab.purchases")} +
)} - - - - {users.totalCount}{" "} - {T.translate("sponsor_users.users").toLowerCase()} - - - + + - - - + {T.translate("sponsor_users.add_user")} + + + + {users.totalCount} {T.translate("sponsor_users.users").toLowerCase()} + {hasImportTasks && ( { }; return ( - requests.items.length > 0 && ( -
- - - {processRequest && ( - setProcessRequest(null)} - /> +
+ - ) + deleteDialogConfirmText={T.translate("general.confirm")} + confirmButtonColor="primary" + /> + + {processRequest && ( + setProcessRequest(null)} + /> + )} +
); }; diff --git a/src/pages/sponsors/sponsor-users-list-page/components/users-table.js b/src/pages/sponsors/sponsor-users-list-page/components/users-table.js index fc85ead9f..74df0520c 100644 --- a/src/pages/sponsors/sponsor-users-list-page/components/users-table.js +++ b/src/pages/sponsors/sponsor-users-list-page/components/users-table.js @@ -119,27 +119,25 @@ const UsersTable = ({ }); return ( - users.items.length > 0 && ( -
- user.email} - onEdit={onEdit} - onDelete={handleUserDelete} - deleteDialogBody={(user) => - T.translate("edit_sponsor.remove_sponsor_user_warning", { user }) - } - onPageChange={handleUsersPageChange} - onPerPageChange={handlePerPageChange} - onSort={handleUsersSort} - /> -
- ) +
+ user.email} + onEdit={onEdit} + onDelete={handleUserDelete} + deleteDialogBody={(user) => + T.translate("edit_sponsor.remove_sponsor_user_warning", { user }) + } + onPageChange={handleUsersPageChange} + onPerPageChange={handlePerPageChange} + onSort={handleUsersSort} + /> +
); }; diff --git a/src/pages/sponsors/sponsor-users-list-page/index.js b/src/pages/sponsors/sponsor-users-list-page/index.js index 2b4fce0f4..28824d2d1 100644 --- a/src/pages/sponsors/sponsor-users-list-page/index.js +++ b/src/pages/sponsors/sponsor-users-list-page/index.js @@ -15,10 +15,10 @@ import React, { useEffect, useRef, useState } from "react"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; import { Breadcrumb } from "react-breadcrumbs"; -import { Box, Button, CircularProgress, Grid2 } from "@mui/material"; +import { Box, Button, CircularProgress } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; import SaveAltIcon from "@mui/icons-material/SaveAlt"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import GridToolbar from "../../../components/mui/grid-toolbar"; import { deleteSponsorUser, deleteSponsorUserRequest, @@ -106,51 +106,22 @@ const SponsorUsersListPage = ({ }} />

{T.translate("sponsor_users.users")}

- - - - {requests.totalCount} {T.translate("sponsor_users.access_request")} - - - + - - - + {T.translate("sponsor_users.import_user")} + + + {hasImportTasks && ( )} + + {requests.totalCount} {T.translate("sponsor_users.access_request")} + + {T.translate("summit_sponsorship_list.alert_info")} - - - {totalSponsorships} summit tiers - - + - - - + {T.translate("summit_sponsorship_list.add_sponsorship")} + + + {totalSponsorships} summit tiers {sponsorships.length === 0 && (
{T.translate("summit_sponsorship_list.no_sponsorships")}
diff --git a/src/pages/sponsorship-types/sponsorship-list-page.js b/src/pages/sponsorship-types/sponsorship-list-page.js index ffd0f2232..0f3784760 100644 --- a/src/pages/sponsorship-types/sponsorship-list-page.js +++ b/src/pages/sponsorship-types/sponsorship-list-page.js @@ -14,10 +14,10 @@ import React, { useEffect, useState } from "react"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; -import { Box, Button, Grid2 } from "@mui/material"; +import { Box, Button } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import GridToolbar from "../../components/mui/grid-toolbar"; import { getSponsorships, getSponsorship, @@ -119,54 +119,20 @@ const SponsorshipListPage = ({ return (

{T.translate("sponsorship_list.sponsorship_types_list")}

- - - - {totalSponsorships}{" "} - {T.translate("sponsorship_list.sponsorship_types")} - - - - - - - - - + + + + {totalSponsorships} {T.translate("sponsorship_list.sponsorship_types")} + {sponsorships.length > 0 && ( ( + <> +
{row.name}
+ {!!row.invite_only_registration && ( + + )} + + ) }, { columnKey: "sponsor_qty", @@ -143,78 +151,42 @@ const SummitDirectoryPage = ({ columnKey: "end_date", header: T.translate("directory.end_date"), render: (row) => formatEpoch(row.end_date, "MMMM Do YYYY") - }, - { - columnKey: "invite_only_registration", - header: "", - width: 120, - render: (row) => - row.invite_only_registration ? ( - - ) : null } ]; return ( -

- {T.translate("directory.summits")} ({totalSummits}) -

- - - - - - - - } - label={T.translate("directory.hide_past_events")} - /> - - {canAddSummits && ( - - )} - - +

{T.translate("directory.summits")}

+ + {canAddSummits && ( + + )} + + + {totalSummits} {T.translate("directory.summits").toLowerCase()} + deleteSummit(id) : undefined} onSelect={handleSelectSummit} - getName={(row) => row.name} - deleteDialogTitle={T.translate("general.are_you_sure")} deleteDialogBody={(name) => `${T.translate("directory.remove_warning")} ${name}` } - deleteDialogConfirmText={T.translate("general.yes_delete")} - confirmButtonColor="error" />
); diff --git a/src/pages/tags/tag-list-page.js b/src/pages/tags/tag-list-page.js index ff18d737c..12da3f260 100644 --- a/src/pages/tags/tag-list-page.js +++ b/src/pages/tags/tag-list-page.js @@ -16,10 +16,9 @@ import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; import Box from "@mui/material/Box"; import Button from "@mui/material/Button"; -import Grid2 from "@mui/material/Grid2"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; -import MuiSearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; import AddIcon from "@mui/icons-material/Add"; +import GridToolbar from "../../components/mui/grid-toolbar"; import TagsDialog from "./tags-popup"; import { getTags, @@ -121,54 +120,22 @@ const TagListPage = ({

{T.translate("tag_list.tag_list")}

- - - - {totalTags}{" "} - {totalTags === 1 - ? T.translate("tag_list.item") - : T.translate("tag_list.items")} - - - } + onClick={() => handleNewTag()} > - - - - - - + {T.translate("tag_list.add_tag")} + + + {totalTags}

{T.translate("tax_type_list.tax_type_list")}

- - - - {totalTaxTypes} {T.translate("general.items")} - - - } > - - - - - - - - - + {T.translate("tax_type_list.add_tax_type")} + + + + {totalTaxTypes} {T.translate("general.items")} + {taxTypes.length === 0 && (
{T.translate("tax_type_list.no_tax_types")}
diff --git a/src/pages/tickets/payment-profile/payment-profile-list-page.js b/src/pages/tickets/payment-profile/payment-profile-list-page.js index 71212739e..8259f7fce 100644 --- a/src/pages/tickets/payment-profile/payment-profile-list-page.js +++ b/src/pages/tickets/payment-profile/payment-profile-list-page.js @@ -14,10 +14,10 @@ import React, { useEffect, useState } from "react"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; -import { Box, Button, Grid2 } from "@mui/material"; +import { Box, Button } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import GridToolbar from "../../../components/mui/grid-toolbar"; import { getPaymentProfiles, getPaymentProfile, @@ -141,55 +141,27 @@ const PaymentProfileListPage = ({ return (

{T.translate("payment_profiles.payment_profiles_list")}

- - - - {totalPaymentProfiles}{" "} - {T.translate("payment_profiles.payment_profiles")} - - - } > - - - - - - + {T.translate("payment_profiles.add_payment_profile")} + + + + {totalPaymentProfiles}{" "} + {T.translate("payment_profiles.payment_profiles")} + {paymentProfiles.length === 0 && (
{T.translate("payment_profiles.no_payment_profiles")}
diff --git a/src/pages/track_chairs/track-chair-list-page.js b/src/pages/track_chairs/track-chair-list-page.js index 80613e088..077cbbc59 100644 --- a/src/pages/track_chairs/track-chair-list-page.js +++ b/src/pages/track_chairs/track-chair-list-page.js @@ -18,7 +18,6 @@ import { Box, Button, FormControl, - Grid2, IconButton, InputAdornment, MenuItem, @@ -27,7 +26,7 @@ import { import AddIcon from "@mui/icons-material/Add"; import ClearIcon from "@mui/icons-material/Clear"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import GridToolbar from "../../components/mui/grid-toolbar"; import { getTrackChairs, deleteTrackChair, @@ -38,14 +37,6 @@ import { import { DEFAULT_CURRENT_PAGE } from "../../utils/constants"; import TrackChairDialog from "./components/track-chair-dialog"; -const buttonSx = { - height: "36px", - padding: "6px 16px", - fontSize: "1.4rem", - lineHeight: "2.4rem", - letterSpacing: "0.4px" -}; - const TrackChairListPage = ({ currentSummit, trackChairs, @@ -175,105 +166,76 @@ const TrackChairListPage = ({ return (

{T.translate("track_chairs.list")}

- - - - {totalTrackChairs} {T.translate("track_chairs.track_chairs")} - - - - - - - - - - - - + selected ? ( + tracks_ddl.find((t) => t.value === selected)?.label + ) : ( + + {T.translate("track_chairs.placeholders.select_track")} + + ) + } + endAdornment={ + trackId ? ( + + + getTrackChairs( + null, + term, + DEFAULT_CURRENT_PAGE, + perPage, + order, + orderDir + ) + } + > + + + + ) : null + } > - - - - - + {tracks_ddl.map((t) => ( + + {t.label} + + ))} + + + + + + + {totalTrackChairs} {T.translate("track_chairs.track_chairs")} + {trackChairs.length === 0 ? (
{T.translate("track_chairs.no_items")}
diff --git a/src/reducers/sponsors/sponsor-forms-list-reducer.js b/src/reducers/sponsors/sponsor-forms-list-reducer.js index ee3213724..c4c47d5a2 100644 --- a/src/reducers/sponsors/sponsor-forms-list-reducer.js +++ b/src/reducers/sponsors/sponsor-forms-list-reducer.js @@ -12,7 +12,6 @@ * */ import { LOGOUT_USER } from "openstack-uicore-foundation/lib/security/actions"; -import T from "i18n-react/dist/i18n-react"; import { RECEIVE_GLOBAL_TEMPLATES, RECEIVE_SPONSOR_FORM, @@ -110,11 +109,7 @@ const sponsorFormsListReducer = (state = DEFAULT_STATE, action) => { name: a.name, opens_at: a.opens_at || "", expires_at: a.expires_at || "", - items_qty: `${a.items.length} ${ - a.items.length === 1 - ? T.translate("sponsor_forms.item_label_singular") - : T.translate("sponsor_forms.item_label_plural") - }`, + items_qty: a.items.length, is_archived: a.is_archived, sponsorship_types }; @@ -209,9 +204,7 @@ const sponsorFormsListReducer = (state = DEFAULT_STATE, action) => { id: a.id, code: a.code, name: a.name, - items_qty: `${a.items.length} ${ - a.items.length === 1 ? "Item" : "Items" - }` + items_qty: a.items.length })); const items = diff --git a/src/reducers/sponsors_inventory/form-template-list-reducer.js b/src/reducers/sponsors_inventory/form-template-list-reducer.js index ea2cf493e..72c3b8d28 100644 --- a/src/reducers/sponsors_inventory/form-template-list-reducer.js +++ b/src/reducers/sponsors_inventory/form-template-list-reducer.js @@ -75,9 +75,7 @@ const formTemplateListReducer = (state = DEFAULT_STATE, action = {}) => { id: a.id, code: a.code, name: a.name, - items_qty: `${a.items.length} ${ - a.items.length === 1 ? "Item" : "Items" - }`, + items_qty: a.items.length, is_archived: a.is_archived })); diff --git a/yarn.lock b/yarn.lock index 3065f215e..b55a39bac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9042,10 +9042,10 @@ open@^10.0.3: is-inside-container "^1.0.0" wsl-utils "^0.1.0" -openstack-uicore-foundation@5.0.44: - version "5.0.44" - resolved "https://registry.yarnpkg.com/openstack-uicore-foundation/-/openstack-uicore-foundation-5.0.44.tgz#d40d42d083de98bfb8d5e5baba7ff9b14267902c" - integrity sha512-wThO8s5IIZbpjlzhZKJ3KMNBYhTjt/q2TZyazfiDKOR2YMV51A8oudy6/uMe5UkQPMfuApLg4abPXZcNCdaNBA== +openstack-uicore-foundation@5.0.49-beta.2: + version "5.0.49-beta.2" + resolved "https://registry.yarnpkg.com/openstack-uicore-foundation/-/openstack-uicore-foundation-5.0.49-beta.2.tgz#e2090f5aba4a836bc943c6a360e1ad7af963ff0e" + integrity sha512-9pbIYZqZOTrsNjqQjcl0MRqpAGpQwHFX2gdI5wHJjlzLwkevtS4PmnhXsdCAd/wG1OuXmdjPShhgKDS5OsH9ag== dependencies: use-sync-external-store "^1.6.0"