From 746a4ef565a9221bacf3f288e494962931f02014 Mon Sep 17 00:00:00 2001 From: Santiago Palenque Date: Tue, 4 Aug 2026 19:29:03 -0300 Subject: [PATCH 01/13] chore: apply mui-table changes --- .../media_uploads/media-upload-list-page.js | 1 - .../add-form-template-item-popup.js | 2 -- .../form-template-from-duplicate-popup.js | 1 - .../form-template-item-list-page.js | 1 - .../inventory/inventory-list-page.js | 1 - ...nsor-form-add-item-from-inventory-popup.js | 2 -- .../sponsor-form-item-list-page/index.js | 1 - .../sponsors/sponsor-forms-list-page/index.js | 10 +------ .../add-sponsor-form-template-popup/index.js | 1 - .../sponsor-form-item-from-inventory.js | 2 -- .../sponsor-forms-manage-items.js | 1 - .../tabs/sponsor-forms-tab/index.js | 10 ++----- .../add-sponsor-page-template-popup/index.js | 1 - src/pages/summits/summit-directory-page.js | 28 +++++++++---------- 14 files changed, 16 insertions(+), 46 deletions(-) diff --git a/src/pages/media_uploads/media-upload-list-page.js b/src/pages/media_uploads/media-upload-list-page.js index c061ef4cf..83be2cb9b 100644 --- a/src/pages/media_uploads/media-upload-list-page.js +++ b/src/pages/media_uploads/media-upload-list-page.js @@ -156,7 +156,6 @@ const MediaUploadListPage = ({ ( { 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]; diff --git a/src/pages/sponsors-global/inventory/inventory-list-page.js b/src/pages/sponsors-global/inventory/inventory-list-page.js index 2919aabc1..df35adbca 100644 --- a/src/pages/sponsors-global/inventory/inventory-list-page.js +++ b/src/pages/sponsors-global/inventory/inventory-list-page.js @@ -173,7 +173,6 @@ const InventoryListPage = ({ { columnKey: "hasImage", header: "", - width: 40, align: "center", render: (row) => { const img = row.images?.[0]; diff --git a/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-add-item-from-inventory-popup.js b/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-add-item-from-inventory-popup.js index 8df83f36c..d5c07ab94 100644 --- a/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-add-item-from-inventory-popup.js +++ b/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-add-item-from-inventory-popup.js @@ -92,7 +92,6 @@ const SponsorFormAddItemFromInventoryPopup = ({ { columnKey: "select", header: "", - width: 30, align: "center", render: (row) => ( { 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 87721eef9..b49c140bc 100644 --- a/src/pages/sponsors/sponsor-form-item-list-page/index.js +++ b/src/pages/sponsors/sponsor-form-item-list-page/index.js @@ -244,7 +244,6 @@ const SponsorFormItemListPage = ({ { columnKey: "hasImage", header: "", - width: 40, align: "center", render: (row) => { const img = row.images?.[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..82d3248d1 100644 --- a/src/pages/sponsors/sponsor-forms-list-page/index.js +++ b/src/pages/sponsors/sponsor-forms-list-page/index.js @@ -219,12 +219,8 @@ const SponsorFormsListPage = ({ 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 +276,7 @@ const SponsorFormsListPage = ({ cursor: "pointer", textDecoration: "underline dotted", display: "block", - whiteSpace: "normal", - wordBreak: "break-word", + whiteSpace: "nowrap", verticalAlign: "middle" }} title={label} @@ -297,19 +292,16 @@ const SponsorFormsListPage = ({ columnKey: "opens_at", header: T.translate("edit_sponsor.forms_tab.opens_at"), sortable: true, - width: 115, render: (row) => formatDate(row.opens_at) }, { columnKey: "expires_at", header: T.translate("edit_sponsor.forms_tab.expires_at"), sortable: true, - width: 120, render: (row) => formatDate(row.expires_at) }, { columnKey: "items_qty", - width: 90, header: T.translate("sponsor_forms.items_column_label"), sortable: false }, 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 5fa0eb199..f8fbbe4d1 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]; 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 cff1c1065..81421f064 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 @@ -269,7 +269,6 @@ const SponsorFormsManageItems = ({ { columnKey: "images", header: "", - width: 40, align: "center", render: (row) => row.images?.length > 0 ? ( diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/index.js index 5e499a935..2b7c1d19a 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/index.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/index.js @@ -296,7 +296,6 @@ const SponsorFormsTab = ({ columnKey: "allowed_add_ons", header: T.translate("edit_sponsor.forms_tab.add_ons"), sortable: true, - width: 120, render: (row) => row.allowed_add_ons?.length > 0 ? row.allowed_add_ons.map((a) => `${a.type} ${a.name}`).join(", ") @@ -305,20 +304,17 @@ const SponsorFormsTab = ({ { columnKey: "opens_at", header: T.translate("edit_sponsor.forms_tab.opens_at"), - sortable: true, - width: 115 + sortable: true }, { columnKey: "expires_at", header: T.translate("edit_sponsor.forms_tab.expires_at"), - sortable: true, - width: 120 + sortable: true }, { columnKey: "items_qty", header: T.translate("edit_sponsor.forms_tab.items"), sortable: true, - width: 90, render: (row) => `${row.items_count} ${ row.items_count === 1 @@ -478,7 +474,6 @@ const SponsorFormsTab = ({ sortDir: customizedForms.orderDir, disableProp: "is_archived" }} - tableSx={{ tableLayout: "auto", minWidth: 910 }} perPage={customizedForms.perPage} totalRows={customizedForms.totalCount} currentPage={customizedForms.currentPage} @@ -499,7 +494,6 @@ const SponsorFormsTab = ({ sortCol: managedForms.order, sortDir: managedForms.orderDir }} - tableSx={{ tableLayout: "auto", minWidth: 910 }} perPage={managedForms.perPage} totalRows={managedForms.totalCount} currentPage={managedForms.currentPage} 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 36e8343c3..4b9df9355 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) => ( ( + <> +
{row.name}
+ {!!row.invite_only_registration && ( + + )} + + ) }, { columnKey: "sponsor_qty", @@ -143,15 +155,6 @@ 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 } ]; @@ -214,7 +217,6 @@ const SummitDirectoryPage = ({ 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" /> ); From 76a1fe159e42fa35505e1ba43047ad825d508553 Mon Sep 17 00:00:00 2001 From: Santiago Palenque Date: Thu, 6 Aug 2026 19:47:23 -0300 Subject: [PATCH 02/13] chore: adjusting tables one by one - WIP --- src/actions/sponsor-forms-actions.js | 4 ++- .../sponsors/show-purchase-list-page/index.js | 5 ++-- .../sponsors/sponsor-forms-list-page/index.js | 25 +++++++++++-------- .../tabs/sponsor-forms-tab/index.js | 6 +++-- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/actions/sponsor-forms-actions.js b/src/actions/sponsor-forms-actions.js index f524f2c6a..b80305792 100644 --- a/src/actions/sponsor-forms-actions.js +++ b/src/actions/sponsor-forms-actions.js @@ -148,7 +148,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/pages/sponsors/show-purchase-list-page/index.js b/src/pages/sponsors/show-purchase-list-page/index.js index c20075a68..cecde6fd5 100644 --- a/src/pages/sponsors/show-purchase-list-page/index.js +++ b/src/pages/sponsors/show-purchase-list-page/index.js @@ -116,7 +116,7 @@ const ShowPurchaseListPage = ({ { columnKey: "purchased", header: T.translate("sponsor_show_purchases.purchased"), - width: 200, + width: 180, sortable: true }, { @@ -171,7 +171,7 @@ const ShowPurchaseListPage = ({ { columnKey: "details", header: "", - width: 100, + width: 80, align: "center", render: (row) => ( - + diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/index.js index 2b7c1d19a..8fa808a86 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/index.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/index.js @@ -304,12 +304,14 @@ const SponsorFormsTab = ({ { columnKey: "opens_at", header: T.translate("edit_sponsor.forms_tab.opens_at"), - sortable: true + sortable: true, + width: 115 }, { columnKey: "expires_at", header: T.translate("edit_sponsor.forms_tab.expires_at"), - sortable: true + sortable: true, + width: 120 }, { columnKey: "items_qty", From a712d4f5065025bd70de6b73e4979a25438e1bb4 Mon Sep 17 00:00:00 2001 From: Santiago Palenque Date: Fri, 7 Aug 2026 18:08:41 -0300 Subject: [PATCH 03/13] chore: update uicore --- package.json | 1 - yarn.lock | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f91e7ebd3..3f280711a 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,6 @@ "moment-duration-format": "^2.3.2", "moment-timezone": "^0.5.33", "mui-color-input": "^9.0.0", - "openstack-uicore-foundation": "5.0.55", "p-limit": "^6.1.0", "path-browserify": "^1.0.1", "postcss-loader": "^6.2.1", diff --git a/yarn.lock b/yarn.lock index 1b187bb5b..1f4d4cb8f 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.55: - version "5.0.55" - resolved "https://registry.yarnpkg.com/openstack-uicore-foundation/-/openstack-uicore-foundation-5.0.55.tgz#fcf83cc42464a9daafb42f0585eb53d8aa301e67" - integrity sha512-fNvqiREmdUw1Y6lnYmvHx+RW3b+sFJbyLX/c+myg5lXyzWAfxcu9r8DBQmMVEF0nwqppFD308J1BBQhOfF7A0w== +openstack-uicore-foundation@5.0.49-beta.0: + version "5.0.49-beta.0" + resolved "https://registry.yarnpkg.com/openstack-uicore-foundation/-/openstack-uicore-foundation-5.0.49-beta.0.tgz#89e985a21196551b19ad04cfce615c32c8058c92" + integrity sha512-ktXOuBAXld4QfxjnruqQFtVx7rOK57vuls0cMm3YItPkyox0pCxr6WwL6n6xo/FQKcevH0zKWUrZZJb/x0PS4A== dependencies: use-sync-external-store "^1.6.0" From 47991fad8aa598a21640e7aabdf41e0fc01db36a Mon Sep 17 00:00:00 2001 From: Santiago Palenque Date: Fri, 7 Aug 2026 18:28:02 -0300 Subject: [PATCH 04/13] chore: fix tests --- .../__tests__/show-pages-list-page.test.js | 4 ++-- .../sponsor-pages-tab/__tests__/sponsor-pages-tab.test.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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/sponsor-page/tabs/sponsor-pages-tab/__tests__/sponsor-pages-tab.test.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/__tests__/sponsor-pages-tab.test.js index 6821d609d..b3e2a6cf3 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/__tests__/sponsor-pages-tab.test.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/__tests__/sponsor-pages-tab.test.js @@ -396,7 +396,7 @@ describe("SponsorPagesTab", () => { } ); - 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); }); From 6d892f26a7218f1bd364817d589de0f05df69b31 Mon Sep 17 00:00:00 2001 From: Santiago Palenque Date: Wed, 19 Aug 2026 11:28:21 -0300 Subject: [PATCH 05/13] chore: adjust sponsors and sponsors purchases --- .../sponsors/show-purchase-list-page/index.js | 37 +++++----- src/pages/sponsors/sponsor-list-page.js | 73 ++++++++----------- 2 files changed, 49 insertions(+), 61 deletions(-) diff --git a/src/pages/sponsors/show-purchase-list-page/index.js b/src/pages/sponsors/show-purchase-list-page/index.js index cecde6fd5..a8efef105 100644 --- a/src/pages/sponsors/show-purchase-list-page/index.js +++ b/src/pages/sponsors/show-purchase-list-page/index.js @@ -16,7 +16,6 @@ import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; import { Breadcrumb } from "react-breadcrumbs"; import { - Box, Button, CircularProgress, Grid2, @@ -116,13 +115,14 @@ const ShowPurchaseListPage = ({ { columnKey: "purchased", header: T.translate("sponsor_show_purchases.purchased"), - width: 180, - 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: 80, align: "center", + width: 86, + cellSx: { p: 0 }, render: (row) => ( diff --git a/src/pages/sponsors/sponsor-list-page.js b/src/pages/sponsors/sponsor-list-page.js index 9bc7d95f8..a56aa11d2 100644 --- a/src/pages/sponsors/sponsor-list-page.js +++ b/src/pages/sponsors/sponsor-list-page.js @@ -14,7 +14,7 @@ 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, Grid2, 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"; @@ -25,9 +25,9 @@ import { upsertLeadReportSettings } from "../../actions/summit-actions"; import { - getSponsors, addSponsorToSummit, deleteSponsor, + getSponsors, updateSponsorOrder } from "../../actions/sponsor-actions"; import Member from "../../models/member"; @@ -197,53 +197,40 @@ const SponsorListPage = ({ return (
-

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

- +

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

- - {totalSponsors} sponsors - - - - - - - - {canAddSponsors && ( - + + + debounced + /> + + + {canAddSponsors && ( + + )} From ef0f7115ed3cd090dba562f1da4ea5ea1a80d508 Mon Sep 17 00:00:00 2001 From: Santiago Palenque Date: Wed, 19 Aug 2026 11:47:10 -0300 Subject: [PATCH 06/13] chore: sponsor forms grid --- src/i18n/en.json | 2 - .../sponsors/sponsor-forms-list-page/index.js | 39 +++++++------------ .../sponsors/sponsor-forms-list-reducer.js | 11 +----- .../form-template-list-reducer.js | 4 +- 4 files changed, 18 insertions(+), 38 deletions(-) diff --git a/src/i18n/en.json b/src/i18n/en.json index ee09ba95a..d1ba65e1b 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -2809,8 +2809,6 @@ "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.", diff --git a/src/pages/sponsors/sponsor-forms-list-page/index.js b/src/pages/sponsors/sponsor-forms-list-page/index.js index 9a15d946a..aa9cb0017 100644 --- a/src/pages/sponsors/sponsor-forms-list-page/index.js +++ b/src/pages/sponsors/sponsor-forms-list-page/index.js @@ -16,7 +16,6 @@ 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, @@ -308,7 +307,7 @@ const SponsorFormsListPage = ({ columnKey: "items_qty", header: T.translate("sponsor_forms.items_column_label"), sortable: false, - cellSx: { whiteSpace: "nowrap" } + cellSx: { textAlign: "center" } }, { columnKey: "manage_items", @@ -342,21 +341,19 @@ const SponsorFormsListPage = ({ return (
-

{T.translate("sponsor_forms.forms")}

+

+ {T.translate("sponsor_forms.forms")} {totalCount} +

- - - {totalCount} forms + + + - + - - - - + + + + {totalTemplates} {T.translate("emails.templates")} + {templates.length === 0 && (
{T.translate("emails.no_templates")}
diff --git a/src/pages/media_uploads/media-upload-list-page.js b/src/pages/media_uploads/media-upload-list-page.js index 83be2cb9b..c4a47833d 100644 --- a/src/pages/media_uploads/media-upload-list-page.js +++ b/src/pages/media_uploads/media-upload-list-page.js @@ -105,42 +105,23 @@ const MediaUploadListPage = ({ return (

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

- - - - {totalMediaUploads} {T.translate("media_upload.media_uploads")} - + + + - - - - + + + + + {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/sponsors-global/add-on-types/add-on-types-list-page.js b/src/pages/sponsors-global/add-on-types/add-on-types-list-page.js index 2c743272c..cb5e3c311 100644 --- a/src/pages/sponsors-global/add-on-types/add-on-types-list-page.js +++ b/src/pages/sponsors-global/add-on-types/add-on-types-list-page.js @@ -12,8 +12,7 @@ * */ import React, { useEffect, useState } from "react"; -import { Button, Grid2 } from "@mui/material"; -import Box from "@mui/material/Box"; +import { Box, Button, Grid2 } 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"; @@ -126,45 +125,23 @@ const AddOnTypesListPage = ({ }} />

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

- - - - {totalAddOnTypes} {T.translate("add_on_types_list.add_on_types")} - + + + - - - - + + + {totalAddOnTypes} {T.translate("add_on_types_list.add_on_types")} + {addOnTypes.length > 0 && (
diff --git a/src/pages/sponsors-global/form-templates/form-template-item-list-page.js b/src/pages/sponsors-global/form-templates/form-template-item-list-page.js index cd9170dc2..895c48794 100644 --- a/src/pages/sponsors-global/form-templates/form-template-item-list-page.js +++ b/src/pages/sponsors-global/form-templates/form-template-item-list-page.js @@ -243,57 +243,37 @@ const FormTemplateItemListPage = ({ > {T.translate("form_template_item_list.alert_info")} - - - {totalFormTemplateItems} items + + + + + } + label={T.translate("form_template_item_list.show_archived")} + /> + - - - - - } - label={T.translate("form_template_item_list.show_archived")} - /> - - - - - + + + {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..24233d180 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 @@ -14,13 +14,13 @@ import React, { useEffect, useState } from "react"; import { Alert, + Box, Button, Checkbox, FormControlLabel, FormGroup, Grid2 } from "@mui/material"; -import Box from "@mui/material/Box"; import AddIcon from "@mui/icons-material/Add"; import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; import { connect } from "react-redux"; @@ -231,11 +231,7 @@ const FormTemplateListPage = ({ return (
-

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

+

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

- - - {totalFormTemplates} forms - - + + - - - - + + + + + + + + {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 df35adbca..cb843f376 100644 --- a/src/pages/sponsors-global/inventory/inventory-list-page.js +++ b/src/pages/sponsors-global/inventory/inventory-list-page.js @@ -14,13 +14,13 @@ import React, { useEffect, useState } from "react"; import { Alert, + Box, Button, Checkbox, FormControlLabel, FormGroup, Grid2 } from "@mui/material"; -import Box from "@mui/material/Box"; import AddIcon from "@mui/icons-material/Add"; import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; import { connect } from "react-redux"; @@ -209,28 +209,8 @@ const InventoryListPage = ({ > {T.translate("inventory_item_list.alert_info")} - - - {totalInventoryItems} items - - + + - - - + + + + + + {totalInventoryItems} items {inventoryItems.length > 0 && (
diff --git a/src/pages/sponsors/show-pages-list-page/index.js b/src/pages/sponsors/show-pages-list-page/index.js index b93ad1914..a91101131 100644 --- a/src/pages/sponsors/show-pages-list-page/index.js +++ b/src/pages/sponsors/show-pages-list-page/index.js @@ -203,21 +203,8 @@ const ShowPagesListPage = ({

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

- - - - {totalCount} {T.translate("show_pages.pages")} - - - + + - + - + - + + + {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 a8efef105..65df7dac5 100644 --- a/src/pages/sponsors/show-purchase-list-page/index.js +++ b/src/pages/sponsors/show-purchase-list-page/index.js @@ -16,6 +16,7 @@ import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; import { Breadcrumb } from "react-breadcrumbs"; import { + Box, Button, CircularProgress, Grid2, @@ -218,20 +219,8 @@ const ShowPurchaseListPage = ({ }} />
-

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

- +

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

+ - + + + {totalCount}{" "} + {T.translate("sponsor_show_purchases.purchases").toLowerCase()} +
{T.translate("sponsor_form_item_list.alert_info")} - - - {totalCount} items - - + + + + + + + {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 aa9cb0017..5d986bc83 100644 --- a/src/pages/sponsors/sponsor-forms-list-page/index.js +++ b/src/pages/sponsors/sponsor-forms-list-page/index.js @@ -16,6 +16,7 @@ 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, @@ -341,11 +342,9 @@ const SponsorFormsListPage = ({ return (
-

- {T.translate("sponsor_forms.forms")} {totalCount} -

+

{T.translate("sponsor_forms.forms")}

- + + {totalCount} forms {sponsorForms.length > 0 && (
diff --git a/src/pages/sponsors/sponsor-list-page.js b/src/pages/sponsors/sponsor-list-page.js index a56aa11d2..6e4b745d5 100644 --- a/src/pages/sponsors/sponsor-list-page.js +++ b/src/pages/sponsors/sponsor-list-page.js @@ -197,19 +197,8 @@ const SponsorListPage = ({ return (
-

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

- +

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

+ - + {canAddSponsors && ( + + + + {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..ec0b6d7bb 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 @@ -190,35 +190,20 @@ const CartView = ({ return ( <> - - - {cart && ( - {cart?.forms.length} forms in Cart - )} - - + + - + @@ -231,6 +216,7 @@ const CartView = ({ )} {!!cart && ( <> + {cart?.forms.length} forms in Cart - - - {totalCount} items - - + + - + - + - + + {totalCount} items
- - - - {managedForms.totalCount + customizedForms.totalCount} forms - - - + + - + - + - + + + {managedForms.totalCount + customizedForms.totalCount} forms +
- - - - {managedPages.totalItems + customizedPages.totalItems}{" "} - {T.translate("edit_sponsor.pages_tab.pages")} - - - + + - + - + - + + + {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")} +

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

- - - - {requests.totalCount} {T.translate("sponsor_users.access_request")} - + + + - - - - + + + @@ -167,6 +147,10 @@ const SponsorUsersListPage = ({ )} + + {requests.totalCount} {T.translate("sponsor_users.access_request")} + + {T.translate("summit_sponsorship_list.alert_info")} - - - {totalSponsorships} summit tiers - - - - - - + + + + {totalSponsorships} summit tiers {sponsorships.length === 0 && (
{T.translate("summit_sponsorship_list.no_sponsorships")}
diff --git a/src/pages/summits/summit-directory-page.js b/src/pages/summits/summit-directory-page.js index fd5e893ac..05a0d3d8a 100644 --- a/src/pages/summits/summit-directory-page.js +++ b/src/pages/summits/summit-directory-page.js @@ -160,27 +160,16 @@ const SummitDirectoryPage = ({ return ( -

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

- - +

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

+ + - + + + {canAddSummits && ( )} + + {totalSummits} {T.translate("directory.summits").toLowerCase()} +

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

- - - - {totalTags}{" "} - {totalTags === 1 - ? T.translate("tag_list.item") - : T.translate("tag_list.items")} - + + + - - - - + + {totalTags} Date: Wed, 19 Aug 2026 16:32:06 -0300 Subject: [PATCH 08/13] chore: create universal grid toolbar component --- src/components/mui/grid-toolbar.js | 96 +++++++++++++++++++ .../sponsors/show-pages-list-page/index.js | 37 ++++--- .../components/request-table.js | 58 ++++++----- .../components/users-table.js | 40 ++++---- .../sponsors/sponsor-users-list-page/index.js | 20 ++-- 5 files changed, 178 insertions(+), 73 deletions(-) create mode 100644 src/components/mui/grid-toolbar.js diff --git a/src/components/mui/grid-toolbar.js b/src/components/mui/grid-toolbar.js new file mode 100644 index 000000000..cb00aae90 --- /dev/null +++ b/src/components/mui/grid-toolbar.js @@ -0,0 +1,96 @@ +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, checkbox, children }) => { + const hasSearch = !!searchProps; + const hasCheckbox = !!checkbox; + + 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) { + searchSize = { xs: 12, md: 6 }; + actionsSize = { xs: 12, md: 6 }; + } else if (hasCheckbox) { + checkboxSize = { xs: 12, md: 2 }; + actionsSize = { xs: 12, md: 10 }; + } else { + actionsSize = { xs: 12, md: 12 }; + } + + return ( + + {hasSearch && ( + + + + )} + {hasCheckbox && ( + + + + } + label={checkbox.label} + sx={{ whiteSpace: "nowrap" }} + /> + + + )} + + {/* children are expected to be Button-like elements accepting `sx` */} + {React.Children.map(children, (child) => + child + ? React.cloneElement(child, { + sx: { width: { xs: "100%", md: "auto" }, ...child.props.sx } + }) + : child + )} + + + ); +}; + +GridToolbar.propTypes = { + searchProps: PropTypes.shape({ + term: PropTypes.string, + onSearch: PropTypes.func.isRequired, + placeholder: PropTypes.string, + debounced: PropTypes.bool + }), + checkbox: PropTypes.shape({ + checked: PropTypes.bool, + onChange: PropTypes.func, + label: PropTypes.node, + ariaLabel: PropTypes.string + }) +}; + +GridToolbar.defaultProps = { + searchProps: null, + checkbox: null +}; + +export default GridToolbar; diff --git a/src/pages/sponsors/show-pages-list-page/index.js b/src/pages/sponsors/show-pages-list-page/index.js index a91101131..d1a57adde 100644 --- a/src/pages/sponsors/show-pages-list-page/index.js +++ b/src/pages/sponsors/show-pages-list-page/index.js @@ -203,9 +203,16 @@ const ShowPagesListPage = ({

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

- - - + + + + + + } label={T.translate("show_pages.show_archived")} + sx={{ whiteSpace: "nowrap" }} /> - - - - + - - - - - - + {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")} 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")}

- - - - - + + {/* TODO: remove this wrapper once SummitDropdown is migrated to MUI */} + - - - - - + + + {totalMediaUploads} {T.translate("media_upload.media_uploads")} diff --git a/src/pages/selection-plans/selection-plan-list-page.js b/src/pages/selection-plans/selection-plan-list-page.js index 8486b4367..d6aaa79ce 100644 --- a/src/pages/selection-plans/selection-plan-list-page.js +++ b/src/pages/selection-plans/selection-plan-list-page.js @@ -14,12 +14,11 @@ import React, { useCallback, useEffect, useState } from "react"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; -import Grid2 from "@mui/material/Grid2"; import Box from "@mui/material/Box"; import Button from "@mui/material/Button"; import AddIcon from "@mui/icons-material/Add"; -import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; +import GridToolbar from "../../components/mui/grid-toolbar"; import { deleteSelectionPlan, getSelectionPlan, @@ -172,25 +171,17 @@ const SelectionPlanListPage = ({

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

- - - - - - - - + + + {totalSelectionPlans} items {selectionPlans.length === 0 && ( 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")} diff --git a/src/pages/sponsors-global/form-templates/form-template-item-list-page.js b/src/pages/sponsors-global/form-templates/form-template-item-list-page.js index 895c48794..3a484976d 100644 --- a/src/pages/sponsors-global/form-templates/form-template-item-list-page.js +++ b/src/pages/sponsors-global/form-templates/form-template-item-list-page.js @@ -14,18 +14,11 @@ import React, { useEffect, useState } from "react"; 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 MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; import { ImagePreviewCell } from "../../../components/image-preview-cell"; +import GridToolbar from "../../../components/mui/grid-toolbar"; import { cloneFromInventoryItem, getFormTemplateItem, @@ -243,36 +236,21 @@ const FormTemplateItemListPage = ({ > {T.translate("form_template_item_list.alert_info")} - - - - - } - label={T.translate("form_template_item_list.show_archived")} - /> - - - - - - + + + {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 24233d180..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, - Box, - Button, - Checkbox, - FormControlLabel, - FormGroup, - Grid2 -} from "@mui/material"; +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, @@ -243,66 +235,34 @@ const FormTemplateListPage = ({ {T.translate("form_template_list.alert_info")} - - - - handleShowArchivedForms(ev.target.checked)} - checked={showArchived} - inputProps={{ - "aria-label": T.translate( - "form_template_list.show_archived" - ) - }} - /> - } - label={T.translate("form_template_list.show_archived")} - /> - - - - - - - - - - - - + handleShowArchivedForms(ev.target.checked), + 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 cb843f376..a51b1a35a 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, - Box, - Button, - Checkbox, - FormControlLabel, - FormGroup, - Grid2 -} from "@mui/material"; +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, @@ -209,50 +201,27 @@ const InventoryListPage = ({ > {T.translate("inventory_item_list.alert_info")} - - - - - } - label={T.translate("inventory_item_list.show_archived")} - /> - - - - - - - - - + + + {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/index.js b/src/pages/sponsors/show-pages-list-page/index.js index d1a57adde..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,58 +196,33 @@ const ShowPagesListPage = ({

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

- - - - - - - - } - label={T.translate("show_pages.show_archived")} - sx={{ whiteSpace: "nowrap" }} - /> - - - + + - - - + {T.translate("show_pages.new_page")} + + {totalCount} {T.translate("show_pages.pages")} diff --git a/src/pages/sponsors/show-purchase-list-page/index.js b/src/pages/sponsors/show-purchase-list-page/index.js index 65df7dac5..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, @@ -220,20 +219,17 @@ const ShowPurchaseListPage = ({ />

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

- - - - - - - - + + + {totalCount}{" "} {T.translate("sponsor_show_purchases.purchases").toLowerCase()} 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 66588e559..fcb3dc14e 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, @@ -285,46 +278,28 @@ const SponsorFormItemListPage = ({ > {T.translate("sponsor_form_item_list.alert_info")} - - - - - } - label={T.translate("sponsor_form_item_list.show_archived")} - /> - - - - - - - - - + + + + {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 5d986bc83..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, @@ -344,57 +337,35 @@ const SponsorFormsListPage = ({

{T.translate("sponsor_forms.forms")}

- - - - - - - - } - label={T.translate("sponsor_forms.show_archived")} - sx={{ whiteSpace: "nowrap", mb: 0 }} - /> - - - - - - - - - - + + + + {totalCount} forms {sponsorForms.length > 0 && ( diff --git a/src/pages/sponsors/sponsor-list-page.js b/src/pages/sponsors/sponsor-list-page.js index 6e4b745d5..2567ef027 100644 --- a/src/pages/sponsors/sponsor-list-page.js +++ b/src/pages/sponsors/sponsor-list-page.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 { Badge, Button, Grid2, Tooltip, Typography } 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, @@ -198,30 +198,26 @@ const SponsorListPage = ({ return (

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

- - - - - - {canAddSponsors && ( - - )} - - + + {canAddSponsors && ( + + )} + {totalSponsors} sponsors {sponsors.length === 0 && ( 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 8967840d4..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,48 +168,41 @@ const SponsorBadgeScans = ({ return ( - - - - - - - - - - - + + + + {totalBadgeScans} {T.translate("sponsor_badge_scans.badge_scanned")} 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 ec0b6d7bb..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,25 +183,17 @@ const CartView = ({ return ( <> - - - - - - - - + + + {!cart && ( {T.translate("edit_sponsor.cart_tab.no_cart")} @@ -221,7 +206,7 @@ const CartView = ({ diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/manage-items/sponsor-form-item-from-inventory.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/manage-items/sponsor-form-item-from-inventory.js index 6d1683437..d39840a53 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/manage-items/sponsor-form-item-from-inventory.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/manage-items/sponsor-form-item-from-inventory.js @@ -12,14 +12,13 @@ import { DialogTitle, Divider, FormControlLabel, - Grid2, IconButton, Typography } from "@mui/material"; import CloseIcon from "@mui/icons-material/Close"; import SwapVertIcon from "@mui/icons-material/SwapVert"; 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 { ImagePreviewCell } from "../../../../../../../components/image-preview-cell"; import { formatRateFromCents } from "../../../../../../../utils/rate-helpers"; import { @@ -187,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 c6ac9d1d2..8d98e95ff 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, @@ -298,57 +289,37 @@ const SponsorFormsManageItems = ({ )} hideIcon /> - - - - - } - label={T.translate( - "edit_sponsor.forms_tab.form_manage_items.show_archived" - )} - /> - - - - - - - - - - - - + + + + {totalCount} items
diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/index.js index 43f2e8de9..af9b0c12d 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/index.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/index.js @@ -14,19 +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, - Chip, - FormControlLabel, - FormGroup, - Grid2 -} from "@mui/material"; +import { Box, Button, Chip } from "@mui/material"; import ArrowForwardIcon from "@mui/icons-material/ArrowForward"; 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 { archiveSponsorCustomizedForm, deleteSponsorCustomizedForm, @@ -403,53 +395,33 @@ const SponsorFormsTab = ({ message={T.translate("edit_sponsor.forms_tab.alert_info")} hideIcon /> - - - - - } - label={T.translate("edit_sponsor.forms_tab.show_archived")} - /> - - - - - - - - - - - - + + + + {managedForms.totalCount + customizedForms.totalCount} forms diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/index.js index 2a3243431..5f12521e9 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/index.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/index.js @@ -14,18 +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 -} from "@mui/material"; +import { Box, Button } from "@mui/material"; import AddIcon from "@mui/icons-material/Add"; import ArrowForwardIcon from "@mui/icons-material/ArrowForward"; 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 { getSponsorManagedPages, getSponsorManagedPage, @@ -369,53 +362,33 @@ const SponsorPagesTab = ({ message={T.translate("edit_sponsor.pages_tab.alert_info")} hideIcon /> - - - - - } - label={T.translate("edit_sponsor.pages_tab.show_archived")} - /> - - - - - - - - - - - - + + + + {managedPages.totalItems + customizedPages.totalItems}{" "} {T.translate("edit_sponsor.pages_tab.pages")} diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-purchases-tab/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-purchases-tab/index.js index 92681cf64..e1dde7571 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-purchases-tab/index.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-purchases-tab/index.js @@ -18,14 +18,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, @@ -191,15 +190,13 @@ const SponsorPurchasesTab = ({ return ( - - - - - + {totalCount} {T.translate("edit_sponsor.purchase_tab.purchases")} diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-users-list-per-sponsor/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-users-list-per-sponsor/index.js index 47c1ac425..79dd08be0 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-users-list-per-sponsor/index.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-users-list-per-sponsor/index.js @@ -14,10 +14,10 @@ import React, { useEffect, useRef, useState } from "react"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; -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, getSponsorUserRequests, @@ -92,52 +92,27 @@ const SponsorUsersListPerSponsorPage = ({ /> )} - - - - {users.totalCount}{" "} - {T.translate("sponsor_users.users").toLowerCase()} - - - + + - - - + {T.translate("sponsor_users.add_user")} + + + + {users.totalCount} {T.translate("sponsor_users.users").toLowerCase()} + {hasImportTasks && (

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

- - - - - + + - - - + {T.translate("sponsor_users.add_user")} + + {hasImportTasks && ( {T.translate("summit_sponsorship_list.alert_info")} - - - - - + + + {totalSponsorships} summit tiers {sponsorships.length === 0 && ( 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 && (

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

- - - - - - - - } - label={T.translate("directory.hide_past_events")} - /> - - - - {canAddSummits && ( - - )} - - + + {canAddSummits && ( + + )} + {totalSummits} {T.translate("directory.summits").toLowerCase()} diff --git a/src/pages/tags/tag-list-page.js b/src/pages/tags/tag-list-page.js index b8ca36a3b..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,31 +120,21 @@ const TagListPage = ({

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

- - - - - - - - + + + {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/yarn.lock b/yarn.lock index 1f4d4cb8f..29721a714 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.49-beta.0: - version "5.0.49-beta.0" - resolved "https://registry.yarnpkg.com/openstack-uicore-foundation/-/openstack-uicore-foundation-5.0.49-beta.0.tgz#89e985a21196551b19ad04cfce615c32c8058c92" - integrity sha512-ktXOuBAXld4QfxjnruqQFtVx7rOK57vuls0cMm3YItPkyox0pCxr6WwL6n6xo/FQKcevH0zKWUrZZJb/x0PS4A== +openstack-uicore-foundation@5.0.49-beta.1: + version "5.0.49-beta.1" + resolved "https://registry.yarnpkg.com/openstack-uicore-foundation/-/openstack-uicore-foundation-5.0.49-beta.1.tgz#2021b8f05a2414a86930d7facf50aac7427d93be" + integrity sha512-T8uxti00a6bNp0mMTnL06ikGgOcK89umgspFH5tITsKPT/qI81YFGp8Qk8BnfLCYCczC/lQyuL3c09BtSf8XXw== dependencies: use-sync-external-store "^1.6.0" From dd3e51585a477f6f1068a24f036bef7fe341f629 Mon Sep 17 00:00:00 2001 From: Santiago Palenque Date: Fri, 21 Aug 2026 17:43:19 -0300 Subject: [PATCH 10/13] chore: update uicore and resize icon --- package.json | 2 +- src/components/image-preview-cell.js | 4 ++-- yarn.lock | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index f7556919c..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.49-beta.1", + "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/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/yarn.lock b/yarn.lock index 29721a714..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.49-beta.1: - version "5.0.49-beta.1" - resolved "https://registry.yarnpkg.com/openstack-uicore-foundation/-/openstack-uicore-foundation-5.0.49-beta.1.tgz#2021b8f05a2414a86930d7facf50aac7427d93be" - integrity sha512-T8uxti00a6bNp0mMTnL06ikGgOcK89umgspFH5tITsKPT/qI81YFGp8Qk8BnfLCYCczC/lQyuL3c09BtSf8XXw== +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" From 3a00e3f1a66d8a57cf4faa7cfdd4416bf972ff44 Mon Sep 17 00:00:00 2001 From: Santiago Palenque Date: Mon, 31 Aug 2026 19:32:20 -0300 Subject: [PATCH 11/13] chore: fix singular or plurar items count label --- package.json | 2 +- src/i18n/en.json | 6 ++++++ .../form-templates/form-template-item-list-page.js | 5 ++++- .../form-templates/form-template-list-page.js | 5 ++++- .../sponsors-global/inventory/inventory-list-page.js | 5 ++++- .../page-templates/page-template-list-page.js | 5 ++++- src/pages/sponsors/sponsor-forms-list-page/index.js | 3 ++- .../manage-items/sponsor-form-item-from-inventory.js | 6 +++++- src/pages/summits/summit-directory-page.js | 5 ++--- src/utils/methods.js | 4 ++++ yarn.lock | 8 ++++---- 11 files changed, 40 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 400c3d70a..f91e7ebd3 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.49-beta.2", + "openstack-uicore-foundation": "5.0.55", "p-limit": "^6.1.0", "path-browserify": "^1.0.1", "postcss-loader": "^6.2.1", diff --git a/src/i18n/en.json b/src/i18n/en.json index a75e0625e..c3c0e36b2 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -86,6 +86,7 @@ "unarchive": "Unarchive", "archive": "Archive", "items": "items", + "item": "item", "sort_by": "Sort By", "sort_asc_label": "A-Z", "sort_desc_label": "Z-A", @@ -308,6 +309,7 @@ "directory": { "select": "Select", "summits": "Shows", + "summit": "show", "add_summit": "Add Show", "remove_warning": "Are you sure you want to delete event", "invitation_only": "Invitation Only", @@ -2587,6 +2589,7 @@ "standard_rate": "Standard Rate", "onsite_rate": "On site rate", "default_quantity": "Default Quantity", + "selected": "selected", "add_selected": "Add Selected Items", "item_updated": "Form item updated successfully", "item_created": "Form item created successfully", @@ -2800,6 +2803,7 @@ }, "sponsor_forms": { "forms": "Forms", + "form": "form", "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", "using_global": "Using Global Template", @@ -4055,6 +4059,7 @@ }, "form_template_list": { "form_templates": "Form Templates", + "form": "form", "alert_info": "To add an order form, select New Form Template. To edit an existing form, click on the list item. To edit the items within the form, click manage items on the form line you wish to edit.", "code_column_label": "Code", "name_column_label": "Name", @@ -4208,6 +4213,7 @@ }, "page_template_list": { "page_templates": "Page Templates", + "page": "page", "alert_info": "You can create or archive Pages from the list. To edit a Page click on the item's Edit botton.", "code": "Code", "name": "Name", diff --git a/src/pages/sponsors-global/form-templates/form-template-item-list-page.js b/src/pages/sponsors-global/form-templates/form-template-item-list-page.js index 3a484976d..2b9031690 100644 --- a/src/pages/sponsors-global/form-templates/form-template-item-list-page.js +++ b/src/pages/sponsors-global/form-templates/form-template-item-list-page.js @@ -35,6 +35,7 @@ import AddFormTemplateItemDialog from "./add-form-template-item-popup"; import SponsorInventoryDialog from "./sponsor-inventory-popup"; import { getInventoryItems } from "../../../actions/inventory-item-actions"; import { DEFAULT_CURRENT_PAGE } from "../../../utils/constants"; +import { countLabel } from "../../../utils/methods"; const FormTemplateItemListPage = ({ formTemplateId, @@ -251,7 +252,9 @@ const FormTemplateItemListPage = ({ {T.translate("form_template_item_list.add_item")} - {totalFormTemplateItems} items + + {countLabel("general.item", totalFormTemplateItems)} + {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 f3fa811eb..bec30a492 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 @@ -34,6 +34,7 @@ import FormTemplateDialog from "./form-template-popup"; import history from "../../../history"; import FormTemplateFromDuplicateDialog from "./form-template-from-duplicate-popup"; import { DEFAULT_CURRENT_PAGE } from "../../../utils/constants"; +import { countLabel } from "../../../utils/methods"; const FormTemplateListPage = ({ formTemplates, @@ -263,7 +264,9 @@ const FormTemplateListPage = ({ {T.translate("form_template_list.add_form_template")} - {totalFormTemplates} forms + + {countLabel("form_template_list.form", totalFormTemplates)} + {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 a51b1a35a..c504436aa 100644 --- a/src/pages/sponsors-global/inventory/inventory-list-page.js +++ b/src/pages/sponsors-global/inventory/inventory-list-page.js @@ -32,6 +32,7 @@ import { import SponsorInventoryDialog from "../form-templates/sponsor-inventory-popup"; import { ImagePreviewCell } from "../../../components/image-preview-cell"; import { DEFAULT_CURRENT_PAGE } from "../../../utils/constants"; +import { countLabel } from "../../../utils/methods"; const InventoryListPage = ({ inventoryItems, @@ -222,7 +223,9 @@ const InventoryListPage = ({ {T.translate("inventory_item_list.add_inventory_item")} - {totalInventoryItems} items + + {countLabel("general.item", totalInventoryItems)} + {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 e58044600..000a5c774 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 @@ -29,6 +29,7 @@ import { resetPageTemplateForm } from "../../../actions/page-template-actions"; import { DEFAULT_CURRENT_PAGE } from "../../../utils/constants"; +import { countLabel } from "../../../utils/methods"; import PageTemplatePopup from "./page-template-popup"; import PageTemplateClonePopup from "./page-template-clone-popup"; @@ -225,7 +226,9 @@ const PageTemplateListPage = ({ {T.translate("page_template_list.add_new")} - {totalPageTemplates} pages + + {countLabel("page_template_list.page", totalPageTemplates)} + {pageTemplates.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 598cbf130..df3b64edf 100644 --- a/src/pages/sponsors/sponsor-forms-list-page/index.js +++ b/src/pages/sponsors/sponsor-forms-list-page/index.js @@ -34,6 +34,7 @@ import CustomAlert from "../../../components/mui/custom-alert"; import GlobalTemplatePopup from "./components/global-template/global-template-popup"; import FormTemplatePopup from "./components/form-template/form-template-popup"; import { DEFAULT_CURRENT_PAGE, MAX_PER_PAGE } from "../../../utils/constants"; +import { countLabel } from "../../../utils/methods"; import { normalizeTiers, sameTierSet } from "./utils"; const SponsorFormsListPage = ({ @@ -366,7 +367,7 @@ const SponsorFormsListPage = ({ {T.translate("sponsor_forms.add_form")} - {totalCount} forms + {countLabel("sponsor_forms.form", totalCount)} {sponsorForms.length > 0 && (
diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/manage-items/sponsor-form-item-from-inventory.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/manage-items/sponsor-form-item-from-inventory.js index d39840a53..058f282b6 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/manage-items/sponsor-form-item-from-inventory.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/manage-items/sponsor-form-item-from-inventory.js @@ -25,6 +25,7 @@ import { DEFAULT_CURRENT_PAGE, DEFAULT_PER_PAGE } from "../../../../../../../utils/constants"; +import { countLabel } from "../../../../../../../utils/methods"; import { getInventoryItems } from "../../../../../../../actions/inventory-item-actions"; import MenuButton from "../../../../../../../components/mui/menu-button"; @@ -216,7 +217,10 @@ const SponsorFormItemFromInventoryPopup = ({ {T.translate("general.sort_by")} - {selectedRows.length} items selected + + {countLabel("general.item", selectedRows.length)}{" "} + {T.translate("edit_sponsor.forms_tab.form_manage_items.selected")} + {inventoryItems.length > 0 && ( diff --git a/src/pages/summits/summit-directory-page.js b/src/pages/summits/summit-directory-page.js index 1a4bf300c..3c1d675cb 100644 --- a/src/pages/summits/summit-directory-page.js +++ b/src/pages/summits/summit-directory-page.js @@ -28,6 +28,7 @@ import { } from "../../actions/summit-actions"; import Member from "../../models/member"; import { DEFAULT_CURRENT_PAGE } from "../../utils/constants"; +import { countLabel } from "../../utils/methods"; const SummitDirectoryPage = ({ summits, @@ -181,9 +182,7 @@ const SummitDirectoryPage = ({ )} - - {totalSummits} {T.translate("directory.summits").toLowerCase()} - + {countLabel("directory.summit", totalSummits)} { const formatted = d.format("mm:ss", { trim: false }); return formatted !== "00:00" ? formatted : "TBD"; }; + +// Builds "{count} {noun}" from a singular translation key, appending "s" +export const countLabel = (translationKey, count) => + `${count} ${T.translate(translationKey)}${count === 1 ? "" : "s"}`; diff --git a/yarn.lock b/yarn.lock index b55a39bac..1b187bb5b 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.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== +openstack-uicore-foundation@5.0.55: + version "5.0.55" + resolved "https://registry.yarnpkg.com/openstack-uicore-foundation/-/openstack-uicore-foundation-5.0.55.tgz#fcf83cc42464a9daafb42f0585eb53d8aa301e67" + integrity sha512-fNvqiREmdUw1Y6lnYmvHx+RW3b+sFJbyLX/c+myg5lXyzWAfxcu9r8DBQmMVEF0nwqppFD308J1BBQhOfF7A0w== dependencies: use-sync-external-store "^1.6.0" From bd96db894c9dc645948608e580faf3dcfb5be921 Mon Sep 17 00:00:00 2001 From: Santiago Palenque Date: Mon, 31 Aug 2026 19:34:59 -0300 Subject: [PATCH 12/13] chore: rolback filter change --- src/actions/sponsor-forms-actions.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/actions/sponsor-forms-actions.js b/src/actions/sponsor-forms-actions.js index b80305792..f524f2c6a 100644 --- a/src/actions/sponsor-forms-actions.js +++ b/src/actions/sponsor-forms-actions.js @@ -148,9 +148,7 @@ export const getSponsorForms = expand: "sponsorship_types" }; - if (!showArchived) { - filter.push("is_archived==0"); - } + filter.push(`is_archived==${showArchived ? 1 : 0}`); if (sponsorshipTypesId?.length > 0) { const formattedSponsorships = sponsorshipTypesId.join("&&"); From f575ad0e9e33fb2021d74fd97b07c32fa109b924 Mon Sep 17 00:00:00 2001 From: smarcet Date: Tue, 1 Sep 2026 09:55:25 -0300 Subject: [PATCH 13/13] chore(deps): update openstack-uicore-foundation to 5.0.56 Signed-off-by: smarcet --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f91e7ebd3..5245ac019 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.55", + "openstack-uicore-foundation": "5.0.56", "p-limit": "^6.1.0", "path-browserify": "^1.0.1", "postcss-loader": "^6.2.1", diff --git a/yarn.lock b/yarn.lock index 1b187bb5b..49830f251 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.55: - version "5.0.55" - resolved "https://registry.yarnpkg.com/openstack-uicore-foundation/-/openstack-uicore-foundation-5.0.55.tgz#fcf83cc42464a9daafb42f0585eb53d8aa301e67" - integrity sha512-fNvqiREmdUw1Y6lnYmvHx+RW3b+sFJbyLX/c+myg5lXyzWAfxcu9r8DBQmMVEF0nwqppFD308J1BBQhOfF7A0w== +openstack-uicore-foundation@5.0.56: + version "5.0.56" + resolved "https://registry.npmjs.org/openstack-uicore-foundation/-/openstack-uicore-foundation-5.0.56.tgz#806dc75481fb136295cf3f33a2d6da6536fa62cd" + integrity sha512-51p1q9Emeiurni5ttDeYFmPa9q0Su1bg49HgyqZLyfBqB1JbaaNwSmyChc590WBRhKYKEdKKqF8lYoVORCWYtA== dependencies: use-sync-external-store "^1.6.0"