newspack-components 2.0.3 → 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 (315) hide show
  1. package/copy-styles.js +1 -1
  2. package/dist/cjs/accordion/index.js +46 -0
  3. package/dist/cjs/accordion/style.scss +27 -0
  4. package/dist/cjs/action-card/index.js +72 -40
  5. package/dist/cjs/action-card/style.scss +143 -41
  6. package/dist/cjs/autocomplete-tokenfield/index.js +13 -41
  7. package/dist/cjs/autocomplete-tokenfield/style.scss +6 -6
  8. package/dist/cjs/autocomplete-with-suggestions/index.js +33 -53
  9. package/dist/cjs/autocomplete-with-suggestions/style.scss +27 -27
  10. package/dist/cjs/button/index.js +1 -20
  11. package/dist/cjs/button/style.scss +3 -344
  12. package/dist/cjs/button-card/index.js +11 -15
  13. package/dist/cjs/button-card/style.scss +65 -35
  14. package/dist/cjs/card/index.js +4 -9
  15. package/dist/cjs/card/style.scss +47 -63
  16. package/dist/cjs/category-autocomplete/index.js +66 -47
  17. package/dist/cjs/category-autocomplete/style.scss +20 -24
  18. package/dist/cjs/color-picker/index.js +16 -48
  19. package/dist/cjs/color-picker/style.scss +20 -163
  20. package/dist/cjs/consts.js +5 -3
  21. package/dist/cjs/custom-select-control/index.js +1 -9
  22. package/dist/cjs/custom-select-control/style.scss +14 -45
  23. package/dist/cjs/date-range-picker/index.js +1 -10
  24. package/dist/cjs/date-range-picker/style.scss +12 -12
  25. package/dist/cjs/footer/index.js +24 -22
  26. package/dist/cjs/footer/style.scss +13 -14
  27. package/dist/cjs/form-token-field/index.js +3 -11
  28. package/dist/cjs/form-token-field/style.scss +9 -105
  29. package/dist/cjs/global-notices/index.js +3 -9
  30. package/dist/cjs/grid/index.js +1 -8
  31. package/dist/cjs/grid/style.scss +19 -6
  32. package/dist/cjs/handoff/index.js +15 -24
  33. package/dist/cjs/handoff-message/index.js +50 -0
  34. package/dist/cjs/hooks/index.js +1 -7
  35. package/dist/cjs/hooks/useObjectState.js +7 -13
  36. package/dist/cjs/hooks/useObjectState.test.js +0 -14
  37. package/dist/cjs/hooks/useOnClickOutside.js +3 -6
  38. package/dist/cjs/hooks/usePrompt.js +1 -13
  39. package/dist/cjs/image-upload/index.js +22 -20
  40. package/dist/cjs/image-upload/index.test.js +0 -5
  41. package/dist/cjs/image-upload/style.scss +12 -17
  42. package/dist/cjs/index.js +31 -93
  43. package/dist/cjs/info-button/index.js +3 -11
  44. package/dist/cjs/info-button/style.scss +1 -3
  45. package/dist/cjs/modal/index.js +1 -12
  46. package/dist/cjs/modal/style.scss +20 -132
  47. package/dist/cjs/newspack-icon/index.js +5 -11
  48. package/dist/cjs/newspack-icon/style.scss +17 -2
  49. package/dist/cjs/newspack-logo/index.js +1 -9
  50. package/dist/cjs/newspack-logo/style.scss +3 -3
  51. package/dist/cjs/notice/index.js +8 -16
  52. package/dist/cjs/notice/style.scss +60 -19
  53. package/dist/cjs/patrons-logo/index.js +3 -11
  54. package/dist/cjs/plugin-installer/index.js +37 -37
  55. package/dist/cjs/plugin-installer/style.scss +5 -5
  56. package/dist/cjs/plugin-settings/SettingsSection.js +71 -59
  57. package/dist/cjs/plugin-settings/index.js +71 -50
  58. package/dist/cjs/plugin-settings/style.scss +7 -0
  59. package/dist/cjs/plugin-toggle/index.js +60 -32
  60. package/dist/cjs/plugin-toggle/style.scss +2 -2
  61. package/dist/cjs/popover/index.js +1 -11
  62. package/dist/cjs/popover/style.scss +20 -17
  63. package/dist/cjs/position-control/index.js +113 -0
  64. package/dist/cjs/position-control/style.scss +66 -0
  65. package/dist/cjs/progress-bar/index.js +2 -9
  66. package/dist/cjs/progress-bar/index.test.js +2 -7
  67. package/dist/cjs/progress-bar/style.scss +4 -4
  68. package/dist/cjs/proxied-imports/router.js +0 -3
  69. package/dist/cjs/radio-control/index.js +1 -11
  70. package/dist/cjs/radio-control/style.scss +10 -11
  71. package/dist/cjs/section-header/index.js +47 -19
  72. package/dist/cjs/section-header/style.scss +22 -1
  73. package/dist/cjs/select-control/ButtonGroupControl.js +11 -20
  74. package/dist/cjs/select-control/GroupedSelectControl.js +42 -45
  75. package/dist/cjs/select-control/index.js +6 -14
  76. package/dist/cjs/select-control/style.scss +47 -88
  77. package/dist/cjs/settings/MinMaxSetting.js +6 -8
  78. package/dist/cjs/settings/SettingsCard.js +9 -8
  79. package/dist/cjs/settings/SettingsSection.js +5 -8
  80. package/dist/cjs/settings/index.js +0 -6
  81. package/dist/cjs/settings/style.scss +32 -4
  82. package/dist/cjs/steps-list/index.js +52 -0
  83. package/dist/cjs/steps-list/style.scss +11 -0
  84. package/dist/cjs/steps-list-item/index.js +56 -0
  85. package/dist/cjs/steps-list-item/style.scss +47 -0
  86. package/dist/cjs/style-card/index.js +15 -18
  87. package/dist/cjs/style-card/style.scss +19 -18
  88. package/dist/cjs/style.scss +43 -0
  89. package/dist/cjs/tabbed-navigation/index.js +27 -31
  90. package/dist/cjs/tabbed-navigation/style.scss +58 -37
  91. package/dist/cjs/text-control/index.js +6 -19
  92. package/dist/cjs/text-control/style.scss +0 -126
  93. package/dist/cjs/utils/index.js +10 -5
  94. package/dist/cjs/waiting/index.js +9 -33
  95. package/dist/cjs/waiting/style.scss +9 -20
  96. package/dist/cjs/web-preview/index.js +30 -57
  97. package/dist/cjs/web-preview/style.scss +41 -34
  98. package/dist/cjs/with-wizard/index.js +55 -33
  99. package/dist/cjs/with-wizard/style.scss +77 -124
  100. package/dist/cjs/with-wizard-screen/index.js +28 -38
  101. package/dist/cjs/with-wizard-screen/style.scss +75 -125
  102. package/dist/cjs/wizard/components/WizardError.js +74 -0
  103. package/dist/cjs/wizard/index.js +131 -0
  104. package/dist/cjs/wizard/store/index.js +165 -0
  105. package/dist/cjs/wizard/store/utils.js +26 -0
  106. package/dist/cjs/wizard/style.scss +148 -0
  107. package/dist/esm/accordion/index.js +38 -0
  108. package/dist/esm/accordion/style.scss +27 -0
  109. package/dist/esm/action-card/index.js +75 -37
  110. package/dist/esm/action-card/style.scss +143 -41
  111. package/dist/esm/autocomplete-tokenfield/index.js +14 -37
  112. package/dist/esm/autocomplete-tokenfield/style.scss +6 -6
  113. package/dist/esm/autocomplete-with-suggestions/index.js +31 -43
  114. package/dist/esm/autocomplete-with-suggestions/style.scss +27 -27
  115. package/dist/esm/button/index.js +2 -14
  116. package/dist/esm/button/style.scss +3 -344
  117. package/dist/esm/button-card/index.js +12 -11
  118. package/dist/esm/button-card/style.scss +65 -35
  119. package/dist/esm/card/index.js +5 -6
  120. package/dist/esm/card/style.scss +47 -63
  121. package/dist/esm/category-autocomplete/index.js +68 -41
  122. package/dist/esm/category-autocomplete/style.scss +20 -24
  123. package/dist/esm/color-picker/index.js +17 -38
  124. package/dist/esm/color-picker/style.scss +20 -163
  125. package/dist/esm/consts.js +3 -2
  126. package/dist/esm/custom-select-control/index.js +2 -5
  127. package/dist/esm/custom-select-control/style.scss +14 -45
  128. package/dist/esm/date-range-picker/index.js +1 -3
  129. package/dist/esm/date-range-picker/style.scss +12 -12
  130. package/dist/esm/footer/index.js +22 -16
  131. package/dist/esm/footer/style.scss +13 -14
  132. package/dist/esm/form-token-field/index.js +4 -7
  133. package/dist/esm/form-token-field/style.scss +9 -105
  134. package/dist/esm/global-notices/index.js +3 -7
  135. package/dist/esm/grid/index.js +2 -5
  136. package/dist/esm/grid/style.scss +19 -6
  137. package/dist/esm/handoff/index.js +10 -21
  138. package/dist/esm/handoff-message/index.js +45 -0
  139. package/dist/esm/hooks/index.js +0 -2
  140. package/dist/esm/hooks/useObjectState.js +3 -8
  141. package/dist/esm/hooks/useObjectState.test.js +0 -3
  142. package/dist/esm/hooks/useOnClickOutside.js +2 -5
  143. package/dist/esm/hooks/usePrompt.js +1 -8
  144. package/dist/esm/image-upload/index.js +18 -17
  145. package/dist/esm/image-upload/style.scss +12 -17
  146. package/dist/esm/index.js +7 -8
  147. package/dist/esm/info-button/index.js +4 -6
  148. package/dist/esm/info-button/style.scss +1 -3
  149. package/dist/esm/modal/index.js +2 -8
  150. package/dist/esm/modal/style.scss +20 -132
  151. package/dist/esm/newspack-icon/index.js +6 -7
  152. package/dist/esm/newspack-icon/style.scss +17 -2
  153. package/dist/esm/newspack-logo/index.js +2 -5
  154. package/dist/esm/newspack-logo/style.scss +3 -3
  155. package/dist/esm/notice/index.js +11 -10
  156. package/dist/esm/notice/style.scss +60 -19
  157. package/dist/esm/patrons-logo/index.js +3 -5
  158. package/dist/esm/plugin-installer/index.js +37 -40
  159. package/dist/esm/plugin-installer/style.scss +5 -5
  160. package/dist/esm/plugin-settings/SettingsSection.js +71 -56
  161. package/dist/esm/plugin-settings/index.js +70 -52
  162. package/dist/esm/plugin-settings/style.scss +7 -0
  163. package/dist/esm/plugin-toggle/index.js +59 -34
  164. package/dist/esm/plugin-toggle/style.scss +2 -2
  165. package/dist/esm/popover/index.js +3 -6
  166. package/dist/esm/popover/style.scss +20 -17
  167. package/dist/esm/position-control/index.js +109 -0
  168. package/dist/esm/position-control/style.scss +66 -0
  169. package/dist/esm/progress-bar/index.js +2 -7
  170. package/dist/esm/progress-bar/index.test.js +2 -1
  171. package/dist/esm/progress-bar/style.scss +4 -4
  172. package/dist/esm/proxied-imports/router.js +1 -0
  173. package/dist/esm/radio-control/index.js +3 -6
  174. package/dist/esm/radio-control/style.scss +10 -11
  175. package/dist/esm/section-header/index.js +47 -16
  176. package/dist/esm/section-header/style.scss +22 -1
  177. package/dist/esm/select-control/ButtonGroupControl.js +12 -14
  178. package/dist/esm/select-control/GroupedSelectControl.js +38 -36
  179. package/dist/esm/select-control/index.js +7 -8
  180. package/dist/esm/select-control/style.scss +47 -88
  181. package/dist/esm/settings/MinMaxSetting.js +4 -5
  182. package/dist/esm/settings/SettingsCard.js +9 -5
  183. package/dist/esm/settings/SettingsSection.js +5 -7
  184. package/dist/esm/settings/style.scss +32 -4
  185. package/dist/esm/steps-list/index.js +43 -0
  186. package/dist/esm/steps-list/style.scss +11 -0
  187. package/dist/esm/steps-list-item/index.js +48 -0
  188. package/dist/esm/steps-list-item/style.scss +47 -0
  189. package/dist/esm/style-card/index.js +13 -13
  190. package/dist/esm/style-card/style.scss +19 -18
  191. package/dist/esm/style.scss +43 -0
  192. package/dist/esm/tabbed-navigation/index.js +30 -28
  193. package/dist/esm/tabbed-navigation/style.scss +58 -37
  194. package/dist/esm/text-control/index.js +2 -12
  195. package/dist/esm/text-control/style.scss +0 -126
  196. package/dist/esm/utils/index.js +9 -3
  197. package/dist/esm/waiting/index.js +11 -27
  198. package/dist/esm/waiting/style.scss +9 -20
  199. package/dist/esm/web-preview/index.js +21 -49
  200. package/dist/esm/web-preview/style.scss +41 -34
  201. package/dist/esm/with-wizard/index.js +53 -36
  202. package/dist/esm/with-wizard/style.scss +77 -124
  203. package/dist/esm/with-wizard-screen/index.js +26 -32
  204. package/dist/esm/with-wizard-screen/style.scss +75 -125
  205. package/dist/esm/wizard/components/WizardError.js +69 -0
  206. package/dist/esm/wizard/index.js +126 -0
  207. package/dist/esm/wizard/store/index.js +155 -0
  208. package/dist/esm/wizard/store/utils.js +17 -0
  209. package/dist/esm/wizard/style.scss +148 -0
  210. package/package.json +4 -4
  211. package/src/accordion/index.js +32 -0
  212. package/src/accordion/style.scss +27 -0
  213. package/src/action-card/index.js +70 -25
  214. package/src/action-card/style.scss +143 -41
  215. package/src/autocomplete-tokenfield/index.js +1 -1
  216. package/src/autocomplete-tokenfield/style.scss +6 -6
  217. package/src/autocomplete-with-suggestions/index.js +4 -2
  218. package/src/autocomplete-with-suggestions/style.scss +27 -27
  219. package/src/button/index.js +2 -9
  220. package/src/button/style.scss +3 -344
  221. package/src/button-card/index.js +19 -5
  222. package/src/button-card/style.scss +65 -35
  223. package/src/card/index.js +4 -0
  224. package/src/card/style.scss +47 -63
  225. package/src/category-autocomplete/index.js +53 -18
  226. package/src/category-autocomplete/style.scss +20 -24
  227. package/src/color-picker/index.js +16 -22
  228. package/src/color-picker/style.scss +20 -163
  229. package/src/consts.js +2 -1
  230. package/src/custom-select-control/style.scss +14 -45
  231. package/src/date-range-picker/style.scss +12 -12
  232. package/src/footer/index.js +20 -9
  233. package/src/footer/style.scss +13 -14
  234. package/src/form-token-field/index.js +3 -8
  235. package/src/form-token-field/style.scss +9 -105
  236. package/src/global-notices/index.js +1 -1
  237. package/src/grid/style.scss +19 -6
  238. package/src/handoff/index.js +10 -15
  239. package/src/handoff-message/index.js +39 -0
  240. package/src/hooks/useObjectState.js +2 -1
  241. package/src/image-upload/index.js +9 -3
  242. package/src/image-upload/style.scss +12 -17
  243. package/src/index.js +7 -7
  244. package/src/info-button/style.scss +1 -3
  245. package/src/modal/index.js +2 -5
  246. package/src/modal/style.scss +20 -132
  247. package/src/newspack-icon/index.js +7 -2
  248. package/src/newspack-icon/style.scss +17 -2
  249. package/src/newspack-logo/style.scss +3 -3
  250. package/src/notice/index.js +9 -1
  251. package/src/notice/style.scss +60 -19
  252. package/src/plugin-installer/index.js +17 -4
  253. package/src/plugin-installer/style.scss +5 -5
  254. package/src/plugin-settings/SettingsSection.js +59 -27
  255. package/src/plugin-settings/index.js +29 -8
  256. package/src/plugin-settings/style.scss +7 -0
  257. package/src/plugin-toggle/index.js +37 -12
  258. package/src/plugin-toggle/style.scss +2 -2
  259. package/src/popover/style.scss +20 -17
  260. package/src/position-control/index.js +122 -0
  261. package/src/position-control/style.scss +66 -0
  262. package/src/progress-bar/style.scss +4 -4
  263. package/src/radio-control/style.scss +10 -11
  264. package/src/section-header/index.js +41 -5
  265. package/src/section-header/style.scss +22 -1
  266. package/src/select-control/ButtonGroupControl.js +15 -5
  267. package/src/select-control/GroupedSelectControl.js +28 -25
  268. package/src/select-control/index.js +6 -3
  269. package/src/select-control/style.scss +47 -88
  270. package/src/settings/MinMaxSetting.js +2 -1
  271. package/src/settings/SettingsCard.js +9 -7
  272. package/src/settings/SettingsSection.js +4 -4
  273. package/src/settings/style.scss +32 -4
  274. package/src/steps-list/index.js +39 -0
  275. package/src/steps-list/style.scss +11 -0
  276. package/src/steps-list-item/index.js +40 -0
  277. package/src/steps-list-item/style.scss +47 -0
  278. package/src/style-card/index.js +16 -27
  279. package/src/style-card/style.scss +19 -18
  280. package/src/style.scss +43 -0
  281. package/src/tabbed-navigation/index.js +20 -24
  282. package/src/tabbed-navigation/style.scss +58 -37
  283. package/src/text-control/index.js +1 -2
  284. package/src/text-control/style.scss +0 -126
  285. package/src/utils/index.js +9 -0
  286. package/src/waiting/index.js +7 -18
  287. package/src/waiting/style.scss +9 -20
  288. package/src/web-preview/index.js +13 -34
  289. package/src/web-preview/style.scss +41 -34
  290. package/src/with-wizard/index.js +7 -5
  291. package/src/with-wizard/style.scss +77 -124
  292. package/src/with-wizard-screen/index.js +17 -17
  293. package/src/with-wizard-screen/style.scss +75 -125
  294. package/src/wizard/components/WizardError.js +57 -0
  295. package/src/wizard/index.js +145 -0
  296. package/src/wizard/store/index.js +132 -0
  297. package/src/wizard/store/utils.js +16 -0
  298. package/dist/cjs/wizard-pagination/index.js +0 -71
  299. package/dist/cjs/wizard-pagination/style.scss +0 -74
  300. package/dist/esm/wizard-pagination/index.js +0 -57
  301. package/dist/esm/wizard-pagination/style.scss +0 -74
  302. package/src/button-group/index.js +0 -35
  303. package/src/button-group/style.scss +0 -73
  304. package/src/checkbox-control/index.js +0 -38
  305. package/src/checkbox-control/style.scss +0 -78
  306. package/src/preview-box/index.js +0 -18
  307. package/src/preview-box/style.scss +0 -18
  308. package/src/textarea-control/index.js +0 -32
  309. package/src/textarea-control/style.scss +0 -76
  310. package/src/toggle-control/index.js +0 -38
  311. package/src/toggle-control/style.scss +0 -74
  312. package/src/toggle-group/index.js +0 -43
  313. package/src/toggle-group/style.scss +0 -28
  314. package/src/wizard-pagination/index.js +0 -59
  315. package/src/wizard-pagination/style.scss +0 -74
