diff --git a/.eslintrc.es6.json b/.eslintrc.es6.json
index 7a60d30c86..36aca75725 100644
--- a/.eslintrc.es6.json
+++ b/.eslintrc.es6.json
@@ -31,7 +31,6 @@
"react/jsx-boolean-value": 0,
"react/jsx-no-bind": 0,
"react/no-array-index-key": 0,
- "react/jsx-closing-bracket-location": 0,
"react/no-string-refs": 0,
"react/no-did-mount-set-state": 0,
"react/prefer-stateless-function": 0,
diff --git a/assets/js/src/form/fields/checkbox.jsx b/assets/js/src/form/fields/checkbox.jsx
index fae71c1a4b..1a392bc40d 100644
--- a/assets/js/src/form/fields/checkbox.jsx
+++ b/assets/js/src/form/fields/checkbox.jsx
@@ -28,7 +28,7 @@ define([
checked={isChecked}
onChange={this.onValueChange}
name={this.props.field.name}
- />
+ />
{ this.props.field.values[value] }
diff --git a/assets/js/src/form/fields/date.jsx b/assets/js/src/form/fields/date.jsx
index 12cc650a8d..1cdfc57db9 100644
--- a/assets/js/src/form/fields/date.jsx
+++ b/assets/js/src/form/fields/date.jsx
@@ -22,7 +22,7 @@ define([
+ >{ i }
));
}
return (
@@ -52,7 +52,7 @@ define([
+ >{ this.props.monthNames[i - 1] }
));
}
return (
diff --git a/assets/js/src/form/fields/radio.jsx b/assets/js/src/form/fields/radio.jsx
index 60e8e6cc61..d95d865cec 100644
--- a/assets/js/src/form/fields/radio.jsx
+++ b/assets/js/src/form/fields/radio.jsx
@@ -20,7 +20,8 @@ define([
checked={selectedValue === value}
value={value}
onChange={this.props.onValueChange}
- name={this.props.field.name} />
+ name={this.props.field.name}
+ />
{ this.props.field.values[value] }
diff --git a/assets/js/src/form/fields/select.jsx b/assets/js/src/form/fields/select.jsx
index 850c1c5cf5..b673c4b3ae 100644
--- a/assets/js/src/form/fields/select.jsx
+++ b/assets/js/src/form/fields/select.jsx
@@ -50,7 +50,8 @@ const FormFieldSelect = React.createClass({
(value, index) => (
)
diff --git a/assets/js/src/form/form.jsx b/assets/js/src/form/form.jsx
index f7138594b1..a8143a9f0c 100644
--- a/assets/js/src/form/form.jsx
+++ b/assets/js/src/form/form.jsx
@@ -194,7 +194,8 @@ define(
field={field}
item={this.getValues()}
onValueChange={onValueChange}
- key={`field-${i}`} />
+ key={`field-${i}`}
+ />
);
});
@@ -207,7 +208,8 @@ define(
className="button button-primary"
type="submit"
value={MailPoet.I18n.t('save')}
- disabled={this.state.loading} />
+ disabled={this.state.loading}
+ />
);
}
diff --git a/assets/js/src/help-tooltip.jsx b/assets/js/src/help-tooltip.jsx
index cfbf203186..f9301b0826 100644
--- a/assets/js/src/help-tooltip.jsx
+++ b/assets/js/src/help-tooltip.jsx
@@ -32,14 +32,14 @@ function Tooltip(props) {
data-event="click"
data-tip
data-for={tooltipId}
- />
+ />
+ >
{tooltip}
diff --git a/assets/js/src/listing/bulk_actions.jsx b/assets/js/src/listing/bulk_actions.jsx
index f171ab3f36..913c6c0c47 100644
--- a/assets/js/src/listing/bulk_actions.jsx
+++ b/assets/js/src/listing/bulk_actions.jsx
@@ -84,7 +84,8 @@ define([
@@ -99,14 +100,15 @@ define([
+ >{ action.label }
)) }
+ className="button action"
+ />
{ this.state.extra }
diff --git a/assets/js/src/listing/filters.jsx b/assets/js/src/listing/filters.jsx
index b19afd4fa6..87de6b55a3 100644
--- a/assets/js/src/listing/filters.jsx
+++ b/assets/js/src/listing/filters.jsx
@@ -52,12 +52,12 @@ define([
ref={`filter-${i}`}
key={`filter-${i}`}
name={filter}
- >
+ >
{ filters[filter].map((option, j) => (
+ >{ option.label }
)) }
));
@@ -71,7 +71,8 @@ define([
onClick={this.handleFilterAction}
type="submit"
defaultValue={MailPoet.I18n.t('filter')}
- className="button" />
+ className="button"
+ />
);
}
diff --git a/assets/js/src/listing/groups.jsx b/assets/js/src/listing/groups.jsx
index 01bdc314ae..59fd47fc2d 100644
--- a/assets/js/src/listing/groups.jsx
+++ b/assets/js/src/listing/groups.jsx
@@ -19,7 +19,8 @@ define(['react', 'classnames'], (React, classNames) => {
+ onClick={this.handleSelect.bind(this, group.name)}
+ >
{group.label}
({ parseInt(group.count, 10).toLocaleString() })
diff --git a/assets/js/src/listing/header.jsx b/assets/js/src/listing/header.jsx
index b492b07142..b3fba5558a 100644
--- a/assets/js/src/listing/header.jsx
+++ b/assets/js/src/listing/header.jsx
@@ -20,7 +20,8 @@ const ListingHeader = React.createClass({
onSort={this.props.onSort}
sort_by={this.props.sort_by}
key={`column-${index}`}
- column={renderColumn} />
+ column={renderColumn}
+ />
);
});
@@ -29,7 +30,8 @@ const ListingHeader = React.createClass({
if (this.props.is_selectable === true) {
checkbox = (
+ className="manage-column column-cb check-column"
+ >
@@ -38,7 +40,8 @@ const ListingHeader = React.createClass({
name="select_all"
ref="toggle"
checked={this.props.selection}
- onChange={this.handleSelectItems} />
+ onChange={this.handleSelectItems}
+ />
|
);
}
diff --git a/assets/js/src/listing/listing.jsx b/assets/js/src/listing/listing.jsx
index a250924322..7e2ae495de 100644
--- a/assets/js/src/listing/listing.jsx
+++ b/assets/js/src/listing/listing.jsx
@@ -53,7 +53,8 @@ const ListingItem = React.createClass({
this.props.item.selected || this.props.selection === 'all'
}
onChange={this.handleSelectItem}
- disabled={this.props.selection === 'all'} />
+ disabled={this.props.selection === 'all'}
+ />
);
}
@@ -77,7 +78,8 @@ const ListingItem = React.createClass({
onClick={this.handleTrashItem.bind(
null,
this.props.item.id
- )}>
+ )}
+ >
{MailPoet.I18n.t('moveToTrash')}
@@ -86,7 +88,8 @@ const ListingItem = React.createClass({
customAction = (
+ key={`action-${index}`} className={action.name}
+ >
{(!isFirst) ? ' | ' : ''}
{ action.link(this.props.item) }
@@ -94,7 +97,8 @@ const ListingItem = React.createClass({
} else if (action.link) {
customAction = (
+ key={`action-${index}`} className={action.name}
+ >
{(!isFirst) ? ' | ' : ''}
{ action.link(this.props.item) }
@@ -102,7 +106,8 @@ const ListingItem = React.createClass({
} else {
customAction = (
+ key={`action-${index}`} className={action.name}
+ >
{(!isFirst) ? ' | ' : ''}
{ action.label }
+ }
+ >{ action.label }
);
}
@@ -159,7 +165,8 @@ const ListingItem = React.createClass({
@@ -172,7 +179,8 @@ const ListingItem = React.createClass({
@@ -213,7 +221,8 @@ const ListingItems = React.createClass({
this.props.columns.length
+ (this.props.is_selectable ? 1 : 0)
}
- className="colspanchange">
+ className="colspanchange"
+ >
{message}
@@ -235,7 +244,8 @@ const ListingItems = React.createClass({
+ }
+ >
{
(this.props.selection !== 'all')
? MailPoet.I18n.t('selectAllLabel')
@@ -247,7 +257,8 @@ const ListingItems = React.createClass({
{
+ href="javascript:;"
+ >{
(this.props.selection !== 'all')
? MailPoet.I18n.t('selectAllLink')
: MailPoet.I18n.t('clearSelection')
@@ -274,7 +285,8 @@ const ListingItems = React.createClass({
item_actions={this.props.item_actions}
group={this.props.group}
key={`item-${renderItem.id}-${index}`}
- item={renderItem} />
+ item={renderItem}
+ />
);
})}
@@ -822,7 +834,8 @@ const Listing = React.createClass({
bulk_actions={bulkActions}
selection={this.state.selection}
selected_ids={this.state.selected_ids}
- onBulkAction={this.handleBulkAction} />
+ onBulkAction={this.handleBulkAction}
+ />
+ onSetPage={this.handleSetPage}
+ />
@@ -847,7 +861,8 @@ const Listing = React.createClass({
sort_by={sortBy}
sort_order={sortOrder}
columns={columns}
- is_selectable={bulkActions.length > 0} />
+ is_selectable={bulkActions.length > 0}
+ />
+ items={items}
+ />
0} />
+ is_selectable={bulkActions.length > 0}
+ />
@@ -888,12 +905,14 @@ const Listing = React.createClass({
bulk_actions={bulkActions}
selection={this.state.selection}
selected_ids={this.state.selected_ids}
- onBulkAction={this.handleBulkAction} />
+ onBulkAction={this.handleBulkAction}
+ />
+ onSetPage={this.handleSetPage}
+ />
);
diff --git a/assets/js/src/listing/pages.jsx b/assets/js/src/listing/pages.jsx
index 9ee26a5f17..b1adde04af 100644
--- a/assets/js/src/listing/pages.jsx
+++ b/assets/js/src/listing/pages.jsx
@@ -78,7 +78,8 @@ define([
previousPage = (
+ className="prev-page"
+ >
{MailPoet.I18n.t('previousPage')}
‹
@@ -89,7 +90,8 @@ define([
firstPage = (
+ className="first-page"
+ >
{MailPoet.I18n.t('firstPage')}
«
@@ -100,7 +102,8 @@ define([
nextPage = (
+ className="next-page"
+ >
{MailPoet.I18n.t('nextPage')}
›
@@ -111,7 +114,8 @@ define([
lastPage = (
+ className="last-page"
+ >
{MailPoet.I18n.t('lastPage')}
»
@@ -132,7 +136,8 @@ define([
+ htmlFor="current-page-selector"
+ >{MailPoet.I18n.t('currentPage')}
+ className="current-page"
+ />
{MailPoet.I18n.t('pageOutOf')}
{Math.ceil(this.props.count / this.props.limit).toLocaleString()}
diff --git a/assets/js/src/listing/search.jsx b/assets/js/src/listing/search.jsx
index 4cc273c6d5..f0df05367f 100644
--- a/assets/js/src/listing/search.jsx
+++ b/assets/js/src/listing/search.jsx
@@ -30,11 +30,13 @@ define([
id="search_input"
ref="search"
name="s"
- defaultValue={this.props.search} />
+ defaultValue={this.props.search}
+ />
+ className="button"
+ />
);
diff --git a/assets/js/src/newsletters/listings/mixins.jsx b/assets/js/src/newsletters/listings/mixins.jsx
index 04d6364ee0..e074fa2abd 100644
--- a/assets/js/src/newsletters/listings/mixins.jsx
+++ b/assets/js/src/newsletters/listings/mixins.jsx
@@ -101,7 +101,7 @@ const QueueMixin = {
? 'inline-block' : 'none' }}
href="javascript:;"
onClick={this.resumeSending.bind(null, newsletter)}
- >{MailPoet.I18n.t('resume')}
+ >{MailPoet.I18n.t('resume')}
{MailPoet.I18n.t('pause')}
+ >{MailPoet.I18n.t('pause')}
);
}
@@ -129,7 +129,7 @@ const QueueMixin = {
+ />
{ percentage }
@@ -309,7 +309,7 @@ const StatisticsMixin = {
key={`stats-${newsletter.id}`}
to={params.link}
onClick={params.onClick || null}
- >
+ >
{content}
{afterContent}
diff --git a/assets/js/src/newsletters/listings/notification.jsx b/assets/js/src/newsletters/listings/notification.jsx
index 10ccc4220b..fb3755e944 100644
--- a/assets/js/src/newsletters/listings/notification.jsx
+++ b/assets/js/src/newsletters/listings/notification.jsx
@@ -271,7 +271,7 @@ const NewsletterListNotification = React.createClass({
return (
{ MailPoet.I18n.t('viewHistory') }
+ >{ MailPoet.I18n.t('viewHistory') }
);
},
renderItem: function (newsletter, actions) {
diff --git a/assets/js/src/newsletters/send.jsx b/assets/js/src/newsletters/send.jsx
index 582908a4ec..6d0e1fee50 100644
--- a/assets/js/src/newsletters/send.jsx
+++ b/assets/js/src/newsletters/send.jsx
@@ -346,7 +346,8 @@ define(
className="button button-primary"
type="button"
onClick={this.handleResume}
- value={MailPoet.I18n.t('resume')} />
+ value={MailPoet.I18n.t('resume')}
+ />
:
+ />
}
+ value={MailPoet.I18n.t('saveDraftAndClose')}
+ />
{MailPoet.I18n.t('orSimply')}
+ onClick={this.handleRedirectToDesign}
+ >
{MailPoet.I18n.t('goBackToDesign')}
.
diff --git a/assets/js/src/newsletters/send/standard.jsx b/assets/js/src/newsletters/send/standard.jsx
index 84e5d008de..45cb3e2d3a 100644
--- a/assets/js/src/newsletters/send/standard.jsx
+++ b/assets/js/src/newsletters/send/standard.jsx
@@ -160,7 +160,8 @@ define(
disabled={this.props.disabled}
onChange={this.onChange}
ref="dateInput"
- {...this.props.validation} />
+ {...this.props.validation}
+ />
);
},
});
@@ -171,7 +172,8 @@ define(
(value, index) => (
)
@@ -238,13 +240,15 @@ define(
displayFormat={dateDisplayFormat}
storageFormat={dateStorageFormat}
disabled={this.props.disabled}
- validation={this.props.dateValidation} />
+ validation={this.props.dateValidation}
+ />
+ validation={this.props.timeValidation}
+ />
);
},
@@ -298,7 +302,8 @@ define(
value={this.getCurrentValue().scheduledAt}
onChange={this.handleValueChange}
disabled={this.props.field.disabled}
- dateValidation={this.getDateValidation()} />
+ dateValidation={this.getDateValidation()}
+ />
{MailPoet.I18n.t('websiteTimeIs')} {currentTime}
@@ -315,7 +320,8 @@ define(
checked={this.isScheduled()}
disabled={this.props.field.disabled}
name="isScheduled"
- onChange={this.handleCheckboxChange} />
+ onChange={this.handleCheckboxChange}
+ />
{schedulingOptions}
diff --git a/assets/js/src/newsletters/templates/import_template.jsx b/assets/js/src/newsletters/templates/import_template.jsx
index ce9f3358ff..e2b9c04619 100644
--- a/assets/js/src/newsletters/templates/import_template.jsx
+++ b/assets/js/src/newsletters/templates/import_template.jsx
@@ -102,7 +102,8 @@ class ImportTemplate extends React.Component {
+ value={MailPoet.I18n.t('upload')}
+ />
diff --git a/assets/js/src/newsletters/templates/tabs.jsx b/assets/js/src/newsletters/templates/tabs.jsx
index 4317172f06..2a806bb87b 100644
--- a/assets/js/src/newsletters/templates/tabs.jsx
+++ b/assets/js/src/newsletters/templates/tabs.jsx
@@ -8,7 +8,7 @@ const Tabs = ({ tabs, selected, select }) => (
href="javascript:"
className={selected === name ? 'current' : ''}
onClick={() => select(name)}
- > {label}
+ > {label}
))}
diff --git a/assets/js/src/newsletters/templates/template_box.jsx b/assets/js/src/newsletters/templates/template_box.jsx
index 2a70491c80..50330ee1a2 100644
--- a/assets/js/src/newsletters/templates/template_box.jsx
+++ b/assets/js/src/newsletters/templates/template_box.jsx
@@ -133,7 +133,7 @@ class TemplateBox extends React.Component {
className="button button-primary"
data-automation-id={`select_template_${index}`}
onClick={this.onSelect}
- > {MailPoet.I18n.t('select')}
+ > {MailPoet.I18n.t('select')}
{ readonly === '1' ? false : deleteLink }
diff --git a/assets/js/src/newsletters/types/automatic_emails/events_list.jsx b/assets/js/src/newsletters/types/automatic_emails/events_list.jsx
index 264362278d..b0d85b88a1 100644
--- a/assets/js/src/newsletters/types/automatic_emails/events_list.jsx
+++ b/assets/js/src/newsletters/types/automatic_emails/events_list.jsx
@@ -22,7 +22,8 @@ class AutomaticEmailEventsList extends React.Component {
if (this.automaticEmail.premium) {
action = (
+ target="_blank"
+ >
{MailPoet.I18n.t('premiumFeatureLink')}
);
diff --git a/assets/js/src/newsletters/types/notification/notification.jsx b/assets/js/src/newsletters/types/notification/notification.jsx
index d203bfde6d..174fc9e169 100644
--- a/assets/js/src/newsletters/types/notification/notification.jsx
+++ b/assets/js/src/newsletters/types/notification/notification.jsx
@@ -75,14 +75,16 @@ define(
+ onValueChange={this.handleValueChange}
+ />
+ value={MailPoet.I18n.t('next')}
+ />
);
diff --git a/assets/js/src/newsletters/types/notification/scheduling.jsx b/assets/js/src/newsletters/types/notification/scheduling.jsx
index 5c7f08262f..f84e12e9b5 100644
--- a/assets/js/src/newsletters/types/notification/scheduling.jsx
+++ b/assets/js/src/newsletters/types/notification/scheduling.jsx
@@ -93,7 +93,8 @@ const NotificationScheduling = React.createClass({
+ onValueChange={this.handleTimeOfDayChange}
+ />
);
}
@@ -102,7 +103,8 @@ const NotificationScheduling = React.createClass({
+ onValueChange={this.handleWeekDayChange}
+ />
);
}
@@ -111,7 +113,8 @@ const NotificationScheduling = React.createClass({
+ onValueChange={this.handleMonthDayChange}
+ />
);
}
@@ -120,7 +123,8 @@ const NotificationScheduling = React.createClass({
+ onValueChange={this.handleNthWeekDayChange}
+ />
);
}
@@ -129,7 +133,8 @@ const NotificationScheduling = React.createClass({
+ onValueChange={this.handleIntervalChange}
+ />
{nthWeekDaySelection}
{monthDaySelection}
diff --git a/assets/js/src/newsletters/types/welcome/scheduling.jsx b/assets/js/src/newsletters/types/welcome/scheduling.jsx
index 3967703880..a162f49093 100644
--- a/assets/js/src/newsletters/types/welcome/scheduling.jsx
+++ b/assets/js/src/newsletters/types/welcome/scheduling.jsx
@@ -130,14 +130,16 @@ const WelcomeScheduling = React.createClass({
+ onValueChange={this.handleRoleChange}
+ />
);
} else {
roleSegmentSelection = (
+ onValueChange={this.handleSegmentChange}
+ />
);
}
if (value.afterTimeType !== 'immediate') {
@@ -145,7 +147,8 @@ const WelcomeScheduling = React.createClass({
+ onValueChange={this.handleAfterTimeNumberChange}
+ />
);
}
@@ -154,7 +157,8 @@ const WelcomeScheduling = React.createClass({
+ onValueChange={this.handleEventChange}
+ />
{ roleSegmentSelection }
@@ -163,7 +167,8 @@ const WelcomeScheduling = React.createClass({
+ onValueChange={this.handleAfterTimeTypeChange}
+ />
);
},
|