newspack-components 3.0.0-alpha.1 → 3.0.0-alpha.2

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 (278) hide show
  1. package/babel.config.js +25 -0
  2. package/copy-styles.js +2 -10
  3. package/dist/accordion/index.js +50 -0
  4. package/dist/accordion/style.scss +31 -0
  5. package/dist/{cjs/action-card → action-card}/index.js +38 -41
  6. package/dist/{cjs/action-card → action-card}/style.scss +9 -9
  7. package/dist/{cjs/autocomplete-tokenfield → autocomplete-tokenfield}/index.js +19 -18
  8. package/dist/{esm/autocomplete-tokenfield → autocomplete-tokenfield}/style.scss +3 -3
  9. package/dist/{cjs/autocomplete-with-suggestions → autocomplete-with-suggestions}/index.js +29 -29
  10. package/dist/{cjs/autocomplete-with-suggestions → autocomplete-with-suggestions}/style.scss +8 -8
  11. package/dist/button/index.js +51 -0
  12. package/dist/button/index.tsx +48 -0
  13. package/dist/{cjs/button → button}/style.scss +1 -1
  14. package/dist/{cjs/button-card → button-card}/index.js +8 -8
  15. package/dist/{cjs/button-card → button-card}/style.scss +19 -13
  16. package/dist/{cjs/card → card}/index.js +3 -3
  17. package/dist/{esm/card → card}/style.scss +1 -1
  18. package/dist/{cjs/category-autocomplete → category-autocomplete}/index.js +50 -48
  19. package/dist/{cjs/category-autocomplete → category-autocomplete}/style.scss +2 -2
  20. package/dist/{cjs/color-picker → color-picker}/index.js +7 -7
  21. package/dist/{cjs/color-picker → color-picker}/style.scss +3 -3
  22. package/dist/{cjs/custom-select-control → custom-select-control}/index.js +3 -3
  23. package/dist/{esm/custom-select-control → custom-select-control}/style.scss +11 -10
  24. package/dist/date-range-picker/index.js +39 -0
  25. package/dist/date-range-picker/style.scss +148 -0
  26. package/dist/{cjs/footer → footer}/index.js +19 -17
  27. package/dist/{cjs/footer → footer}/style.scss +1 -1
  28. package/dist/{cjs/form-token-field → form-token-field}/index.js +5 -5
  29. package/dist/{esm/form-token-field → form-token-field}/style.scss +1 -1
  30. package/dist/{cjs/global-notices → global-notices}/index.js +3 -3
  31. package/dist/grid/index.js +44 -0
  32. package/dist/grid/index.tsx +34 -0
  33. package/dist/{esm/grid → grid}/style.scss +9 -9
  34. package/dist/{cjs/handoff → handoff}/index.js +72 -69
  35. package/dist/{cjs/handoff-message → handoff-message}/index.js +5 -3
  36. package/dist/hooks/index.js +29 -0
  37. package/dist/hooks/index.ts +15 -0
  38. package/dist/{cjs/hooks → hooks}/useObjectState.js +1 -1
  39. package/dist/{cjs/hooks → hooks}/useObjectState.test.js +9 -9
  40. package/dist/hooks/usePrompt.js +47 -0
  41. package/dist/hooks/usePrompt.ts +46 -0
  42. package/dist/image-upload/index.js +148 -0
  43. package/dist/{cjs/image-upload → image-upload}/index.test.js +13 -6
  44. package/dist/{cjs/image-upload → image-upload}/style.scss +5 -5
  45. package/dist/{cjs/index.js → index.js} +15 -1
  46. package/dist/{cjs/info-button → info-button}/index.js +5 -5
  47. package/dist/{cjs/modal → modal}/index.js +3 -3
  48. package/dist/{cjs/modal → modal}/style.scss +5 -5
  49. package/dist/{cjs/newspack-icon → newspack-icon}/index.js +4 -4
  50. package/dist/{cjs/newspack-icon → newspack-icon}/style.scss +1 -1
  51. package/dist/{cjs/newspack-logo → newspack-logo}/index.js +4 -4
  52. package/dist/{cjs/newspack-logo → newspack-logo}/style.scss +1 -1
  53. package/dist/{cjs/notice → notice}/index.js +11 -8
  54. package/dist/{cjs/notice → notice}/style.scss +11 -11
  55. package/dist/patrons-logo/index.js +77 -0
  56. package/dist/plugin-installer/index.js +297 -0
  57. package/dist/{esm/plugin-installer → plugin-installer}/style.scss +1 -1
  58. package/dist/{cjs/plugin-settings → plugin-settings}/SettingsSection.js +11 -9
  59. package/dist/plugin-settings/index.js +228 -0
  60. package/dist/{cjs/plugin-settings → plugin-settings}/style.scss +1 -1
  61. package/dist/plugin-toggle/README.md +53 -0
  62. package/dist/plugin-toggle/index.js +222 -0
  63. package/dist/{esm/plugin-toggle → plugin-toggle}/style.scss +1 -1
  64. package/dist/{cjs/popover → popover}/index.js +3 -3
  65. package/dist/{esm/popover → popover}/style.scss +7 -7
  66. package/dist/{cjs/position-control → position-control}/index.js +24 -22
  67. package/dist/{cjs/position-control → position-control}/style.scss +8 -8
  68. package/dist/{cjs/progress-bar → progress-bar}/index.js +8 -8
  69. package/dist/{cjs/progress-bar → progress-bar}/index.test.js +12 -11
  70. package/dist/{esm/progress-bar → progress-bar}/style.scss +2 -2
  71. package/dist/proxied-imports/router.js +15 -0
  72. package/dist/{cjs/radio-control → radio-control}/index.js +3 -3
  73. package/dist/{esm/radio-control → radio-control}/style.scss +3 -3
  74. package/dist/{cjs/section-header → section-header}/index.js +8 -8
  75. package/dist/{cjs/section-header → section-header}/style.scss +1 -1
  76. package/dist/{cjs/select-control → select-control}/ButtonGroupControl.js +7 -7
  77. package/dist/{cjs/select-control → select-control}/GroupedSelectControl.js +15 -14
  78. package/dist/{cjs/select-control → select-control}/index.js +6 -6
  79. package/dist/{esm/select-control → select-control}/style.scss +4 -4
  80. package/dist/{cjs/settings → settings}/MinMaxSetting.js +12 -11
  81. package/dist/{cjs/settings → settings}/SettingsCard.js +4 -4
  82. package/dist/{cjs/settings → settings}/SettingsSection.js +6 -6
  83. package/dist/{cjs/settings → settings}/index.js +1 -1
  84. package/dist/{cjs/settings → settings}/style.scss +1 -1
  85. package/dist/{cjs/sortable-newsletter-list-control → sortable-newsletter-list-control}/index.js +25 -24
  86. package/dist/{cjs/steps-list → steps-list}/index.js +4 -4
  87. package/dist/{esm/steps-list → steps-list}/style.scss +2 -2
  88. package/dist/{cjs/steps-list-item → steps-list-item}/index.js +5 -5
  89. package/dist/{cjs/steps-list-item → steps-list-item}/style.scss +5 -5
  90. package/dist/{cjs/style-card → style-card}/index.js +20 -17
  91. package/dist/{cjs/style-card → style-card}/style.scss +4 -4
  92. package/dist/{esm/style.scss → style.scss} +1 -1
  93. package/dist/{cjs/tabbed-navigation → tabbed-navigation}/index.js +7 -7
  94. package/dist/{cjs/tabbed-navigation → tabbed-navigation}/style.scss +4 -4
  95. package/dist/text-control/index.js +76 -0
  96. package/dist/text-control/index.tsx +71 -0
  97. package/dist/{cjs/utils → utils}/index.js +2 -2
  98. package/dist/{cjs/waiting → waiting}/index.js +3 -3
  99. package/dist/web-preview/index.js +191 -0
  100. package/dist/{esm/web-preview → web-preview}/style.scss +5 -5
  101. package/dist/with-wizard/index.js +328 -0
  102. package/dist/{cjs/with-wizard → with-wizard}/style.scss +44 -22
  103. package/dist/{cjs/with-wizard-screen → with-wizard-screen}/index.js +24 -23
  104. package/dist/{esm/with-wizard-screen → with-wizard-screen}/style.scss +7 -7
  105. package/dist/{cjs/wizard → wizard}/components/WizardError.js +10 -9
  106. package/dist/{cjs/wizard → wizard}/index.js +30 -27
  107. package/dist/{cjs/wizard → wizard}/store/index.js +1 -1
  108. package/package.json +18 -15
  109. package/shared/scss/_mixins.scss +2 -2
  110. package/src/accordion/index.js +35 -0
  111. package/src/accordion/style.scss +31 -0
  112. package/src/action-card/style.scss +9 -9
  113. package/src/autocomplete-tokenfield/style.scss +3 -3
  114. package/src/autocomplete-with-suggestions/index.js +46 -44
  115. package/src/autocomplete-with-suggestions/style.scss +8 -8
  116. package/src/button/style.scss +1 -1
  117. package/src/button-card/style.scss +19 -13
  118. package/src/card/style.scss +1 -1
  119. package/src/category-autocomplete/style.scss +2 -2
  120. package/src/color-picker/style.scss +3 -3
  121. package/src/custom-select-control/style.scss +11 -10
  122. package/src/date-range-picker/index.js +31 -0
  123. package/src/date-range-picker/style.scss +148 -0
  124. package/src/footer/style.scss +1 -1
  125. package/src/form-token-field/style.scss +1 -1
  126. package/src/grid/style.scss +9 -9
  127. package/src/handoff-message/index.js +3 -1
  128. package/src/image-upload/index.js +1 -1
  129. package/src/image-upload/index.test.js +6 -1
  130. package/src/image-upload/style.scss +5 -5
  131. package/src/index.js +2 -0
  132. package/src/modal/style.scss +5 -5
  133. package/src/newspack-icon/style.scss +1 -1
  134. package/src/newspack-logo/style.scss +1 -1
  135. package/src/notice/style.scss +11 -11
  136. package/src/plugin-installer/style.scss +1 -1
  137. package/src/plugin-settings/style.scss +1 -1
  138. package/src/plugin-toggle/index.js +6 -7
  139. package/src/plugin-toggle/style.scss +1 -1
  140. package/src/popover/style.scss +7 -7
  141. package/src/position-control/index.js +62 -63
  142. package/src/position-control/style.scss +8 -8
  143. package/src/progress-bar/style.scss +2 -2
  144. package/src/radio-control/style.scss +3 -3
  145. package/src/section-header/style.scss +1 -1
  146. package/src/select-control/style.scss +4 -4
  147. package/src/settings/style.scss +1 -1
  148. package/src/steps-list/style.scss +2 -2
  149. package/src/steps-list-item/style.scss +5 -5
  150. package/src/style-card/style.scss +4 -4
  151. package/src/style.scss +1 -1
  152. package/src/tabbed-navigation/index.js +1 -1
  153. package/src/tabbed-navigation/style.scss +4 -4
  154. package/src/web-preview/style.scss +5 -5
  155. package/src/with-wizard/style.scss +44 -22
  156. package/src/with-wizard-screen/style.scss +7 -7
  157. package/dist/cjs/autocomplete-tokenfield/style.scss +0 -49
  158. package/dist/cjs/button/index.js +0 -56
  159. package/dist/cjs/card/style.scss +0 -168
  160. package/dist/cjs/custom-select-control/style.scss +0 -92
  161. package/dist/cjs/form-token-field/style.scss +0 -37
  162. package/dist/cjs/grid/index.js +0 -37
  163. package/dist/cjs/grid/style.scss +0 -166
  164. package/dist/cjs/hooks/index.js +0 -25
  165. package/dist/cjs/hooks/usePrompt.js +0 -49
  166. package/dist/cjs/image-upload/index.js +0 -143
  167. package/dist/cjs/patrons-logo/index.js +0 -81
  168. package/dist/cjs/plugin-installer/index.js +0 -295
  169. package/dist/cjs/plugin-installer/style.scss +0 -72
  170. package/dist/cjs/plugin-settings/index.js +0 -221
  171. package/dist/cjs/plugin-toggle/index.js +0 -218
  172. package/dist/cjs/plugin-toggle/style.scss +0 -20
  173. package/dist/cjs/popover/style.scss +0 -161
  174. package/dist/cjs/progress-bar/style.scss +0 -42
  175. package/dist/cjs/proxied-imports/router.js +0 -14
  176. package/dist/cjs/radio-control/style.scss +0 -92
  177. package/dist/cjs/select-control/style.scss +0 -108
  178. package/dist/cjs/steps-list/style.scss +0 -11
  179. package/dist/cjs/style.scss +0 -55
  180. package/dist/cjs/text-control/index.js +0 -61
  181. package/dist/cjs/web-preview/index.js +0 -188
  182. package/dist/cjs/web-preview/style.scss +0 -155
  183. package/dist/cjs/with-wizard/index.js +0 -317
  184. package/dist/cjs/with-wizard-screen/style.scss +0 -160
  185. package/dist/esm/action-card/index.js +0 -221
  186. package/dist/esm/action-card/style.scss +0 -483
  187. package/dist/esm/autocomplete-tokenfield/index.js +0 -260
  188. package/dist/esm/autocomplete-with-suggestions/index.js +0 -276
  189. package/dist/esm/autocomplete-with-suggestions/style.scss +0 -163
  190. package/dist/esm/button/index.js +0 -48
  191. package/dist/esm/button/style.scss +0 -11
  192. package/dist/esm/button-card/index.js +0 -64
  193. package/dist/esm/button-card/style.scss +0 -174
  194. package/dist/esm/card/index.js +0 -43
  195. package/dist/esm/category-autocomplete/index.js +0 -181
  196. package/dist/esm/category-autocomplete/style.scss +0 -34
  197. package/dist/esm/color-picker/index.js +0 -59
  198. package/dist/esm/color-picker/style.scss +0 -37
  199. package/dist/esm/consts.js +0 -1
  200. package/dist/esm/custom-select-control/index.js +0 -37
  201. package/dist/esm/footer/index.js +0 -100
  202. package/dist/esm/footer/style.scss +0 -82
  203. package/dist/esm/form-token-field/index.js +0 -49
  204. package/dist/esm/global-notices/index.js +0 -30
  205. package/dist/esm/grid/index.js +0 -29
  206. package/dist/esm/handoff/index.js +0 -176
  207. package/dist/esm/handoff-message/index.js +0 -45
  208. package/dist/esm/hooks/index.js +0 -17
  209. package/dist/esm/hooks/useObjectState.js +0 -30
  210. package/dist/esm/hooks/useObjectState.test.js +0 -82
  211. package/dist/esm/hooks/useOnClickOutside.js +0 -31
  212. package/dist/esm/hooks/usePrompt.js +0 -40
  213. package/dist/esm/image-upload/index.js +0 -139
  214. package/dist/esm/image-upload/index.test.js +0 -28
  215. package/dist/esm/image-upload/style.scss +0 -103
  216. package/dist/esm/index.js +0 -45
  217. package/dist/esm/info-button/index.js +0 -42
  218. package/dist/esm/info-button/style.scss +0 -18
  219. package/dist/esm/modal/index.js +0 -39
  220. package/dist/esm/modal/style.scss +0 -56
  221. package/dist/esm/newspack-icon/index.js +0 -50
  222. package/dist/esm/newspack-icon/style.scss +0 -26
  223. package/dist/esm/newspack-logo/index.js +0 -46
  224. package/dist/esm/newspack-logo/style.scss +0 -30
  225. package/dist/esm/notice/index.js +0 -66
  226. package/dist/esm/notice/style.scss +0 -111
  227. package/dist/esm/patrons-logo/index.js +0 -75
  228. package/dist/esm/plugin-installer/index.js +0 -290
  229. package/dist/esm/plugin-settings/SettingsSection.js +0 -134
  230. package/dist/esm/plugin-settings/index.js +0 -216
  231. package/dist/esm/plugin-settings/style.scss +0 -7
  232. package/dist/esm/plugin-toggle/index.js +0 -213
  233. package/dist/esm/popover/index.js +0 -41
  234. package/dist/esm/position-control/index.js +0 -107
  235. package/dist/esm/position-control/style.scss +0 -66
  236. package/dist/esm/progress-bar/index.js +0 -68
  237. package/dist/esm/progress-bar/index.test.js +0 -109
  238. package/dist/esm/proxied-imports/router.js +0 -8
  239. package/dist/esm/radio-control/index.js +0 -37
  240. package/dist/esm/section-header/index.js +0 -67
  241. package/dist/esm/section-header/style.scss +0 -45
  242. package/dist/esm/select-control/ButtonGroupControl.js +0 -53
  243. package/dist/esm/select-control/GroupedSelectControl.js +0 -79
  244. package/dist/esm/select-control/index.js +0 -51
  245. package/dist/esm/settings/MinMaxSetting.js +0 -54
  246. package/dist/esm/settings/SettingsCard.js +0 -38
  247. package/dist/esm/settings/SettingsSection.js +0 -26
  248. package/dist/esm/settings/index.js +0 -9
  249. package/dist/esm/settings/style.scss +0 -119
  250. package/dist/esm/sortable-newsletter-list-control/index.js +0 -128
  251. package/dist/esm/sortable-newsletter-list-control/style.scss +0 -45
  252. package/dist/esm/steps-list/index.js +0 -43
  253. package/dist/esm/steps-list-item/index.js +0 -47
  254. package/dist/esm/steps-list-item/style.scss +0 -47
  255. package/dist/esm/style-card/index.js +0 -75
  256. package/dist/esm/style-card/style.scss +0 -94
  257. package/dist/esm/tabbed-navigation/index.js +0 -53
  258. package/dist/esm/tabbed-navigation/style.scss +0 -86
  259. package/dist/esm/text-control/index.js +0 -57
  260. package/dist/esm/text-control/style.scss +0 -32
  261. package/dist/esm/utils/index.js +0 -29
  262. package/dist/esm/waiting/index.js +0 -44
  263. package/dist/esm/waiting/style.scss +0 -27
  264. package/dist/esm/web-preview/index.js +0 -183
  265. package/dist/esm/with-wizard/index.js +0 -311
  266. package/dist/esm/with-wizard/style.scss +0 -260
  267. package/dist/esm/with-wizard-screen/index.js +0 -110
  268. package/dist/esm/wizard/components/WizardError.js +0 -67
  269. package/dist/esm/wizard/index.js +0 -120
  270. package/dist/esm/wizard/store/index.js +0 -155
  271. package/dist/esm/wizard/store/utils.js +0 -14
  272. /package/dist/{cjs/consts.js → consts.js} +0 -0
  273. /package/dist/{cjs/hooks → hooks}/useOnClickOutside.js +0 -0
  274. /package/dist/{cjs/info-button → info-button}/style.scss +0 -0
  275. /package/dist/{cjs/sortable-newsletter-list-control → sortable-newsletter-list-control}/style.scss +0 -0
  276. /package/dist/{cjs/text-control → text-control}/style.scss +0 -0
  277. /package/dist/{cjs/waiting → waiting}/style.scss +0 -0
  278. /package/dist/{cjs/wizard → wizard}/store/utils.js +0 -0
