Antd V4 Icon Updates
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { Icon } from "antd";
|
||||
import Icon from "@ant-design/icons";
|
||||
import React from "react";
|
||||
import { MdRemoveCircleOutline } from "react-icons/md";
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Button, Card, Input, Icon } from "antd";
|
||||
import { Button, Card, Input } from "antd";
|
||||
import Icon from '@ant-design/icons';
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { connect } from "react-redux";
|
||||
import { createStructuredSelector } from "reselect";
|
||||
|
||||
@@ -2,7 +2,7 @@ import React from "react";
|
||||
import { connect } from "react-redux";
|
||||
import { createStructuredSelector } from "reselect";
|
||||
import { openConversation } from "../../redux/messaging/messaging.actions";
|
||||
import { Icon } from "antd";
|
||||
import { MessageFilled } from "@ant-design/icons";
|
||||
const mapStateToProps = createStructuredSelector({
|
||||
//currentUser: selectCurrentUser
|
||||
});
|
||||
@@ -14,9 +14,8 @@ export default connect(
|
||||
mapDispatchToProps
|
||||
)(function ChatOpenButton({ openConversation, phone }) {
|
||||
return (
|
||||
<Icon
|
||||
<MessageFilled
|
||||
style={{ margin: 4 }}
|
||||
type="message"
|
||||
onClick={() => openConversation(phone)}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Badge, Card, Icon } from "antd";
|
||||
import { Badge, Card } from "antd";
|
||||
import { MessageFilled } from "@ant-design/icons";
|
||||
import React from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
export default function ChatWindowComponent({
|
||||
@@ -23,7 +24,7 @@ export default function ChatWindowComponent({
|
||||
</div>
|
||||
) : (
|
||||
<div>
|
||||
<Icon type="message" />
|
||||
<MessageFilled />
|
||||
<strong style={{ paddingLeft: "10px" }}>
|
||||
{t("messaging.labels.messaging")}
|
||||
</strong>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Icon, Input } from "antd";
|
||||
import { Input } from "antd";
|
||||
import { MailFilled } from "@ant-design/icons";
|
||||
import React, { forwardRef } from "react";
|
||||
function FormItemEmail(props, ref) {
|
||||
return (
|
||||
@@ -7,10 +8,10 @@ function FormItemEmail(props, ref) {
|
||||
addonAfter={
|
||||
props.email ? (
|
||||
<a href={`mailto:${props.email}`}>
|
||||
<Icon type="mail" />
|
||||
<MailFilled />
|
||||
</a>
|
||||
) : (
|
||||
<Icon type="mail" />
|
||||
<MailFilled />
|
||||
)
|
||||
}
|
||||
/>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Avatar, Col, Icon, Menu, Row } from "antd";
|
||||
import { Avatar, Col, Menu, Row } from "antd";
|
||||
import {GlobalOutlined, HomeFilled, TeamOutlined, CalendarFilled, CarFilled} from "@ant-design/icons";
|
||||
import React from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Link } from "react-router-dom";
|
||||
@@ -60,7 +61,7 @@ export default ({
|
||||
<Menu.SubMenu
|
||||
title={
|
||||
<span>
|
||||
<Icon type="global" />
|
||||
<GlobalOutlined/>
|
||||
<span>{t("menus.currentuser.languageselector")}</span>
|
||||
</span>
|
||||
}
|
||||
@@ -87,14 +88,14 @@ export default ({
|
||||
>
|
||||
<Menu.Item key="home">
|
||||
<Link to="/manage">
|
||||
<Icon type="home" />
|
||||
<HomeFilled />
|
||||
{t("menus.header.home")}
|
||||
</Link>
|
||||
</Menu.Item>
|
||||
<Menu.SubMenu title={t("menus.header.jobs")}>
|
||||
<Menu.Item key="schedule">
|
||||
<Link to="/manage/schedule">
|
||||
<Icon type="calendar" />
|
||||
<CalendarFilled />
|
||||
{t("menus.header.schedule")}
|
||||
</Link>
|
||||
</Menu.Item>
|
||||
@@ -110,13 +111,13 @@ export default ({
|
||||
<Menu.SubMenu title={t("menus.header.customers")}>
|
||||
<Menu.Item key="owners">
|
||||
<Link to="/manage/owners">
|
||||
<Icon type="team" />
|
||||
<TeamOutlined/>
|
||||
{t("menus.header.owners")}
|
||||
</Link>
|
||||
</Menu.Item>
|
||||
<Menu.Item key="vehicles">
|
||||
<Link to="/manage/vehicles">
|
||||
<Icon type="car" />
|
||||
<CarFilled />
|
||||
{t("menus.header.vehicles")}
|
||||
</Link>
|
||||
</Menu.Item>
|
||||
@@ -158,7 +159,7 @@ export default ({
|
||||
<Menu.SubMenu
|
||||
title={
|
||||
<span>
|
||||
<Icon type="global" />
|
||||
<GlobalOutlined />
|
||||
<span>{t("menus.currentuser.languageselector")}</span>
|
||||
</span>
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import React, { useState } from "react";
|
||||
import { Button, Popover, Icon, Input, InputNumber, Form } from "antd";
|
||||
import { Button, Popover, Input, InputNumber, Form } from "antd";
|
||||
import { SelectOutlined } from "@ant-design/icons";
|
||||
import { useTranslation } from "react-i18next";
|
||||
|
||||
export default function InvoiceAddLineButton({
|
||||
@@ -35,15 +36,16 @@ export default function InvoiceAddLineButton({
|
||||
initialValue: jobLine.act_price * (discount ? 1 - discount : 1)
|
||||
})(<InputNumber precision={2} name="actual" />)}
|
||||
</Form.Item>
|
||||
DISSC: {discount}
|
||||
<Button onClick={() => setVisibility(false)}>??</Button>
|
||||
{}
|
||||
DISC: {discount}
|
||||
<Button onClick={() => setVisibility(false)}>X</Button>
|
||||
</div>
|
||||
);
|
||||
|
||||
return (
|
||||
<Popover content={popContent} visible={visibility}>
|
||||
<Button onClick={() => setVisibility(true)} disabled={!disabled}>
|
||||
<Icon type="select" />
|
||||
<SelectOutlined />
|
||||
</Button>
|
||||
</Popover>
|
||||
);
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
import { useQuery } from "@apollo/react-hooks";
|
||||
import { Button, Icon, PageHeader, Tag } from "antd";
|
||||
import {
|
||||
PrinterFilled,
|
||||
FileImageFilled,
|
||||
EditFilled,
|
||||
ShoppingFilled
|
||||
} from "@ant-design/icons";
|
||||
import { Button, PageHeader, Tag } from "antd";
|
||||
import React, { useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Link } from "react-router-dom";
|
||||
@@ -33,10 +39,10 @@ export default function JobDetailCards({ selectedJob }) {
|
||||
return <div>{t("jobs.errors.nojobselected")}</div>;
|
||||
}
|
||||
if (loading) return <LoadingSpinner />;
|
||||
if (error) return <AlertComponent message={error.message} type='error' />;
|
||||
if (error) return <AlertComponent message={error.message} type="error" />;
|
||||
|
||||
return (
|
||||
<div className='job-cards-container'>
|
||||
<div className="job-cards-container">
|
||||
<NoteUpsertModal
|
||||
jobId={data.jobs_by_pk.id}
|
||||
visible={noteModalVisible}
|
||||
@@ -52,9 +58,9 @@ export default function JobDetailCards({ selectedJob }) {
|
||||
ghost={false}
|
||||
onBack={() => window.history.back()}
|
||||
tags={
|
||||
<span key='job-status'>
|
||||
<span key="job-status">
|
||||
{data.jobs_by_pk.status ? (
|
||||
<Tag color='blue'>{data.jobs_by_pk.status}</Tag>
|
||||
<Tag color="blue">{data.jobs_by_pk.status}</Tag>
|
||||
) : null}
|
||||
</span>
|
||||
}
|
||||
@@ -73,39 +79,43 @@ export default function JobDetailCards({ selectedJob }) {
|
||||
}
|
||||
extra={[
|
||||
<Button
|
||||
key='schedule'
|
||||
key="schedule"
|
||||
//TODO Enabled logic based on status.
|
||||
onClick={() => {
|
||||
scheduleModalState[1](true);
|
||||
}}>
|
||||
}}
|
||||
>
|
||||
{t("jobs.actions.schedule")}
|
||||
</Button>,
|
||||
<Link
|
||||
key='documents'
|
||||
to={`/manage/jobs/${data.jobs_by_pk.id}#documents`}>
|
||||
key="documents"
|
||||
to={`/manage/jobs/${data.jobs_by_pk.id}#documents`}
|
||||
>
|
||||
<Button>
|
||||
<Icon type='file-image' />
|
||||
<FileImageFilled />
|
||||
{t("jobs.actions.addDocuments")}
|
||||
</Button>
|
||||
</Link>,
|
||||
<Button key='printing'>
|
||||
<Icon type='printer' />
|
||||
<Button key="printing">
|
||||
<PrinterFilled />
|
||||
{t("jobs.actions.printCenter")}
|
||||
</Button>,
|
||||
<Button
|
||||
key='notes'
|
||||
actiontype='addNote'
|
||||
key="notes"
|
||||
actiontype="addNote"
|
||||
onClick={() => {
|
||||
setNoteModalVisible(!noteModalVisible);
|
||||
}}>
|
||||
<Icon type='edit' />
|
||||
}}
|
||||
>
|
||||
<EditFilled />
|
||||
{t("jobs.actions.addNote")}
|
||||
</Button>,
|
||||
<Button key='postinvoices'>
|
||||
<Icon type='shopping-cart' />
|
||||
<Button key="postinvoices">
|
||||
<ShoppingFilled />
|
||||
{t("jobs.actions.postInvoices")}
|
||||
</Button>
|
||||
]}>
|
||||
]}
|
||||
>
|
||||
{
|
||||
// loading ? (
|
||||
// <LoadingSkeleton />
|
||||
@@ -126,7 +136,7 @@ export default function JobDetailCards({ selectedJob }) {
|
||||
// )
|
||||
}
|
||||
|
||||
<section className='job-cards'>
|
||||
<section className="job-cards">
|
||||
<JobDetailCardsCustomerComponent
|
||||
loading={loading}
|
||||
data={data ? data.jobs_by_pk : null}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { List, Icon } from "antd";
|
||||
import { List } from "antd";
|
||||
import { WarningFilled, EyeInvisibleFilled } from "@ant-design/icons";
|
||||
import React from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import CardTemplate from "./job-detail-cards.template.component";
|
||||
@@ -13,24 +14,23 @@ export default function JobDetailCardsNotesComponent({ loading, data }) {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<CardTemplate
|
||||
<CardTemplate
|
||||
loading={loading}
|
||||
title={t("jobs.labels.cards.notes")}
|
||||
extraLink={`/manage/jobs/${data.id}#notes`}>
|
||||
extraLink={`/manage/jobs/${data.id}#notes`}
|
||||
>
|
||||
{data ? (
|
||||
<Container>
|
||||
<List
|
||||
size='small'
|
||||
size="small"
|
||||
bordered
|
||||
dataSource={data.notes}
|
||||
renderItem={item => (
|
||||
<List.Item>
|
||||
{item.critical ? (
|
||||
<Icon style={{ margin: 4, color: "red" }} type='warning' />
|
||||
) : null}
|
||||
{item.private ? (
|
||||
<Icon style={{ margin: 4 }} type='eye-invisible' />
|
||||
<EyeInvisibleFilled style={{ margin: 4, color: "red" }} />
|
||||
) : null}
|
||||
{item.private ? <WarningFilled style={{ margin: 4 }} /> : null}
|
||||
{item.text}
|
||||
</List.Item>
|
||||
)}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
import { Button, Icon, Input, notification, Table } from "antd";
|
||||
import { Button, Input, notification, Table } from "antd";
|
||||
import {
|
||||
PlusCircleFilled,
|
||||
DeleteFilled,
|
||||
SyncOutlined
|
||||
} from "@ant-design/icons";
|
||||
import React, { useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { DateTimeFormatter } from "../../utils/DateFormatter";
|
||||
@@ -124,7 +129,7 @@ export default function JobsAvailableComponent({
|
||||
});
|
||||
}}
|
||||
>
|
||||
<Icon type="delete" />
|
||||
<DeleteFilled />
|
||||
</Button>
|
||||
<Button
|
||||
onClick={() => {
|
||||
@@ -132,7 +137,7 @@ export default function JobsAvailableComponent({
|
||||
setModalVisible(true);
|
||||
}}
|
||||
>
|
||||
<Icon type="plus" />
|
||||
<PlusCircleFilled />
|
||||
</Button>
|
||||
</span>
|
||||
)
|
||||
@@ -181,7 +186,7 @@ export default function JobsAvailableComponent({
|
||||
refetch();
|
||||
}}
|
||||
>
|
||||
<Icon type="sync" />
|
||||
<SyncOutlined />
|
||||
</Button>
|
||||
<Button
|
||||
onClick={() => {
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
import { Input, Table, Button, Icon, notification } from "antd";
|
||||
import { Input, Table, Button, notification } from "antd";
|
||||
import {
|
||||
PlusCircleFilled,
|
||||
DeleteFilled,
|
||||
SyncOutlined
|
||||
} from "@ant-design/icons";
|
||||
import React, { useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { alphaSort } from "../../utils/sorters";
|
||||
@@ -138,7 +143,7 @@ export default function JobsAvailableSupplementComponent({
|
||||
});
|
||||
}}
|
||||
>
|
||||
<Icon type="delete" />
|
||||
<DeleteFilled />
|
||||
</Button>
|
||||
<Button
|
||||
onClick={() => {
|
||||
@@ -146,7 +151,7 @@ export default function JobsAvailableSupplementComponent({
|
||||
setModalVisible(true);
|
||||
}}
|
||||
>
|
||||
<Icon type="plus" />
|
||||
<PlusCircleFilled />
|
||||
</Button>
|
||||
</span>
|
||||
)
|
||||
@@ -184,7 +189,7 @@ export default function JobsAvailableSupplementComponent({
|
||||
refetch();
|
||||
}}
|
||||
>
|
||||
<Icon type="sync" />
|
||||
<SyncOutlined />
|
||||
</Button>
|
||||
<Button
|
||||
onClick={() => {
|
||||
|
||||
@@ -5,12 +5,13 @@ import {
|
||||
Checkbox,
|
||||
Descriptions,
|
||||
Dropdown,
|
||||
Icon,
|
||||
|
||||
Menu,
|
||||
notification,
|
||||
PageHeader,
|
||||
Tag
|
||||
} from "antd";
|
||||
import {DownCircleFilled} from "@ant-design/icons";
|
||||
import React from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import Moment from "react-moment";
|
||||
@@ -64,7 +65,7 @@ export default connect(
|
||||
const menuExtra = [
|
||||
<Dropdown overlay={statusmenu} key='changestatus'>
|
||||
<Button>
|
||||
{t("jobs.actions.changestatus")} <Icon type='down' />
|
||||
{t("jobs.actions.changestatus")} <DownCircleFilled />
|
||||
</Button>
|
||||
</Dropdown>,
|
||||
<Badge key='schedule' count={job.appointments_aggregate.aggregate.count}>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Icon, Modal, notification, Upload } from "antd";
|
||||
import { Modal, notification, Upload } from "antd";
|
||||
import { InboxOutlined } from "@ant-design/icons";
|
||||
import axios from "axios";
|
||||
import React, { useState } from "react";
|
||||
import { useMutation } from "react-apollo";
|
||||
@@ -205,7 +206,7 @@ function JobsDocumentsComponent({ shopId, jobId, loading, data, currentUser }) {
|
||||
};
|
||||
|
||||
return (
|
||||
<div className='clearfix'>
|
||||
<div className="clearfix">
|
||||
<button
|
||||
onClick={() => {
|
||||
const imageRequest = JSON.stringify({
|
||||
@@ -217,31 +218,33 @@ function JobsDocumentsComponent({ shopId, jobId, loading, data, currentUser }) {
|
||||
const CloudFrontUrl = "https://d18fc493a0fm4o.cloudfront.net";
|
||||
const url = `${CloudFrontUrl}/${btoa(imageRequest)}`;
|
||||
console.log("url", url);
|
||||
}}>
|
||||
}}
|
||||
>
|
||||
Test PDF
|
||||
</button>
|
||||
<Upload.Dragger
|
||||
customRequest={handleUpload}
|
||||
accept='.pdf,.jpg,.jpeg'
|
||||
listType='picture-card'
|
||||
accept=".pdf,.jpg,.jpeg"
|
||||
listType="picture-card"
|
||||
fileList={fileList}
|
||||
multiple={true}
|
||||
onPreview={handlePreview}
|
||||
onRemove={handleRemove}
|
||||
onChange={handleChange}>
|
||||
<p className='ant-upload-drag-icon'>
|
||||
<Icon type='inbox' />
|
||||
onChange={handleChange}
|
||||
>
|
||||
<p className="ant-upload-drag-icon">
|
||||
<InboxOutlined />
|
||||
</p>
|
||||
<p className='ant-upload-text'>
|
||||
<p className="ant-upload-text">
|
||||
Click or drag file to this area to upload
|
||||
</p>
|
||||
<p className='ant-upload-hint'>
|
||||
<p className="ant-upload-hint">
|
||||
Support for a single or bulk upload. Strictly prohibit from uploading
|
||||
company data or other band files
|
||||
</p>
|
||||
</Upload.Dragger>
|
||||
<Modal visible={previewVisible} footer={null} onCancel={handleCancel}>
|
||||
<img alt='example' style={{ width: "100%" }} src={previewImage} />
|
||||
<img alt="example" style={{ width: "100%" }} src={previewImage} />
|
||||
</Modal>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Button, Icon, Input, Table } from "antd";
|
||||
import { Button, Input, Table } from "antd";
|
||||
import { SyncOutlined } from "@ant-design/icons";
|
||||
import React, { useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Link, withRouter } from "react-router-dom";
|
||||
@@ -208,7 +209,7 @@ export default withRouter(function JobsList({
|
||||
return (
|
||||
<div style={{ display: "flex" }}>
|
||||
<Button onClick={() => refetch()}>
|
||||
<Icon type="sync" />
|
||||
<SyncOutlined />
|
||||
</Button>
|
||||
<Input.Search
|
||||
placeholder="Search..."
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
import React, { useState } from "react";
|
||||
import { Table, Button, Icon, notification } from "antd";
|
||||
import { Table, Button, notification } from "antd";
|
||||
import {
|
||||
WarningFilled,
|
||||
EyeInvisibleFilled,
|
||||
DeleteFilled,
|
||||
EditFilled
|
||||
} from "@ant-design/icons";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import Moment from "react-moment";
|
||||
import NoteUpsertModal from "../note-upsert-modal/note-upsert-modal.container";
|
||||
@@ -24,11 +30,9 @@ export default function JobNotesComponent({
|
||||
<span>
|
||||
{" "}
|
||||
{record.critical ? (
|
||||
<Icon style={{ margin: 4, color: "red" }} type='warning' />
|
||||
) : null}
|
||||
{record.private ? (
|
||||
<Icon style={{ margin: 4 }} type='eye-invisible' />
|
||||
<WarningFilled style={{ margin: 4, color: "red" }} />
|
||||
) : null}
|
||||
{record.private ? <EyeInvisibleFilled style={{ margin: 4 }} /> : null}
|
||||
</span>
|
||||
)
|
||||
},
|
||||
@@ -48,7 +52,7 @@ export default function JobNotesComponent({
|
||||
sorter: (a, b) => new Date(a.updated_at) - new Date(b.updated_at),
|
||||
render: (text, record) => (
|
||||
<span>
|
||||
<Moment format='MM/DD/YYYY @ HH:mm'>{record.updated_at}</Moment>
|
||||
<Moment format="MM/DD/YYYY @ HH:mm">{record.updated_at}</Moment>
|
||||
</span>
|
||||
)
|
||||
},
|
||||
@@ -77,15 +81,17 @@ export default function JobNotesComponent({
|
||||
message: t("notes.successes.deleted")
|
||||
});
|
||||
});
|
||||
}}>
|
||||
<Icon type='delete' />
|
||||
}}
|
||||
>
|
||||
<DeleteFilled />
|
||||
</Button>
|
||||
<Button
|
||||
onClick={() => {
|
||||
setExistingNote(record);
|
||||
setNoteModalVisible(true);
|
||||
}}>
|
||||
<Icon type='edit' />
|
||||
}}
|
||||
>
|
||||
<EditFilled />
|
||||
</Button>
|
||||
</span>
|
||||
)
|
||||
@@ -105,14 +111,15 @@ export default function JobNotesComponent({
|
||||
onClick={() => {
|
||||
setExistingNote(null);
|
||||
setNoteModalVisible(true);
|
||||
}}>
|
||||
}}
|
||||
>
|
||||
{t("notes.actions.new")}
|
||||
</Button>
|
||||
<Table
|
||||
loading={loading}
|
||||
pagination={{ position: "bottom" }}
|
||||
columns={columns.map(item => ({ ...item }))}
|
||||
rowKey='id'
|
||||
rowKey="id"
|
||||
dataSource={data}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Icon } from "antd";
|
||||
import { BuildFilled, LoginOutlined } from "@ant-design/icons";
|
||||
import React from "react";
|
||||
import { connect } from "react-redux";
|
||||
import { Link } from "react-router-dom";
|
||||
@@ -15,12 +15,12 @@ export default connect(
|
||||
)(function ManageSignInButton({ currentUser }) {
|
||||
return currentUser.authorized ? (
|
||||
<Link to="/manage">
|
||||
<Icon type="build" />
|
||||
<BuildFilled />
|
||||
Manage
|
||||
</Link>
|
||||
) : (
|
||||
<Link to="/signin">
|
||||
<Icon type="login" />
|
||||
<LoginOutlined />
|
||||
Sign In
|
||||
</Link>
|
||||
);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { AutoComplete, DatePicker, Icon, Input, List, Radio } from "antd";
|
||||
import { AutoComplete, DatePicker, Input, List, Radio } from "antd";
|
||||
import { HeartFilled } from "@ant-design/icons";
|
||||
import React, { useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
export default function PartsOrderModalComponent({
|
||||
@@ -34,13 +35,14 @@ export default function PartsOrderModalComponent({
|
||||
onSelect={handleSelect}
|
||||
defaultOpen
|
||||
backfill
|
||||
optionLabelProp='value'
|
||||
optionLabelProp="value"
|
||||
dataSource={vendorComplete}
|
||||
placeholder={t("vendors.labels.search")}>
|
||||
placeholder={t("vendors.labels.search")}
|
||||
>
|
||||
{vendorComplete.map(v => (
|
||||
<AutoComplete.Option value={v.name} key={v.id}>
|
||||
<div>{v.name}</div>
|
||||
<div> {v.favorite ? <Icon type='heart' /> : null}</div>
|
||||
<div> {v.favorite ? <HeartFilled /> : null}</div>
|
||||
</AutoComplete.Option>
|
||||
))}
|
||||
</AutoComplete>
|
||||
@@ -55,14 +57,15 @@ export default function PartsOrderModalComponent({
|
||||
{t("parts_orders.labels.inthisorder")}
|
||||
|
||||
<List
|
||||
itemLayout='horizontal'
|
||||
itemLayout="horizontal"
|
||||
dataSource={orderLines}
|
||||
renderItem={item => (
|
||||
<List.Item
|
||||
actions={[
|
||||
<Input placeholder={t("parts_orders.fields.lineremarks")} />
|
||||
//TODO Editable table/adding line remarks to the order.
|
||||
]}>
|
||||
]}
|
||||
>
|
||||
{
|
||||
// <List.Item.Meta
|
||||
// avatar={
|
||||
@@ -81,7 +84,8 @@ export default function PartsOrderModalComponent({
|
||||
|
||||
<Radio.Group
|
||||
defaultValue={sendType}
|
||||
onChange={e => setSendType(e.target.value)}>
|
||||
onChange={e => setSendType(e.target.value)}
|
||||
>
|
||||
<Radio value={"e"}>{t("parts_orders.labels.email")}</Radio>
|
||||
<Radio value={"p"}>{t("parts_orders.labels.print")}</Radio>
|
||||
</Radio.Group>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import React from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Layout, Menu, Icon } from "antd";
|
||||
import { Layout, Menu } from "antd";
|
||||
import { UserOutlined, BankFilled } from "@ant-design/icons";
|
||||
|
||||
export default function ProfileSideBar({
|
||||
sidebarSelection,
|
||||
@@ -21,11 +22,11 @@ export default function ProfileSideBar({
|
||||
mode="inline"
|
||||
>
|
||||
<Menu.Item key="profile">
|
||||
<Icon type="user" />
|
||||
<UserOutlined />
|
||||
<span>{t("menus.profilesidebar.profile")}</span>
|
||||
</Menu.Item>
|
||||
<Menu.Item key="shops">
|
||||
<Icon type="bank" />
|
||||
<BankFilled />
|
||||
<span>{t("menus.profilesidebar.shops")}</span>
|
||||
</Menu.Item>
|
||||
</Menu>
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import React from "react";
|
||||
//import "react-big-calendar/lib/css/react-big-calendar.css";
|
||||
import ScheduleCalendarWrapperComponent from "../schedule-calendar-wrapper/scheduler-calendar-wrapper.component";
|
||||
import { Button, Icon } from "antd";
|
||||
import { Button } from "antd";
|
||||
import { SyncOutlined } from "@ant-design/icons";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import ScheduleAppointmentModalContainer from "../schedule-appointment-modal/schedule-appointment-modal.container";
|
||||
|
||||
@@ -19,7 +20,7 @@ export default function ScheduleCalendarComponent({
|
||||
refetch();
|
||||
}}
|
||||
>
|
||||
<Icon type="sync" />
|
||||
<SyncOutlined />
|
||||
</Button>
|
||||
|
||||
<Button
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Button, Form, Icon, Input } from "antd";
|
||||
import { Button, Form, Input } from "antd";
|
||||
import { LockFilled } from "@ant-design/icons";
|
||||
import React from "react";
|
||||
import { useApolloClient } from "react-apollo";
|
||||
import { connect } from "react-redux";
|
||||
@@ -7,7 +8,10 @@ import { createStructuredSelector } from "reselect";
|
||||
import Logo from "../../assets/logo240.png";
|
||||
import { UPSERT_USER } from "../../graphql/user.queries";
|
||||
import { emailSignInStart } from "../../redux/user/user.actions";
|
||||
import { selectCurrentUser, selectSignInError } from "../../redux/user/user.selectors";
|
||||
import {
|
||||
selectCurrentUser,
|
||||
selectSignInError
|
||||
} from "../../redux/user/user.selectors";
|
||||
|
||||
const mapStateToProps = createStructuredSelector({
|
||||
currentUser: selectCurrentUser,
|
||||
@@ -86,9 +90,7 @@ export default connect(
|
||||
]
|
||||
})(
|
||||
<Input
|
||||
prefix={
|
||||
<Icon type="lock" style={{ color: "rgba(0,0,0,.25)" }} />
|
||||
}
|
||||
prefix={<LockFilled style={{ color: "rgba(0,0,0,.25)" }} />}
|
||||
type="password"
|
||||
placeholder="Password"
|
||||
/>
|
||||
|
||||
@@ -1,14 +1,6 @@
|
||||
import {
|
||||
Button,
|
||||
Checkbox,
|
||||
Col,
|
||||
Form,
|
||||
Icon,
|
||||
Input,
|
||||
InputNumber,
|
||||
Row
|
||||
} from "antd";
|
||||
import { Button, Checkbox, Col, Form, Input, InputNumber, Row } from "antd";
|
||||
import React from "react";
|
||||
import { MinusCircleOutlined, PlusCircleFilled } from "@ant-design/icons";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import FormItemEmail from "../form-items-formatted/email-form-item.component";
|
||||
import ResetForm from "../form-items-formatted/reset-form-item.component";
|
||||
@@ -75,9 +67,8 @@ export default function VendorsFormComponent({ form, vendor, handleDelete }) {
|
||||
/>
|
||||
)}
|
||||
{getFieldValue("keys").length > 1 ? (
|
||||
<Icon
|
||||
<MinusCircleOutlined
|
||||
className="dynamic-delete-button"
|
||||
type="minus-circle-o"
|
||||
onClick={() => remove(k)}
|
||||
/>
|
||||
) : null}
|
||||
@@ -104,7 +95,7 @@ export default function VendorsFormComponent({ form, vendor, handleDelete }) {
|
||||
))}
|
||||
<Form.Item label={t("vendors.fields.favorite")}>
|
||||
<Button type="dashed" onClick={add} style={{ width: "60%" }}>
|
||||
<Icon type="plus" /> Add field
|
||||
<PlusCircleFilled /> Add field
|
||||
</Button>
|
||||
</Form.Item>
|
||||
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
import { Form, Icon, Tabs } from "antd";
|
||||
import { Form, Tabs } from "antd";
|
||||
import {
|
||||
BarsOutlined,
|
||||
DollarCircleOutlined,
|
||||
ToolFilled,
|
||||
CalendarFilled,
|
||||
FileImageFilled
|
||||
} from "@ant-design/icons";
|
||||
import Icon from "@ant-design/icons";
|
||||
import React, { lazy, Suspense, useContext } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import {
|
||||
@@ -140,7 +148,7 @@ export default function JobsDetailPage({
|
||||
<Tabs.TabPane
|
||||
tab={
|
||||
<span>
|
||||
<Icon type="bars" />
|
||||
<BarsOutlined />
|
||||
{t("menus.jobsdetail.repairdata")}
|
||||
</span>
|
||||
}
|
||||
@@ -152,7 +160,7 @@ export default function JobsDetailPage({
|
||||
<Tabs.TabPane
|
||||
tab={
|
||||
<span>
|
||||
<Icon type="dollar" />
|
||||
<DollarCircleOutlined />
|
||||
{t("menus.jobsdetail.financials")}
|
||||
</span>
|
||||
}
|
||||
@@ -164,7 +172,7 @@ export default function JobsDetailPage({
|
||||
<Tabs.TabPane
|
||||
tab={
|
||||
<span>
|
||||
<Icon type="tool" />
|
||||
<ToolFilled />
|
||||
{t("menus.jobsdetail.partssublet")}
|
||||
</span>
|
||||
}
|
||||
@@ -188,7 +196,7 @@ export default function JobsDetailPage({
|
||||
<Tabs.TabPane
|
||||
tab={
|
||||
<span>
|
||||
<Icon type="calendar" />
|
||||
<CalendarFilled />
|
||||
{t("menus.jobsdetail.dates")}
|
||||
</span>
|
||||
}
|
||||
@@ -200,7 +208,7 @@ export default function JobsDetailPage({
|
||||
<Tabs.TabPane
|
||||
tab={
|
||||
<span>
|
||||
<Icon type="file-image" />
|
||||
<FileImageFilled />
|
||||
{t("jobs.labels.documents")}
|
||||
</span>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user