From 8e2985a0c44d4614b806737be3b5bbeece2db306 Mon Sep 17 00:00:00 2001 From: Bad_Company Date: Fri, 16 Jun 2017 19:46:33 +0300 Subject: [PATCH 01/51] refactor: move `datetime.jsx` to `/utils` --- .../components/activity-notifications/item.jsx | 2 +- .../activity-trail/activities/base/activity.jsx | 2 +- ashes/src/components/gift-cards/gift-card.jsx | 2 +- ashes/src/components/orders/order.jsx | 2 +- .../components/orders/shipments/shipment-row.jsx | 2 +- .../components/orders/shipments/transaction.jsx | 2 +- ashes/src/components/payment-row/payment-row.jsx | 2 +- ashes/src/components/rmas/helpers.jsx | 2 +- ashes/src/components/table/cell.jsx | 2 +- .../{common => utils/datetime}/datetime.css | 0 .../{common => utils/datetime}/datetime.jsx | 16 ++++------------ ashes/src/components/utils/datetime/index.jsx | 1 + 12 files changed, 14 insertions(+), 21 deletions(-) rename ashes/src/components/{common => utils/datetime}/datetime.css (100%) rename ashes/src/components/{common => utils/datetime}/datetime.jsx (77%) create mode 100644 ashes/src/components/utils/datetime/index.jsx diff --git a/ashes/src/components/activity-notifications/item.jsx b/ashes/src/components/activity-notifications/item.jsx index 9763ed063d..e6e552fa66 100644 --- a/ashes/src/components/activity-notifications/item.jsx +++ b/ashes/src/components/activity-notifications/item.jsx @@ -6,7 +6,7 @@ import React from 'react'; import classNames from 'classnames'; // components -import { DateTime } from '../common/datetime'; +import { DateTime } from 'components/utils/datetime'; import AuthorTitle from '../activity-trail/activities/base/author-title'; import AuthorIcon from '../activity-trail/activities/base/author-icon'; import { representatives } from '../activity-trail/activities/index'; diff --git a/ashes/src/components/activity-trail/activities/base/activity.jsx b/ashes/src/components/activity-trail/activities/base/activity.jsx index d46224ee1e..4f6d68dff7 100644 --- a/ashes/src/components/activity-trail/activities/base/activity.jsx +++ b/ashes/src/components/activity-trail/activities/base/activity.jsx @@ -7,7 +7,7 @@ import classNames from 'classnames'; // components import { Button } from 'components/core/button'; -import { Time } from '../../../common/datetime'; +import { Time } from 'components/utils/datetime'; import AuthorTitle from './author-title'; import AuthorIcon from './author-icon'; diff --git a/ashes/src/components/gift-cards/gift-card.jsx b/ashes/src/components/gift-cards/gift-card.jsx index d58da3dec5..dcbafcdac5 100644 --- a/ashes/src/components/gift-cards/gift-card.jsx +++ b/ashes/src/components/gift-cards/gift-card.jsx @@ -10,7 +10,7 @@ import { ReasonType } from '../../lib/reason-utils'; import { IndexLink, Link } from 'components/link'; import { Errors } from 'components/utils/errors'; import GiftCardCode from './gift-card-code'; -import { DateTime } from '../common/datetime'; +import { DateTime } from 'components/utils/datetime'; import Currency from '../common/currency'; import Spinner from 'components/core/spinner'; import { PageTitle } from '../section-title'; diff --git a/ashes/src/components/orders/order.jsx b/ashes/src/components/orders/order.jsx index 337442d77c..9f687a4732 100644 --- a/ashes/src/components/orders/order.jsx +++ b/ashes/src/components/orders/order.jsx @@ -10,7 +10,7 @@ import { allowedStateTransitions } from '../../paragons/order'; // components import { Dropdown } from '../dropdown'; import RemorseTimer from './remorseTimer'; -import { DateTime } from '../common/datetime'; +import { DateTime } from 'components/utils/datetime'; import { PanelList, PanelListItem } from '../panel/panel-list'; import { PageTitle } from '../section-title'; import SubNav from './sub-nav'; diff --git a/ashes/src/components/orders/shipments/shipment-row.jsx b/ashes/src/components/orders/shipments/shipment-row.jsx index 289fd6cc57..331f3ae85f 100644 --- a/ashes/src/components/orders/shipments/shipment-row.jsx +++ b/ashes/src/components/orders/shipments/shipment-row.jsx @@ -7,7 +7,7 @@ import { autobind } from 'core-decorators'; // components import TableRow from 'components/table/row'; import TableCell from 'components/table/cell'; -import { DateTime } from 'components/common/datetime'; +import { DateTime } from 'components/utils/datetime'; import AddressDetails from 'components/addresses/address-details'; import ShippedItem from './shipped-item'; import Transaction from './transaction'; diff --git a/ashes/src/components/orders/shipments/transaction.jsx b/ashes/src/components/orders/shipments/transaction.jsx index d388d43a5b..800f8ad613 100644 --- a/ashes/src/components/orders/shipments/transaction.jsx +++ b/ashes/src/components/orders/shipments/transaction.jsx @@ -9,7 +9,7 @@ import styles from './transaction.css'; // components import Currency from 'components/common/currency'; import PaymentMethod from 'components/payment/payment-method'; -import { DateTime } from 'components/common/datetime'; +import { DateTime } from 'components/utils/datetime'; //types type Props = { diff --git a/ashes/src/components/payment-row/payment-row.jsx b/ashes/src/components/payment-row/payment-row.jsx index 12827d50b1..daf0c3ca1d 100644 --- a/ashes/src/components/payment-row/payment-row.jsx +++ b/ashes/src/components/payment-row/payment-row.jsx @@ -14,7 +14,7 @@ import StoreCreditDetails from './store-credit'; import PaymentMethodDetails from 'components/payment/payment-method'; import TableCell from 'components/table/cell'; import TableRow from 'components/table/row'; -import { DateTime } from 'components/common/datetime'; +import { DateTime } from 'components/utils/datetime'; import { EditButton, DeleteButton } from 'components/core/button'; import Icon from 'components/core/icon'; diff --git a/ashes/src/components/rmas/helpers.jsx b/ashes/src/components/rmas/helpers.jsx index 5c70403831..f618df674f 100644 --- a/ashes/src/components/rmas/helpers.jsx +++ b/ashes/src/components/rmas/helpers.jsx @@ -4,7 +4,7 @@ import PropTypes from 'prop-types'; import { Link } from 'components/link'; import TableRow from '../table/row'; import TableCell from '../table/cell'; -import { DateTime } from '../common/datetime'; +import { DateTime } from 'components/utils/datetime'; import Currency from '../common/currency'; import PaymentMethod from '../../components/payment/payment-method'; diff --git a/ashes/src/components/table/cell.jsx b/ashes/src/components/table/cell.jsx index f358e861a6..9be4204294 100644 --- a/ashes/src/components/table/cell.jsx +++ b/ashes/src/components/table/cell.jsx @@ -7,7 +7,7 @@ import PropTypes from 'prop-types'; // components import { Link } from 'components/link'; import columnPropType from './column-prop-type'; -import { Moment, Date, DateTime, Time } from '../common/datetime'; +import { Moment, Date, DateTime, Time } from 'components/utils/datetime'; import Currency from '../common/currency'; import State from '../common/state'; import Change from 'components/utils/change'; diff --git a/ashes/src/components/common/datetime.css b/ashes/src/components/utils/datetime/datetime.css similarity index 100% rename from ashes/src/components/common/datetime.css rename to ashes/src/components/utils/datetime/datetime.css diff --git a/ashes/src/components/common/datetime.jsx b/ashes/src/components/utils/datetime/datetime.jsx similarity index 77% rename from ashes/src/components/common/datetime.jsx rename to ashes/src/components/utils/datetime/datetime.jsx index d30105985e..b5b9f5aac3 100644 --- a/ashes/src/components/common/datetime.jsx +++ b/ashes/src/components/utils/datetime/datetime.jsx @@ -4,7 +4,7 @@ import moment from 'moment'; import styles from './datetime.css'; -const Moment = ({utc, value, format, emptyValue}) => { +export const Moment = ({utc, value, format, emptyValue}) => { if (!value) { return {emptyValue}; } @@ -32,7 +32,7 @@ Moment.defaultProps = { }; -const DateTime = props => ; +export const DateTime = props => ; DateTime.propTypes = { utc: PropTypes.bool, @@ -44,7 +44,7 @@ DateTime.defaultProps = { }; -const Date = props => ; +export const Date = props => ; Date.propTypes = { utc: PropTypes.bool, @@ -56,7 +56,7 @@ Date.defaultProps = { }; -const Time = props => ; +export const Time = props => ; Time.propTypes = { utc: PropTypes.bool, @@ -66,11 +66,3 @@ Time.propTypes = { Time.defaultProps = { utc: true, }; - - -export { - Moment, - DateTime, - Date, - Time, -}; diff --git a/ashes/src/components/utils/datetime/index.jsx b/ashes/src/components/utils/datetime/index.jsx new file mode 100644 index 0000000000..bb1c9cca2a --- /dev/null +++ b/ashes/src/components/utils/datetime/index.jsx @@ -0,0 +1 @@ +export * from './datetime'; From 6ad2ee88987a37425734ba560ed336394306bc15 Mon Sep 17 00:00:00 2001 From: Bad_Company Date: Fri, 16 Jun 2017 21:06:53 +0300 Subject: [PATCH 02/51] refactor: replace propTypes with Flow --- .../components/utils/datetime/datetime.jsx | 89 +++++++++---------- 1 file changed, 42 insertions(+), 47 deletions(-) diff --git a/ashes/src/components/utils/datetime/datetime.jsx b/ashes/src/components/utils/datetime/datetime.jsx index b5b9f5aac3..e50691ce92 100644 --- a/ashes/src/components/utils/datetime/datetime.jsx +++ b/ashes/src/components/utils/datetime/datetime.jsx @@ -1,30 +1,56 @@ +/* @flow */ + +// libs import React from 'react'; -import PropTypes from 'prop-types'; import moment from 'moment'; +import classnames from 'classnames'; + +// styles +import s from './datetime.css'; + +type Props = { + /** time string */ + value?: string, + /** set UTC */ + utc?: boolean, + /** set time format */ + format?: string, + /** set empty value text */ + emptyValue?: string, + /** additional className */ + className?: string +} + +/** + * `DateTime`, `Date`, and `Time` - are simple components + * build on the top of `Moment` + * and serve to show time data + * + * @function Moment + */ +export const Moment = ({ + utc, + value, + format, + emptyValue, + className, + ...rest +}: Props) => { + const cls = classnames(s.time, className); -import styles from './datetime.css'; - -export const Moment = ({utc, value, format, emptyValue}) => { if (!value) { - return {emptyValue}; + return {emptyValue}; } const timeValue = utc ? moment.utc(value) : moment(value); return ( -