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.
Files changed (293) hide show
  1. package/dist/cjs/accordion/index.js +46 -0
  2. package/dist/cjs/accordion/style.scss +27 -0
  3. package/dist/cjs/action-card/index.js +48 -25
  4. package/dist/cjs/action-card/style.scss +100 -23
  5. package/dist/cjs/autocomplete-tokenfield/index.js +13 -41
  6. package/dist/cjs/autocomplete-tokenfield/style.scss +2 -2
  7. package/dist/cjs/autocomplete-with-suggestions/index.js +30 -51
  8. package/dist/cjs/autocomplete-with-suggestions/style.scss +16 -15
  9. package/dist/cjs/button/index.js +5 -13
  10. package/dist/cjs/button-card/index.js +1 -10
  11. package/dist/cjs/button-card/style.scss +13 -13
  12. package/dist/cjs/button-group/index.js +57 -0
  13. package/dist/cjs/button-group/style.scss +73 -0
  14. package/dist/cjs/card/index.js +1 -8
  15. package/dist/cjs/card/style.scss +25 -8
  16. package/dist/cjs/category-autocomplete/index.js +18 -38
  17. package/dist/cjs/category-autocomplete/style.scss +0 -2
  18. package/dist/cjs/checkbox-control/index.js +63 -0
  19. package/dist/cjs/checkbox-control/style.scss +78 -0
  20. package/dist/cjs/color-picker/index.js +1 -15
  21. package/dist/cjs/color-picker/style.scss +0 -3
  22. package/dist/cjs/consts.js +5 -3
  23. package/dist/cjs/custom-select-control/index.js +1 -9
  24. package/dist/cjs/custom-select-control/style.scss +6 -7
  25. package/dist/cjs/date-range-picker/index.js +1 -10
  26. package/dist/cjs/date-range-picker/style.scss +12 -12
  27. package/dist/cjs/footer/index.js +5 -17
  28. package/dist/cjs/footer/style.scss +5 -5
  29. package/dist/cjs/form-token-field/index.js +1 -9
  30. package/dist/cjs/form-token-field/style.scss +2 -3
  31. package/dist/cjs/global-notices/index.js +1 -8
  32. package/dist/cjs/grid/index.js +1 -8
  33. package/dist/cjs/grid/style.scss +5 -5
  34. package/dist/cjs/handoff/index.js +8 -17
  35. package/dist/cjs/handoff-message/index.js +50 -0
  36. package/dist/cjs/hooks/index.js +1 -7
  37. package/dist/cjs/hooks/useObjectState.js +7 -13
  38. package/dist/cjs/hooks/useObjectState.test.js +0 -14
  39. package/dist/cjs/hooks/useOnClickOutside.js +3 -6
  40. package/dist/cjs/hooks/usePrompt.js +1 -13
  41. package/dist/cjs/image-upload/index.js +21 -19
  42. package/dist/cjs/image-upload/index.test.js +0 -5
  43. package/dist/cjs/image-upload/style.scss +5 -9
  44. package/dist/cjs/index.js +28 -44
  45. package/dist/cjs/info-button/index.js +3 -11
  46. package/dist/cjs/info-button/style.scss +1 -3
  47. package/dist/cjs/modal/index.js +1 -9
  48. package/dist/cjs/modal/style.scss +8 -8
  49. package/dist/cjs/newspack-icon/index.js +1 -9
  50. package/dist/cjs/newspack-icon/style.scss +4 -4
  51. package/dist/cjs/newspack-logo/index.js +1 -9
  52. package/dist/cjs/newspack-logo/style.scss +3 -3
  53. package/dist/cjs/notice/index.js +8 -15
  54. package/dist/cjs/notice/style.scss +28 -15
  55. package/dist/cjs/patrons-logo/index.js +3 -11
  56. package/dist/cjs/plugin-installer/index.js +36 -36
  57. package/dist/cjs/plugin-installer/style.scss +5 -5
  58. package/dist/cjs/plugin-settings/SettingsSection.js +9 -28
  59. package/dist/cjs/plugin-settings/index.js +39 -22
  60. package/dist/cjs/plugin-toggle/index.js +40 -33
  61. package/dist/cjs/plugin-toggle/style.scss +2 -2
  62. package/dist/cjs/popover/index.js +1 -11
  63. package/dist/cjs/popover/style.scss +19 -16
  64. package/dist/cjs/position-control/index.js +113 -0
  65. package/dist/cjs/position-control/style.scss +66 -0
  66. package/dist/cjs/preview-box/index.js +36 -0
  67. package/dist/cjs/preview-box/style.scss +18 -0
  68. package/dist/cjs/progress-bar/index.js +2 -9
  69. package/dist/cjs/progress-bar/index.test.js +2 -7
  70. package/dist/cjs/progress-bar/style.scss +4 -4
  71. package/dist/cjs/proxied-imports/router.js +0 -3
  72. package/dist/cjs/radio-control/index.js +1 -11
  73. package/dist/cjs/radio-control/style.scss +9 -9
  74. package/dist/cjs/section-header/index.js +44 -29
  75. package/dist/cjs/section-header/style.scss +2 -2
  76. package/dist/cjs/select-control/ButtonGroupControl.js +4 -13
  77. package/dist/cjs/select-control/GroupedSelectControl.js +9 -15
  78. package/dist/cjs/select-control/index.js +5 -12
  79. package/dist/cjs/select-control/style.scss +2 -2
  80. package/dist/cjs/settings/MinMaxSetting.js +3 -7
  81. package/dist/cjs/settings/SettingsCard.js +3 -7
  82. package/dist/cjs/settings/SettingsSection.js +1 -4
  83. package/dist/cjs/settings/index.js +0 -6
  84. package/dist/cjs/settings/style.scss +1 -1
  85. package/dist/cjs/steps-list/index.js +52 -0
  86. package/dist/cjs/steps-list/style.scss +11 -0
  87. package/dist/cjs/steps-list-item/index.js +56 -0
  88. package/dist/cjs/steps-list-item/style.scss +47 -0
  89. package/dist/cjs/style-card/index.js +6 -13
  90. package/dist/cjs/style-card/style.scss +9 -12
  91. package/dist/cjs/style.scss +5 -6
  92. package/dist/cjs/tabbed-navigation/index.js +19 -16
  93. package/dist/cjs/tabbed-navigation/style.scss +3 -4
  94. package/dist/cjs/text-control/index.js +6 -16
  95. package/dist/cjs/textarea-control/index.js +54 -0
  96. package/dist/cjs/textarea-control/style.scss +76 -0
  97. package/dist/cjs/toggle-control/index.js +58 -0
  98. package/dist/cjs/toggle-control/style.scss +74 -0
  99. package/dist/cjs/toggle-group/index.js +71 -0
  100. package/dist/cjs/toggle-group/style.scss +28 -0
  101. package/dist/cjs/utils/index.js +10 -5
  102. package/dist/cjs/waiting/index.js +1 -9
  103. package/dist/cjs/web-preview/index.js +13 -28
  104. package/dist/cjs/web-preview/style.scss +14 -14
  105. package/dist/cjs/with-wizard/index.js +51 -31
  106. package/dist/cjs/with-wizard/style.scss +35 -37
  107. package/dist/cjs/with-wizard-screen/index.js +11 -17
  108. package/dist/cjs/with-wizard-screen/style.scss +14 -17
  109. package/dist/cjs/wizard/components/WizardError.js +3 -15
  110. package/dist/cjs/wizard/index.js +10 -24
  111. package/dist/cjs/wizard/store/index.js +42 -55
  112. package/dist/cjs/wizard/store/utils.js +1 -6
  113. package/dist/cjs/wizard/style.scss +148 -0
  114. package/dist/esm/accordion/index.js +38 -0
  115. package/dist/esm/accordion/style.scss +27 -0
  116. package/dist/esm/action-card/index.js +50 -21
  117. package/dist/esm/action-card/style.scss +100 -23
  118. package/dist/esm/autocomplete-tokenfield/index.js +14 -37
  119. package/dist/esm/autocomplete-tokenfield/style.scss +2 -2
  120. package/dist/esm/autocomplete-with-suggestions/index.js +28 -41
  121. package/dist/esm/autocomplete-with-suggestions/style.scss +16 -15
  122. package/dist/esm/button/index.js +5 -7
  123. package/dist/esm/button-card/index.js +2 -5
  124. package/dist/esm/button-card/style.scss +13 -13
  125. package/dist/esm/button-group/index.js +43 -0
  126. package/dist/esm/button-group/style.scss +73 -0
  127. package/dist/esm/card/index.js +2 -5
  128. package/dist/esm/card/style.scss +25 -8
  129. package/dist/esm/category-autocomplete/index.js +17 -30
  130. package/dist/esm/category-autocomplete/style.scss +0 -2
  131. package/dist/esm/checkbox-control/index.js +49 -0
  132. package/dist/esm/checkbox-control/style.scss +78 -0
  133. package/dist/esm/color-picker/index.js +2 -4
  134. package/dist/esm/color-picker/style.scss +0 -3
  135. package/dist/esm/consts.js +3 -2
  136. package/dist/esm/custom-select-control/index.js +2 -5
  137. package/dist/esm/custom-select-control/style.scss +6 -7
  138. package/dist/esm/date-range-picker/index.js +1 -3
  139. package/dist/esm/date-range-picker/style.scss +12 -12
  140. package/dist/esm/footer/index.js +3 -11
  141. package/dist/esm/footer/style.scss +5 -5
  142. package/dist/esm/form-token-field/index.js +2 -5
  143. package/dist/esm/form-token-field/style.scss +2 -3
  144. package/dist/esm/global-notices/index.js +1 -6
  145. package/dist/esm/grid/index.js +2 -5
  146. package/dist/esm/grid/style.scss +5 -5
  147. package/dist/esm/handoff/index.js +3 -14
  148. package/dist/esm/handoff-message/index.js +45 -0
  149. package/dist/esm/hooks/index.js +0 -2
  150. package/dist/esm/hooks/useObjectState.js +3 -8
  151. package/dist/esm/hooks/useObjectState.test.js +0 -3
  152. package/dist/esm/hooks/useOnClickOutside.js +2 -5
  153. package/dist/esm/hooks/usePrompt.js +1 -8
  154. package/dist/esm/image-upload/index.js +17 -16
  155. package/dist/esm/image-upload/style.scss +5 -9
  156. package/dist/esm/index.js +4 -0
  157. package/dist/esm/info-button/index.js +4 -6
  158. package/dist/esm/info-button/style.scss +1 -3
  159. package/dist/esm/modal/index.js +2 -5
  160. package/dist/esm/modal/style.scss +8 -8
  161. package/dist/esm/newspack-icon/index.js +2 -5
  162. package/dist/esm/newspack-icon/style.scss +4 -4
  163. package/dist/esm/newspack-logo/index.js +2 -5
  164. package/dist/esm/newspack-logo/style.scss +3 -3
  165. package/dist/esm/notice/index.js +4 -8
  166. package/dist/esm/notice/style.scss +28 -15
  167. package/dist/esm/patrons-logo/index.js +3 -5
  168. package/dist/esm/plugin-installer/index.js +35 -39
  169. package/dist/esm/plugin-installer/style.scss +5 -5
  170. package/dist/esm/plugin-settings/SettingsSection.js +8 -21
  171. package/dist/esm/plugin-settings/index.js +38 -24
  172. package/dist/esm/plugin-toggle/index.js +39 -36
  173. package/dist/esm/plugin-toggle/style.scss +2 -2
  174. package/dist/esm/popover/index.js +3 -6
  175. package/dist/esm/popover/style.scss +19 -16
  176. package/dist/esm/position-control/index.js +109 -0
  177. package/dist/esm/position-control/style.scss +66 -0
  178. package/dist/esm/preview-box/index.js +30 -0
  179. package/dist/esm/preview-box/style.scss +18 -0
  180. package/dist/esm/progress-bar/index.js +2 -7
  181. package/dist/esm/progress-bar/index.test.js +2 -1
  182. package/dist/esm/progress-bar/style.scss +4 -4
  183. package/dist/esm/proxied-imports/router.js +1 -0
  184. package/dist/esm/radio-control/index.js +3 -6
  185. package/dist/esm/radio-control/style.scss +9 -9
  186. package/dist/esm/section-header/index.js +44 -25
  187. package/dist/esm/section-header/style.scss +2 -2
  188. package/dist/esm/select-control/ButtonGroupControl.js +5 -7
  189. package/dist/esm/select-control/GroupedSelectControl.js +5 -6
  190. package/dist/esm/select-control/index.js +6 -6
  191. package/dist/esm/select-control/style.scss +2 -2
  192. package/dist/esm/settings/MinMaxSetting.js +1 -3
  193. package/dist/esm/settings/SettingsCard.js +3 -4
  194. package/dist/esm/settings/SettingsSection.js +0 -2
  195. package/dist/esm/settings/style.scss +1 -1
  196. package/dist/esm/steps-list/index.js +43 -0
  197. package/dist/esm/steps-list/style.scss +11 -0
  198. package/dist/esm/steps-list-item/index.js +48 -0
  199. package/dist/esm/steps-list-item/style.scss +47 -0
  200. package/dist/esm/style-card/index.js +2 -5
  201. package/dist/esm/style-card/style.scss +9 -12
  202. package/dist/esm/style.scss +5 -6
  203. package/dist/esm/tabbed-navigation/index.js +20 -10
  204. package/dist/esm/tabbed-navigation/style.scss +3 -4
  205. package/dist/esm/text-control/index.js +2 -9
  206. package/dist/esm/textarea-control/index.js +40 -0
  207. package/dist/esm/textarea-control/style.scss +76 -0
  208. package/dist/esm/toggle-control/index.js +44 -0
  209. package/dist/esm/toggle-control/style.scss +74 -0
  210. package/dist/esm/toggle-group/index.js +58 -0
  211. package/dist/esm/toggle-group/style.scss +28 -0
  212. package/dist/esm/utils/index.js +9 -3
  213. package/dist/esm/waiting/index.js +2 -5
  214. package/dist/esm/web-preview/index.js +9 -24
  215. package/dist/esm/web-preview/style.scss +14 -14
  216. package/dist/esm/with-wizard/index.js +49 -34
  217. package/dist/esm/with-wizard/style.scss +35 -37
  218. package/dist/esm/with-wizard-screen/index.js +9 -11
  219. package/dist/esm/with-wizard-screen/style.scss +14 -17
  220. package/dist/esm/wizard/components/WizardError.js +1 -10
  221. package/dist/esm/wizard/index.js +10 -12
  222. package/dist/esm/wizard/store/index.js +40 -46
  223. package/dist/esm/wizard/store/utils.js +1 -1
  224. package/dist/esm/wizard/style.scss +148 -0
  225. package/package.json +4 -4
  226. package/shared/scss/_colors.scss +0 -15
  227. package/src/accordion/index.js +32 -0
  228. package/src/accordion/style.scss +27 -0
  229. package/src/action-card/index.js +43 -8
  230. package/src/action-card/style.scss +100 -23
  231. package/src/autocomplete-tokenfield/index.js +1 -1
  232. package/src/autocomplete-tokenfield/style.scss +2 -2
  233. package/src/autocomplete-with-suggestions/style.scss +16 -15
  234. package/src/button-card/style.scss +13 -13
  235. package/src/card/style.scss +25 -8
  236. package/src/category-autocomplete/index.js +3 -1
  237. package/src/category-autocomplete/style.scss +0 -2
  238. package/src/color-picker/style.scss +0 -3
  239. package/src/consts.js +2 -1
  240. package/src/custom-select-control/style.scss +6 -7
  241. package/src/date-range-picker/style.scss +12 -12
  242. package/src/footer/index.js +2 -2
  243. package/src/footer/style.scss +5 -5
  244. package/src/form-token-field/index.js +2 -7
  245. package/src/form-token-field/style.scss +2 -3
  246. package/src/grid/style.scss +5 -5
  247. package/src/handoff/index.js +3 -8
  248. package/src/handoff-message/index.js +39 -0
  249. package/src/hooks/useObjectState.js +2 -1
  250. package/src/image-upload/index.js +9 -3
  251. package/src/image-upload/style.scss +5 -9
  252. package/src/index.js +4 -0
  253. package/src/info-button/style.scss +1 -3
  254. package/src/modal/style.scss +8 -8
  255. package/src/newspack-icon/style.scss +4 -4
  256. package/src/newspack-logo/style.scss +3 -3
  257. package/src/notice/index.js +2 -0
  258. package/src/notice/style.scss +28 -15
  259. package/src/plugin-installer/index.js +15 -2
  260. package/src/plugin-installer/style.scss +5 -5
  261. package/src/plugin-settings/SettingsSection.js +7 -13
  262. package/src/plugin-settings/index.js +7 -2
  263. package/src/plugin-toggle/index.js +2 -3
  264. package/src/plugin-toggle/style.scss +2 -2
  265. package/src/popover/style.scss +19 -16
  266. package/src/position-control/index.js +122 -0
  267. package/src/position-control/style.scss +66 -0
  268. package/src/progress-bar/style.scss +4 -4
  269. package/src/radio-control/style.scss +9 -9
  270. package/src/section-header/index.js +32 -15
  271. package/src/section-header/style.scss +2 -2
  272. package/src/select-control/ButtonGroupControl.js +3 -0
  273. package/src/select-control/GroupedSelectControl.js +2 -1
  274. package/src/select-control/index.js +6 -2
  275. package/src/select-control/style.scss +2 -2
  276. package/src/settings/style.scss +1 -1
  277. package/src/steps-list/index.js +39 -0
  278. package/src/steps-list/style.scss +11 -0
  279. package/src/steps-list-item/index.js +40 -0
  280. package/src/steps-list-item/style.scss +47 -0
  281. package/src/style-card/index.js +2 -11
  282. package/src/style-card/style.scss +9 -12
  283. package/src/style.scss +5 -6
  284. package/src/tabbed-navigation/index.js +12 -4
  285. package/src/tabbed-navigation/style.scss +3 -4
  286. package/src/utils/index.js +9 -0
  287. package/src/web-preview/index.js +1 -1
  288. package/src/web-preview/style.scss +14 -14
  289. package/src/with-wizard/style.scss +35 -37
  290. package/src/with-wizard-screen/index.js +4 -1
  291. package/src/with-wizard-screen/style.scss +14 -17
  292. package/src/wizard/index.js +15 -3
  293. 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
+ }
@@ -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.pub',
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
- @import '../../../shared/scss/colors';
6
- @import '~@wordpress/base-styles/colors';
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: #{$primary-500};
11
- --wp-admin-theme-color--rgb: #{$primary-500--rgb};
12
- --wp-admin-theme-color-darker-10: #{$primary-600};
13
- --wp-admin-theme-color-darker-10--rgb: #{$primary-600--rgb};
14
- --wp-admin-theme-color-darker-20: #{$primary-700};
15
- --wp-admin-theme-color-darker-20--rgb: #{$primary-700--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: $gray-100;
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 $gray-300;
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 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 $gray-300;
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: $primary-500;
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 $primary-500, inset 0 0 0 3px white !important;
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; // eslint-disable-next-line no-unused-expressions
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
  }