changes for the antd v5 components

This commit is contained in:
swtmply
2023-04-19 22:04:08 +08:00
parent a2eaa3b376
commit cccb411cde
14 changed files with 91 additions and 93 deletions

View File

@@ -18,24 +18,39 @@ export function BreadCrumbs({ breadcrumbs, bodyshop }) {
return ( return (
<Row className="breadcrumb-container"> <Row className="breadcrumb-container">
<Col xs={24} sm={24} md={16}> <Col xs={24} sm={24} md={16}>
<Breadcrumb separator=">"> <Breadcrumb
<Breadcrumb.Item> separator=">"
<Link to={`/manage`}> items={[
<HomeFilled />{" "} {
{(bodyshop && bodyshop.shopname && `(${bodyshop.shopname})`) || title: (
""} <Link to={`/manage`}>
</Link> <HomeFilled />{" "}
</Breadcrumb.Item> {(bodyshop &&
{breadcrumbs.map((item) => bodyshop.shopname &&
item.link ? ( `(${bodyshop.shopname})`) ||
<Breadcrumb.Item key={item.label}> ""}
<Link to={item.link}>{item.label} </Link> </Link>
</Breadcrumb.Item> ),
) : ( },
<Breadcrumb.Item key={item.label}>{item.label}</Breadcrumb.Item> ...breadcrumbs.map((item) =>
) item.link
)} ? {
</Breadcrumb> title: (
<Link key={item.label} to={item.link}>
{item.label}{" "}
</Link>
),
}
: {
title: (
<React.Fragment key={item.label}>
{item.label}
</React.Fragment>
),
}
),
]}
></Breadcrumb>
</Col> </Col>
<Col xs={24} sm={24} md={8}> <Col xs={24} sm={24} md={8}>
<GlobalSearch /> <GlobalSearch />

View File

@@ -1,6 +1,6 @@
import Icon, { SyncOutlined } from "@ant-design/icons"; import Icon, { SyncOutlined } from "@ant-design/icons";
import { gql, useMutation, useQuery } from "@apollo/client"; import { gql, useMutation, useQuery } from "@apollo/client";
import { PageHeader } from '@ant-design/pro-layout'; import { PageHeader } from "@ant-design/pro-layout";
import { Button, Dropdown, Menu, notification, Space } from "antd"; import { Button, Dropdown, Menu, notification, Space } from "antd";
import i18next from "i18next"; import i18next from "i18next";
import _ from "lodash"; import _ from "lodash";
@@ -139,7 +139,7 @@ export function DashboardGridComponent({ currentUser, bodyshop }) {
<Button onClick={() => refetch()}> <Button onClick={() => refetch()}>
<SyncOutlined /> <SyncOutlined />
</Button> </Button>
<Dropdown overlay={addComponentOverlay} trigger={["click"]}> <Dropdown menu={addComponentOverlay} trigger={["click"]}>
<Button>{t("dashboard.actions.addcomponent")}</Button> <Button>{t("dashboard.actions.addcomponent")}</Button>
</Dropdown> </Dropdown>
</Space> </Space>

View File

@@ -104,7 +104,7 @@ export function EmailOverlayComponent({
label={ label={
<Space> <Space>
{t("emails.fields.to")} {t("emails.fields.to")}
<Dropdown overlay={menu}> <Dropdown menu={menu}>
<a <a
className="ant-dropdown-link" className="ant-dropdown-link"
href=" #" href=" #"

View File

@@ -3,7 +3,7 @@ import {
useApolloClient, useApolloClient,
useLazyQuery, useLazyQuery,
useMutation, useMutation,
useQuery useQuery,
} from "@apollo/client"; } from "@apollo/client";
import { useTreatments } from "@splitsoftware/splitio-react"; import { useTreatments } from "@splitsoftware/splitio-react";
import { Col, notification, Row } from "antd"; import { Col, notification, Row } from "antd";
@@ -20,7 +20,7 @@ import { logImEXEvent } from "../../firebase/firebase.utils";
import { import {
DELETE_AVAILABLE_JOB, DELETE_AVAILABLE_JOB,
QUERY_AVAILABLE_JOBS, QUERY_AVAILABLE_JOBS,
QUERY_AVAILABLE_NEW_JOBS_EST_DATA_BY_PK QUERY_AVAILABLE_NEW_JOBS_EST_DATA_BY_PK,
} from "../../graphql/available-jobs.queries"; } from "../../graphql/available-jobs.queries";
import { INSERT_NEW_JOB, UPDATE_JOB } from "../../graphql/jobs.queries"; import { INSERT_NEW_JOB, UPDATE_JOB } from "../../graphql/jobs.queries";
import { INSERT_NEW_NOTE } from "../../graphql/notes.queries"; import { INSERT_NEW_NOTE } from "../../graphql/notes.queries";
@@ -28,7 +28,7 @@ import { SEARCH_VEHICLE_BY_VIN } from "../../graphql/vehicles.queries";
import { insertAuditTrail } from "../../redux/application/application.actions"; import { insertAuditTrail } from "../../redux/application/application.actions";
import { import {
selectBodyshop, selectBodyshop,
selectCurrentUser selectCurrentUser,
} from "../../redux/user/user.selectors"; } from "../../redux/user/user.selectors";
import confirmDialog from "../../utils/asyncConfirm"; import confirmDialog from "../../utils/asyncConfirm";
import AuditTrailMapping from "../../utils/AuditTrailMappings"; import AuditTrailMapping from "../../utils/AuditTrailMappings";
@@ -363,7 +363,7 @@ export function JobsAvailableContainer({
owner={owner} owner={owner}
selectedOwner={selectedOwner} selectedOwner={selectedOwner}
setSelectedOwner={setSelectedOwner} setSelectedOwner={setSelectedOwner}
visible={ownerModalVisible} open={ownerModalVisible}
onOk={onOwnerFindModalOk} onOk={onOwnerFindModalOk}
onCancel={onOwnerModalCancel} onCancel={onOwnerModalCancel}
/> />
@@ -373,7 +373,7 @@ export function JobsAvailableContainer({
selectedJob={selectedJob} selectedJob={selectedJob}
setSelectedJob={setSelectedJob} setSelectedJob={setSelectedJob}
importOptionsState={importOptionsState} importOptionsState={importOptionsState}
visible={jobModalVisible} open={jobModalVisible}
onOk={onJobFindModalOk} onOk={onJobFindModalOk}
onCancel={onJobModalCancel} onCancel={onJobModalCancel}
modalSearchState={modalSearchState} modalSearchState={modalSearchState}

View File

@@ -32,7 +32,7 @@ export default connect(
variables: { variables: {
statuses: bodyshop.md_ro_statuses.active_statuses || ["Open"], statuses: bodyshop.md_ro_statuses.active_statuses || ["Open"],
}, },
skip: !modalProps.visible, skip: !modalProps.open,
fetchPolicy: "network-only", fetchPolicy: "network-only",
nextFetchPolicy: "network-only", nextFetchPolicy: "network-only",
}); });

View File

@@ -30,13 +30,13 @@ export default function OwnerFindModalContainer({
); );
useEffect(() => { useEffect(() => {
if (modalProps.visible && owner) { if (modalProps.open && owner) {
const s = OwnerNameDisplayFunction(owner, true); const s = OwnerNameDisplayFunction(owner, true);
setSearchText(s.trim()); setSearchText(s.trim());
callSearchowners({ variables: { search: s.trim() } }); callSearchowners({ variables: { search: s.trim() } });
} }
}, [callSearchowners, modalProps.visible, owner]); }, [callSearchowners, modalProps.open, owner]);
return ( return (
<Modal <Modal

View File

@@ -87,7 +87,7 @@ export default function PartsOrderModalPriceChange({ form, field }) {
/> />
); );
return ( return (
<Dropdown overlay={menu} trigger="click"> <Dropdown menu={menu} trigger="click">
<Space> <Space>
% %
<DownOutlined /> <DownOutlined />

View File

@@ -56,7 +56,7 @@ export default function ProductionListDate({
style={{ style={{
height: "19px", height: "19px",
}} }}
overlay={ menu={
<Card style={{ padding: "1rem" }} onClick={(e) => e.stopPropagation()}> <Card style={{ padding: "1rem" }} onClick={(e) => e.stopPropagation()}>
<FormDatePicker <FormDatePicker
onClick={(e) => e.stopPropagation()} onClick={(e) => e.stopPropagation()}

View File

@@ -97,7 +97,7 @@ export function ProductionLastContacted({ currentUser, record }) {
style={{ style={{
height: "19px", height: "19px",
}} }}
overlay={ menu={
<Card <Card
style={{ padding: "1rem" }} style={{ padding: "1rem" }}
onClick={(e) => e.stopPropagation()} onClick={(e) => e.stopPropagation()}

View File

@@ -90,7 +90,7 @@ export default function ScoreboardEntryEdit({ entry }) {
return ( return (
<div> <div>
<Dropdown open={visible} overlay={popContent}> <Dropdown open={visible} menu={popContent}>
<Button <Button
onClick={(e) => { onClick={(e) => {
e.stopPropagation(); e.stopPropagation();

View File

@@ -81,7 +81,7 @@ export function ShopTemplateAddComponent({
); );
return ( return (
<Dropdown overlay={menu}> <Dropdown menu={menu}>
<span> <span>
{t("bodyshop.actions.addtemplate")} <DownOutlined /> {t("bodyshop.actions.addtemplate")} <DownOutlined />
</span> </span>

View File

@@ -41,7 +41,7 @@ export default function TimeTicketsDatesSelector() {
end ? moment(end) : moment().endOf("week"), end ? moment(end) : moment().endOf("week"),
]} ]}
format="MM/DD/YYYY" format="MM/DD/YYYY"
ranges={DatePickerRanges} presets={DatePickerRanges}
onCalendarChange={handleChange} onCalendarChange={handleChange}
/> />
); );

View File

@@ -1,4 +1,4 @@
import { PageHeader } from '@ant-design/pro-layout'; import { PageHeader } from "@ant-design/pro-layout";
import { Button, Result, Space, Steps } from "antd"; import { Button, Result, Space, Steps } from "antd";
import React, { useContext, useState } from "react"; import React, { useContext, useState } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
@@ -19,16 +19,11 @@ export default function JobsCreateComponent({ form }) {
{ {
title: t("jobs.labels.create.vehicleinfo"), title: t("jobs.labels.create.vehicleinfo"),
content: <JobsCreateVehicleInfoContainer form={form} />, content: <JobsCreateVehicleInfoContainer form={form} />,
validation:
!!state.vehicle.new ||
!!state.vehicle.selectedid ||
!!state.vehicle.none,
error: t("vehicles.errors.selectexistingornew"), error: t("vehicles.errors.selectexistingornew"),
}, },
{ {
title: t("jobs.labels.create.ownerinfo"), title: t("jobs.labels.create.ownerinfo"),
content: <JobsCreateOwnerInfoContainer />, content: <JobsCreateOwnerInfoContainer />,
validation: !!state.owner.new || !!state.owner.selectedid,
error: t("owners.errors.selectexistingornew"), error: t("owners.errors.selectexistingornew"),
}, },
{ {
@@ -43,7 +38,6 @@ export default function JobsCreateComponent({ form }) {
const prev = () => { const prev = () => {
setPageIndex(pageIndex - 1); setPageIndex(pageIndex - 1);
}; };
const { Step } = Steps;
const ProgressButtons = ({ top }) => { const ProgressButtons = ({ top }) => {
return ( return (
@@ -80,31 +74,23 @@ export default function JobsCreateComponent({ form }) {
} }
> >
{top && ( {top && (
<Steps current={pageIndex}> <Steps
{steps.map((item, idx) => ( current={pageIndex}
<Step onChange={(idx) => {
key={item.title} form
title={item.title} .validateFields()
style={{ .then((r) => {
cursor: "pointer", if (steps[pageIndex].validation) {
fontWeight: idx === pageIndex && "bolder", setErrorMessage(null);
}} setPageIndex(idx);
onClick={() => { } else {
form setErrorMessage(steps[pageIndex].error);
.validateFields() }
.then((r) => { })
if (steps[pageIndex].validation) { .catch((error) => console.log("error", error));
setErrorMessage(null); }}
setPageIndex(idx); items={steps}
} else { />
setErrorMessage(steps[pageIndex].error);
}
})
.catch((error) => console.log("error", error));
}}
/>
))}
</Steps>
)} )}
</PageHeader> </PageHeader>
); );

View File

@@ -54,32 +54,29 @@ export function ScoreboardContainer({ setBreadcrumbs, setSelectedHeader }) {
search: queryString.stringify(searchParams), search: queryString.stringify(searchParams),
}); });
}} }}
> items={[
<Tabs.TabPane {
tab={ key: "sb",
<span> label: (
<Icon component={FaShieldAlt} /> <span>
{t("scoreboard.labels.jobs")} <Icon component={FaShieldAlt} />
</span> {t("scoreboard.labels.jobs")}
} </span>
destroyInactiveTabPane ),
key="sb" children: <ScoreboardDisplay />,
> },
<ScoreboardDisplay /> {
</Tabs.TabPane> key: "tickets",
<Tabs.TabPane label: (
tab={ <span>
<span> <FieldTimeOutlined />
<FieldTimeOutlined /> {t("scoreboard.labels.timetickets")}
{t("scoreboard.labels.timetickets")} </span>
</span> ),
} children: <ScoreboardTimeTickets />,
destroyInactiveTabPane },
key="tickets" ]}
> ></Tabs>
<ScoreboardTimeTickets />
</Tabs.TabPane>
</Tabs>
</RbacWrapper> </RbacWrapper>
</FeatureWrapper> </FeatureWrapper>
); );