woocommerce/plugins/woocommerce-admin/client/activity-panel/activity-card/index.js

132 lines
2.9 KiB
JavaScript
Raw Normal View History

/**
* External dependencies
*/
import classnames from 'classnames';
import { cloneElement, Component } from '@wordpress/element';
import NoticeOutline from 'gridicons/dist/notice-outline';
2018-12-18 22:58:05 +00:00
import moment from 'moment';
import PropTypes from 'prop-types';
import { H, Section } from '@woocommerce/components';
import { Button } from '@wordpress/components';
/**
* Internal dependencies
*/
import './style.scss';
Migrate Stock Panel to Homescreen (https://github.com/woocommerce/woocommerce-admin/pull/5729) * Refactor low stock variable to be the count instead of a boolean. * Add initial render of the Stock panel on the homescreen. * Move existing Stock panel to homescreen accordion. * Ensure int value for low stock product count. * Update ProductImage styling. * Update stock activity car styles. * Only show 5 low stock products. * Add "undo" action to the stock updated snackbar. * Fix check for explicit notice dismissal when taking actions. * Hide now-in-stock products after updating. By cllearing "edited" flag on successful update. * Fetch more products after updating stock. * Fix the number of product placeholders shown. * Only show products placeholders on the initial fetch. * Fix placeholder style. * Fetch low stock count dynamically. * Let initialOpen prop toggle Accordion panels if they haven't been toggled by the user. * Refactor item total count state. Allows for auto-updating item totals whenever identical queries (from a totals perspective) are issued. * Add last order date to low stock products API response. * Allow non-date strings in ActivityCard date prop. * Add last order date to stock panel cards. * Remove empty stock panel view. * Add test file for StockPanel. * Only request necessary fields from products endpoint. * Add test for products fetch after stock update. * Fix field name. * Add test for last order date in low stock products API response. * Stock panel should be initially closed. * Skip updating a product if the quantity is unchanged.
2020-11-25 18:51:15 +00:00
/**
* Determine if the provided string is a date, as
* formatted by wc_rest_prepare_date_response().
*
* @param {string} value String value
*/
const isDateString = ( value ) =>
// PHP date format: Y-m-d\TH:i:s.
/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test( value );
class ActivityCard extends Component {
getCard() {
const {
actions,
className,
children,
date,
icon,
subtitle,
title,
unread,
} = this.props;
const cardClassName = classnames(
'woocommerce-activity-card',
className
);
const actionsList = Array.isArray( actions ) ? actions : [ actions ];
Migrate Stock Panel to Homescreen (https://github.com/woocommerce/woocommerce-admin/pull/5729) * Refactor low stock variable to be the count instead of a boolean. * Add initial render of the Stock panel on the homescreen. * Move existing Stock panel to homescreen accordion. * Ensure int value for low stock product count. * Update ProductImage styling. * Update stock activity car styles. * Only show 5 low stock products. * Add "undo" action to the stock updated snackbar. * Fix check for explicit notice dismissal when taking actions. * Hide now-in-stock products after updating. By cllearing "edited" flag on successful update. * Fetch more products after updating stock. * Fix the number of product placeholders shown. * Only show products placeholders on the initial fetch. * Fix placeholder style. * Fetch low stock count dynamically. * Let initialOpen prop toggle Accordion panels if they haven't been toggled by the user. * Refactor item total count state. Allows for auto-updating item totals whenever identical queries (from a totals perspective) are issued. * Add last order date to low stock products API response. * Allow non-date strings in ActivityCard date prop. * Add last order date to stock panel cards. * Remove empty stock panel view. * Add test file for StockPanel. * Only request necessary fields from products endpoint. * Add test for products fetch after stock update. * Fix field name. * Add test for last order date in low stock products API response. * Stock panel should be initially closed. * Skip updating a product if the quantity is unchanged.
2020-11-25 18:51:15 +00:00
const dateString = isDateString( date )
? moment.utc( date ).fromNow()
: date;
return (
<section className={ cardClassName }>
{ unread && (
<span className="woocommerce-activity-card__unread" />
) }
Inbox notification: layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4218) * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: Add dismiss functionality (https://github.com/woocommerce/woocommerce-admin/pull/4262) * Added is_deleted param to soft delete # Conflicts: # src/API/Notes.php # src/Install.php # src/Notes/DataStore.php # src/Notes/WC_Admin_Note.php # src/Notes/WC_Admin_Notes.php # tests/api/admin-notes.php * Added the Dismiss functionality # Conflicts: # client/header/activity-panel/panels/inbox/action.js * Where clause repeared * Added Snackbar after action. * API modified to dismiss notes * Small refactor in "get_item" method This commit adds a small refactor in "get_item" method to use "prepare_note_data_for_response" * Added missing logic to Dismiss note This commit adds missing client logic to Dismiss note. # Conflicts: # client/header/activity-panel/panels/inbox/action.js # client/header/activity-panel/panels/inbox/card.js * Moved the delete action to WC_Admin_Notes.php The delete action was moved to WC_Admin_Notes.php to follow the pattern. * Added changes to dismiss messages This commit addeds changes to the messages soft delete. * DataStore.php repaired This commits adds some code that was deleted by mistake and the param "is_deleted" has been escaped. * Spelling error corrected The button text "Dismiss all message" was corrected * Repaired "get_notes_where_clauses" method A problem with the deleted notes was repaired * Added a comment to DataStore.php * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. * Bugfix: now the method get_notes_with_name also returns deleted notes * Bugfix: repaired empty notification list This commit repairs a bug that happens when there isn't anything in the inbox notification list * Small refactor to not use "some" Lodash method anymore * Small refactor in rednderNotes method * Added check to set_layout * Added small refactor to delete_all_notes method * Fixed code comment error * Bugfix: repaired the "delete_note" call * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Improved error handling for the set_layout method * Bugfix: fixed error handling clicks inside dropdowns * Bugfix: repaired dropdown onBlur handler This commit repairs a weird behavior that the dropdown onBlur handler method had sometimes. * Text error changed Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Add undo snackbar button after deletion (https://github.com/woocommerce/woocommerce-admin/pull/4281) * Added undo snakbar button for a single note # Conflicts: # client/wc-api/notes/mutations.js # src/Notes/DataStore.php # src/Notes/WC_Admin_Notes.php * Added a button to undo the deletion of all notes # Conflicts: # client/wc-api/notes/operations.js # src/API/Notes.php * Code adapted to make code reviewing easier There was some code that also was present in another PR, that code was removed to make code reviewing easier. * UnitTest added This commit adds some unit tests * Added verification for API response * Added casting to $note_id * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: Add dismiss functionality (https://github.com/woocommerce/woocommerce-admin/pull/4262) * Added is_deleted param to soft delete # Conflicts: # src/API/Notes.php # src/Install.php # src/Notes/DataStore.php # src/Notes/WC_Admin_Note.php # src/Notes/WC_Admin_Notes.php # tests/api/admin-notes.php * Added the Dismiss functionality # Conflicts: # client/header/activity-panel/panels/inbox/action.js * Where clause repeared * Added Snackbar after action. * API modified to dismiss notes * Small refactor in "get_item" method This commit adds a small refactor in "get_item" method to use "prepare_note_data_for_response" * Added missing logic to Dismiss note This commit adds missing client logic to Dismiss note. # Conflicts: # client/header/activity-panel/panels/inbox/action.js # client/header/activity-panel/panels/inbox/card.js * Moved the delete action to WC_Admin_Notes.php The delete action was moved to WC_Admin_Notes.php to follow the pattern. * Added changes to dismiss messages This commit addeds changes to the messages soft delete. * DataStore.php repaired This commits adds some code that was deleted by mistake and the param "is_deleted" has been escaped. * Spelling error corrected The button text "Dismiss all message" was corrected * Repaired "get_notes_where_clauses" method A problem with the deleted notes was repaired * Added a comment to DataStore.php * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. * Bugfix: now the method get_notes_with_name also returns deleted notes * Bugfix: repaired empty notification list This commit repairs a bug that happens when there isn't anything in the inbox notification list * Small refactor to not use "some" Lodash method anymore * Small refactor in rednderNotes method * Added check to set_layout * Added small refactor to delete_all_notes method * Fixed code comment error * Bugfix: repaired the "delete_note" call * Inbox notification: Added layout changes (https://github.com/woocommerce/woocommerce-admin/pull/4256) * Added notes layout and image to the API Added note layout and note image to the API and the DB * Unit test modified Unit test where modified to adapt them to the new elements * Changed the frontend following the new designs. The fronted was changed to follow the new inbox messages design. * Changed default layout type in DB * Added all the requested visual element Changed the cards' js, css and actions to achieve the visual requirements * Added "layout" and "image" to inboxQuery * Modal confirmation buttons repaired * Added "layout" and "image" to docs examples. * Removed "updateNote" from action.js Removed "updateNote" from action.js, I left it by mistake. * Spelling error corrected The button text "Dismiss all message" was corrected * noteName removed and icon added to make code reviewing easier This commit removes the "noteName" from card.js and adds the icon to make code reviewing easier * Dismiss action button refactor Refactor of the dismiss action button in the InboxNoteCard class * Removed unnecessary control * Destructured all the note properties * Colors replaced by existing variable * Removed setting of layout and image in the creation of the notes * Removed blank lines added by mistake * Close dismiss dropdown when clicking away from the popover. * Prevented the closing of the inbox panel with an action in the modal * Added small design changes * Removed unused "Gridicon" import * Prevent showing the image tag when the layout is blank * The method name getDismissButton was changed to getDismissConfirmationButton * Removed unnecessary vendor-prefixed properties * Improved note filtering in unreadNotes method * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Update client/header/activity-panel/panels/inbox/style.scss Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Inbox notification: Remove icons (https://github.com/woocommerce/woocommerce-admin/pull/4258) * Info icon removed from inbox notifications The info icon was removed from inbox notifications # Conflicts: # src/Notes/DataStore.php * Removed "icon" from inboxQuery * Tests repeared Some problems with the unit tests were repaired in this commit # Conflicts: # docs/examples/activity-panel-inbox.md # Conflicts: # tests/api/admin-notes.php * Removed icon from card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Improved error handling for the set_layout method * Bugfix: fixed error handling clicks inside dropdowns * Bugfix: repaired dropdown onBlur handler This commit repairs a weird behavior that the dropdown onBlur handler method had sometimes. * Text error changed Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Stopped sending the "dismissType" to action.js The "dismissType" is not sent to action.js anymore. # Conflicts: # client/header/activity-panel/panels/inbox/card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com> * Bugfix: solved problem when a note was undismissed There was a problem with the undismiss functionality. When a note was undismissed, it always was recovered with "plain" layout. This commit solves this problem. * Inbox notification: add event recording (https://github.com/woocommerce/woocommerce-admin/pull/4320) * Added events recording This commit adds events recording to the inbox notifications # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Added 'home_screen' verification Changed recorded name, now when the client is in the WooCommerce 'home' page we record 'home_screen' instead of 'wc-admin'. * Added a naming fix and a new prop to the recordEvent * bugfix: added control before interaction with bodyNotificationRef * Added more unit tests for new endpoints This commit adds tests for deleting a single note and for deleting all the notes, both without permission. * Modified variable name * Refactor: prop rename and small logic change * Screen name getter moved into the InboxNoteCard This commit moves the screen name getter inside the InboxNoteCard. # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Removed "screen" from state Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Refactor in admin-notes unit tests Some unnecessary controls were removed from the admin-notes unit tests * Indentation fixed in Install.php. Replaced spaces with tabs. * Inbox notification: added new placeholder and empty card (https://github.com/woocommerce/woocommerce-admin/pull/4379) * Added a new placeholder and an empty card This commit adds a new placeholder and a new empty card to the inbox panel # Conflicts: # client/header/activity-panel/panels/inbox/index.js # client/header/activity-panel/panels/inbox/style.scss * Added border to read notes * Improved note filtering in unreadNotes method and validNotes # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Actions render refactored The actions render was refactored in InboxNoteCard component * Refactor of InboxPanel component The methods getUnreadNotesCount and hasValidNotes were separated from the InboxPanel component # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Refactor inbox panel subtitle classes * Added changes for when a note is undismissed This commit adds the requested changes in behavior and design for when a note is dismissed. # Conflicts: # client/header/activity-panel/panels/inbox/index.js * Bugfix: Added key to itemlist The InboxNotePlaceholder is shown as an itemlist but it didn't have a key. This commit adds it. * Removed unnecessary validation * Refactored actionList map This commit adds a refactor to the actionList map * Changes to the getUndoDismissRequesting functionality This commit adds a few changes to the getUndoDismissRequesting functionality * Changed className prop * Changed other className prop * Modified InboxPanel rendering * Removed unnecessary method in placeholder.js * Simplified the card.js renderActions method * Change renderActions return in card.js Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Inbox notification: add client unit tests (https://github.com/woocommerce/woocommerce-admin/pull/4386) * Added client unit tests * Added test cases for getUnreadNotesCount and hasValidNotes * Corrected typo error * Removed Enzyme and added React Testing Library * Removed unnecessary param Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> * Resolved some conflicts with master * Marketing note test repaired This commit repairs the marketing note test * Added note type 'marketing' to delete all functionality * Removed set_icon method from some notes and docs * Added set_icon method as deprecated to prevent errors. Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com> Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
2020-06-03 11:43:35 +00:00
{ icon && (
<span
className="woocommerce-activity-card__icon"
aria-hidden
>
{ icon }
</span>
) }
{ title && (
<header className="woocommerce-activity-card__header">
<H className="woocommerce-activity-card__title">
{ title }
</H>
{ subtitle && (
<div className="woocommerce-activity-card__subtitle">
{ subtitle }
</div>
) }
Migrate Stock Panel to Homescreen (https://github.com/woocommerce/woocommerce-admin/pull/5729) * Refactor low stock variable to be the count instead of a boolean. * Add initial render of the Stock panel on the homescreen. * Move existing Stock panel to homescreen accordion. * Ensure int value for low stock product count. * Update ProductImage styling. * Update stock activity car styles. * Only show 5 low stock products. * Add "undo" action to the stock updated snackbar. * Fix check for explicit notice dismissal when taking actions. * Hide now-in-stock products after updating. By cllearing "edited" flag on successful update. * Fetch more products after updating stock. * Fix the number of product placeholders shown. * Only show products placeholders on the initial fetch. * Fix placeholder style. * Fetch low stock count dynamically. * Let initialOpen prop toggle Accordion panels if they haven't been toggled by the user. * Refactor item total count state. Allows for auto-updating item totals whenever identical queries (from a totals perspective) are issued. * Add last order date to low stock products API response. * Allow non-date strings in ActivityCard date prop. * Add last order date to stock panel cards. * Remove empty stock panel view. * Add test file for StockPanel. * Only request necessary fields from products endpoint. * Add test for products fetch after stock update. * Fix field name. * Add test for last order date in low stock products API response. * Stock panel should be initially closed. * Skip updating a product if the quantity is unchanged.
2020-11-25 18:51:15 +00:00
{ dateString && (
<span className="woocommerce-activity-card__date">
Migrate Stock Panel to Homescreen (https://github.com/woocommerce/woocommerce-admin/pull/5729) * Refactor low stock variable to be the count instead of a boolean. * Add initial render of the Stock panel on the homescreen. * Move existing Stock panel to homescreen accordion. * Ensure int value for low stock product count. * Update ProductImage styling. * Update stock activity car styles. * Only show 5 low stock products. * Add "undo" action to the stock updated snackbar. * Fix check for explicit notice dismissal when taking actions. * Hide now-in-stock products after updating. By cllearing "edited" flag on successful update. * Fetch more products after updating stock. * Fix the number of product placeholders shown. * Only show products placeholders on the initial fetch. * Fix placeholder style. * Fetch low stock count dynamically. * Let initialOpen prop toggle Accordion panels if they haven't been toggled by the user. * Refactor item total count state. Allows for auto-updating item totals whenever identical queries (from a totals perspective) are issued. * Add last order date to low stock products API response. * Allow non-date strings in ActivityCard date prop. * Add last order date to stock panel cards. * Remove empty stock panel view. * Add test file for StockPanel. * Only request necessary fields from products endpoint. * Add test for products fetch after stock update. * Fix field name. * Add test for last order date in low stock products API response. * Stock panel should be initially closed. * Skip updating a product if the quantity is unchanged.
2020-11-25 18:51:15 +00:00
{ dateString }
</span>
) }
</header>
) }
{ children && (
<Section className="woocommerce-activity-card__body">
{ children }
</Section>
) }
{ actions && (
<footer className="woocommerce-activity-card__actions">
{ actionsList.map( ( item, i ) =>
cloneElement( item, { key: i } )
) }
</footer>
) }
</section>
);
}
render() {
const { onClick } = this.props;
if ( onClick ) {
return (
<Button
className="woocommerce-activity-card__button"
onClick={ onClick }
>
{ this.getCard() }
</Button>
);
}
return this.getCard();
}
}
ActivityCard.propTypes = {
actions: PropTypes.oneOfType( [
PropTypes.arrayOf( PropTypes.element ),
PropTypes.element,
] ),
onClick: PropTypes.func,
className: PropTypes.string,
children: PropTypes.node,
date: PropTypes.string,
icon: PropTypes.node,
subtitle: PropTypes.node,
title: PropTypes.oneOfType( [ PropTypes.string, PropTypes.node ] ),
unread: PropTypes.bool,
};
ActivityCard.defaultProps = {
icon: <NoticeOutline size={ 48 } />,
unread: false,
};
export { ActivityCard };
export { default as ActivityCardPlaceholder } from './placeholder';