newspack-components 2.1.0 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/accordion/index.js +46 -0
- package/dist/cjs/accordion/style.scss +27 -0
- package/dist/cjs/action-card/index.js +48 -25
- package/dist/cjs/action-card/style.scss +100 -23
- package/dist/cjs/autocomplete-tokenfield/index.js +13 -41
- package/dist/cjs/autocomplete-tokenfield/style.scss +2 -2
- package/dist/cjs/autocomplete-with-suggestions/index.js +30 -51
- package/dist/cjs/autocomplete-with-suggestions/style.scss +16 -15
- package/dist/cjs/button/index.js +5 -13
- package/dist/cjs/button-card/index.js +1 -10
- package/dist/cjs/button-card/style.scss +13 -13
- package/dist/cjs/card/index.js +1 -8
- package/dist/cjs/card/style.scss +25 -8
- package/dist/cjs/category-autocomplete/index.js +18 -38
- package/dist/cjs/category-autocomplete/style.scss +0 -2
- package/dist/cjs/color-picker/index.js +1 -15
- package/dist/cjs/color-picker/style.scss +0 -3
- package/dist/cjs/consts.js +5 -3
- package/dist/cjs/custom-select-control/index.js +1 -9
- package/dist/cjs/custom-select-control/style.scss +6 -7
- package/dist/cjs/date-range-picker/index.js +1 -10
- package/dist/cjs/date-range-picker/style.scss +12 -12
- package/dist/cjs/footer/index.js +5 -17
- package/dist/cjs/footer/style.scss +5 -5
- package/dist/cjs/form-token-field/index.js +1 -9
- package/dist/cjs/form-token-field/style.scss +2 -3
- package/dist/cjs/global-notices/index.js +1 -8
- package/dist/cjs/grid/index.js +1 -8
- package/dist/cjs/grid/style.scss +5 -5
- package/dist/cjs/handoff/index.js +8 -17
- package/dist/cjs/handoff-message/index.js +50 -0
- package/dist/cjs/hooks/index.js +1 -7
- package/dist/cjs/hooks/useObjectState.js +7 -13
- package/dist/cjs/hooks/useObjectState.test.js +0 -14
- package/dist/cjs/hooks/useOnClickOutside.js +3 -6
- package/dist/cjs/hooks/usePrompt.js +1 -13
- package/dist/cjs/image-upload/index.js +21 -19
- package/dist/cjs/image-upload/index.test.js +0 -5
- package/dist/cjs/image-upload/style.scss +5 -9
- package/dist/cjs/index.js +28 -44
- package/dist/cjs/info-button/index.js +3 -11
- package/dist/cjs/info-button/style.scss +1 -3
- package/dist/cjs/modal/index.js +1 -9
- package/dist/cjs/modal/style.scss +8 -8
- package/dist/cjs/newspack-icon/index.js +1 -9
- package/dist/cjs/newspack-icon/style.scss +4 -4
- package/dist/cjs/newspack-logo/index.js +1 -9
- package/dist/cjs/newspack-logo/style.scss +3 -3
- package/dist/cjs/notice/index.js +8 -15
- package/dist/cjs/notice/style.scss +28 -15
- package/dist/cjs/patrons-logo/index.js +3 -11
- package/dist/cjs/plugin-installer/index.js +36 -36
- package/dist/cjs/plugin-installer/style.scss +5 -5
- package/dist/cjs/plugin-settings/SettingsSection.js +9 -28
- package/dist/cjs/plugin-settings/index.js +39 -22
- package/dist/cjs/plugin-toggle/index.js +40 -33
- package/dist/cjs/plugin-toggle/style.scss +2 -2
- package/dist/cjs/popover/index.js +1 -11
- package/dist/cjs/popover/style.scss +19 -16
- package/dist/cjs/position-control/index.js +113 -0
- package/dist/cjs/position-control/style.scss +66 -0
- package/dist/cjs/progress-bar/index.js +2 -9
- package/dist/cjs/progress-bar/index.test.js +2 -7
- package/dist/cjs/progress-bar/style.scss +4 -4
- package/dist/cjs/proxied-imports/router.js +0 -3
- package/dist/cjs/radio-control/index.js +1 -11
- package/dist/cjs/radio-control/style.scss +9 -9
- package/dist/cjs/section-header/index.js +44 -29
- package/dist/cjs/section-header/style.scss +2 -2
- package/dist/cjs/select-control/ButtonGroupControl.js +4 -13
- package/dist/cjs/select-control/GroupedSelectControl.js +9 -15
- package/dist/cjs/select-control/index.js +5 -12
- package/dist/cjs/select-control/style.scss +2 -2
- package/dist/cjs/settings/MinMaxSetting.js +3 -7
- package/dist/cjs/settings/SettingsCard.js +3 -7
- package/dist/cjs/settings/SettingsSection.js +1 -4
- package/dist/cjs/settings/index.js +0 -6
- package/dist/cjs/settings/style.scss +1 -1
- package/dist/cjs/steps-list/index.js +52 -0
- package/dist/cjs/steps-list/style.scss +11 -0
- package/dist/cjs/steps-list-item/index.js +56 -0
- package/dist/cjs/steps-list-item/style.scss +47 -0
- package/dist/cjs/style-card/index.js +6 -13
- package/dist/cjs/style-card/style.scss +9 -12
- package/dist/cjs/style.scss +5 -6
- package/dist/cjs/tabbed-navigation/index.js +19 -16
- package/dist/cjs/tabbed-navigation/style.scss +3 -4
- package/dist/cjs/text-control/index.js +6 -16
- package/dist/cjs/utils/index.js +10 -5
- package/dist/cjs/waiting/index.js +1 -9
- package/dist/cjs/web-preview/index.js +13 -28
- package/dist/cjs/web-preview/style.scss +14 -14
- package/dist/cjs/with-wizard/index.js +51 -31
- package/dist/cjs/with-wizard/style.scss +35 -37
- package/dist/cjs/with-wizard-screen/index.js +11 -17
- package/dist/cjs/with-wizard-screen/style.scss +14 -17
- package/dist/cjs/wizard/components/WizardError.js +3 -15
- package/dist/cjs/wizard/index.js +10 -24
- package/dist/cjs/wizard/store/index.js +42 -55
- package/dist/cjs/wizard/store/utils.js +1 -6
- package/dist/esm/accordion/index.js +38 -0
- package/dist/esm/accordion/style.scss +27 -0
- package/dist/esm/action-card/index.js +50 -21
- package/dist/esm/action-card/style.scss +100 -23
- package/dist/esm/autocomplete-tokenfield/index.js +14 -37
- package/dist/esm/autocomplete-tokenfield/style.scss +2 -2
- package/dist/esm/autocomplete-with-suggestions/index.js +28 -41
- package/dist/esm/autocomplete-with-suggestions/style.scss +16 -15
- package/dist/esm/button/index.js +5 -7
- package/dist/esm/button-card/index.js +2 -5
- package/dist/esm/button-card/style.scss +13 -13
- package/dist/esm/card/index.js +2 -5
- package/dist/esm/card/style.scss +25 -8
- package/dist/esm/category-autocomplete/index.js +17 -30
- package/dist/esm/category-autocomplete/style.scss +0 -2
- package/dist/esm/color-picker/index.js +2 -4
- package/dist/esm/color-picker/style.scss +0 -3
- package/dist/esm/consts.js +3 -2
- package/dist/esm/custom-select-control/index.js +2 -5
- package/dist/esm/custom-select-control/style.scss +6 -7
- package/dist/esm/date-range-picker/index.js +1 -3
- package/dist/esm/date-range-picker/style.scss +12 -12
- package/dist/esm/footer/index.js +3 -11
- package/dist/esm/footer/style.scss +5 -5
- package/dist/esm/form-token-field/index.js +2 -5
- package/dist/esm/form-token-field/style.scss +2 -3
- package/dist/esm/global-notices/index.js +1 -6
- package/dist/esm/grid/index.js +2 -5
- package/dist/esm/grid/style.scss +5 -5
- package/dist/esm/handoff/index.js +3 -14
- package/dist/esm/handoff-message/index.js +45 -0
- package/dist/esm/hooks/index.js +0 -2
- package/dist/esm/hooks/useObjectState.js +3 -8
- package/dist/esm/hooks/useObjectState.test.js +0 -3
- package/dist/esm/hooks/useOnClickOutside.js +2 -5
- package/dist/esm/hooks/usePrompt.js +1 -8
- package/dist/esm/image-upload/index.js +17 -16
- package/dist/esm/image-upload/style.scss +5 -9
- package/dist/esm/index.js +4 -0
- package/dist/esm/info-button/index.js +4 -6
- package/dist/esm/info-button/style.scss +1 -3
- package/dist/esm/modal/index.js +2 -5
- package/dist/esm/modal/style.scss +8 -8
- package/dist/esm/newspack-icon/index.js +2 -5
- package/dist/esm/newspack-icon/style.scss +4 -4
- package/dist/esm/newspack-logo/index.js +2 -5
- package/dist/esm/newspack-logo/style.scss +3 -3
- package/dist/esm/notice/index.js +4 -8
- package/dist/esm/notice/style.scss +28 -15
- package/dist/esm/patrons-logo/index.js +3 -5
- package/dist/esm/plugin-installer/index.js +35 -39
- package/dist/esm/plugin-installer/style.scss +5 -5
- package/dist/esm/plugin-settings/SettingsSection.js +8 -21
- package/dist/esm/plugin-settings/index.js +38 -24
- package/dist/esm/plugin-toggle/index.js +39 -36
- package/dist/esm/plugin-toggle/style.scss +2 -2
- package/dist/esm/popover/index.js +3 -6
- package/dist/esm/popover/style.scss +19 -16
- package/dist/esm/position-control/index.js +109 -0
- package/dist/esm/position-control/style.scss +66 -0
- package/dist/esm/progress-bar/index.js +2 -7
- package/dist/esm/progress-bar/index.test.js +2 -1
- package/dist/esm/progress-bar/style.scss +4 -4
- package/dist/esm/proxied-imports/router.js +1 -0
- package/dist/esm/radio-control/index.js +3 -6
- package/dist/esm/radio-control/style.scss +9 -9
- package/dist/esm/section-header/index.js +44 -25
- package/dist/esm/section-header/style.scss +2 -2
- package/dist/esm/select-control/ButtonGroupControl.js +5 -7
- package/dist/esm/select-control/GroupedSelectControl.js +5 -6
- package/dist/esm/select-control/index.js +6 -6
- package/dist/esm/select-control/style.scss +2 -2
- package/dist/esm/settings/MinMaxSetting.js +1 -3
- package/dist/esm/settings/SettingsCard.js +3 -4
- package/dist/esm/settings/SettingsSection.js +0 -2
- package/dist/esm/settings/style.scss +1 -1
- package/dist/esm/steps-list/index.js +43 -0
- package/dist/esm/steps-list/style.scss +11 -0
- package/dist/esm/steps-list-item/index.js +48 -0
- package/dist/esm/steps-list-item/style.scss +47 -0
- package/dist/esm/style-card/index.js +2 -5
- package/dist/esm/style-card/style.scss +9 -12
- package/dist/esm/style.scss +5 -6
- package/dist/esm/tabbed-navigation/index.js +20 -10
- package/dist/esm/tabbed-navigation/style.scss +3 -4
- package/dist/esm/text-control/index.js +2 -9
- package/dist/esm/utils/index.js +9 -3
- package/dist/esm/waiting/index.js +2 -5
- package/dist/esm/web-preview/index.js +9 -24
- package/dist/esm/web-preview/style.scss +14 -14
- package/dist/esm/with-wizard/index.js +49 -34
- package/dist/esm/with-wizard/style.scss +35 -37
- package/dist/esm/with-wizard-screen/index.js +9 -11
- package/dist/esm/with-wizard-screen/style.scss +14 -17
- package/dist/esm/wizard/components/WizardError.js +1 -10
- package/dist/esm/wizard/index.js +10 -12
- package/dist/esm/wizard/store/index.js +40 -46
- package/dist/esm/wizard/store/utils.js +1 -1
- package/package.json +4 -4
- package/shared/js/button-props.js +3 -1
- package/shared/scss/_mixins.scss +12 -0
- package/src/accordion/index.js +32 -0
- package/src/accordion/style.scss +27 -0
- package/src/action-card/index.js +43 -8
- package/src/action-card/style.scss +100 -23
- package/src/autocomplete-tokenfield/index.js +1 -1
- package/src/autocomplete-tokenfield/style.scss +2 -2
- package/src/autocomplete-with-suggestions/style.scss +16 -15
- package/src/button-card/style.scss +13 -13
- package/src/card/style.scss +25 -8
- package/src/category-autocomplete/index.js +3 -1
- package/src/category-autocomplete/style.scss +0 -2
- package/src/color-picker/style.scss +0 -3
- package/src/consts.js +2 -1
- package/src/custom-select-control/style.scss +6 -7
- package/src/date-range-picker/style.scss +12 -12
- package/src/footer/index.js +2 -2
- package/src/footer/style.scss +5 -5
- package/src/form-token-field/index.js +2 -7
- package/src/form-token-field/style.scss +2 -3
- package/src/grid/style.scss +5 -5
- package/src/handoff/index.js +3 -8
- package/src/handoff-message/index.js +39 -0
- package/src/hooks/useObjectState.js +2 -1
- package/src/image-upload/index.js +9 -3
- package/src/image-upload/style.scss +5 -9
- package/src/index.js +4 -0
- package/src/info-button/style.scss +1 -3
- package/src/modal/style.scss +8 -8
- package/src/newspack-icon/style.scss +4 -4
- package/src/newspack-logo/style.scss +3 -3
- package/src/notice/index.js +2 -0
- package/src/notice/style.scss +28 -15
- package/src/plugin-installer/index.js +15 -2
- package/src/plugin-installer/style.scss +5 -5
- package/src/plugin-settings/SettingsSection.js +7 -13
- package/src/plugin-settings/index.js +7 -2
- package/src/plugin-toggle/index.js +2 -3
- package/src/plugin-toggle/style.scss +2 -2
- package/src/popover/style.scss +19 -16
- package/src/position-control/index.js +122 -0
- package/src/position-control/style.scss +66 -0
- package/src/progress-bar/style.scss +4 -4
- package/src/radio-control/style.scss +9 -9
- package/src/section-header/index.js +32 -15
- package/src/section-header/style.scss +2 -2
- package/src/select-control/ButtonGroupControl.js +3 -0
- package/src/select-control/GroupedSelectControl.js +2 -1
- package/src/select-control/index.js +6 -2
- package/src/select-control/style.scss +2 -2
- package/src/settings/style.scss +1 -1
- package/src/steps-list/index.js +39 -0
- package/src/steps-list/style.scss +11 -0
- package/src/steps-list-item/index.js +40 -0
- package/src/steps-list-item/style.scss +47 -0
- package/src/style-card/index.js +2 -11
- package/src/style-card/style.scss +9 -12
- package/src/style.scss +5 -6
- package/src/tabbed-navigation/index.js +12 -4
- package/src/tabbed-navigation/style.scss +3 -4
- package/src/utils/index.js +9 -0
- package/src/web-preview/index.js +1 -1
- package/src/web-preview/style.scss +14 -14
- package/src/with-wizard/style.scss +35 -37
- package/src/with-wizard-screen/index.js +4 -1
- package/src/with-wizard-screen/style.scss +14 -17
- package/src/wizard/index.js +15 -3
- package/src/wizard/store/index.js +8 -2
|
@@ -1,42 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
9
|
var _apiFetch = _interopRequireDefault(require("@wordpress/api-fetch"));
|
|
13
|
-
|
|
14
10
|
var _element = require("@wordpress/element");
|
|
15
|
-
|
|
16
11
|
var _i18n = require("@wordpress/i18n");
|
|
17
|
-
|
|
18
12
|
var _icons = require("@wordpress/icons");
|
|
19
|
-
|
|
20
13
|
var _ = require("../");
|
|
21
|
-
|
|
22
14
|
require("./style.scss");
|
|
23
|
-
|
|
24
15
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
25
|
-
|
|
26
16
|
var _jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
27
|
-
|
|
28
17
|
/**
|
|
29
18
|
* Plugin Installer
|
|
30
19
|
*/
|
|
31
|
-
|
|
32
20
|
/**
|
|
33
21
|
* WordPress dependencies.
|
|
34
22
|
*/
|
|
35
23
|
const __ = _i18n.__;
|
|
24
|
+
/**
|
|
25
|
+
* Internal dependencies.
|
|
26
|
+
*/
|
|
36
27
|
const PLUGIN_STATE_NONE = 0;
|
|
37
28
|
const PLUGIN_STATE_ACTIVE = 1;
|
|
38
29
|
const PLUGIN_STATE_INSTALLING = 2;
|
|
39
30
|
const PLUGIN_STATE_ERROR = 3;
|
|
31
|
+
|
|
40
32
|
/**
|
|
41
33
|
* External dependencies.
|
|
42
34
|
*/
|
|
@@ -47,7 +39,6 @@ const PLUGIN_STATE_ERROR = 3;
|
|
|
47
39
|
class PluginInstaller extends _element.Component {
|
|
48
40
|
constructor() {
|
|
49
41
|
var _this;
|
|
50
|
-
|
|
51
42
|
super(...arguments);
|
|
52
43
|
_this = this;
|
|
53
44
|
(0, _defineProperty2.default)(this, "componentDidMount", () => {
|
|
@@ -68,11 +59,9 @@ class PluginInstaller extends _element.Component {
|
|
|
68
59
|
const {
|
|
69
60
|
installationInitialized
|
|
70
61
|
} = this.state;
|
|
71
|
-
|
|
72
62
|
if (plugins !== prevProps.plugins) {
|
|
73
63
|
this.retrievePluginInfo(plugins);
|
|
74
64
|
}
|
|
75
|
-
|
|
76
65
|
if (autoInstall && !installationInitialized) {
|
|
77
66
|
this.installAllPlugins();
|
|
78
67
|
}
|
|
@@ -86,8 +75,8 @@ class PluginInstaller extends _element.Component {
|
|
|
86
75
|
if (plugins.indexOf(slug) === -1) {
|
|
87
76
|
return result;
|
|
88
77
|
}
|
|
89
|
-
|
|
90
|
-
|
|
78
|
+
result[slug] = {
|
|
79
|
+
...response[slug],
|
|
91
80
|
installationStatus: response[slug].Status === 'active' ? PLUGIN_STATE_ACTIVE : PLUGIN_STATE_NONE
|
|
92
81
|
};
|
|
93
82
|
return result;
|
|
@@ -117,8 +106,10 @@ class PluginInstaller extends _element.Component {
|
|
|
117
106
|
pluginInfo
|
|
118
107
|
} = this.state;
|
|
119
108
|
this.props.onInstalled(slug);
|
|
120
|
-
this.updatePluginInfo({
|
|
121
|
-
|
|
109
|
+
this.updatePluginInfo({
|
|
110
|
+
...pluginInfo,
|
|
111
|
+
[slug]: {
|
|
112
|
+
...response,
|
|
122
113
|
installationStatus: PLUGIN_STATE_ACTIVE
|
|
123
114
|
}
|
|
124
115
|
});
|
|
@@ -130,8 +121,10 @@ class PluginInstaller extends _element.Component {
|
|
|
130
121
|
const {
|
|
131
122
|
pluginInfo
|
|
132
123
|
} = this.state;
|
|
133
|
-
this.updatePluginInfo({
|
|
134
|
-
|
|
124
|
+
this.updatePluginInfo({
|
|
125
|
+
...pluginInfo,
|
|
126
|
+
[slug]: {
|
|
127
|
+
...pluginInfo[slug],
|
|
135
128
|
checked
|
|
136
129
|
}
|
|
137
130
|
});
|
|
@@ -141,9 +134,10 @@ class PluginInstaller extends _element.Component {
|
|
|
141
134
|
const {
|
|
142
135
|
pluginInfo
|
|
143
136
|
} = _this.state;
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
[slug]: {
|
|
137
|
+
_this.updatePluginInfo({
|
|
138
|
+
...pluginInfo,
|
|
139
|
+
[slug]: {
|
|
140
|
+
...pluginInfo[slug],
|
|
147
141
|
installationStatus,
|
|
148
142
|
notification
|
|
149
143
|
}
|
|
@@ -172,13 +166,10 @@ class PluginInstaller extends _element.Component {
|
|
|
172
166
|
switch (status) {
|
|
173
167
|
case PLUGIN_STATE_ACTIVE:
|
|
174
168
|
return 'newspack-plugin-installer__status-active';
|
|
175
|
-
|
|
176
169
|
case PLUGIN_STATE_INSTALLING:
|
|
177
170
|
return 'newspack-plugin-installer__status-installing';
|
|
178
|
-
|
|
179
171
|
case PLUGIN_STATE_ERROR:
|
|
180
172
|
return 'newspack-plugin-installer__status-error';
|
|
181
|
-
|
|
182
173
|
default:
|
|
183
174
|
return 'newspack-plugin-installer__status-none';
|
|
184
175
|
}
|
|
@@ -188,7 +179,6 @@ class PluginInstaller extends _element.Component {
|
|
|
188
179
|
installationInitialized: false
|
|
189
180
|
};
|
|
190
181
|
}
|
|
191
|
-
|
|
192
182
|
/**
|
|
193
183
|
* Render.
|
|
194
184
|
*/
|
|
@@ -201,16 +191,20 @@ class PluginInstaller extends _element.Component {
|
|
|
201
191
|
const {
|
|
202
192
|
pluginInfo
|
|
203
193
|
} = this.state;
|
|
204
|
-
const
|
|
194
|
+
const {
|
|
195
|
+
is_atomic: isAtomic
|
|
196
|
+
} = window;
|
|
197
|
+
const slugs = Object.keys(pluginInfo);
|
|
205
198
|
|
|
199
|
+
// Store all plugin status info for installer button text value based on current status.
|
|
206
200
|
const currentPluginStatuses = [];
|
|
207
201
|
slugs.forEach(slug => {
|
|
208
202
|
const plugin = pluginInfo[slug];
|
|
209
203
|
currentPluginStatuses.push(plugin.Status);
|
|
210
|
-
});
|
|
204
|
+
});
|
|
211
205
|
|
|
206
|
+
// Make sure plugin status falls in either one of these, to handle button text.
|
|
212
207
|
const pluginInstalled = currentStatus => currentStatus === 'active' || currentStatus === 'inactive';
|
|
213
|
-
|
|
214
208
|
const buttonText = currentPluginStatuses.every(pluginInstalled) ? __('Activate', 'newspack') : __('Install', 'newspack');
|
|
215
209
|
const needsInstall = slugs.some(slug => {
|
|
216
210
|
const plugin = pluginInfo[slug];
|
|
@@ -227,16 +221,24 @@ class PluginInstaller extends _element.Component {
|
|
|
227
221
|
const {
|
|
228
222
|
Name,
|
|
229
223
|
Description,
|
|
224
|
+
Download,
|
|
230
225
|
Status,
|
|
231
226
|
installationStatus,
|
|
232
227
|
notification
|
|
233
228
|
} = plugin;
|
|
234
229
|
const isWaiting = installationStatus === PLUGIN_STATE_INSTALLING;
|
|
235
230
|
const isButton = !isWaiting && Status !== 'active';
|
|
231
|
+
const installable = Download || pluginInstalled(Status);
|
|
236
232
|
let actionText;
|
|
237
|
-
|
|
238
233
|
if (installationStatus === PLUGIN_STATE_INSTALLING) {
|
|
239
|
-
actionText = __('Installing…');
|
|
234
|
+
actionText = 'inactive' === Status ? __('Activating…') : __('Installing…');
|
|
235
|
+
} else if (!installable) {
|
|
236
|
+
actionText = (0, _jsxRuntime.jsxs)("span", {
|
|
237
|
+
className: "newspack-plugin-installer__status",
|
|
238
|
+
children: [isAtomic ? __('Contact Newspack support to install', 'newspack') : __('Plugin must be installed manually', 'newspack'), (0, _jsxRuntime.jsx)("span", {
|
|
239
|
+
className: "newspack-checkbox-icon"
|
|
240
|
+
})]
|
|
241
|
+
});
|
|
240
242
|
} else if (Status === 'uninstalled') {
|
|
241
243
|
actionText = (0, _jsxRuntime.jsxs)("span", {
|
|
242
244
|
className: "newspack-plugin-installer__status",
|
|
@@ -262,12 +264,12 @@ class PluginInstaller extends _element.Component {
|
|
|
262
264
|
})]
|
|
263
265
|
});
|
|
264
266
|
}
|
|
265
|
-
|
|
266
267
|
const classes = (0, _classnames.default)('newspack-action-card__plugin-installer', this.classForInstallationStatus(installationStatus));
|
|
267
268
|
const onClick = isButton ? () => this.installPlugin(slug) : null;
|
|
268
269
|
return (0, _jsxRuntime.jsx)(_.ActionCard, {
|
|
269
270
|
title: Name,
|
|
270
271
|
description: Description,
|
|
272
|
+
disabled: !installable,
|
|
271
273
|
actionText: actionText,
|
|
272
274
|
isSmall: isSmall,
|
|
273
275
|
isWaiting: isWaiting,
|
|
@@ -288,9 +290,7 @@ class PluginInstaller extends _element.Component {
|
|
|
288
290
|
})]
|
|
289
291
|
});
|
|
290
292
|
}
|
|
291
|
-
|
|
292
293
|
}
|
|
293
|
-
|
|
294
294
|
PluginInstaller.defaultProps = {
|
|
295
295
|
onStatus: () => {},
|
|
296
296
|
onInstalled: () => {}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Plugin Installer
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
@
|
|
5
|
+
@use '~@wordpress/base-styles/colors' as wp-colors;
|
|
6
6
|
|
|
7
7
|
.newspack-card {
|
|
8
8
|
.newspack-plugin-installer__status {
|
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
&.newspack-plugin-installer__status-active {
|
|
38
|
-
box-shadow: inset 4px 0 0
|
|
38
|
+
box-shadow: inset 4px 0 0 wp-colors.$alert-green;
|
|
39
39
|
|
|
40
40
|
.newspack-plugin-installer__checkbox {
|
|
41
|
-
background:
|
|
41
|
+
background: wp-colors.$alert-green;
|
|
42
42
|
box-shadow: none;
|
|
43
43
|
}
|
|
44
44
|
|
|
@@ -48,12 +48,12 @@
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
&.newspack-plugin-installer__status-error {
|
|
51
|
-
box-shadow: inset 4px 0 0
|
|
51
|
+
box-shadow: inset 4px 0 0 wp-colors.$alert-red;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
&.newspack-plugin-installer__status-installing,
|
|
55
55
|
&.newspack-plugin-installer__status-none {
|
|
56
|
-
box-shadow: inset 4px 0 0
|
|
56
|
+
box-shadow: inset 4px 0 0 wp-colors.$gray-100;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
// Is Small
|
|
@@ -4,49 +4,38 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _element = require("@wordpress/element");
|
|
9
|
-
|
|
10
8
|
var _hooks = require("@wordpress/hooks");
|
|
11
|
-
|
|
12
9
|
var _i18n = require("@wordpress/i18n");
|
|
13
|
-
|
|
14
10
|
var _components = require("@wordpress/components");
|
|
15
|
-
|
|
16
11
|
var _ = require("../");
|
|
17
|
-
|
|
18
12
|
require("./style.scss");
|
|
19
|
-
|
|
20
13
|
var _jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
21
|
-
|
|
22
14
|
/**
|
|
23
15
|
* Ads Settings Section.
|
|
24
16
|
*/
|
|
25
|
-
|
|
26
17
|
/**
|
|
27
18
|
* WordPress dependencies
|
|
28
19
|
*/
|
|
29
20
|
const __ = _i18n.__;
|
|
30
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Internal dependencies
|
|
23
|
+
*/
|
|
31
24
|
const isSelectControl = setting => {
|
|
32
25
|
return Array.isArray(setting.options) && setting.options.length;
|
|
33
26
|
};
|
|
34
|
-
|
|
35
27
|
const getControlComponent = setting => {
|
|
36
28
|
if (isSelectControl(setting)) {
|
|
37
29
|
return _.SelectControl;
|
|
38
30
|
}
|
|
39
|
-
|
|
40
31
|
switch (setting.type) {
|
|
41
32
|
case 'checkbox':
|
|
42
33
|
case 'boolean':
|
|
43
34
|
return _components.CheckboxControl;
|
|
44
|
-
|
|
45
35
|
default:
|
|
46
36
|
return _.TextControl;
|
|
47
37
|
}
|
|
48
38
|
};
|
|
49
|
-
|
|
50
39
|
const getControlType = setting => {
|
|
51
40
|
switch (setting.type) {
|
|
52
41
|
case 'int':
|
|
@@ -54,24 +43,20 @@ const getControlType = setting => {
|
|
|
54
43
|
case 'float':
|
|
55
44
|
case 'number':
|
|
56
45
|
return 'number';
|
|
57
|
-
|
|
58
46
|
case 'string':
|
|
59
47
|
case 'text':
|
|
60
48
|
return 'text';
|
|
61
|
-
|
|
62
49
|
case 'password':
|
|
63
50
|
return 'password';
|
|
64
|
-
|
|
65
51
|
case 'boolean':
|
|
66
52
|
case 'checkbox':
|
|
67
53
|
return 'checkbox';
|
|
68
|
-
|
|
69
54
|
default:
|
|
70
55
|
return null;
|
|
71
56
|
}
|
|
72
57
|
};
|
|
73
|
-
|
|
74
58
|
const SettingsSection = props => {
|
|
59
|
+
const [saveDisabled, setSaveDisabled] = (0, _element.useState)(true);
|
|
75
60
|
const {
|
|
76
61
|
error,
|
|
77
62
|
sectionKey,
|
|
@@ -83,7 +68,6 @@ const SettingsSection = props => {
|
|
|
83
68
|
onChange,
|
|
84
69
|
onUpdate
|
|
85
70
|
} = props;
|
|
86
|
-
|
|
87
71
|
const getControlProps = setting => ({
|
|
88
72
|
disabled,
|
|
89
73
|
name: `${setting.section}_${setting.key}`,
|
|
@@ -99,22 +83,19 @@ const SettingsSection = props => {
|
|
|
99
83
|
checked: setting.type === 'boolean' ? !!setting.value : null,
|
|
100
84
|
onChange: value => {
|
|
101
85
|
onChange(setting.key, value);
|
|
86
|
+
setSaveDisabled(false);
|
|
102
87
|
}
|
|
103
88
|
});
|
|
104
|
-
|
|
105
89
|
const createFilter = function (name) {
|
|
106
90
|
let defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
107
91
|
return (0, _hooks.applyFilters)(`newspack.settingSection.${sectionKey}.${name}`, defaultComponent, props);
|
|
108
92
|
};
|
|
109
|
-
|
|
110
93
|
let columns = 2;
|
|
111
|
-
|
|
112
94
|
if (fields.length % 3 === 0) {
|
|
113
95
|
columns = 3;
|
|
114
96
|
} else if (fields.length === 1) {
|
|
115
97
|
columns = 1;
|
|
116
98
|
}
|
|
117
|
-
|
|
118
99
|
return (0, _jsxRuntime.jsx)(_.ActionCard, {
|
|
119
100
|
isMedium: true,
|
|
120
101
|
disabled: disabled,
|
|
@@ -127,9 +108,10 @@ const SettingsSection = props => {
|
|
|
127
108
|
}) : null,
|
|
128
109
|
actionContent: (active || null === active) && createFilter('buttons', (0, _jsxRuntime.jsx)(_.Button, {
|
|
129
110
|
variant: "primary",
|
|
130
|
-
disabled: disabled,
|
|
111
|
+
disabled: disabled || saveDisabled,
|
|
131
112
|
onClick: () => {
|
|
132
113
|
onUpdate();
|
|
114
|
+
setSaveDisabled(true);
|
|
133
115
|
},
|
|
134
116
|
children: __('Save Settings', 'newspack')
|
|
135
117
|
})),
|
|
@@ -142,8 +124,8 @@ const SettingsSection = props => {
|
|
|
142
124
|
gutter: 32,
|
|
143
125
|
children: fields.map(setting => {
|
|
144
126
|
const Control = getControlComponent(setting); // eslint-disable-line @wordpress/no-unused-vars-before-return, no-unused-vars
|
|
145
|
-
|
|
146
|
-
|
|
127
|
+
return (0, _hooks.applyFilters)(`newspack.settingsSection.${sectionKey}.control`, (0, _jsxRuntime.jsx)(Control, {
|
|
128
|
+
...getControlProps(setting)
|
|
147
129
|
}, setting.key), {
|
|
148
130
|
sectionKey,
|
|
149
131
|
setting,
|
|
@@ -154,6 +136,5 @@ const SettingsSection = props => {
|
|
|
154
136
|
})
|
|
155
137
|
});
|
|
156
138
|
};
|
|
157
|
-
|
|
158
139
|
var _default = SettingsSection;
|
|
159
140
|
exports.default = _default;
|
|
@@ -1,37 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
9
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
|
-
|
|
14
10
|
var _apiFetch = _interopRequireDefault(require("@wordpress/api-fetch"));
|
|
15
|
-
|
|
16
11
|
var _element = require("@wordpress/element");
|
|
17
|
-
|
|
18
12
|
var _i18n = require("@wordpress/i18n");
|
|
19
|
-
|
|
20
13
|
var _ = require("../");
|
|
21
|
-
|
|
22
14
|
var _SettingsSection = _interopRequireDefault(require("./SettingsSection"));
|
|
23
|
-
|
|
24
15
|
var _jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
25
|
-
|
|
26
16
|
/**
|
|
27
17
|
* External dependencies
|
|
28
18
|
*/
|
|
29
|
-
|
|
30
19
|
/**
|
|
31
20
|
* WordPress dependencies.
|
|
32
21
|
*/
|
|
22
|
+
/**
|
|
23
|
+
* Internal dependencies.
|
|
24
|
+
*/
|
|
33
25
|
const __ = _i18n.__;
|
|
34
|
-
|
|
35
26
|
class PluginSettings extends _element.Component {
|
|
36
27
|
constructor() {
|
|
37
28
|
super(...arguments);
|
|
@@ -51,7 +42,6 @@ class PluginSettings extends _element.Component {
|
|
|
51
42
|
settings,
|
|
52
43
|
error: null
|
|
53
44
|
});
|
|
54
|
-
|
|
55
45
|
if ('function' === typeof afterFetch) {
|
|
56
46
|
afterFetch(settings);
|
|
57
47
|
}
|
|
@@ -79,7 +69,8 @@ class PluginSettings extends _element.Component {
|
|
|
79
69
|
}
|
|
80
70
|
});
|
|
81
71
|
this.setState({
|
|
82
|
-
settings: {
|
|
72
|
+
settings: {
|
|
73
|
+
...this.state.settings,
|
|
83
74
|
[sectionKey]: sectionSettings
|
|
84
75
|
}
|
|
85
76
|
});
|
|
@@ -102,10 +93,12 @@ class PluginSettings extends _element.Component {
|
|
|
102
93
|
}
|
|
103
94
|
}).then(settings => {
|
|
104
95
|
this.setState({
|
|
105
|
-
settings
|
|
96
|
+
settings: {
|
|
97
|
+
...this.state.settings,
|
|
98
|
+
[sectionKey]: settings[sectionKey]
|
|
99
|
+
},
|
|
106
100
|
error: null
|
|
107
101
|
});
|
|
108
|
-
|
|
109
102
|
if ('function' === typeof afterUpdate) {
|
|
110
103
|
afterUpdate(settings);
|
|
111
104
|
}
|
|
@@ -119,27 +112,55 @@ class PluginSettings extends _element.Component {
|
|
|
119
112
|
});
|
|
120
113
|
});
|
|
121
114
|
});
|
|
115
|
+
/**
|
|
116
|
+
* Get the section setting containing section information.
|
|
117
|
+
*
|
|
118
|
+
* @param {string} sectionKey The section name.
|
|
119
|
+
* @return {Object} The section setting.
|
|
120
|
+
*/
|
|
122
121
|
(0, _defineProperty2.default)(this, "getSectionInfo", sectionKey => {
|
|
123
122
|
return this.state.settings[sectionKey]?.find(setting => !setting.key || setting.key === 'active');
|
|
124
123
|
});
|
|
124
|
+
/**
|
|
125
|
+
* Get the section title.
|
|
126
|
+
*
|
|
127
|
+
* @param {string} sectionKey The section name.
|
|
128
|
+
* @return {string} The section title.
|
|
129
|
+
*/
|
|
125
130
|
(0, _defineProperty2.default)(this, "getSectionTitle", sectionKey => {
|
|
126
131
|
return this.getSectionInfo(sectionKey)?.description;
|
|
127
132
|
});
|
|
133
|
+
/**
|
|
134
|
+
* Get the section description.
|
|
135
|
+
*
|
|
136
|
+
* @param {string} sectionKey The section name.
|
|
137
|
+
* @return {string} The section description.
|
|
138
|
+
*/
|
|
128
139
|
(0, _defineProperty2.default)(this, "getSectionDescription", sectionKey => {
|
|
129
140
|
return this.getSectionInfo(sectionKey)?.help;
|
|
130
141
|
});
|
|
142
|
+
/**
|
|
143
|
+
* Get whether a section is active.
|
|
144
|
+
*
|
|
145
|
+
* @param {string} sectionKey The section name.
|
|
146
|
+
* @return {?boolean} Whether the section is active or not. Null if the section is not found or does not support activation.
|
|
147
|
+
*/
|
|
131
148
|
(0, _defineProperty2.default)(this, "isSectionActive", sectionKey => {
|
|
132
149
|
const {
|
|
133
150
|
settings
|
|
134
151
|
} = this.state;
|
|
135
152
|
const activation = settings[sectionKey]?.find(setting => setting.key === 'active');
|
|
136
|
-
|
|
137
153
|
if (!activation) {
|
|
138
154
|
return null;
|
|
139
155
|
}
|
|
140
|
-
|
|
141
156
|
return activation.value;
|
|
142
157
|
});
|
|
158
|
+
/**
|
|
159
|
+
* Get list of section field settings.
|
|
160
|
+
*
|
|
161
|
+
* @param {string} sectionKey The section name.
|
|
162
|
+
* @return {?Array} List of section fields.
|
|
163
|
+
*/
|
|
143
164
|
(0, _defineProperty2.default)(this, "getSectionFields", sectionKey => {
|
|
144
165
|
return this.state.settings[sectionKey]?.filter(setting => setting.key && setting.key !== 'active');
|
|
145
166
|
});
|
|
@@ -149,11 +170,9 @@ class PluginSettings extends _element.Component {
|
|
|
149
170
|
error: null
|
|
150
171
|
};
|
|
151
172
|
}
|
|
152
|
-
|
|
153
173
|
componentDidMount() {
|
|
154
174
|
this.fetchSettings();
|
|
155
175
|
}
|
|
156
|
-
|
|
157
176
|
/**
|
|
158
177
|
* Render.
|
|
159
178
|
*/
|
|
@@ -194,9 +213,7 @@ class PluginSettings extends _element.Component {
|
|
|
194
213
|
})]
|
|
195
214
|
});
|
|
196
215
|
}
|
|
197
|
-
|
|
198
216
|
}
|
|
199
|
-
|
|
200
217
|
PluginSettings.defaultProps = {
|
|
201
218
|
title: __('General Settings', 'newspack')
|
|
202
219
|
};
|