Merged in feature/IO-3067-implement-learn-more-link-for-rome-upsells (pull request #2034)
Feature/IO-3067 implement learn more link for rome upsells
This commit is contained in:
@@ -18,7 +18,7 @@ import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
|
|||||||
import LockerWrapperComponent from "../lock-wrapper/lock-wrapper.component";
|
import LockerWrapperComponent from "../lock-wrapper/lock-wrapper.component";
|
||||||
import PrintWrapperComponent from "../print-wrapper/print-wrapper.component";
|
import PrintWrapperComponent from "../print-wrapper/print-wrapper.component";
|
||||||
import UpsellComponent from "../upsell/upsell.component";
|
import UpsellComponent from "../upsell/upsell.component";
|
||||||
import { upsellEnum } from "../upsell/upsell.component";
|
import { UpsellEnum } from "../upsell/upsell.component";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
jobRO: selectJobReadOnly,
|
jobRO: selectJobReadOnly,
|
||||||
@@ -240,7 +240,7 @@ export function BillsListTableComponent({
|
|||||||
onChange={handleTableChange}
|
onChange={handleTableChange}
|
||||||
locale={{
|
locale={{
|
||||||
...(!hasBillsAccess && {
|
...(!hasBillsAccess && {
|
||||||
emptyText: <UpsellComponent upsell={upsellEnum().bills.general} />
|
emptyText: <UpsellComponent upsell={UpsellEnum().bills.general} />
|
||||||
})
|
})
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selecto
|
|||||||
import { DateTimeFormatter } from "../../utils/DateFormatter";
|
import { DateTimeFormatter } from "../../utils/DateFormatter";
|
||||||
import BlurWrapperComponent from "../feature-wrapper/blur-wrapper.component";
|
import BlurWrapperComponent from "../feature-wrapper/blur-wrapper.component";
|
||||||
import { HasFeatureAccess } from "../feature-wrapper/feature-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({
|
const mapStateToProps = createStructuredSelector({
|
||||||
currentUser: selectCurrentUser,
|
currentUser: selectCurrentUser,
|
||||||
@@ -147,7 +147,7 @@ export function JobAuditTrail({ bodyshop, currentUser, jobId }) {
|
|||||||
{!hasAuditAccess && (
|
{!hasAuditAccess && (
|
||||||
<Col span={24}>
|
<Col span={24}>
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().audit.general} disableMask />
|
<UpsellComponent upsell={UpsellEnum().audit.general} disableMask />
|
||||||
</Card>
|
</Card>
|
||||||
</Col>
|
</Col>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import AlertComponent from "../alert/alert.component";
|
|||||||
import LoadingSkeleton from "../loading-skeleton/loading-skeleton.component";
|
import LoadingSkeleton from "../loading-skeleton/loading-skeleton.component";
|
||||||
import "./job-bills-total.styles.scss";
|
import "./job-bills-total.styles.scss";
|
||||||
import BlurWrapperComponent from "../feature-wrapper/blur-wrapper.component";
|
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 { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { createStructuredSelector } from "reselect";
|
import { createStructuredSelector } from "reselect";
|
||||||
@@ -336,7 +336,7 @@ export function JobBillsTotalComponent({
|
|||||||
{!hasBillsAccess && (
|
{!hasBillsAccess && (
|
||||||
<Col span={6}>
|
<Col span={6}>
|
||||||
<Card style={{ height: "100%" }}>
|
<Card style={{ height: "100%" }}>
|
||||||
<UpsellComponent upsell={upsellEnum().bills.autoreconcile} disableMask />
|
<UpsellComponent upsell={UpsellEnum().bills.autoreconcile} disableMask />
|
||||||
</Card>
|
</Card>
|
||||||
</Col>
|
</Col>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import React from "react";
|
|||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { GenerateThumbUrl } from "../jobs-documents-gallery/job-documents.utility";
|
import { GenerateThumbUrl } from "../jobs-documents-gallery/job-documents.utility";
|
||||||
import CardTemplate from "./job-detail-cards.template.component";
|
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 }) {
|
export default function JobDetailCardsDocumentsComponent({ loading, data }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@@ -21,7 +21,7 @@ export default function JobDetailCardsDocumentsComponent({ loading, data }) {
|
|||||||
title={t("jobs.labels.cards.documents")}
|
title={t("jobs.labels.cards.documents")}
|
||||||
extraLink={`/manage/jobs/${data.id}?tab=documents`}
|
extraLink={`/manage/jobs/${data.id}?tab=documents`}
|
||||||
>
|
>
|
||||||
<UpsellComponent disableMask upsell={upsellEnum().media.general}>
|
<UpsellComponent disableMask upsell={UpsellEnum().media.general}>
|
||||||
{data.documents.length > 0 ? (
|
{data.documents.length > 0 ? (
|
||||||
<Carousel autoplay>
|
<Carousel autoplay>
|
||||||
{data.documents.map((item) => (
|
{data.documents.map((item) => (
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { useTranslation } from "react-i18next";
|
|||||||
|
|
||||||
import "./job-lifecycle.styles.scss";
|
import "./job-lifecycle.styles.scss";
|
||||||
import BlurWrapperComponent from "../feature-wrapper/blur-wrapper.component";
|
import BlurWrapperComponent from "../feature-wrapper/blur-wrapper.component";
|
||||||
import UpsellComponent, { upsellEnum } from "../upsell/upsell.component";
|
import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component";
|
||||||
|
|
||||||
// show text on bar if text can fit
|
// show text on bar if text can fit
|
||||||
export function JobLifecycleComponent({ job, statuses, ...rest }) {
|
export function JobLifecycleComponent({ job, statuses, ...rest }) {
|
||||||
@@ -144,7 +144,7 @@ export function JobLifecycleComponent({ job, statuses, ...rest }) {
|
|||||||
style={{ width: "100%" }}
|
style={{ width: "100%" }}
|
||||||
>
|
>
|
||||||
<Card type="inner" style={{ marginTop: "10px" }}>
|
<Card type="inner" style={{ marginTop: "10px" }}>
|
||||||
<UpsellComponent upsell={upsellEnum().lifecycle.general} />
|
<UpsellComponent upsell={UpsellEnum().lifecycle.general} />
|
||||||
</Card>
|
</Card>
|
||||||
<BlurWrapperComponent featureName="lifecycle" bypass>
|
<BlurWrapperComponent featureName="lifecycle" bypass>
|
||||||
<div
|
<div
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
|
|||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { createStructuredSelector } from "reselect";
|
import { createStructuredSelector } from "reselect";
|
||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import UpsellComponent, { upsellEnum } from "../upsell/upsell.component";
|
import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component";
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop
|
bodyshop: selectBodyshop
|
||||||
});
|
});
|
||||||
@@ -133,7 +133,7 @@ function JobsDocumentsComponent({
|
|||||||
{!hasMediaAccess && (
|
{!hasMediaAccess && (
|
||||||
<Col span={24}>
|
<Col span={24}>
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent disableMask upsell={upsellEnum().media.general} />
|
<UpsellComponent disableMask upsell={UpsellEnum().media.general} />
|
||||||
</Card>
|
</Card>
|
||||||
</Col>
|
</Col>
|
||||||
)}
|
)}
|
||||||
@@ -152,7 +152,7 @@ function JobsDocumentsComponent({
|
|||||||
{hasMediaAccess && !hasMobileAccess && (
|
{hasMediaAccess && !hasMobileAccess && (
|
||||||
<Col span={24}>
|
<Col span={24}>
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().media.mobile} />
|
<UpsellComponent upsell={UpsellEnum().media.mobile} />
|
||||||
</Card>
|
</Card>
|
||||||
</Col>
|
</Col>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import JobsDocumentsLocalGallerySelectAllComponent from "./jobs-documents-local-
|
|||||||
import Lightbox from "react-image-lightbox";
|
import Lightbox from "react-image-lightbox";
|
||||||
import "react-image-lightbox/style.css";
|
import "react-image-lightbox/style.css";
|
||||||
import { HasFeatureAccess } from "../feature-wrapper/feature-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({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop,
|
bodyshop: selectBodyshop,
|
||||||
@@ -117,7 +117,7 @@ export function JobsDocumentsLocalGallery({
|
|||||||
{!hasMediaAccess && (
|
{!hasMediaAccess && (
|
||||||
<Col span={24}>
|
<Col span={24}>
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent disableMask upsell={upsellEnum().media.general} />
|
<UpsellComponent disableMask upsell={UpsellEnum().media.general} />
|
||||||
</Card>
|
</Card>
|
||||||
</Col>
|
</Col>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import LaborAllocationsAdjustmentEdit from "../labor-allocations-adjustment-edit
|
|||||||
import "./labor-allocations-table.styles.scss";
|
import "./labor-allocations-table.styles.scss";
|
||||||
import { CalculateAllocationsTotals } from "./labor-allocations-table.utility";
|
import { CalculateAllocationsTotals } from "./labor-allocations-table.utility";
|
||||||
import { HasFeatureAccess } from "../feature-wrapper/feature-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({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop,
|
bodyshop: selectBodyshop,
|
||||||
technician: selectTechnician
|
technician: selectTechnician
|
||||||
@@ -206,7 +206,7 @@ export function LaborAllocationsTable({
|
|||||||
...(!hasTimeTicketAccess && {
|
...(!hasTimeTicketAccess && {
|
||||||
emptyText: (
|
emptyText: (
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().timetickets.allocations} />
|
<UpsellComponent upsell={UpsellEnum().timetickets.allocations} />
|
||||||
</Card>
|
</Card>
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
@@ -249,7 +249,7 @@ export function LaborAllocationsTable({
|
|||||||
...(!hasTimeTicketAccess && {
|
...(!hasTimeTicketAccess && {
|
||||||
emptyText: (
|
emptyText: (
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().timetickets.allocations} />
|
<UpsellComponent upsell={UpsellEnum().timetickets.allocations} />
|
||||||
</Card>
|
</Card>
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import { selectBodyshop } from "../../redux/user/user.selectors";
|
|||||||
import CurrencyFormatter from "../../utils/CurrencyFormatter";
|
import CurrencyFormatter from "../../utils/CurrencyFormatter";
|
||||||
import "./labor-allocations-table.styles.scss";
|
import "./labor-allocations-table.styles.scss";
|
||||||
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
|
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";
|
import LockWrapperComponent from "../lock-wrapper/lock-wrapper.component";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
@@ -269,7 +269,7 @@ export function PayrollLaborAllocationsTable({
|
|||||||
...(!hasTimeTicketAccess && {
|
...(!hasTimeTicketAccess && {
|
||||||
emptyText: (
|
emptyText: (
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().timetickets.allocations} />
|
<UpsellComponent upsell={UpsellEnum().timetickets.allocations} />
|
||||||
</Card>
|
</Card>
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { Legend, PolarAngleAxis, PolarGrid, PolarRadiusAxis, Radar, RadarChart,
|
|||||||
import { createStructuredSelector } from "reselect";
|
import { createStructuredSelector } from "reselect";
|
||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import BlurWrapperComponent from "../feature-wrapper/blur-wrapper.component";
|
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";
|
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
@@ -75,7 +75,7 @@ export function ScheduleCalendarHeaderGraph({ bodyshop, loadData }) {
|
|||||||
{hasSmartSchedulingAccess ? (
|
{hasSmartSchedulingAccess ? (
|
||||||
chartContents
|
chartContents
|
||||||
) : (
|
) : (
|
||||||
<UpsellMaskWrapper upsell={upsellEnum().smartscheduling.general}>{chartContents}</UpsellMaskWrapper>
|
<UpsellMaskWrapper upsell={UpsellEnum().smartscheduling.general}>{chartContents}</UpsellMaskWrapper>
|
||||||
)}
|
)}
|
||||||
</BlurWrapperComponent>
|
</BlurWrapperComponent>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import LoadingSkeleton from "../loading-skeleton/loading-skeleton.component";
|
|||||||
import OwnerNameDisplay from "../owner-name-display/owner-name-display.component";
|
import OwnerNameDisplay from "../owner-name-display/owner-name-display.component";
|
||||||
import ScheduleBlockDay from "../schedule-block-day/schedule-block-day.component";
|
import ScheduleBlockDay from "../schedule-block-day/schedule-block-day.component";
|
||||||
import ScheduleCalendarHeaderGraph from "./schedule-calendar-header-graph.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";
|
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
@@ -93,7 +93,7 @@ export function ScheduleCalendarHeaderComponent({
|
|||||||
</table>
|
</table>
|
||||||
{!hasSmartSchedulingAccess && (
|
{!hasSmartSchedulingAccess && (
|
||||||
<Card style={{ maxWidth: "30rem" }}>
|
<Card style={{ maxWidth: "30rem" }}>
|
||||||
<UpsellComponent size="small" upsell={upsellEnum().smartscheduling.hrsdelta} />
|
<UpsellComponent size="small" upsell={UpsellEnum().smartscheduling.hrsdelta} />
|
||||||
</Card>
|
</Card>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
@@ -135,7 +135,7 @@ export function ScheduleCalendarHeaderComponent({
|
|||||||
)}
|
)}
|
||||||
{!hasSmartSchedulingAccess && (
|
{!hasSmartSchedulingAccess && (
|
||||||
<Card style={{ maxWidth: "30rem" }}>
|
<Card style={{ maxWidth: "30rem" }}>
|
||||||
<UpsellComponent size="small" upsell={upsellEnum().smartscheduling.hrsdelta} />
|
<UpsellComponent size="small" upsell={UpsellEnum().smartscheduling.hrsdelta} />
|
||||||
</Card>
|
</Card>
|
||||||
)}
|
)}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import ScheduleExistingAppointmentsList from "../schedule-existing-appointments-
|
|||||||
import "./schedule-job-modal.scss";
|
import "./schedule-job-modal.scss";
|
||||||
import LockWrapperComponent from "../lock-wrapper/lock-wrapper.component";
|
import LockWrapperComponent from "../lock-wrapper/lock-wrapper.component";
|
||||||
import BlurWrapper from "../feature-wrapper/blur-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({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop
|
bodyshop: selectBodyshop
|
||||||
@@ -139,7 +139,7 @@ export function ScheduleJobModalComponent({
|
|||||||
</Button>
|
</Button>
|
||||||
))}
|
))}
|
||||||
{!smartOptions.length > 1 && hasSmartSchedulingAccess && (
|
{!smartOptions.length > 1 && hasSmartSchedulingAccess && (
|
||||||
<UpsellComponent upsell={upsellEnum().smartscheduling.general} />
|
<UpsellComponent upsell={UpsellEnum().smartscheduling.general} />
|
||||||
)}
|
)}
|
||||||
</Space>
|
</Space>
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -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 TimeTicketEnterButton from "../time-ticket-enter-button/time-ticket-enter-button.component";
|
||||||
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
|
import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component";
|
||||||
import LockWrapperComponent from "../lock-wrapper/lock-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({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop,
|
bodyshop: selectBodyshop,
|
||||||
@@ -364,7 +364,7 @@ export function TimeTicketList({
|
|||||||
...(!hasTimeTicketsAccess && {
|
...(!hasTimeTicketsAccess && {
|
||||||
emptyText: (
|
emptyText: (
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().timetickets.general} />
|
<UpsellComponent upsell={UpsellEnum().timetickets.general} />
|
||||||
</Card>
|
</Card>
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -14,10 +14,14 @@ import i18n from "i18next";
|
|||||||
import React, { useEffect, useRef } from "react";
|
import React, { useEffect, useRef } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import "./upsell.styles.scss";
|
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";
|
||||||
|
|
||||||
export default function UpsellComponent({ featureName, subFeatureName, upsell, disableMask }) {
|
export default function UpsellComponent({ featureName, subFeatureName, upsell, disableMask }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const resultProps = upsell || upsellEnum[featureName][subFeatureName];
|
const resultProps = upsell || UpsellEnum[featureName][subFeatureName];
|
||||||
|
|
||||||
const componentRef = useRef(null);
|
const componentRef = useRef(null);
|
||||||
|
|
||||||
@@ -52,7 +56,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.
|
//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 }) {
|
export function UpsellMaskWrapper({ children, upsell, featureName, subFeatureName }) {
|
||||||
const resultProps = upsell || upsellEnum[featureName][subFeatureName];
|
const resultProps = upsell || UpsellEnum[featureName][subFeatureName];
|
||||||
return (
|
return (
|
||||||
<div className="mask-wrapper">
|
<div className="mask-wrapper">
|
||||||
<div className="mask-content">{children}</div>
|
<div className="mask-content">{children}</div>
|
||||||
@@ -65,173 +69,275 @@ export function UpsellMaskWrapper({ children, upsell, featureName, subFeatureNam
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
//This is kept in this function as pulling it out into it's own util/enum prevents passing JSX as an `extra` prop
|
//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 = () => ({
|
export const UpsellEnum = () => {
|
||||||
bills: {
|
//Had to use the selector hook as accessing store with store.getState() was causing issues when hot reloading.
|
||||||
autoreconcile: {
|
const currentUser = useSelector((state) => state.user.currentUser);
|
||||||
//icon: null,
|
const bodyshop = useSelector((state) => state.user.bodyshop);
|
||||||
title: i18n.t("upsell.messages.bills.autoreconcile.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.bills.autoreconcile.subtitle"),
|
const [first_name, ...last_name] = currentUser?.displayName ? currentUser.displayName.split(" ") : [];
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
const LearnMoreLink = encodeURI(
|
||||||
//status: null
|
InstanceRenderManager({
|
||||||
|
imex: `https://imexsystems.ca/schedule-a-demo/`,
|
||||||
|
rome: `https://forms.zohopublic.com/rometech/form/ROLearnMore/formperma/0G29z8LgLlvKK8nno-b7s-GHgNXwIFlrMeE0mC394L4?first_name=${first_name || ""}&last_name=${last_name.join(" ") || ""}&shop_name=${bodyshop?.shopname || ""}&email=${currentUser?.email || ""}&shop_phone=${bodyshop?.phone || ""}`
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
return {
|
||||||
|
bills: {
|
||||||
|
autoreconcile: {
|
||||||
|
//icon: null,
|
||||||
|
title: i18n.t("upsell.messages.bills.autoreconcile.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.bills.autoreconcile.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
//status: null
|
||||||
|
},
|
||||||
|
general: {
|
||||||
|
//icon: null,
|
||||||
|
title: i18n.t("upsell.messages.bills.general.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.bills.general.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
//status: null
|
||||||
|
}
|
||||||
},
|
},
|
||||||
general: {
|
checklist: {
|
||||||
//icon: null,
|
general: {
|
||||||
title: i18n.t("upsell.messages.bills.general.title"),
|
//icon: null,
|
||||||
subTitle: i18n.t("upsell.messages.bills.general.subtitle"),
|
title: i18n.t("upsell.messages.checklist.general.title"),
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
subTitle: i18n.t("upsell.messages.checklist.general.subtitle"),
|
||||||
//status: null
|
extra: (
|
||||||
}
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
},
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
checklist: {
|
</Link>
|
||||||
general: {
|
)
|
||||||
//icon: null,
|
//status: null
|
||||||
title: i18n.t("upsell.messages.checklist.general.title"),
|
}
|
||||||
subTitle: i18n.t("upsell.messages.checklist.general.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
//status: null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
payments: {
|
|
||||||
general: {
|
|
||||||
//icon: null,
|
|
||||||
title: i18n.t("upsell.messages.payments.general.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.payments.general.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
//status: null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
audit: {
|
|
||||||
general: {
|
|
||||||
//icon: null,
|
|
||||||
title: i18n.t("upsell.messages.audit.general.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.audit.general.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
//status: null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
lifecycle: {
|
|
||||||
general: {
|
|
||||||
//icon: null,
|
|
||||||
title: i18n.t("upsell.messages.lifecycle.general.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.lifecycle.general.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
//status: null }
|
|
||||||
}
|
|
||||||
},
|
|
||||||
media: {
|
|
||||||
general: {
|
|
||||||
//icon: null,
|
|
||||||
title: i18n.t("upsell.messages.media.general.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.media.general.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
//status: null }
|
|
||||||
},
|
|
||||||
mobile: {
|
|
||||||
icon: <MobileOutlined />,
|
|
||||||
title: i18n.t("upsell.messages.media.mobile.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.media.mobile.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
//status: null }
|
|
||||||
}
|
|
||||||
},
|
|
||||||
timetickets: {
|
|
||||||
allocations: {
|
|
||||||
title: i18n.t("upsell.messages.timetickets.allocations.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.timetickets.allocations.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
},
|
|
||||||
general: {
|
|
||||||
title: i18n.t("upsell.messages.timetickets.general.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.timetickets.general.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
}
|
|
||||||
},
|
|
||||||
smartscheduling: {
|
|
||||||
general: {
|
|
||||||
icon: <CalendarOutlined />,
|
|
||||||
title: i18n.t("upsell.messages.smartscheduling.general.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.smartscheduling.general.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
},
|
|
||||||
hrsdelta: {
|
|
||||||
icon: <CarOutlined />,
|
|
||||||
title: i18n.t("upsell.messages.smartscheduling.hrsdelta.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.smartscheduling.hrsdelta.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
},
|
|
||||||
datepicker: {
|
|
||||||
icon: <CarOutlined />,
|
|
||||||
title: i18n.t("upsell.messages.smartscheduling.datepicker.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.smartscheduling.datepicker.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
}
|
|
||||||
},
|
|
||||||
accounting: {
|
|
||||||
payables: {
|
|
||||||
icon: <DollarOutlined />,
|
|
||||||
title: i18n.t("upsell.messages.accounting.payables.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.accounting.payables.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
},
|
|
||||||
receivables: {
|
|
||||||
icon: <DollarOutlined />,
|
|
||||||
title: i18n.t("upsell.messages.accounting.receivables.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.accounting.receivables.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
},
|
},
|
||||||
payments: {
|
payments: {
|
||||||
icon: <DollarOutlined />,
|
general: {
|
||||||
title: i18n.t("upsell.messages.accounting.payments.title"),
|
//icon: null,
|
||||||
subTitle: i18n.t("upsell.messages.accounting.payments.subtitle"),
|
title: i18n.t("upsell.messages.payments.general.title"),
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
subTitle: i18n.t("upsell.messages.payments.general.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
//status: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
audit: {
|
||||||
|
general: {
|
||||||
|
//icon: null,
|
||||||
|
title: i18n.t("upsell.messages.audit.general.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.audit.general.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
//status: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
lifecycle: {
|
||||||
|
general: {
|
||||||
|
//icon: null,
|
||||||
|
title: i18n.t("upsell.messages.lifecycle.general.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.lifecycle.general.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
//status: null }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
media: {
|
||||||
|
general: {
|
||||||
|
//icon: null,
|
||||||
|
title: i18n.t("upsell.messages.media.general.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.media.general.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
//status: null }
|
||||||
|
},
|
||||||
|
mobile: {
|
||||||
|
icon: <MobileOutlined />,
|
||||||
|
title: i18n.t("upsell.messages.media.mobile.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.media.mobile.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
//status: null }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
timetickets: {
|
||||||
|
allocations: {
|
||||||
|
title: i18n.t("upsell.messages.timetickets.allocations.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.timetickets.allocations.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
general: {
|
||||||
|
title: i18n.t("upsell.messages.timetickets.general.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.timetickets.general.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
smartscheduling: {
|
||||||
|
general: {
|
||||||
|
icon: <CalendarOutlined />,
|
||||||
|
title: i18n.t("upsell.messages.smartscheduling.general.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.smartscheduling.general.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
hrsdelta: {
|
||||||
|
icon: <CarOutlined />,
|
||||||
|
title: i18n.t("upsell.messages.smartscheduling.hrsdelta.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.smartscheduling.hrsdelta.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
datepicker: {
|
||||||
|
icon: <CarOutlined />,
|
||||||
|
title: i18n.t("upsell.messages.smartscheduling.datepicker.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.smartscheduling.datepicker.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
accounting: {
|
||||||
|
payables: {
|
||||||
|
icon: <DollarOutlined />,
|
||||||
|
title: i18n.t("upsell.messages.accounting.payables.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.accounting.payables.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
receivables: {
|
||||||
|
icon: <DollarOutlined />,
|
||||||
|
title: i18n.t("upsell.messages.accounting.receivables.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.accounting.receivables.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
payments: {
|
||||||
|
icon: <DollarOutlined />,
|
||||||
|
title: i18n.t("upsell.messages.accounting.payments.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.accounting.payments.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
courtesycars: {
|
||||||
|
general: {
|
||||||
|
icon: <CarOutlined />,
|
||||||
|
title: i18n.t("upsell.messages.courtesycars.general.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.courtesycars.general.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dashboard: {
|
||||||
|
general: {
|
||||||
|
icon: <DashboardOutlined />,
|
||||||
|
title: i18n.t("upsell.messages.dashboard.general.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.dashboard.general.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
visualboard: {
|
||||||
|
general: {
|
||||||
|
icon: <BuildOutlined />,
|
||||||
|
title: i18n.t("upsell.messages.visualboard.general.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.visualboard.general.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
scoreboard: {
|
||||||
|
general: {
|
||||||
|
icon: <LineChartOutlined />,
|
||||||
|
title: i18n.t("upsell.messages.scoreboard.general.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.scoreboard.general.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
techconsole: {
|
||||||
|
general: {
|
||||||
|
icon: <LineChartOutlined />,
|
||||||
|
title: i18n.t("upsell.messages.techconsole.general.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.techconsole.general.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
csi: {
|
||||||
|
general: {
|
||||||
|
icon: <StarOutlined />,
|
||||||
|
title: i18n.t("upsell.messages.csi.general.title"),
|
||||||
|
subTitle: i18n.t("upsell.messages.csi.general.subtitle"),
|
||||||
|
extra: (
|
||||||
|
<Link to={LearnMoreLink} target="_blank">
|
||||||
|
<Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
||||||
|
</Link>
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
};
|
||||||
courtesycars: {
|
};
|
||||||
general: {
|
|
||||||
icon: <CarOutlined />,
|
|
||||||
title: i18n.t("upsell.messages.courtesycars.general.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.courtesycars.general.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
}
|
|
||||||
},
|
|
||||||
dashboard: {
|
|
||||||
general: {
|
|
||||||
icon: <DashboardOutlined />,
|
|
||||||
title: i18n.t("upsell.messages.dashboard.general.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.dashboard.general.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
}
|
|
||||||
},
|
|
||||||
visualboard: {
|
|
||||||
general: {
|
|
||||||
icon: <BuildOutlined />,
|
|
||||||
title: i18n.t("upsell.messages.visualboard.general.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.visualboard.general.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
}
|
|
||||||
},
|
|
||||||
scoreboard: {
|
|
||||||
general: {
|
|
||||||
icon: <LineChartOutlined />,
|
|
||||||
title: i18n.t("upsell.messages.scoreboard.general.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.scoreboard.general.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
}
|
|
||||||
},
|
|
||||||
techconsole: {
|
|
||||||
general: {
|
|
||||||
icon: <LineChartOutlined />,
|
|
||||||
title: i18n.t("upsell.messages.techconsole.general.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.techconsole.general.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
}
|
|
||||||
},
|
|
||||||
csi: {
|
|
||||||
general: {
|
|
||||||
icon: <StarOutlined />,
|
|
||||||
title: i18n.t("upsell.messages.csi.general.title"),
|
|
||||||
subTitle: i18n.t("upsell.messages.csi.general.subtitle"),
|
|
||||||
extra: <Button type="primary">{i18n.t("upsell.cta.learnmore")}</Button>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import { selectPartnerVersion } from "../../redux/application/application.select
|
|||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
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";
|
import { Card } from "antd";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
@@ -63,7 +63,7 @@ export function AccountingPayablesContainer({ bodyshop, setBreadcrumbs, setSelec
|
|||||||
featureName="export"
|
featureName="export"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().accounting.payables} />
|
<UpsellComponent upsell={UpsellEnum().accounting.payables} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import { checkPartnerStatus } from "../../components/partner-ping/partner-ping.c
|
|||||||
import { selectPartnerVersion } from "../../redux/application/application.selectors";
|
import { selectPartnerVersion } from "../../redux/application/application.selectors";
|
||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
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";
|
import { Card } from "antd";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
@@ -61,7 +61,7 @@ export function AccountingPaymentsContainer({ bodyshop, setBreadcrumbs, setSelec
|
|||||||
featureName="export"
|
featureName="export"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().accounting.payments} />
|
<UpsellComponent upsell={UpsellEnum().accounting.payments} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import { selectPartnerVersion } from "../../redux/application/application.select
|
|||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import { Card } from "antd";
|
import { Card } from "antd";
|
||||||
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
|
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop,
|
bodyshop: selectBodyshop,
|
||||||
@@ -66,7 +66,7 @@ export function AccountingReceivablesContainer({ bodyshop, setBreadcrumbs, setSe
|
|||||||
featureName="export"
|
featureName="export"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().accounting.receivables} />
|
<UpsellComponent upsell={UpsellEnum().accounting.receivables} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import { pageLimit } from "../../utils/config";
|
|||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import { Card } from "antd";
|
import { Card } from "antd";
|
||||||
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
|
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
|
||||||
|
|
||||||
const mapDispatchToProps = (dispatch) => ({
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
|
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
|
||||||
@@ -59,7 +59,7 @@ export function BillsPageContainer({ setBreadcrumbs, setSelectedHeader }) {
|
|||||||
featureName="bills"
|
featureName="bills"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().bills.general} />
|
<UpsellComponent upsell={UpsellEnum().bills.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/appli
|
|||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import ContractCreatePageComponent from "./contract-create.page.component";
|
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({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop
|
bodyshop: selectBodyshop
|
||||||
@@ -125,7 +125,7 @@ export function ContractCreatePageContainer({ bodyshop, setBreadcrumbs, setSelec
|
|||||||
featureName="courtesycars"
|
featureName="courtesycars"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().courtesycars.general} />
|
<UpsellComponent upsell={UpsellEnum().courtesycars.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import ContractDetailPageComponent from "./contract-detail.page.component";
|
|||||||
import NotFound from "../../components/not-found/not-found.component";
|
import NotFound from "../../components/not-found/not-found.component";
|
||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
|
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
|
||||||
|
|
||||||
const mapDispatchToProps = (dispatch) => ({
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
|
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
|
||||||
@@ -113,7 +113,7 @@ export function ContractDetailPageContainer({ setBreadcrumbs, addRecentItem, set
|
|||||||
featureName="courtesycars"
|
featureName="courtesycars"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().courtesycars.general} />
|
<UpsellComponent upsell={UpsellEnum().courtesycars.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import { pageLimit } from "../../utils/config";
|
|||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import { Card } from "antd";
|
import { Card } from "antd";
|
||||||
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
|
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
|
||||||
|
|
||||||
const mapDispatchToProps = (dispatch) => ({
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
|
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
|
||||||
@@ -62,7 +62,7 @@ export function ContractsPageContainer({ setBreadcrumbs, setSelectedHeader }) {
|
|||||||
featureName="courtesycars"
|
featureName="courtesycars"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().courtesycars.general} />
|
<UpsellComponent upsell={UpsellEnum().courtesycars.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/appli
|
|||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
|
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop
|
bodyshop: selectBodyshop
|
||||||
@@ -73,7 +73,7 @@ export function CourtesyCarCreateContainer({ bodyshop, setBreadcrumbs, setSelect
|
|||||||
featureName="courtesycars"
|
featureName="courtesycars"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().courtesycars.general} />
|
<UpsellComponent upsell={UpsellEnum().courtesycars.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import CourtesyCarsPageComponent from "./courtesy-cars.page.component";
|
|||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import { Card } from "antd";
|
import { Card } from "antd";
|
||||||
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
|
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
|
||||||
|
|
||||||
const mapDispatchToProps = (dispatch) => ({
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
|
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
|
||||||
@@ -40,7 +40,7 @@ export function CourtesyCarsPageContainer({ setBreadcrumbs, setSelectedHeader })
|
|||||||
featureName="courtesycars"
|
featureName="courtesycars"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().courtesycars.general} />
|
<UpsellComponent upsell={UpsellEnum().courtesycars.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/appli
|
|||||||
import FeatureWrapper from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapper from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import { Card } from "antd";
|
import { Card } from "antd";
|
||||||
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
|
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
|
||||||
|
|
||||||
const mapDispatchToProps = (dispatch) => ({
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
|
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
|
||||||
@@ -38,7 +38,7 @@ export function ExportsLogPageContainer({ setBreadcrumbs, setSelectedHeader }) {
|
|||||||
featureName="dashboard"
|
featureName="dashboard"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().dashboard.general} />
|
<UpsellComponent upsell={UpsellEnum().dashboard.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import ExportLogsPage from "./export-logs.page.component";
|
|||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import { Card } from "antd";
|
import { Card } from "antd";
|
||||||
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
|
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
|
||||||
|
|
||||||
const mapDispatchToProps = (dispatch) => ({
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
|
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
|
||||||
@@ -38,7 +38,7 @@ export function ExportsLogPageContainer({ setBreadcrumbs, setSelectedHeader }) {
|
|||||||
featureName="export"
|
featureName="export"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().accounting.receivables} />
|
<UpsellComponent upsell={UpsellEnum().accounting.receivables} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/appli
|
|||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
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({
|
const mapStateToProps = createStructuredSelector({
|
||||||
//currentUser: selectCurrentUser
|
//currentUser: selectCurrentUser
|
||||||
@@ -79,7 +79,7 @@ export function JobsChecklistViewContainer({ bodyshop, setBreadcrumbs, setSelect
|
|||||||
featureName="checklist"
|
featureName="checklist"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().checklist.general} />
|
<UpsellComponent upsell={UpsellEnum().checklist.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import JobchecklistComponent from "../../components/job-checklist/job-checklist.
|
|||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import { Card } from "antd";
|
import { Card } from "antd";
|
||||||
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
|
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
//currentUser: selectCurrentUser
|
//currentUser: selectCurrentUser
|
||||||
@@ -66,7 +66,7 @@ export function JobsDeliverContainer({ bodyshop, setBreadcrumbs, setSelectedHead
|
|||||||
featureName="checklist"
|
featureName="checklist"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().checklist.general} />
|
<UpsellComponent upsell={UpsellEnum().checklist.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
|
|||||||
import { Card, Result } from "antd";
|
import { Card, Result } from "antd";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
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({
|
const mapStateToProps = createStructuredSelector({
|
||||||
//currentUser: selectCurrentUser
|
//currentUser: selectCurrentUser
|
||||||
@@ -69,7 +69,7 @@ export function JobsIntakeContainer({ bodyshop, setBreadcrumbs, setSelectedHeade
|
|||||||
featureName="checklist"
|
featureName="checklist"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().checklist.general} />
|
<UpsellComponent upsell={UpsellEnum().checklist.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import { selectBodyshop } from "../../redux/user/user.selectors";
|
|||||||
import { pageLimit } from "../../utils/config";
|
import { pageLimit } from "../../utils/config";
|
||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
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";
|
import { Card } from "antd";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
@@ -64,7 +64,7 @@ export function AllJobs({ bodyshop, setBreadcrumbs, setSelectedHeader }) {
|
|||||||
featureName="payments"
|
featureName="payments"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().payments.general} />
|
<UpsellComponent upsell={UpsellEnum().payments.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
z
|
z
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { connect } from "react-redux";
|
|||||||
import { createStructuredSelector } from "reselect";
|
import { createStructuredSelector } from "reselect";
|
||||||
import FeatureWrapper from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapper from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import RbacWrapper from "../../components/rbac-wrapper/rbac-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 { setBreadcrumbs, setSelectedHeader } from "../../redux/application/application.actions";
|
||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
@@ -44,7 +44,7 @@ export function ProductionBoardContainer({ setBreadcrumbs, bodyshop, setSelected
|
|||||||
featureName="visualboard"
|
featureName="visualboard"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().visualboard.general} />
|
<UpsellComponent upsell={UpsellEnum().visualboard.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import ScoreboardTimeTickets from "../../components/scoreboard-timetickets/score
|
|||||||
import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/application.actions";
|
import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/application.actions";
|
||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
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
|
* Mapping state to props
|
||||||
@@ -71,7 +71,7 @@ export function ScoreboardContainer({ setBreadcrumbs, setSelectedHeader }) {
|
|||||||
featureName="scoreboard"
|
featureName="scoreboard"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().scoreboard.general} />
|
<UpsellComponent upsell={UpsellEnum().scoreboard.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -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 TimeTicketShift from "../../components/time-ticket-shift/time-ticket-shift.container";
|
||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import { Card } from "antd";
|
import { Card } from "antd";
|
||||||
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
|
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
|
||||||
|
|
||||||
export default function ShiftClock() {
|
export default function ShiftClock() {
|
||||||
return (
|
return (
|
||||||
@@ -11,7 +11,7 @@ export default function ShiftClock() {
|
|||||||
featureName="timetickets"
|
featureName="timetickets"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().dashboard.general} />
|
<UpsellComponent upsell={UpsellEnum().dashboard.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/appli
|
|||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
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({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop
|
bodyshop: selectBodyshop
|
||||||
@@ -56,7 +56,7 @@ export function ShopCsiContainer({ bodyshop, setBreadcrumbs, setSelectedHeader }
|
|||||||
featureName="csi"
|
featureName="csi"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().csi.general} />
|
<UpsellComponent upsell={UpsellEnum().csi.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import UpdateAlert from "../../components/update-alert/update-alert.component";
|
|||||||
import { selectTechnician } from "../../redux/tech/tech.selectors";
|
import { selectTechnician } from "../../redux/tech/tech.selectors";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import "./tech.page.styles.scss";
|
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 TimeTicketModalContainer = lazy(() => import("../../components/time-ticket-modal/time-ticket-modal.container"));
|
||||||
const EmailOverlayContainer = lazy(() => import("../../components/email-overlay/email-overlay.container.jsx"));
|
const EmailOverlayContainer = lazy(() => import("../../components/email-overlay/email-overlay.container.jsx"));
|
||||||
@@ -87,7 +87,7 @@ export function TechPage({ technician }) {
|
|||||||
featureName="techconsole"
|
featureName="techconsole"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().techconsole.general} />
|
<UpsellComponent upsell={UpsellEnum().techconsole.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import TemporaryDocsComponent from "./temporary-docs.component";
|
|||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import { Card } from "antd";
|
import { Card } from "antd";
|
||||||
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
|
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop
|
bodyshop: selectBodyshop
|
||||||
@@ -44,7 +44,7 @@ export function TempDocumentsContainer({ setBreadcrumbs, setSelectedHeader }) {
|
|||||||
featureName="media"
|
featureName="media"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().media.general} />
|
<UpsellComponent upsell={UpsellEnum().media.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wr
|
|||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import { useSplitTreatments } from "@splitsoftware/splitio-react";
|
import { useSplitTreatments } from "@splitsoftware/splitio-react";
|
||||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
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({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop
|
bodyshop: selectBodyshop
|
||||||
@@ -78,7 +78,7 @@ export function TimeTicketsContainer({ bodyshop, setBreadcrumbs, setSelectedHead
|
|||||||
featureName="timetickets"
|
featureName="timetickets"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().timetickets.general} />
|
<UpsellComponent upsell={UpsellEnum().timetickets.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { selectBodyshop } from "../../redux/user/user.selectors";
|
|||||||
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component";
|
||||||
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
import InstanceRenderManager from "../../utils/instanceRenderMgr";
|
||||||
import { Card } from "antd";
|
import { Card } from "antd";
|
||||||
import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component";
|
import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop
|
bodyshop: selectBodyshop
|
||||||
@@ -44,7 +44,7 @@ export function TtApprovalsPage({ setBreadcrumbs, setSelectedHeader }) {
|
|||||||
featureName="timetickets"
|
featureName="timetickets"
|
||||||
noauth={
|
noauth={
|
||||||
<Card>
|
<Card>
|
||||||
<UpsellComponent upsell={upsellEnum().timetickets.general} />
|
<UpsellComponent upsell={UpsellEnum().timetickets.general} />
|
||||||
</Card>
|
</Card>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -389,7 +389,7 @@ exports.postback = async (req, res) => {
|
|||||||
if (decodedComment) {
|
if (decodedComment) {
|
||||||
//Shifted the order to have this first to retain backwards compatibility for the old style of short link.
|
//Shifted the order to have this first to retain backwards compatibility for the old style of short link.
|
||||||
//This has been triggered by IO and may have multiple jobs.
|
//This has been triggered by IO and may have multiple jobs.
|
||||||
const parsedComment = JSON.parse(decodedComment);
|
const parsedComment = decodedComment;
|
||||||
|
|
||||||
logger.log("intellipay-postback-parsed-comment", "DEBUG", req.user?.email, null, {
|
logger.log("intellipay-postback-parsed-comment", "DEBUG", req.user?.email, null, {
|
||||||
parsedComment,
|
parsedComment,
|
||||||
|
|||||||
Reference in New Issue
Block a user