newspack-components 2.1.0 → 2.2.0
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/button-group/index.js +57 -0
- package/dist/cjs/button-group/style.scss +73 -0
- 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/checkbox-control/index.js +63 -0
- package/dist/cjs/checkbox-control/style.scss +78 -0
- 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/preview-box/index.js +36 -0
- package/dist/cjs/preview-box/style.scss +18 -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/textarea-control/index.js +54 -0
- package/dist/cjs/textarea-control/style.scss +76 -0
- package/dist/cjs/toggle-control/index.js +58 -0
- package/dist/cjs/toggle-control/style.scss +74 -0
- package/dist/cjs/toggle-group/index.js +71 -0
- package/dist/cjs/toggle-group/style.scss +28 -0
- 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/cjs/wizard/style.scss +148 -0
- 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/button-group/index.js +43 -0
- package/dist/esm/button-group/style.scss +73 -0
- 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/checkbox-control/index.js +49 -0
- package/dist/esm/checkbox-control/style.scss +78 -0
- 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/preview-box/index.js +30 -0
- package/dist/esm/preview-box/style.scss +18 -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/textarea-control/index.js +40 -0
- package/dist/esm/textarea-control/style.scss +76 -0
- package/dist/esm/toggle-control/index.js +44 -0
- package/dist/esm/toggle-control/style.scss +74 -0
- package/dist/esm/toggle-group/index.js +58 -0
- package/dist/esm/toggle-group/style.scss +28 -0
- 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/dist/esm/wizard/style.scss +148 -0
- package/package.json +4 -4
- package/shared/scss/_colors.scss +0 -15
- 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
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Toggle Control
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
@import '../../../shared/scss/colors';
|
|
6
|
+
@import '~@wordpress/base-styles/colors';
|
|
7
|
+
|
|
8
|
+
.newspack-toggle-control {
|
|
9
|
+
margin: 32px 0;
|
|
10
|
+
|
|
11
|
+
.components-base-control__field {
|
|
12
|
+
align-items: flex-start;
|
|
13
|
+
margin: 0;
|
|
14
|
+
|
|
15
|
+
.components-toggle-control__label {
|
|
16
|
+
color: $gray-700;
|
|
17
|
+
font-size: 14px;
|
|
18
|
+
line-height: 24px;
|
|
19
|
+
margin: 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.components-form-toggle {
|
|
23
|
+
margin: 3px 8px 3px 0;
|
|
24
|
+
|
|
25
|
+
&.is-checked {
|
|
26
|
+
.components-form-toggle__track {
|
|
27
|
+
background: $primary-500;
|
|
28
|
+
border-color: transparent;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Is Dark
|
|
35
|
+
|
|
36
|
+
&.newspack-toggle-control--is-dark {
|
|
37
|
+
.components-base-control__field label {
|
|
38
|
+
color: $gray-900;
|
|
39
|
+
font-weight: bold;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.components-base-control__help {
|
|
43
|
+
font-style: normal;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Is disabled
|
|
48
|
+
|
|
49
|
+
&.newspack-toggle-control--is-disabled {
|
|
50
|
+
opacity: 0.5;
|
|
51
|
+
pointer-events: none;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Focus
|
|
55
|
+
|
|
56
|
+
.components-form-toggle__input:focus {
|
|
57
|
+
+ .components-form-toggle__track {
|
|
58
|
+
box-shadow: 0 0 0 2px white, 0 0 0 4px $primary-500;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Multiple Toggle Controls
|
|
63
|
+
|
|
64
|
+
& + & {
|
|
65
|
+
margin-bottom: 32px;
|
|
66
|
+
margin-top: -24px;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Reset
|
|
70
|
+
|
|
71
|
+
.components-base-control__help {
|
|
72
|
+
margin: 0 0 0 44px;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Toggle Group
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* WordPress dependencies.
|
|
7
|
+
*/
|
|
8
|
+
import { Component } from '@wordpress/element';
|
|
9
|
+
/**
|
|
10
|
+
* Internal dependencies.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { ToggleControl } from '../';
|
|
14
|
+
import './style.scss';
|
|
15
|
+
/**
|
|
16
|
+
* External dependencies.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import classnames from 'classnames';
|
|
20
|
+
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
21
|
+
import { jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
22
|
+
|
|
23
|
+
class ToggleGroup extends Component {
|
|
24
|
+
/**
|
|
25
|
+
* Render.
|
|
26
|
+
*/
|
|
27
|
+
render() {
|
|
28
|
+
const {
|
|
29
|
+
checked,
|
|
30
|
+
children,
|
|
31
|
+
description,
|
|
32
|
+
onChange,
|
|
33
|
+
title,
|
|
34
|
+
className
|
|
35
|
+
} = this.props;
|
|
36
|
+
const classes = classnames('newspack-toggle-group', className);
|
|
37
|
+
return _jsxs("div", {
|
|
38
|
+
className: classes,
|
|
39
|
+
children: [_jsx(ToggleControl, {
|
|
40
|
+
checked: checked || false,
|
|
41
|
+
onChange: onChange
|
|
42
|
+
}), _jsxs("div", {
|
|
43
|
+
className: "newspack-toggle-group__description",
|
|
44
|
+
children: [_jsx("p", {
|
|
45
|
+
className: "is-dark",
|
|
46
|
+
children: _jsx("strong", {
|
|
47
|
+
children: title
|
|
48
|
+
})
|
|
49
|
+
}), _jsx("p", {
|
|
50
|
+
children: description
|
|
51
|
+
}), checked && children]
|
|
52
|
+
})]
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export default ToggleGroup;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Toggle Group
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
.newspack-toggle-group {
|
|
6
|
+
display: flex;
|
|
7
|
+
margin: 32px 0;
|
|
8
|
+
|
|
9
|
+
& &__description p {
|
|
10
|
+
margin-bottom: 0;
|
|
11
|
+
margin-top: 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.newspack-toggle-control {
|
|
15
|
+
margin: 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
&__description {
|
|
19
|
+
flex: 1;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Multiple Toogle Groups
|
|
23
|
+
|
|
24
|
+
& + & {
|
|
25
|
+
margin-bottom: 32px;
|
|
26
|
+
margin-top: -16px;
|
|
27
|
+
}
|
|
28
|
+
}
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { ENTER } from '@wordpress/keycodes';
|
|
5
5
|
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
6
|
-
|
|
7
6
|
const InteractiveDiv = _ref => {
|
|
8
7
|
let {
|
|
9
8
|
style = {},
|
|
@@ -20,7 +19,14 @@ const InteractiveDiv = _ref => {
|
|
|
20
19
|
...props
|
|
21
20
|
});
|
|
22
21
|
};
|
|
23
|
-
|
|
22
|
+
const confirmAction = message => {
|
|
23
|
+
// eslint-disable-next-line no-alert
|
|
24
|
+
if (confirm(message)) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
};
|
|
24
29
|
export default {
|
|
25
|
-
InteractiveDiv
|
|
30
|
+
InteractiveDiv,
|
|
31
|
+
confirmAction
|
|
26
32
|
};
|
|
@@ -7,18 +7,17 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { Component } from '@wordpress/element';
|
|
9
9
|
import { Spinner } from '@wordpress/components';
|
|
10
|
+
|
|
10
11
|
/**
|
|
11
12
|
* Internal dependencies.
|
|
12
13
|
*/
|
|
13
|
-
|
|
14
14
|
import './style.scss';
|
|
15
|
+
|
|
15
16
|
/**
|
|
16
17
|
* External dependencies.
|
|
17
18
|
*/
|
|
18
|
-
|
|
19
19
|
import classnames from 'classnames';
|
|
20
20
|
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
21
|
-
|
|
22
21
|
class Waiting extends Component {
|
|
23
22
|
/**
|
|
24
23
|
* Render
|
|
@@ -41,7 +40,5 @@ class Waiting extends Component {
|
|
|
41
40
|
...otherProps
|
|
42
41
|
});
|
|
43
42
|
}
|
|
44
|
-
|
|
45
43
|
}
|
|
46
|
-
|
|
47
44
|
export default Waiting;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
|
|
3
2
|
/**
|
|
4
3
|
* WordPress dependencies.
|
|
5
4
|
*/
|
|
@@ -8,34 +7,35 @@ import { __ as alias__ } from '@wordpress/i18n';
|
|
|
8
7
|
const __ = alias__;
|
|
9
8
|
import { closeSmall, desktop, mobile, tablet } from '@wordpress/icons';
|
|
10
9
|
import { Button, ButtonGroup } from '@wordpress/components';
|
|
10
|
+
|
|
11
11
|
/**
|
|
12
12
|
* Internal dependencies.
|
|
13
13
|
*/
|
|
14
|
-
|
|
15
14
|
import { Waiting } from '../';
|
|
16
15
|
import './style.scss';
|
|
16
|
+
|
|
17
17
|
/**
|
|
18
18
|
* External dependencies.
|
|
19
19
|
*/
|
|
20
|
-
|
|
21
20
|
import classnames from 'classnames';
|
|
22
21
|
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
23
22
|
import { jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
24
23
|
const PORTAL_PARENT_ID = 'newspack-components-web-preview-wrapper';
|
|
24
|
+
|
|
25
25
|
/**
|
|
26
26
|
* Web Preview. A component to preview a website in an iframe, with device sizing options.
|
|
27
27
|
*/
|
|
28
|
-
|
|
29
28
|
class WebPreview extends Component {
|
|
30
29
|
constructor(props) {
|
|
31
30
|
super(props);
|
|
32
|
-
|
|
33
31
|
_defineProperty(this, "state", {
|
|
34
32
|
device: 'desktop',
|
|
35
33
|
loaded: false,
|
|
36
34
|
isPreviewVisible: false
|
|
37
35
|
});
|
|
38
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Create JSX for the modal
|
|
38
|
+
*/
|
|
39
39
|
_defineProperty(this, "getWebPreviewModal", () => {
|
|
40
40
|
const {
|
|
41
41
|
beforeLoad = () => {},
|
|
@@ -47,11 +47,9 @@ class WebPreview extends Component {
|
|
|
47
47
|
loaded,
|
|
48
48
|
isPreviewVisible
|
|
49
49
|
} = this.state;
|
|
50
|
-
|
|
51
50
|
if (!this.modalDOMElement || !isPreviewVisible) {
|
|
52
51
|
return null;
|
|
53
52
|
}
|
|
54
|
-
|
|
55
53
|
const classes = classnames('newspack-web-preview', device, loaded && 'is-loaded');
|
|
56
54
|
beforeLoad();
|
|
57
55
|
return createPortal(_jsx("div", {
|
|
@@ -122,35 +120,30 @@ class WebPreview extends Component {
|
|
|
122
120
|
})
|
|
123
121
|
}), this.modalDOMElement);
|
|
124
122
|
});
|
|
125
|
-
|
|
126
123
|
_defineProperty(this, "showPreview", () => {
|
|
127
124
|
this.setState({
|
|
128
125
|
isPreviewVisible: true
|
|
129
126
|
});
|
|
130
127
|
});
|
|
131
|
-
|
|
132
128
|
this.iframeRef = createRef();
|
|
133
129
|
}
|
|
130
|
+
|
|
134
131
|
/**
|
|
135
132
|
* If a div with id PORTAL_PARENT_ID exists, assign it to class field.
|
|
136
133
|
* If not, create it and append to the body.
|
|
137
134
|
*/
|
|
138
|
-
|
|
139
|
-
|
|
140
135
|
componentDidMount() {
|
|
141
136
|
const existingDOMElement = document.getElementById(PORTAL_PARENT_ID);
|
|
142
137
|
this.modalDOMElement = existingDOMElement || document.createElement('div');
|
|
143
|
-
|
|
144
138
|
if (!existingDOMElement) {
|
|
145
139
|
this.modalDOMElement.id = PORTAL_PARENT_ID;
|
|
146
140
|
document.body.appendChild(this.modalDOMElement);
|
|
147
141
|
}
|
|
148
142
|
}
|
|
143
|
+
|
|
149
144
|
/**
|
|
150
145
|
* Add or remove applicable body classes
|
|
151
146
|
*/
|
|
152
|
-
|
|
153
|
-
|
|
154
147
|
componentDidUpdate() {
|
|
155
148
|
if (this.state.isPreviewVisible === true) {
|
|
156
149
|
document.body.classList.add('newspack-web-preview--open');
|
|
@@ -158,11 +151,6 @@ class WebPreview extends Component {
|
|
|
158
151
|
document.body.classList.remove('newspack-web-preview--open');
|
|
159
152
|
}
|
|
160
153
|
}
|
|
161
|
-
/**
|
|
162
|
-
* Create JSX for the modal
|
|
163
|
-
*/
|
|
164
|
-
|
|
165
|
-
|
|
166
154
|
/**
|
|
167
155
|
* Render.
|
|
168
156
|
*/
|
|
@@ -170,7 +158,6 @@ class WebPreview extends Component {
|
|
|
170
158
|
const {
|
|
171
159
|
label,
|
|
172
160
|
variant,
|
|
173
|
-
|
|
174
161
|
/**
|
|
175
162
|
* Inversion of control - let the caller render
|
|
176
163
|
* the button that will trigger the modal
|
|
@@ -188,11 +175,9 @@ class WebPreview extends Component {
|
|
|
188
175
|
}), this.getWebPreviewModal()]
|
|
189
176
|
});
|
|
190
177
|
}
|
|
191
|
-
|
|
192
178
|
}
|
|
193
|
-
|
|
194
179
|
WebPreview.defaultProps = {
|
|
195
|
-
url: '//newspack.
|
|
180
|
+
url: '//newspack.com',
|
|
196
181
|
label: __('Preview', 'newspack'),
|
|
197
182
|
onLoad: () => {}
|
|
198
183
|
};
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
* Web Preview
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
@
|
|
6
|
-
@
|
|
5
|
+
@use '../../../shared/scss/colors';
|
|
6
|
+
@use '~@wordpress/base-styles/colors' as wp-colors;
|
|
7
7
|
|
|
8
8
|
.newspack-web-preview {
|
|
9
9
|
// Color
|
|
10
|
-
--wp-admin-theme-color: #{
|
|
11
|
-
--wp-admin-theme-color--rgb: #{
|
|
12
|
-
--wp-admin-theme-color-darker-10: #{
|
|
13
|
-
--wp-admin-theme-color-darker-10--rgb: #{
|
|
14
|
-
--wp-admin-theme-color-darker-20: #{
|
|
15
|
-
--wp-admin-theme-color-darker-20--rgb: #{
|
|
10
|
+
--wp-admin-theme-color: #{colors.$primary-500};
|
|
11
|
+
--wp-admin-theme-color--rgb: #{colors.$primary-500--rgb};
|
|
12
|
+
--wp-admin-theme-color-darker-10: #{colors.$primary-600};
|
|
13
|
+
--wp-admin-theme-color-darker-10--rgb: #{colors.$primary-600--rgb};
|
|
14
|
+
--wp-admin-theme-color-darker-20: #{colors.$primary-700};
|
|
15
|
+
--wp-admin-theme-color-darker-20--rgb: #{colors.$primary-700--rgb};
|
|
16
16
|
|
|
17
17
|
background: rgba( black, 0.7 );
|
|
18
18
|
box-sizing: border-box;
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
&__content {
|
|
56
|
-
background:
|
|
56
|
+
background: wp-colors.$gray-100;
|
|
57
57
|
height: calc( 100% - 49px );
|
|
58
58
|
-webkit-overflow-scrolling: touch;
|
|
59
59
|
overflow-x: hidden;
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
margin: 0 auto;
|
|
67
67
|
max-width: 100%;
|
|
68
68
|
opacity: 0;
|
|
69
|
-
outline: 1px solid
|
|
69
|
+
outline: 1px solid wp-colors.$gray-300;
|
|
70
70
|
padding: 0;
|
|
71
71
|
pointer-events: all;
|
|
72
72
|
transition: max-width 125ms ease-in-out, opacity 250ms ease-in-out;
|
|
@@ -78,14 +78,14 @@
|
|
|
78
78
|
align-items: center;
|
|
79
79
|
display: flex;
|
|
80
80
|
left: 50%;
|
|
81
|
-
margin: -12px 0 0
|
|
81
|
+
margin: -12px 0 0;
|
|
82
82
|
position: absolute;
|
|
83
83
|
top: 50%;
|
|
84
84
|
transform: translateX( -50% );
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
&__toolbar {
|
|
88
|
-
border-bottom: 1px solid
|
|
88
|
+
border-bottom: 1px solid wp-colors.$gray-300;
|
|
89
89
|
display: flex;
|
|
90
90
|
padding: 6px;
|
|
91
91
|
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
padding: 0 !important;
|
|
103
103
|
|
|
104
104
|
&.is-selected {
|
|
105
|
-
background:
|
|
105
|
+
background: colors.$primary-500;
|
|
106
106
|
color: white;
|
|
107
107
|
|
|
108
108
|
&:active,
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
&:focus {
|
|
117
|
-
box-shadow: inset 0 0 0 1px
|
|
117
|
+
box-shadow: inset 0 0 0 1px colors.$primary-500, inset 0 0 0 3px white !important;
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
|
|
3
2
|
/**
|
|
4
3
|
* WordPress dependencies.
|
|
5
4
|
*/
|
|
@@ -8,10 +7,10 @@ import { __ as alias__ } from '@wordpress/i18n';
|
|
|
8
7
|
const __ = alias__;
|
|
9
8
|
import apiFetch from '@wordpress/api-fetch';
|
|
10
9
|
import { home } from '@wordpress/icons';
|
|
10
|
+
|
|
11
11
|
/**
|
|
12
12
|
* Internal dependencies.
|
|
13
13
|
*/
|
|
14
|
-
|
|
15
14
|
import { Button, Card, Modal, NewspackIcon, Notice, PluginInstaller } from '../';
|
|
16
15
|
import Router from '../proxied-imports/router';
|
|
17
16
|
import Footer from '../footer';
|
|
@@ -22,24 +21,27 @@ const {
|
|
|
22
21
|
Redirect,
|
|
23
22
|
Route
|
|
24
23
|
} = Router;
|
|
24
|
+
|
|
25
25
|
/**
|
|
26
26
|
* Higher-Order Component to provide plugin management and error handling to Newspack Wizards.
|
|
27
27
|
*/
|
|
28
|
-
|
|
29
28
|
export default function withWizard(WrappedComponent, requiredPlugins) {
|
|
30
29
|
return class WrappedWithWizard extends Component {
|
|
31
30
|
constructor(props) {
|
|
32
31
|
super(props);
|
|
33
|
-
|
|
34
32
|
_defineProperty(this, "componentDidMount", () => {
|
|
35
33
|
// If there are no requiredPlugins, fire onWizardReady as soon as component mounts.
|
|
36
34
|
if (!requiredPlugins) {
|
|
37
|
-
const instance = this.wrappedComponentRef.current;
|
|
38
|
-
|
|
35
|
+
const instance = this.wrappedComponentRef.current;
|
|
36
|
+
// eslint-disable-next-line no-unused-expressions
|
|
39
37
|
instance && instance.onWizardReady && instance.onWizardReady();
|
|
40
38
|
}
|
|
41
39
|
});
|
|
42
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Set the error. Called by Wizards when an error occurs.
|
|
42
|
+
*
|
|
43
|
+
* @return {Promise} Resolved after state update
|
|
44
|
+
*/
|
|
43
45
|
_defineProperty(this, "setError", error => {
|
|
44
46
|
return new Promise(resolve => {
|
|
45
47
|
this.setState({
|
|
@@ -47,28 +49,33 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
|
|
|
47
49
|
}, () => resolve());
|
|
48
50
|
});
|
|
49
51
|
});
|
|
50
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Render any errors that need rendering.
|
|
54
|
+
*
|
|
55
|
+
* @return {Component} Error UI
|
|
56
|
+
*/
|
|
51
57
|
_defineProperty(this, "getError", () => {
|
|
52
58
|
const {
|
|
53
59
|
error
|
|
54
60
|
} = this.state;
|
|
55
|
-
|
|
56
61
|
if (!error) {
|
|
57
62
|
return null;
|
|
58
63
|
}
|
|
59
|
-
|
|
60
64
|
const parsedError = this.parseError(error);
|
|
61
65
|
const {
|
|
62
66
|
level
|
|
63
67
|
} = parsedError;
|
|
64
|
-
|
|
65
68
|
if ('fatal' === level) {
|
|
66
69
|
return this.getFatalError(parsedError);
|
|
67
70
|
}
|
|
68
|
-
|
|
69
71
|
return this.getErrorNotice(parsedError);
|
|
70
72
|
});
|
|
71
|
-
|
|
73
|
+
/**
|
|
74
|
+
* Get a notice-level error.
|
|
75
|
+
*
|
|
76
|
+
* @param {Error} error object already parsed by parseError
|
|
77
|
+
* @return {Component} Error notice
|
|
78
|
+
*/
|
|
72
79
|
_defineProperty(this, "getErrorNotice", error => {
|
|
73
80
|
const {
|
|
74
81
|
message
|
|
@@ -80,14 +87,17 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
|
|
|
80
87
|
rawHTML: true
|
|
81
88
|
});
|
|
82
89
|
});
|
|
83
|
-
|
|
90
|
+
/**
|
|
91
|
+
* Get a fatal-level error.
|
|
92
|
+
*
|
|
93
|
+
* @param {Error} error object already parsed by parseError
|
|
94
|
+
* @return {Component} React object
|
|
95
|
+
*/
|
|
84
96
|
_defineProperty(this, "getFatalError", error => {
|
|
85
97
|
const fallbackURL = this.getFallbackURL();
|
|
86
|
-
|
|
87
98
|
if (!fallbackURL) {
|
|
88
99
|
return null;
|
|
89
100
|
}
|
|
90
|
-
|
|
91
101
|
const {
|
|
92
102
|
message
|
|
93
103
|
} = error;
|
|
@@ -110,7 +120,12 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
|
|
|
110
120
|
})]
|
|
111
121
|
});
|
|
112
122
|
});
|
|
113
|
-
|
|
123
|
+
/**
|
|
124
|
+
* Get all the relevant info out of a raw API error response.
|
|
125
|
+
*
|
|
126
|
+
* @param {Object} error error object
|
|
127
|
+
* @return {Object} Error object with relevant fields and defaults
|
|
128
|
+
*/
|
|
114
129
|
_defineProperty(this, "parseError", error => {
|
|
115
130
|
const {
|
|
116
131
|
data,
|
|
@@ -118,28 +133,26 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
|
|
|
118
133
|
code
|
|
119
134
|
} = error;
|
|
120
135
|
let level = 'fatal';
|
|
121
|
-
|
|
122
136
|
if (!!data && 'level' in data) {
|
|
123
137
|
level = data.level;
|
|
124
138
|
} else if ('rest_invalid_param' === code) {
|
|
125
139
|
level = 'notice';
|
|
126
140
|
}
|
|
127
|
-
|
|
128
141
|
return {
|
|
129
142
|
message,
|
|
130
143
|
level
|
|
131
144
|
};
|
|
132
145
|
});
|
|
133
|
-
|
|
146
|
+
/**
|
|
147
|
+
* Called when plugin installation is complete. Updates state and calls onWizardReady on the wrapped component.
|
|
148
|
+
*/
|
|
134
149
|
_defineProperty(this, "pluginInstallationStatus", _ref => {
|
|
135
150
|
let {
|
|
136
151
|
complete
|
|
137
152
|
} = _ref;
|
|
138
|
-
|
|
139
153
|
if (this.state.loading) {
|
|
140
154
|
this.doneLoading();
|
|
141
155
|
}
|
|
142
|
-
|
|
143
156
|
const instance = this.wrappedComponentRef.current;
|
|
144
157
|
this.setState({
|
|
145
158
|
complete
|
|
@@ -148,7 +161,9 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
|
|
|
148
161
|
complete && instance && instance.onWizardReady && instance.onWizardReady();
|
|
149
162
|
});
|
|
150
163
|
});
|
|
151
|
-
|
|
164
|
+
/**
|
|
165
|
+
* Begin loading.
|
|
166
|
+
*/
|
|
152
167
|
_defineProperty(this, "startLoading", quiet => {
|
|
153
168
|
if (quiet) {
|
|
154
169
|
this.setState(state => ({
|
|
@@ -160,7 +175,9 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
|
|
|
160
175
|
}));
|
|
161
176
|
}
|
|
162
177
|
});
|
|
163
|
-
|
|
178
|
+
/**
|
|
179
|
+
* End loading.
|
|
180
|
+
*/
|
|
164
181
|
_defineProperty(this, "doneLoading", quiet => {
|
|
165
182
|
if (quiet) {
|
|
166
183
|
this.setState(state => ({
|
|
@@ -172,7 +189,9 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
|
|
|
172
189
|
}));
|
|
173
190
|
}
|
|
174
191
|
});
|
|
175
|
-
|
|
192
|
+
/**
|
|
193
|
+
* Replacement for core apiFetch that automatically manages wizard loading UI.
|
|
194
|
+
*/
|
|
176
195
|
_defineProperty(this, "wizardApiFetch", args => {
|
|
177
196
|
const {
|
|
178
197
|
quiet
|
|
@@ -188,20 +207,22 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
|
|
|
188
207
|
});
|
|
189
208
|
});
|
|
190
209
|
});
|
|
191
|
-
|
|
210
|
+
/**
|
|
211
|
+
* Render a Route that checks for plugin installation requirements, and redirects to '/' when all are done.
|
|
212
|
+
*
|
|
213
|
+
* @return {void}
|
|
214
|
+
*/
|
|
192
215
|
_defineProperty(this, "pluginRequirements", () => {
|
|
193
216
|
const {
|
|
194
217
|
complete
|
|
195
218
|
} = this.state;
|
|
196
219
|
/* After all plugins are loaded, redirect to / (this could be configurable) */
|
|
197
|
-
|
|
198
220
|
if (complete) {
|
|
199
221
|
return _jsx(Redirect, {
|
|
200
222
|
from: "/plugin-requirements",
|
|
201
223
|
to: "/"
|
|
202
224
|
});
|
|
203
225
|
}
|
|
204
|
-
|
|
205
226
|
return _jsx(Route, {
|
|
206
227
|
path: "/",
|
|
207
228
|
render: () => _jsxs(Fragment, {
|
|
@@ -238,13 +259,11 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
|
|
|
238
259
|
})
|
|
239
260
|
});
|
|
240
261
|
});
|
|
241
|
-
|
|
242
262
|
_defineProperty(this, "getFallbackURL", () => {
|
|
243
263
|
if (typeof newspack_urls !== 'undefined') {
|
|
244
264
|
return newspack_urls.dashboard;
|
|
245
265
|
}
|
|
246
266
|
});
|
|
247
|
-
|
|
248
267
|
this.state = {
|
|
249
268
|
complete: null,
|
|
250
269
|
error: null,
|
|
@@ -253,7 +272,6 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
|
|
|
253
272
|
};
|
|
254
273
|
this.wrappedComponentRef = createRef();
|
|
255
274
|
}
|
|
256
|
-
|
|
257
275
|
/**
|
|
258
276
|
* Render.
|
|
259
277
|
*/
|
|
@@ -267,11 +285,9 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
|
|
|
267
285
|
error
|
|
268
286
|
} = this.state;
|
|
269
287
|
const loadingClasses = [loading ? 'newspack-wizard__is-loading' : 'newspack-wizard__is-loaded'];
|
|
270
|
-
|
|
271
288
|
if (quietLoading) {
|
|
272
289
|
loadingClasses.push('newspack-wizard__is-loading-quiet');
|
|
273
290
|
}
|
|
274
|
-
|
|
275
291
|
return _jsxs(Fragment, {
|
|
276
292
|
children: [this.getError(), _jsx("div", {
|
|
277
293
|
className: loadingClasses.join(' '),
|
|
@@ -293,6 +309,5 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
|
|
|
293
309
|
})]
|
|
294
310
|
});
|
|
295
311
|
}
|
|
296
|
-
|
|
297
312
|
};
|
|
298
313
|
}
|