From d558ca8a49c8fd5dcbf87d2e2f6dfeeff18bf4b0 Mon Sep 17 00:00:00 2001 From: dat Date: Thu, 22 May 2025 07:50:42 +0700 Subject: [PATCH] Topcoder Admin App - Misc Update 0518 --- .../BillingAccountsPage.tsx | 7 +- .../ClientsPage/ClientsPage.tsx | 7 +- .../BillingAccountResourcesTable.module.scss | 6 ++ .../BillingAccountResourcesTable.tsx | 10 +- .../BillingAccountsTable.module.scss | 6 ++ .../BillingAccountsTable.tsx | 13 ++- .../ChallengeList/ChallengeList.module.scss | 6 ++ .../ChallengeList/ChallengeList.tsx | 2 + .../ChallengeUserList.module.scss | 6 ++ .../ChallengeUserList/ChallengeUserList.tsx | 1 + .../ClientsTable/ClientsTable.module.scss | 6 ++ .../components/ClientsTable/ClientsTable.tsx | 13 ++- .../DialogEditUserGroups.module.scss | 6 ++ .../DialogEditUserGroups.tsx | 1 + .../DialogEditUserRoles.module.scss | 6 ++ .../DialogEditUserRoles.tsx | 1 + .../DialogEditUserTerms.module.scss | 6 ++ .../DialogEditUserTerms.tsx | 2 + .../DialogUserStatusHistory.module.scss | 6 ++ .../DialogUserStatusHistory.tsx | 1 + .../GroupMembersTable.module.scss | 6 ++ .../GroupMembersTable/GroupMembersTable.tsx | 22 ++-- .../GroupsTable/GroupsTable.module.scss | 6 ++ .../components/GroupsTable/GroupsTable.tsx | 17 ++- .../ResourceTable/ResourceTable.module.scss | 6 ++ .../ResourceTable/ResourceTable.tsx | 1 + .../ReviewSummaryList.module.scss | 6 ++ .../ReviewSummaryList/ReviewSummaryList.tsx | 20 +++- .../ReviewerList/ReviewerList.module.scss | 5 + .../components/ReviewerList/ReviewerList.tsx | 1 + .../RoleMembersTable.module.scss | 6 ++ .../RoleMembersTable/RoleMembersTable.tsx | 12 ++- .../RolesTable/RolesTable.module.scss | 6 ++ .../lib/components/RolesTable/RolesTable.tsx | 16 ++- .../UsersTable/UsersTable.module.scss | 6 ++ .../lib/components/UsersTable/UsersTable.tsx | 40 +++++-- .../hooks/useManagePermissionGroupMembers.ts | 17 ++- .../lib/hooks/useManagePermissionGroups.ts | 4 + .../hooks/useManagePermissionRoleMembers.ts | 7 +- .../src/lib/hooks/useManagePermissionRoles.ts | 4 + .../src/lib/hooks/useTableFilterLocal.ts | 38 +++++-- .../admin/src/lib/models/UserRole.model.ts | 6 +- src/apps/admin/src/lib/utils/index.ts | 2 + src/apps/admin/src/lib/utils/others.ts | 21 ++++ src/apps/admin/src/lib/utils/string.ts | 18 ++++ .../PermissionGroupMembersPage.tsx | 2 +- src/libs/ui/lib/components/table/Table.tsx | 70 +++++++++++- src/libs/ui/lib/components/table/index.ts | 1 + .../components/table/table-cell/TableCell.tsx | 4 +- .../components/table/table-column.model.ts | 1 + .../components/table/table-row/TableRow.tsx | 101 ++++++++++-------- .../table/table-sort/TableSort.module.scss | 5 + .../components/table/table-sort/TableSort.tsx | 4 +- src/libs/ui/lib/hooks/use-window-size.hook.ts | 34 ++++++ 54 files changed, 522 insertions(+), 105 deletions(-) create mode 100644 src/apps/admin/src/lib/utils/others.ts create mode 100644 src/apps/admin/src/lib/utils/string.ts create mode 100644 src/libs/ui/lib/components/table/table-sort/TableSort.module.scss create mode 100644 src/libs/ui/lib/hooks/use-window-size.hook.ts diff --git a/src/apps/admin/src/billing-account/BillingAccountsPage/BillingAccountsPage.tsx b/src/apps/admin/src/billing-account/BillingAccountsPage/BillingAccountsPage.tsx index 13d299563..8bf8e956b 100644 --- a/src/apps/admin/src/billing-account/BillingAccountsPage/BillingAccountsPage.tsx +++ b/src/apps/admin/src/billing-account/BillingAccountsPage/BillingAccountsPage.tsx @@ -1,11 +1,11 @@ /** * Billing accounts page. */ -import { FC } from 'react' +import { FC, useState } from 'react' import classNames from 'classnames' import { PlusIcon } from '@heroicons/react/solid' -import { LinkButton, LoadingSpinner, PageDivider, PageTitle } from '~/libs/ui' +import { colWidthType, LinkButton, LoadingSpinner, PageDivider, PageTitle } from '~/libs/ui' import { BillingAccountsFilter } from '../../lib/components/BillingAccountsFilter' import { BillingAccountsTable } from '../../lib/components/BillingAccountsTable' @@ -22,6 +22,7 @@ interface Props { const pageTitle = 'Billing Accounts' export const BillingAccountsPage: FC = (props: Props) => { + const [colWidth, setColWidth] = useState({}) const { isLoading, datas, @@ -76,6 +77,8 @@ export const BillingAccountsPage: FC = (props: Props) => { setPage={setPage} setSort={setSort} sort={sort} + colWidth={colWidth} + setColWidth={setColWidth} /> )} diff --git a/src/apps/admin/src/billing-account/ClientsPage/ClientsPage.tsx b/src/apps/admin/src/billing-account/ClientsPage/ClientsPage.tsx index ee2e97010..ceb44fc8f 100644 --- a/src/apps/admin/src/billing-account/ClientsPage/ClientsPage.tsx +++ b/src/apps/admin/src/billing-account/ClientsPage/ClientsPage.tsx @@ -1,10 +1,10 @@ /** * Billing account clients page. */ -import { FC } from 'react' +import { FC, useState } from 'react' import classNames from 'classnames' -import { LinkButton, LoadingSpinner, PageDivider, PageTitle } from '~/libs/ui' +import { colWidthType, LinkButton, LoadingSpinner, PageDivider, PageTitle } from '~/libs/ui' import { PlusIcon } from '@heroicons/react/solid' import { MSG_NO_RECORD_FOUND } from '../../config/index.config' @@ -22,6 +22,7 @@ interface Props { const pageTitle = 'Clients' export const ClientsPage: FC = (props: Props) => { + const [colWidth, setColWidth] = useState({}) const { isLoading, datas, @@ -77,6 +78,8 @@ export const ClientsPage: FC = (props: Props) => { setPage={setPage} setSort={setSort} sort={sort} + colWidth={colWidth} + setColWidth={setColWidth} /> )} diff --git a/src/apps/admin/src/lib/components/BillingAccountResourcesTable/BillingAccountResourcesTable.module.scss b/src/apps/admin/src/lib/components/BillingAccountResourcesTable/BillingAccountResourcesTable.module.scss index cf03543d0..6e7d98479 100644 --- a/src/apps/admin/src/lib/components/BillingAccountResourcesTable/BillingAccountResourcesTable.module.scss +++ b/src/apps/admin/src/lib/components/BillingAccountResourcesTable/BillingAccountResourcesTable.module.scss @@ -21,3 +21,9 @@ .btnDelete { padding-right: 0; } + +.desktopTable { + td { + vertical-align: middle; + } +} diff --git a/src/apps/admin/src/lib/components/BillingAccountResourcesTable/BillingAccountResourcesTable.tsx b/src/apps/admin/src/lib/components/BillingAccountResourcesTable/BillingAccountResourcesTable.tsx index 70e241c12..69eee47f7 100644 --- a/src/apps/admin/src/lib/components/BillingAccountResourcesTable/BillingAccountResourcesTable.tsx +++ b/src/apps/admin/src/lib/components/BillingAccountResourcesTable/BillingAccountResourcesTable.tsx @@ -1,11 +1,11 @@ /** * Billing account resources table. */ -import { FC, useMemo } from 'react' +import { FC, useMemo, useState } from 'react' import classNames from 'classnames' import { useWindowSize, WindowSize } from '~/libs/shared' -import { Button, Table, TableColumn } from '~/libs/ui' +import { Button, colWidthType, Table, TableColumn } from '~/libs/ui' import { useTableFilterLocal, useTableFilterLocalProps } from '../../hooks' import { Pagination } from '../common/Pagination' @@ -26,6 +26,7 @@ interface Props { } export const BillingAccountResourcesTable: FC = (props: Props) => { + const [colWidth, setColWidth] = useState({}) const { page, setPage, @@ -40,12 +41,14 @@ export const BillingAccountResourcesTable: FC = (props: Props) => { const columns = useMemo[]>( () => [ { + columnId: 'name', label: 'Name', propertyName: 'name', type: 'text', }, { className: styles.blockColumnAction, + columnId: 'action', label: '', renderer: (data: BillingAccountResource) => (