@@ -1,5 +1,4 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
-
3
2
  /**
4
3
  * WordPress dependencies.
5
4
  */
@@ -7,34 +6,36 @@ import { Component, createRef, Fragment, createPortal } from '@wordpress/element
7
6
  import { __ as alias__ } from '@wordpress/i18n';
8
7
  const __ = alias__;
9
8
  import { closeSmall, desktop, mobile, tablet } from '@wordpress/icons';
9
+ import { Button, ButtonGroup } from '@wordpress/components';
10
+
10
11
  /**
11
12
  * Internal dependencies.
12
13
  */
13
-
14
- import { Button, ButtonGroup, Waiting } from '../';
14
+ import { Waiting } from '../';
15
15
  import './style.scss';
16
+
16
17
  /**
17
18
  * External dependencies.
18
19
  */
19
-
20
20
  import classnames from 'classnames';
21
21
  import { jsx as _jsx } from "@emotion/react/jsx-runtime";
22
22
  import { jsxs as _jsxs } from "@emotion/react/jsx-runtime";
23
23
  const PORTAL_PARENT_ID = 'newspack-components-web-preview-wrapper';
24
+
24
25
  /**
25
26
  * Web Preview. A component to preview a website in an iframe, with device sizing options.
26
27
  */
27
-
28
28
  class WebPreview extends Component {
29
29
  constructor(props) {
30
30
  super(props);
31
-
32
31
  _defineProperty(this, "state", {
33
32
  device: 'desktop',
34
33
  loaded: false,
35
34
  isPreviewVisible: false
36
35
  });
37
-
36
+ /**
37
+ * Create JSX for the modal
38
+ */
38
39
  _defineProperty(this, "getWebPreviewModal", () => {
39
40
  const {
40
41
  beforeLoad = () => {},
@@ -46,12 +47,10 @@ class WebPreview extends Component {
46
47
  loaded,
47
48
  isPreviewVisible
48
49
  } = this.state;
49
-
50
50
  if (!this.modalDOMElement || !isPreviewVisible) {
51
51
  return null;
52
52
  }
53
-
54
- const classes = classnames('newspack-web-preview__container', device, loaded && 'newspack-web-preview__is-loaded');
53
+ const classes = classnames('newspack-web-preview', device, loaded && 'is-loaded');
55
54
  beforeLoad();
56
55
  return createPortal(_jsx("div", {
57
56
  className: classes,
@@ -66,26 +65,23 @@ class WebPreview extends Component {
66
65
  onClick: () => this.setState({
67
66
  device: 'desktop'
68
67
  }),
69
- isSmall: true,
70
- className: classnames('is-desktop', 'desktop' === device && 'is-selected'),
68
+ variant: 'desktop' === device && 'primary',
71
69
  icon: desktop,
72
- label: __('Preview desktop size', 'newspack')
70
+ label: __('Preview Desktop Size', 'newspack')
73
71
  }), _jsx(Button, {
74
72
  onClick: () => this.setState({
75
73
  device: 'tablet'
76
74
  }),
77
- isSmall: true,
78
- className: classnames('is-tablet', 'tablet' === device && 'is-selected'),
75
+ variant: 'tablet' === device && 'primary',
79
76
  icon: tablet,
80
- label: __('Preview tablet size', 'newspack')
77
+ label: __('Preview Tablet Size', 'newspack')
81
78
  }), _jsx(Button, {
82
79
  onClick: () => this.setState({
83
80
  device: 'phone'
84
81
  }),
85
- isSmall: true,
86
- className: classnames('is-phone', 'phone' === device && 'is-selected'),
82
+ variant: 'phone' === device && 'primary',
87
83
  icon: mobile,
88
- label: __('Preview phone size', 'newspack')
84
+ label: __('Preview Phone Size', 'newspack')
89
85
  })]
90
86
  })
91
87
  }), _jsx("div", {
@@ -98,9 +94,8 @@ class WebPreview extends Component {
98
94
  loaded: false
99
95
  });
100
96
  },
101
- isSmall: true,
102
97
  icon: closeSmall,
103
- label: __('Close preview', 'newspack')
98
+ label: __('Close Preview', 'newspack')
104
99
  })
