Merged in feature/IO-3067-implement-learn-more-link-for-rome-upsells (pull request #2037)

Revert "IO-3067 Add learn more link for Rome."
This commit is contained in:
Patrick Fic
2025-01-07 18:24:52 +00:00
37 changed files with 101 additions and 91 deletions

View File

@@ -18,7 +18,7 @@ import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
import LockerWrapperComponent from "../lock-wrapper/lock-wrapper.component";
import PrintWrapperComponent from "../print-wrapper/print-wrapper.component";
import UpsellComponent from "../upsell/upsell.component";
import { UpsellEnum } from "../upsell/upsell.component";
import { upsellEnum } from "../upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
jobRO: selectJobReadOnly,
@@ -240,7 +240,7 @@ export function BillsListTableComponent({
onChange={handleTableChange}
locale={{
...(!hasBillsAccess && {
emptyText: <UpsellComponent upsell={UpsellEnum().bills.general} />
emptyText: <UpsellComponent upsell={upsellEnum().bills.general} />
})
}}
/>

View File

@@ -10,7 +10,7 @@ import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selecto
import { DateTimeFormatter } from "../../utils/DateFormatter";
import BlurWrapperComponent from "../feature-wrapper/blur-wrapper.component";
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
currentUser: selectCurrentUser,
@@ -147,7 +147,7 @@ export function JobAuditTrail({ bodyshop, currentUser, jobId }) {
{!hasAuditAccess && (
<Col span={24}>
<Card>
<UpsellComponent upsell={UpsellEnum().audit.general} disableMask />
<UpsellComponent upsell={upsellEnum().audit.general} disableMask />
</Card>
</Col>
)}

View File

@@ -7,7 +7,7 @@ import AlertComponent from "../alert/alert.component";
import LoadingSkeleton from "../loading-skeleton/loading-skeleton.component";
import "./job-bills-total.styles.scss";
import BlurWrapperComponent from "../feature-wrapper/blur-wrapper.component";
import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../upsell/upsell.component";
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
@@ -336,7 +336,7 @@ export function JobBillsTotalComponent({
{!hasBillsAccess && (
<Col span={6}>
<Card style={{ height: "100%" }}>
<UpsellComponent upsell={UpsellEnum().bills.autoreconcile} disableMask />
<UpsellComponent upsell={upsellEnum().bills.autoreconcile} disableMask />
</Card>
</Col>
)}

View File

@@ -3,7 +3,7 @@ import React from "react";
import { useTranslation } from "react-i18next";
import { GenerateThumbUrl } from "../jobs-documents-gallery/job-documents.utility";
import CardTemplate from "./job-detail-cards.template.component";
import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../upsell/upsell.component";
export default function JobDetailCardsDocumentsComponent({ loading, data }) {
const { t } = useTranslation();
@@ -21,7 +21,7 @@ export default function JobDetailCardsDocumentsComponent({ loading, data }) {
title={t("jobs.labels.cards.documents")}
extraLink={`/manage/jobs/${data.id}?tab=documents`}
>
<UpsellComponent disableMask upsell={UpsellEnum().media.general}>
<UpsellComponent disableMask upsell={upsellEnum().media.general}>
{data.documents.length > 0 ? (
<Carousel autoplay>
{data.documents.map((item) => (

View File

@@ -9,14 +9,25 @@ import { useTranslation } from "react-i18next";
import "./job-lifecycle.styles.scss";
import BlurWrapperComponent from "../feature-wrapper/blur-wrapper.component";
import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../upsell/upsell.component";
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop
});
const mapDispatchToProps = (dispatch) => ({
//setUserLanguage: language => dispatch(setUserLanguage(language))
});
// show text on bar if text can fit
export function JobLifecycleComponent({ job, statuses, ...rest }) {
export function JobLifecycleComponent({ bodyshop, job, statuses, ...rest }) {
const [loading, setLoading] = useState(true);
const [lifecycleData, setLifecycleData] = useState(null);
const { t } = useTranslation(); // Used for tracking external state changes.
const hasLifeCycleAccess = HasFeatureAccess({ bodyshop, featureName: "lifecycle" });
const { data } = useQuery(
gql`
query get_job_test($id: uuid!) {
@@ -143,9 +154,11 @@ export function JobLifecycleComponent({ job, statuses, ...rest }) {
}
style={{ width: "100%" }}
>
<Card type="inner" style={{ marginTop: "10px" }}>
<UpsellComponent upsell={UpsellEnum().lifecycle.general} />
</Card>
{!hasLifeCycleAccess && (
<Card type="inner" style={{ marginTop: "10px" }}>
<UpsellComponent upsell={upsellEnum().lifecycle.general} />
</Card>
)}
<BlurWrapperComponent featureName="lifecycle" bypass>
<div
id="bar-container"
@@ -302,5 +315,4 @@ export function JobLifecycleComponent({ job, statuses, ...rest }) {
</Card>
);
}
export default JobLifecycleComponent;
export default connect(mapStateToProps, mapDispatchToProps)(JobLifecycleComponent);

View File

@@ -18,7 +18,7 @@ import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors";
import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop
});
@@ -133,7 +133,7 @@ function JobsDocumentsComponent({
{!hasMediaAccess && (
<Col span={24}>
<Card>
<UpsellComponent disableMask upsell={UpsellEnum().media.general} />
<UpsellComponent disableMask upsell={upsellEnum().media.general} />
</Card>
</Col>
)}
@@ -152,7 +152,7 @@ function JobsDocumentsComponent({
{hasMediaAccess && !hasMobileAccess && (
<Col span={24}>
<Card>
<UpsellComponent upsell={UpsellEnum().media.mobile} />
<UpsellComponent upsell={upsellEnum().media.mobile} />
</Card>
</Col>
)}

View File

@@ -18,7 +18,7 @@ import JobsDocumentsLocalGallerySelectAllComponent from "./jobs-documents-local-
import Lightbox from "react-image-lightbox";
import "react-image-lightbox/style.css";
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -117,7 +117,7 @@ export function JobsDocumentsLocalGallery({
{!hasMediaAccess && (
<Col span={24}>
<Card>
<UpsellComponent disableMask upsell={UpsellEnum().media.general} />
<UpsellComponent disableMask upsell={upsellEnum().media.general} />
</Card>
</Col>
)}

View File

@@ -13,7 +13,7 @@ import LaborAllocationsAdjustmentEdit from "../labor-allocations-adjustment-edit
import "./labor-allocations-table.styles.scss";
import { CalculateAllocationsTotals } from "./labor-allocations-table.utility";
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
technician: selectTechnician
@@ -206,7 +206,7 @@ export function LaborAllocationsTable({
...(!hasTimeTicketAccess && {
emptyText: (
<Card>
<UpsellComponent upsell={UpsellEnum().timetickets.allocations} />
<UpsellComponent upsell={upsellEnum().timetickets.allocations} />
</Card>
)
})
@@ -249,7 +249,7 @@ export function LaborAllocationsTable({
...(!hasTimeTicketAccess && {
emptyText: (
<Card>
<UpsellComponent upsell={UpsellEnum().timetickets.allocations} />
<UpsellComponent upsell={upsellEnum().timetickets.allocations} />
</Card>
)
})

View File

@@ -11,7 +11,7 @@ import { selectBodyshop } from "../../redux/user/user.selectors";
import CurrencyFormatter from "../../utils/CurrencyFormatter";
import "./labor-allocations-table.styles.scss";
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../upsell/upsell.component";
import LockWrapperComponent from "../lock-wrapper/lock-wrapper.component";
const mapStateToProps = createStructuredSelector({
@@ -269,7 +269,7 @@ export function PayrollLaborAllocationsTable({
...(!hasTimeTicketAccess && {
emptyText: (
<Card>
<UpsellComponent upsell={UpsellEnum().timetickets.allocations} />
<UpsellComponent upsell={upsellEnum().timetickets.allocations} />
</Card>
)
})

View File

@@ -7,7 +7,7 @@ import { Legend, PolarAngleAxis, PolarGrid, PolarRadiusAxis, Radar, RadarChart,
import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors";
import BlurWrapperComponent from "../feature-wrapper/blur-wrapper.component";
import { UpsellMaskWrapper, UpsellEnum } from "../upsell/upsell.component";
import { UpsellMaskWrapper, upsellEnum } from "../upsell/upsell.component";
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
const mapStateToProps = createStructuredSelector({
@@ -75,7 +75,7 @@ export function ScheduleCalendarHeaderGraph({ bodyshop, loadData }) {
{hasSmartSchedulingAccess ? (
chartContents
) : (
<UpsellMaskWrapper upsell={UpsellEnum().smartscheduling.general}>{chartContents}</UpsellMaskWrapper>
<UpsellMaskWrapper upsell={upsellEnum().smartscheduling.general}>{chartContents}</UpsellMaskWrapper>
)}
</BlurWrapperComponent>
</div>

View File

@@ -17,7 +17,7 @@ import LoadingSkeleton from "../loading-skeleton/loading-skeleton.component";
import OwnerNameDisplay from "../owner-name-display/owner-name-display.component";
import ScheduleBlockDay from "../schedule-block-day/schedule-block-day.component";
import ScheduleCalendarHeaderGraph from "./schedule-calendar-header-graph.component";
import UpsellComponent, { UpsellEnum, UpsellMaskWrapper } from "../upsell/upsell.component";
import UpsellComponent, { upsellEnum, UpsellMaskWrapper } from "../upsell/upsell.component";
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
const mapStateToProps = createStructuredSelector({
@@ -93,7 +93,7 @@ export function ScheduleCalendarHeaderComponent({
</table>
{!hasSmartSchedulingAccess && (
<Card style={{ maxWidth: "30rem" }}>
<UpsellComponent size="small" upsell={UpsellEnum().smartscheduling.hrsdelta} />
<UpsellComponent size="small" upsell={upsellEnum().smartscheduling.hrsdelta} />
</Card>
)}
</div>
@@ -135,7 +135,7 @@ export function ScheduleCalendarHeaderComponent({
)}
{!hasSmartSchedulingAccess && (
<Card style={{ maxWidth: "30rem" }}>
<UpsellComponent size="small" upsell={UpsellEnum().smartscheduling.hrsdelta} />
<UpsellComponent size="small" upsell={upsellEnum().smartscheduling.hrsdelta} />
</Card>
)}
</tbody>

View File

@@ -17,7 +17,7 @@ import ScheduleExistingAppointmentsList from "../schedule-existing-appointments-
import "./schedule-job-modal.scss";
import LockWrapperComponent from "../lock-wrapper/lock-wrapper.component";
import BlurWrapper from "../feature-wrapper/blur-wrapper.component";
import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop
@@ -139,7 +139,7 @@ export function ScheduleJobModalComponent({
</Button>
))}
{!smartOptions.length > 1 && hasSmartSchedulingAccess && (
<UpsellComponent upsell={UpsellEnum().smartscheduling.general} />
<UpsellComponent upsell={upsellEnum().smartscheduling.general} />
)}
</Space>
</>

View File

@@ -16,7 +16,7 @@ import { HasRbacAccess } from "../rbac-wrapper/rbac-wrapper.component";
import TimeTicketEnterButton from "../time-ticket-enter-button/time-ticket-enter-button.component";
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
import LockWrapperComponent from "../lock-wrapper/lock-wrapper.component";
import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -364,7 +364,7 @@ export function TimeTicketList({
...(!hasTimeTicketsAccess && {
emptyText: (
<Card>
<UpsellComponent upsell={UpsellEnum().timetickets.general} />
<UpsellComponent upsell={upsellEnum().timetickets.general} />
</Card>
)
})

View File

@@ -13,15 +13,14 @@ import { Button, Card, Result } from "antd";
import i18n from "i18next";
import React, { useEffect, useRef } from "react";
import { useTranslation } from "react-i18next";
import "./upsell.styles.scss";
import InstanceRenderManager from "../../utils/instanceRenderMgr.js";
import { store } from "../../redux/store.js";
import { Link } from "react-router-dom";
import { useSelector } from "react-redux";
import { store } from "../../redux/store.js";
import InstanceRenderManager from "../../utils/instanceRenderMgr.js";
import "./upsell.styles.scss";
export default function UpsellComponent({ featureName, subFeatureName, upsell, disableMask }) {
const { t } = useTranslation();
const resultProps = upsell || UpsellEnum[featureName][subFeatureName];
const resultProps = upsell || upsellEnum[featureName][subFeatureName];
const componentRef = useRef(null);
@@ -56,7 +55,7 @@ export default function UpsellComponent({ featureName, subFeatureName, upsell, d
}
//Kept in the same function as the result props line must mirror and doesnt warrant a separate function.
export function UpsellMaskWrapper({ children, upsell, featureName, subFeatureName }) {
const resultProps = upsell || UpsellEnum[featureName][subFeatureName];
const resultProps = upsell || upsellEnum[featureName][subFeatureName];
return (
<div className="mask-wrapper">
<div className="mask-content">{children}</div>
@@ -68,11 +67,10 @@ export function UpsellMaskWrapper({ children, upsell, featureName, subFeatureNam
</div>
);
}
//This is kept in this function as pulling it out into it's own util/enum prevents passing JSX as an `extra` prop
export const UpsellEnum = () => {
//Had to use the selector hook as accessing store with store.getState() was causing issues when hot reloading.
const currentUser = useSelector((state) => state.user.currentUser);
const bodyshop = useSelector((state) => state.user.bodyshop);
export const upsellEnum = () => {
const { currentUser, bodyshop } = store.getState().user;
const [first_name, ...last_name] = currentUser?.displayName ? currentUser.displayName.split(" ") : [];
const LearnMoreLink = encodeURI(

View File

@@ -13,7 +13,7 @@ import { selectPartnerVersion } from "../../redux/application/application.select
import { selectBodyshop } from "../../redux/user/user.selectors";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
import { Card } from "antd";
const mapStateToProps = createStructuredSelector({
@@ -63,7 +63,7 @@ export function AccountingPayablesContainer({ bodyshop, setBreadcrumbs, setSelec
featureName="export"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().accounting.payables} />
<UpsellComponent upsell={upsellEnum().accounting.payables} />
</Card>
}
>

View File

@@ -13,7 +13,7 @@ import { checkPartnerStatus } from "../../components/partner-ping/partner-ping.c
import { selectPartnerVersion } from "../../redux/application/application.selectors";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
import { Card } from "antd";
const mapStateToProps = createStructuredSelector({
@@ -61,7 +61,7 @@ export function AccountingPaymentsContainer({ bodyshop, setBreadcrumbs, setSelec
featureName="export"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().accounting.payments} />
<UpsellComponent upsell={upsellEnum().accounting.payments} />
</Card>
}
>

View File

@@ -14,7 +14,7 @@ import { selectPartnerVersion } from "../../redux/application/application.select
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import { Card } from "antd";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -66,7 +66,7 @@ export function AccountingReceivablesContainer({ bodyshop, setBreadcrumbs, setSe
featureName="export"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().accounting.receivables} />
<UpsellComponent upsell={upsellEnum().accounting.receivables} />
</Card>
}
>

View File

@@ -14,7 +14,7 @@ import { pageLimit } from "../../utils/config";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import { Card } from "antd";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -59,7 +59,7 @@ export function BillsPageContainer({ setBreadcrumbs, setSelectedHeader }) {
featureName="bills"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().bills.general} />
<UpsellComponent upsell={upsellEnum().bills.general} />
</Card>
}
>

View File

@@ -13,7 +13,7 @@ import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/appli
import { selectBodyshop } from "../../redux/user/user.selectors";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import ContractCreatePageComponent from "./contract-create.page.component";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop
@@ -125,7 +125,7 @@ export function ContractCreatePageContainer({ bodyshop, setBreadcrumbs, setSelec
featureName="courtesycars"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().courtesycars.general} />
<UpsellComponent upsell={upsellEnum().courtesycars.general} />
</Card>
}
>

View File

@@ -16,7 +16,7 @@ import ContractDetailPageComponent from "./contract-detail.page.component";
import NotFound from "../../components/not-found/not-found.component";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -113,7 +113,7 @@ export function ContractDetailPageContainer({ setBreadcrumbs, addRecentItem, set
featureName="courtesycars"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().courtesycars.general} />
<UpsellComponent upsell={upsellEnum().courtesycars.general} />
</Card>
}
>

View File

@@ -13,7 +13,7 @@ import { pageLimit } from "../../utils/config";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import { Card } from "antd";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -62,7 +62,7 @@ export function ContractsPageContainer({ setBreadcrumbs, setSelectedHeader }) {
featureName="courtesycars"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().courtesycars.general} />
<UpsellComponent upsell={upsellEnum().courtesycars.general} />
</Card>
}
>

View File

@@ -12,7 +12,7 @@ import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/appli
import { selectBodyshop } from "../../redux/user/user.selectors";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop
@@ -73,7 +73,7 @@ export function CourtesyCarCreateContainer({ bodyshop, setBreadcrumbs, setSelect
featureName="courtesycars"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().courtesycars.general} />
<UpsellComponent upsell={upsellEnum().courtesycars.general} />
</Card>
}
>

View File

@@ -10,7 +10,7 @@ import CourtesyCarsPageComponent from "./courtesy-cars.page.component";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import { Card } from "antd";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -40,7 +40,7 @@ export function CourtesyCarsPageContainer({ setBreadcrumbs, setSelectedHeader })
featureName="courtesycars"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().courtesycars.general} />
<UpsellComponent upsell={upsellEnum().courtesycars.general} />
</Card>
}
>

View File

@@ -7,7 +7,7 @@ import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/appli
import FeatureWrapper from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import { Card } from "antd";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -38,7 +38,7 @@ export function ExportsLogPageContainer({ setBreadcrumbs, setSelectedHeader }) {
featureName="dashboard"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().dashboard.general} />
<UpsellComponent upsell={upsellEnum().dashboard.general} />
</Card>
}
>

View File

@@ -7,7 +7,7 @@ import ExportLogsPage from "./export-logs.page.component";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import { Card } from "antd";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
const mapDispatchToProps = (dispatch) => ({
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
@@ -38,7 +38,7 @@ export function ExportsLogPageContainer({ setBreadcrumbs, setSelectedHeader }) {
featureName="export"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().accounting.receivables} />
<UpsellComponent upsell={upsellEnum().accounting.receivables} />
</Card>
}
>

View File

@@ -15,7 +15,7 @@ import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/appli
import { selectBodyshop } from "../../redux/user/user.selectors";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
//currentUser: selectCurrentUser
@@ -79,7 +79,7 @@ export function JobsChecklistViewContainer({ bodyshop, setBreadcrumbs, setSelect
featureName="checklist"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().checklist.general} />
<UpsellComponent upsell={upsellEnum().checklist.general} />
</Card>
}
>

View File

@@ -14,7 +14,7 @@ import JobchecklistComponent from "../../components/job-checklist/job-checklist.
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import { Card } from "antd";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
//currentUser: selectCurrentUser
@@ -66,7 +66,7 @@ export function JobsDeliverContainer({ bodyshop, setBreadcrumbs, setSelectedHead
featureName="checklist"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().checklist.general} />
<UpsellComponent upsell={upsellEnum().checklist.general} />
</Card>
}
>

View File

@@ -14,7 +14,7 @@ import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import { Card, Result } from "antd";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
//currentUser: selectCurrentUser
@@ -69,7 +69,7 @@ export function JobsIntakeContainer({ bodyshop, setBreadcrumbs, setSelectedHeade
featureName="checklist"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().checklist.general} />
<UpsellComponent upsell={upsellEnum().checklist.general} />
</Card>
}
>

View File

@@ -14,7 +14,7 @@ import { selectBodyshop } from "../../redux/user/user.selectors";
import { pageLimit } from "../../utils/config";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
import { Card } from "antd";
const mapStateToProps = createStructuredSelector({
@@ -64,7 +64,7 @@ export function AllJobs({ bodyshop, setBreadcrumbs, setSelectedHeader }) {
featureName="payments"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().payments.general} />
<UpsellComponent upsell={upsellEnum().payments.general} />
</Card>
}
z

View File

@@ -5,7 +5,7 @@ import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import FeatureWrapper from "../../components/feature-wrapper/feature-wrapper.component";
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/application.actions";
import { selectBodyshop } from "../../redux/user/user.selectors";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
@@ -44,7 +44,7 @@ export function ProductionBoardContainer({ setBreadcrumbs, bodyshop, setSelected
featureName="visualboard"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().visualboard.general} />
<UpsellComponent upsell={upsellEnum().visualboard.general} />
</Card>
}
>

View File

@@ -15,7 +15,7 @@ import ScoreboardTimeTickets from "../../components/scoreboard-timetickets/score
import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/application.actions";
import { selectBodyshop } from "../../redux/user/user.selectors";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
/**
* Mapping state to props
@@ -71,7 +71,7 @@ export function ScoreboardContainer({ setBreadcrumbs, setSelectedHeader }) {
featureName="scoreboard"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().scoreboard.general} />
<UpsellComponent upsell={upsellEnum().scoreboard.general} />
</Card>
}
>

View File

@@ -3,7 +3,7 @@ import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
import TimeTicketShift from "../../components/time-ticket-shift/time-ticket-shift.container";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import { Card } from "antd";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
export default function ShiftClock() {
return (
@@ -11,7 +11,7 @@ export default function ShiftClock() {
featureName="timetickets"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().dashboard.general} />
<UpsellComponent upsell={upsellEnum().dashboard.general} />
</Card>
}
>

View File

@@ -13,7 +13,7 @@ import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/appli
import { selectBodyshop } from "../../redux/user/user.selectors";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop
@@ -56,7 +56,7 @@ export function ShopCsiContainer({ bodyshop, setBreadcrumbs, setSelectedHeader }
featureName="csi"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().csi.general} />
<UpsellComponent upsell={upsellEnum().csi.general} />
</Card>
}
>

View File

@@ -14,7 +14,7 @@ import UpdateAlert from "../../components/update-alert/update-alert.component";
import { selectTechnician } from "../../redux/tech/tech.selectors";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import "./tech.page.styles.scss";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component.jsx";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component.jsx";
const TimeTicketModalContainer = lazy(() => import("../../components/time-ticket-modal/time-ticket-modal.container"));
const EmailOverlayContainer = lazy(() => import("../../components/email-overlay/email-overlay.container.jsx"));
@@ -87,7 +87,7 @@ export function TechPage({ technician }) {
featureName="techconsole"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().techconsole.general} />
<UpsellComponent upsell={upsellEnum().techconsole.general} />
</Card>
}
>

View File

@@ -9,7 +9,7 @@ import TemporaryDocsComponent from "./temporary-docs.component";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import { Card } from "antd";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop
@@ -44,7 +44,7 @@ export function TempDocumentsContainer({ setBreadcrumbs, setSelectedHeader }) {
featureName="media"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().media.general} />
<UpsellComponent upsell={upsellEnum().media.general} />
</Card>
}
>

View File

@@ -20,7 +20,7 @@ import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wr
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import { useSplitTreatments } from "@splitsoftware/splitio-react";
import { selectBodyshop } from "../../redux/user/user.selectors";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop
@@ -78,7 +78,7 @@ export function TimeTicketsContainer({ bodyshop, setBreadcrumbs, setSelectedHead
featureName="timetickets"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().timetickets.general} />
<UpsellComponent upsell={upsellEnum().timetickets.general} />
</Card>
}
>

View File

@@ -9,7 +9,7 @@ import { selectBodyshop } from "../../redux/user/user.selectors";
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr";
import { Card } from "antd";
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop
@@ -44,7 +44,7 @@ export function TtApprovalsPage({ setBreadcrumbs, setSelectedHeader }) {
featureName="timetickets"
noauth={
<Card>
<UpsellComponent upsell={UpsellEnum().timetickets.general} />
<UpsellComponent upsell={upsellEnum().timetickets.general} />
</Card>
}
>