@@ -1,67 +0,0 @@
1
- /**
2
- * WordPress dependencies.
3
- */
4
- import { __ as alias__ } from '@wordpress/i18n';
5
- const __ = alias__;
6
- import { useSelect } from '@wordpress/data';
7
-
8
- /**
9
- * Internal dependencies.
10
- */
11
- import { Button, Card, Modal, Notice } from '../..';
12
- import { WIZARD_STORE_NAMESPACE } from '../store';
13
- import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
14
- const parseError = ({
15
- data,
16
- message,
17
- code
18
- }) => {
19
- let level = 'fatal';
20
- if (!!data && 'level' in data) {
21
- level = data.level;
22
- } else if ('rest_invalid_param' === code) {
23
- level = 'notice';
24
- }
25
- return {
26
- message,
27
- level
28
- };
29
- };
30
- const WizardError = () => {
31
- const error = useSelect(select => select(WIZARD_STORE_NAMESPACE).getError());
32
- if (!error) {
33
- return null;
34
- }
35
- const {
36
- level,
37
- message
38
- } = parseError(error);
39
- if ('fatal' === level) {
40
- const fallbackURL = typeof newspack_urls !== 'undefined' && newspack_urls.dashboard;
41
- return _jsxs(Modal, {
42
- title: __('Unrecoverable error'),
43
- onRequestClose: fallbackURL ? () => window.location = fallbackURL : undefined,
44
- children: [_jsx(Notice, {
45
- noticeText: message,
46
- isError: true,
47
- rawHTML: true
48
- }), fallbackURL && _jsx(Card, {
49
- buttonsCard: true,
50
- noBorder: true,
51
- className: "justify-end",
52
- children: _jsx(Button, {
53
- isPrimary: true,
54
- href: fallbackURL,
55
- children: __('Return to Dashboard', 'newspack-plugin')
56
- })
57
- })]
58
- });
59
- }
60
- return _jsx(Notice, {
61
- isError: true,
62
- className: "newspack-wizard__above-header",
63
- noticeText: message,
64
- rawHTML: true
65
- });
66
- };
67
- export default WizardError;
@@ -1,120 +0,0 @@
1
- /**
2
- * External dependencies.
3
- */
4
- import classnames from 'classnames';
5
-
6
- /**
7
- * WordPress dependencies.
8
- */
9
- import { useSelect } from '@wordpress/data';
10
- import { useState } from '@wordpress/element';
11
- import { __ as alias__ } from '@wordpress/i18n';
12
- const __ = alias__;
13
- import { category } from '@wordpress/icons';
14
-
15
- /**
16
- * Internal dependencies
17
- */
18
- import { Footer, Notice, Button, NewspackIcon, TabbedNavigation, PluginInstaller, HandoffMessage } from '../';
19
- import Router from '../proxied-imports/router';
20
- import registerStore, { WIZARD_STORE_NAMESPACE } from './store';
21
- import { useWizardData } from './store/utils';
22
- import WizardError from './components/WizardError';
23
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@emotion/react/jsx-runtime";
24
- registerStore();
25
- const {
26
- HashRouter,
27
- Redirect,
28
- Route,
29
- Switch
30
- } = Router;
31
- const Wizard = ({
32
- sections = [],
33
- apiSlug,
34
- headerText,
35
- subHeaderText,
36
- hasSimpleFooter,
37
- className,
38
- renderAboveSections,
39
- requiredPlugins = []
40
- }) => {
41
- const isLoading = useSelect(select => select(WIZARD_STORE_NAMESPACE).isLoading());
42
- const isQuietLoading = useSelect(select => select(WIZARD_STORE_NAMESPACE).isQuietLoading());
43
-
44
- // Trigger initial data fetch. Some sections might not use the wizard data,
45
- // but for consistency, fetching is triggered regardless of the section.
46
- useSelect(select => select(WIZARD_STORE_NAMESPACE).getWizardAPIData(apiSlug));
47
- let displayedSections = sections.filter(section => !section.isHidden);
48
- const [pluginRequirementsSatisfied, setPluginRequirementsSatisfied] = useState(requiredPlugins.length === 0);
49
- if (!pluginRequirementsSatisfied) {
50
- headerText = requiredPlugins.length > 1 ? __('Required plugins', 'newspack-plugin') : __('Required plugin', 'newspack-plugin');
51
- displayedSections = [{
52
- path: '/',
53
- render: () => _jsx(PluginInstaller, {
54
- plugins: requiredPlugins,
55
- onStatus: ({
56
- complete
57
- }) => setPluginRequirementsSatisfied(complete)
58
- })
59
- }];
60
- }
61
- return _jsxs(_Fragment, {
62
- children: [_jsx("div", {
63
- className: classnames(isLoading ? 'newspack-wizard__is-loading' : 'newspack-wizard__is-loaded', {
64
- 'newspack-wizard__is-loading-quiet': isQuietLoading
65
- }),
66
- children: _jsxs(HashRouter, {
67
- hashType: "slash",
68
- children: [newspack_aux_data.is_debug_mode && _jsx(Notice, {
69
- debugMode: true
70
- }), _jsx("div", {
71
- className: "bg-white",
72
- children: _jsx("div", {
73
- className: "newspack-wizard__header__inner",
74
- children: _jsxs("div", {
75
- className: "newspack-wizard__title",
76
- children: [_jsx(Button, {
77
- isLink: true,
78
- href: newspack_urls.dashboard,
79
- label: __('Return to Dashboard', 'newspack-plugin'),
80
- showTooltip: true,
81
- icon: category,
82
- iconSize: 36,
83
- children: _jsx(NewspackIcon, {
84
- size: 36
85
- })
86
- }), _jsxs("div", {
87
- children: [headerText && _jsx("h2", {
88
- children: headerText
89
- }), subHeaderText && _jsx("span", {
90
- children: subHeaderText
91
- })]
92
- })]
93
- })
94
- })
95
- }), displayedSections.length > 1 && _jsx(TabbedNavigation, {
96
- items: displayedSections,
97
- children: _jsx(WizardError, {})
98
- }), _jsx(HandoffMessage, {}), _jsxs(Switch, {
99
- children: [displayedSections.map((section, index) => {
100
- const SectionComponent = section.render;
101
- return _jsx(Route, {
102
- path: section.path,
103
- children: _jsxs("div", {
104
- className: classnames('newspack-wizard newspack-wizard__content', className),
105
- children: ['function' === typeof renderAboveSections ? renderAboveSections() : null, _jsx(SectionComponent, {})]
106
- })
107
- }, index);
108
- }), _jsx(Redirect, {
109
- to: displayedSections[0].path
110
- })]
111
- })]
112
- })
113
- }), !isLoading && _jsx(Footer, {
114
- simple: hasSimpleFooter
115
- })]
116
- });
117
- };
118
- Wizard.useWizardData = useWizardData;
119
- Wizard.STORE_NAMESPACE = WIZARD_STORE_NAMESPACE;
120
- export default Wizard;
@@ -1,155 +0,0 @@
1
- /**
2
- * External dependencies.
3
- */
4
- import set from 'lodash/set';
5
- import get from 'lodash/get';
6
- import isEmpty from 'lodash/isEmpty';
7
-
8
- /**
9
- * WordPress dependencies.
10
- */
11
- import apiFetch from '@wordpress/api-fetch';
12
- import { createReduxStore, register, dispatch, select } from '@wordpress/data';
13
- import { createAction } from './utils.js';
14
- export const WIZARD_STORE_NAMESPACE = 'newspack/wizards';
15
- const DEFAULT_STATE = {
16
- isLoading: true,
17
- isQuietLoading: false,
18
- apiData: {},
19
- error: null
20
- };
21
-
22
- /**
23
- * wordpress/data does not trigger a component re-render
24
- * on deep state change (via lodash's set function)
25
- * unless the state was cloned first.
26
- */
27
- const clone = objectToClone => JSON.parse(JSON.stringify(objectToClone));
28
- const reducer = (state = DEFAULT_STATE, {
29
- type,
30
- payload = {}
31
- }) => {
32
- switch (type) {
33
- case 'START_LOADING_DATA':
34
- if (payload.isQuietLoading) {
35
- return {
36
- ...state,
37
- isQuietLoading: true
38
- };
39
- }
40
- return {
41
- ...state,
42
- isLoading: true
43
- };
44
- case 'FINISH_LOADING_DATA':
45
- return {
46
- ...state,
47
- isLoading: false,
48
- isQuietLoading: false
49
- };
50
- case 'SET_API_DATA':
51
- return set(clone(state), ['apiData', payload.slug], payload.data);
52
- case 'UPDATE_WIZARD_SETTINGS':
53
- return set(clone(state), ['apiData', payload.slug, ...payload.path], payload.value);
54
- case 'SET_ERROR':
55
- return {
56
- ...state,
57
- error: payload
58
- };
59
- default:
60
- return state;
61
- }
62
- };
63
- const actions = {
64
- // Regular actions.
65
- startLoadingData: createAction('START_LOADING_DATA'),
66
- finishLoadingData: createAction('FINISH_LOADING_DATA'),
67
- fetchFromAPI: createAction('FETCH_FROM_API'),
68
- setAPIDataForWizard: createAction('SET_API_DATA'),
69
- updateWizardSettings: createAction('UPDATE_WIZARD_SETTINGS'),
70
- setError: createAction('SET_ERROR'),
71
- // Async actions. These will not show up in Redux devtools.
72
- *saveWizardSettings({
73
- slug,
74
- section = '',
75
- payloadPath = false,
76
- auxData = {},
77
- updatePayload = null
78
- }) {
79
- // Optionally data can be updated before saving - an immediate update case
80
- // (without an explicit "save" action).
81
- if (updatePayload) {
82
- yield actions.updateWizardSettings({
83
- slug,
84
- ...updatePayload
85
- });
86
- }
87
- const wizardState = select(WIZARD_STORE_NAMESPACE).getWizardAPIData(slug);
88
- const data = payloadPath ? get(wizardState, payloadPath) : wizardState;
89
- const updatedData = yield actions.fetchFromAPI({
90
- path: `/newspack/v1/wizard/${slug}/${section}`,
91
- method: 'POST',
92
- data: {
93
- ...data,
94
- ...auxData
95
- },
96
- isQuietFetch: true
97
- });
98
- if (!isEmpty(updatedData) && !updatedData.error) {
99
- return actions.setAPIDataForWizard({
100
- slug,
101
- data: updatedData
102
- });
103
- }
104
- },
105
- *wizardApiFetch(fetchConfig) {
106
- // Just a proxy to fetchFromAPI, but it has to be a generator.
107
- const result = yield actions.fetchFromAPI(fetchConfig);
108
- return result;
109
- }
110
- };
111
- const selectors = {
112
- isLoading: state => state.isLoading,
113
- isQuietLoading: state => state.isQuietLoading,
114
- getWizardAPIData: (state, slug) => state.apiData[slug] || {},
115
- getError: state => state.error
116
- };
117
- const store = createReduxStore(WIZARD_STORE_NAMESPACE, {
118
- reducer,
119
- actions,
120
- selectors,
121
- controls: {
122
- FETCH_FROM_API: action => {
123
- dispatch(WIZARD_STORE_NAMESPACE).startLoadingData({
124
- isQuietLoading: Boolean(action.payload.isQuietFetch)
125
- });
126
- return apiFetch(action.payload).then(data => {
127
- dispatch(WIZARD_STORE_NAMESPACE).setError(null);
128
- return data;
129
- }).catch(error => {
130
- dispatch(WIZARD_STORE_NAMESPACE).setError(error);
131
- return {
132
- error
133
- };
134
- }).finally(result => {
135
- dispatch(WIZARD_STORE_NAMESPACE).finishLoadingData();
136
- return result;
137
- });
138
- }
139
- },
140
- resolvers: {
141
- *getWizardAPIData(slug) {
142
- if (slug) {
143
- const data = yield actions.fetchFromAPI({
144
- path: `/newspack/v1/wizard/${slug}`
145
- });
146
- return actions.setAPIDataForWizard({
147
- slug,
148
- data
149
- });
150
- }
151
- return actions.finishLoadingData();
152
- }
153
- }
154
- });
155
- export default (() => register(store));
@@ -1,14 +0,0 @@
1
- /**
2
- * WordPress dependencies.
3
- */
4
- import { useSelect } from '@wordpress/data';
5
-
6
- /**
7
- * Internal dependencies
8
- */
9
- import { WIZARD_STORE_NAMESPACE } from '.';
10
- export const createAction = type => payload => ({
11
- type,
12
- payload
13
- });
14
- export const useWizardData = (wizardName, defaultValue = {}) => useSelect(select => select(WIZARD_STORE_NAMESPACE).getWizardAPIData(`newspack-${wizardName}-wizard`)) || defaultValue;
File without changes
File without changes
File without changes
File without changes