105
100
  })]
106
101
  }), _jsxs("div", {
@@ -125,35 +120,30 @@ class WebPreview extends Component {
125
120
  })
126
121
  }), this.modalDOMElement);
127
122
  });
128
-
129
123
  _defineProperty(this, "showPreview", () => {
130
124
  this.setState({
131
125
  isPreviewVisible: true
132
126
  });
133
127
  });
134
-
135
128
  this.iframeRef = createRef();
136
129
  }
130
+
137
131
  /**
138
132
  * If a div with id PORTAL_PARENT_ID exists, assign it to class field.
139
133
  * If not, create it and append to the body.
140
134
  */
141
-
142
-
143
135
  componentDidMount() {
144
136
  const existingDOMElement = document.getElementById(PORTAL_PARENT_ID);
145
137
  this.modalDOMElement = existingDOMElement || document.createElement('div');
146
-
147
138
  if (!existingDOMElement) {
148
139
  this.modalDOMElement.id = PORTAL_PARENT_ID;
149
140
  document.body.appendChild(this.modalDOMElement);
150
141
  }
151
142
  }
143
+
152
144
  /**
153
145
  * Add or remove applicable body classes
154
146
  */
155
-
156
-
157
147
  componentDidUpdate() {
158
148
  if (this.state.isPreviewVisible === true) {
159
149
  document.body.classList.add('newspack-web-preview--open');
@@ -161,24 +151,13 @@ class WebPreview extends Component {
161
151
  document.body.classList.remove('newspack-web-preview--open');
162
152
  }
163
153
  }
164
- /**
165
- * Create JSX for the modal
166
- */
167
-
168
-
169
154
  /**
170
155
  * Render.
171
156
  */
172
157
  render() {
173
158
  const {
174
159
  label,
175
- isPrimary,
176
- isSecondary,
177
- isTertiary,
178
- isQuaternary,
179
- isLink,
180
- isSmall,
181
-
160
+ variant,
182
161
  /**
183
162
  * Inversion of control - let the caller render
184
163
  * the button that will trigger the modal
@@ -189,23 +168,16 @@ class WebPreview extends Component {
189
168
  children: [renderButton ? renderButton({
190
169
  showPreview: this.showPreview
191
170
  }) : _jsx(Button, {
192
- isPrimary: isPrimary,
193
- isSecondary: isSecondary,
194
- isTertiary: isTertiary,
195
- isQuaternary: isQuaternary,
196
- isLink: isLink,
197
- isSmall: isSmall,
171
+ variant: variant,
198
172
  onClick: this.showPreview,
199
173
  tabIndex: "0",
200
174
  children: label
201
175
  }), this.getWebPreviewModal()]
202
176
  });
203
177
  }
204
-
205
178
  }
206
-
207
179
  WebPreview.defaultProps = {
208
- url: '//newspack.pub',
180
+ url: '//newspack.com',
209
181
  label: __('Preview', 'newspack'),
210
182
  onLoad: () => {}
211
183
  };
@@ -2,53 +2,59 @@
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
- &--open {
10
- overflow: hidden;
9
+ // Color
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
+
17
+ background: rgba( black, 0.7 );
18
+ box-sizing: border-box;
19
+ height: 100%;
20
+ left: 0;
21
+ margin: 0;
22
+ max-width: 100%;
23
+ padding: 32px;
24
+ position: fixed;
25
+ top: 0;
26
+ width: 100%;
27
+ z-index: 99999;
28
+
29
+ &.phone iframe {
30
+ max-width: 380px;
11
31
  }
12
32
 
13
- &__container {
14
- background: rgba( black, 0.7 );
15
- box-sizing: border-box;
16
- height: 100%;
17
- left: 0;
18
- margin: 0;
19
- max-width: 100%;
20
- padding: 32px;
21
- position: fixed;
22
- top: 0;
23
- width: 100%;
24
- z-index: 99999;
25
-
26
- &.phone iframe {
27
- max-width: 380px;
28
- }
33
+ &.tablet iframe {
34
+ max-width: 768px;
35
+ }
29
36
 
30
- &.tablet iframe {
31
- max-width: 768px;
32
- }
37
+ &.is-loaded iframe {
38
+ opacity: 1;
39
+ }
33
40
 
34
- &.newspack-web-preview__is-loaded iframe {
35
- opacity: 1;
36
- }
41
+ &--open {
42
+ overflow: hidden;
37
43
  }
38
44
 
39
45
  &__interior {
40
46
  animation: appear-animation 125ms ease-in-out;
41
47
  animation-fill-mode: forwards;
42
48
  background: white;
43
- border-radius: 3px;
49
+ border-radius: 2px;
44
50
  overflow: hidden;
45
51
  height: 100%;
46
52
  width: 100%;
47
53
  }
48
54
 
49
55
  &__content {
50
- background: $gray-100;
51
- height: calc( 100% - 37px );
56
+ background: wp-colors.$gray-100;
57
+ height: calc( 100% - 49px );
52
58
  -webkit-overflow-scrolling: touch;
53
59
  overflow-x: hidden;
54
60
  width: 100%;
@@ -60,7 +66,7 @@
60
66
  margin: 0 auto;
61
67
  max-width: 100%;
62
68
  opacity: 0;
63
- outline: 1px solid $gray-300;
69
+ outline: 1px solid wp-colors.$gray-300;
64
70
  padding: 0;
65
71
  pointer-events: all;
66
72
  transition: max-width 125ms ease-in-out, opacity 250ms ease-in-out;
@@ -72,15 +78,16 @@
72
78
  align-items: center;
73
79
  display: flex;
74
80
  left: 50%;
75
- margin: -12px 0 0 0;
81
+ margin: -12px 0 0;
76
82
  position: absolute;
77
83
  top: 50%;
78
84
  transform: translateX( -50% );
79
85
  }
80
86
 
81
87
  &__toolbar {
82
- border-bottom: 1px solid $gray-300;
88
+ border-bottom: 1px solid wp-colors.$gray-300;
83
89
  display: flex;
90
+ padding: 6px;
84
91
 
85
92
  &-left {
86
93
  flex: 0 0 auto;
@@ -95,7 +102,7 @@
95
102
  padding: 0 !important;
96
103
 
97
104
  &.is-selected {
98
- background: $primary-500;
105
+ background: colors.$primary-500;
99
106
  color: white;
100
107
 
101
108
  &:active,
@@ -107,7 +114,7 @@
107
114
  }
108
115
 
109
116
  &:focus {
110
- 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;
111
118
  }
112
119
  }
113
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, {
@@ -221,8 +242,10 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
221
242
  children: _jsx(NewspackIcon, {
222
243
  size: 36
223
244
  })
224
- }), _jsx("h1", {
225
- children: requiredPlugins.length > 1 ? __('Required plugins', 'newspack') : __('Required plugin', 'newspack')
245
+ }), _jsx("div", {
246
+ children: _jsx("h2", {
247
+ children: requiredPlugins.length > 1 ? __('Required plugins', 'newspack') : __('Required plugin', 'newspack')
248
+ })
226
249
  })]
227
250
  })
228
251
  })
@@ -236,13 +259,11 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
236
259
  })
237
260
  });
238
261
  });
239
-
240
262
  _defineProperty(this, "getFallbackURL", () => {
241
263
  if (typeof newspack_urls !== 'undefined') {
242
264
  return newspack_urls.dashboard;
243
265
  }
244
266
  });
245
-
246
267
  this.state = {
247
268
  complete: null,
248
269
  error: null,
@@ -251,7 +272,6 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
251
272
  };
252
273
  this.wrappedComponentRef = createRef();
253
274
  }
254
-
255
275
  /**
256
276
  * Render.
257
277
  */
@@ -265,11 +285,9 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
265
285
  error
266
286
  } = this.state;
267
287
  const loadingClasses = [loading ? 'newspack-wizard__is-loading' : 'newspack-wizard__is-loaded'];
268
-
269
288
  if (quietLoading) {
270
289
  loadingClasses.push('newspack-wizard__is-loading-quiet');
271
290
  }
272
-
273
291
  return _jsxs(Fragment, {
274
292
  children: [this.getError(), _jsx("div", {
275
293
  className: loadingClasses.join(' '),
@@ -291,6 +309,5 @@ export default function withWizard(WrappedComponent, requiredPlugins) {
291
309
  })]
292
310
  });
293
311
  }
294
-
295
312
  };
296
313
  }