newspack-components 4.3.0 → 4.4.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/DEVELOPMENT.md +868 -0
  3. package/colors/colors.module.scss +52 -2
  4. package/copy-styles.js +3 -2
  5. package/dist/cjs/accordion/index.js +17 -12
  6. package/dist/cjs/action-card/index.js +176 -139
  7. package/dist/cjs/autocomplete-tokenfield/index.js +254 -234
  8. package/dist/cjs/autocomplete-with-latest-posts/index.js +172 -110
  9. package/dist/cjs/autocomplete-with-suggestions/index.js +229 -126
  10. package/dist/cjs/badge/index.js +7 -7
  11. package/dist/cjs/box-contrast/index.js +19 -15
  12. package/dist/cjs/button/index.js +41 -26
  13. package/dist/cjs/button-props/button-props.js +5 -5
  14. package/dist/cjs/button-props/index.js +2 -2
  15. package/dist/cjs/card/core-card.js +110 -52
  16. package/dist/cjs/card/index.js +74 -67
  17. package/dist/cjs/card/style-core.scss +93 -25
  18. package/dist/cjs/card/style.scss +2 -2
  19. package/dist/cjs/card-feature/index.js +141 -0
  20. package/dist/cjs/card-feature/style.scss +75 -0
  21. package/dist/cjs/card-form/index.js +144 -0
  22. package/dist/cjs/card-form/style.scss +20 -0
  23. package/dist/cjs/card-settings-group/index.js +36 -16
  24. package/dist/cjs/card-sortable-list/index.js +176 -140
  25. package/dist/cjs/category-autocomplete/index.js +175 -155
  26. package/dist/cjs/color-picker/index.js +41 -23
  27. package/dist/cjs/color-picker/index.test.js +82 -0
  28. package/dist/cjs/color-picker/style.scss +11 -13
  29. package/dist/cjs/confirm-dialog/index.js +86 -22
  30. package/dist/cjs/consts.js +1 -1
  31. package/dist/cjs/custom-select-control/index.js +39 -28
  32. package/dist/cjs/dataviews/index.js +38 -0
  33. package/dist/cjs/dataviews/style.scss +9 -0
  34. package/dist/cjs/divider/index.js +26 -21
  35. package/dist/cjs/footer/index.js +36 -30
  36. package/dist/cjs/form-token-field/index.js +51 -40
  37. package/dist/cjs/global-notices/index.js +5 -5
  38. package/dist/cjs/grid/index.js +25 -19
  39. package/dist/cjs/grid/style.scss +6 -1
  40. package/dist/cjs/handoff/index.js +204 -156
  41. package/dist/cjs/handoff-message/index.js +12 -7
  42. package/dist/cjs/hooks/index.js +10 -8
  43. package/dist/cjs/hooks/use-confirm-dialog.js +79 -0
  44. package/dist/cjs/hooks/use-unsaved-changes-dialog.js +144 -0
  45. package/dist/cjs/hooks/useObjectState.js +21 -12
  46. package/dist/cjs/hooks/useObjectState.test.js +55 -33
  47. package/dist/cjs/hooks/useOnClickOutside.js +6 -6
  48. package/dist/cjs/hooks/usePrompt.js +10 -13
  49. package/dist/cjs/image-upload/index.js +114 -123
  50. package/dist/cjs/image-upload/index.test.js +11 -13
  51. package/dist/cjs/image-upload/style.scss +12 -40
  52. package/dist/cjs/index.js +136 -104
  53. package/dist/cjs/info-button/index.js +43 -32
  54. package/dist/cjs/integration-icons/active-campaign.js +22 -0
  55. package/dist/cjs/integration-icons/constant-contact.js +28 -0
  56. package/dist/cjs/integration-icons/fundraise-up.js +25 -0
  57. package/dist/cjs/integration-icons/index.js +48 -0
  58. package/dist/cjs/integration-icons/mailchimp.js +19 -0
  59. package/dist/cjs/integration-icons/salesforce.js +17 -0
  60. package/dist/cjs/integration-icons/wisepops.js +20 -0
  61. package/dist/cjs/modal/index.js +22 -19
  62. package/dist/cjs/modal/style.scss +4 -0
  63. package/dist/cjs/newspack-icon/index.js +45 -38
  64. package/dist/cjs/notice/index.js +64 -55
  65. package/dist/cjs/plugin-installer/index.js +259 -253
  66. package/dist/cjs/plugin-settings/SettingsSection.js +66 -60
  67. package/dist/cjs/plugin-settings/index.js +217 -200
  68. package/dist/cjs/plugin-toggle/index.js +192 -199
  69. package/dist/cjs/popover/index.js +41 -28
  70. package/dist/cjs/position-control/index.js +24 -23
  71. package/dist/cjs/progress-bar/index.js +71 -59
  72. package/dist/cjs/progress-bar/index.test.js +62 -68
  73. package/dist/cjs/proxied-imports/router.js +3 -3
  74. package/dist/cjs/radio-control/index.js +40 -27
  75. package/dist/cjs/section-header/index.js +103 -58
  76. package/dist/cjs/section-header/style.scss +31 -11
  77. package/dist/cjs/select-control/ButtonGroupControl.js +26 -21
  78. package/dist/cjs/select-control/GroupedSelectControl.js +41 -35
  79. package/dist/cjs/select-control/index.js +52 -40
  80. package/dist/cjs/settings/MinMaxSetting.js +30 -20
  81. package/dist/cjs/settings/SettingsCard.js +20 -17
  82. package/dist/cjs/settings/SettingsSection.js +22 -21
  83. package/dist/cjs/settings/index.js +5 -5
  84. package/dist/cjs/sortable-newsletter-list-control/index.js +78 -57
  85. package/dist/cjs/steps-list/index.js +44 -34
  86. package/dist/cjs/steps-list-item/index.js +47 -39
  87. package/dist/cjs/style-card/index.js +70 -63
  88. package/dist/cjs/tabbed-navigation/index.js +38 -36
  89. package/dist/cjs/text-control/index.js +27 -25
  90. package/dist/cjs/utils/color.js +4 -4
  91. package/dist/cjs/utils/editor-toolbar-back-button.js +61 -0
  92. package/dist/cjs/utils/index.js +31 -19
  93. package/dist/cjs/utils/style.scss +8 -0
  94. package/dist/cjs/waiting/index.js +48 -37
  95. package/dist/cjs/web-preview/index.js +217 -211
  96. package/dist/cjs/with-wizard/index.js +362 -364
  97. package/dist/cjs/with-wizard/style.scss +4 -54
  98. package/dist/cjs/with-wizard-screen/index.js +54 -58
  99. package/dist/cjs/with-wizard-screen/style.scss +41 -3
  100. package/dist/cjs/wizard/components/WizardError.js +20 -18
  101. package/dist/cjs/wizard/components/WizardSnackbar.js +26 -23
  102. package/dist/cjs/wizard/index.js +176 -114
  103. package/dist/cjs/wizard/store/index.js +171 -123
  104. package/dist/cjs/wizard/store/utils.js +13 -8
  105. package/dist/esm/accordion/index.js +14 -9
  106. package/dist/esm/action-card/index.js +168 -123
  107. package/dist/esm/autocomplete-tokenfield/index.js +248 -222
  108. package/dist/esm/autocomplete-with-latest-posts/index.js +169 -103
  109. package/dist/esm/autocomplete-with-suggestions/index.js +226 -119
  110. package/dist/esm/badge/index.js +5 -5
  111. package/dist/esm/box-contrast/index.js +15 -11
  112. package/dist/esm/button/index.js +39 -21
  113. package/dist/esm/button-props/button-props.js +1 -1
  114. package/dist/esm/card/core-card.js +109 -47
  115. package/dist/esm/card/index.js +69 -54
  116. package/dist/esm/card/style-core.scss +93 -25
  117. package/dist/esm/card/style.scss +2 -2
  118. package/dist/esm/card-feature/index.js +131 -0
  119. package/dist/esm/card-feature/style.scss +75 -0
  120. package/dist/esm/card-form/index.js +134 -0
  121. package/dist/esm/card-form/style.scss +20 -0
  122. package/dist/esm/card-settings-group/index.js +33 -14
  123. package/dist/esm/card-sortable-list/index.js +170 -126
  124. package/dist/esm/category-autocomplete/index.js +168 -140
  125. package/dist/esm/color-picker/index.js +39 -21
  126. package/dist/esm/color-picker/index.test.js +78 -0
  127. package/dist/esm/color-picker/style.scss +11 -13
  128. package/dist/esm/confirm-dialog/index.js +85 -18
  129. package/dist/esm/consts.js +1 -1
  130. package/dist/esm/custom-select-control/index.js +34 -15
  131. package/dist/esm/dataviews/index.js +34 -0
  132. package/dist/esm/dataviews/style.scss +9 -0
  133. package/dist/esm/divider/index.js +24 -16
  134. package/dist/esm/footer/index.js +34 -28
  135. package/dist/esm/form-token-field/index.js +46 -27
  136. package/dist/esm/global-notices/index.js +3 -3
  137. package/dist/esm/grid/index.js +23 -14
  138. package/dist/esm/grid/style.scss +6 -1
  139. package/dist/esm/handoff/index.js +199 -143
  140. package/dist/esm/handoff-message/index.js +10 -6
  141. package/dist/esm/hooks/index.js +8 -6
  142. package/dist/esm/hooks/use-confirm-dialog.js +73 -0
  143. package/dist/esm/hooks/use-unsaved-changes-dialog.js +136 -0
  144. package/dist/esm/hooks/useObjectState.js +19 -9
  145. package/dist/esm/hooks/useObjectState.test.js +54 -32
  146. package/dist/esm/hooks/useOnClickOutside.js +4 -4
  147. package/dist/esm/hooks/usePrompt.js +9 -11
  148. package/dist/esm/image-upload/index.js +110 -111
  149. package/dist/esm/image-upload/index.test.js +11 -13
  150. package/dist/esm/image-upload/style.scss +12 -40
  151. package/dist/esm/index.js +7 -1
  152. package/dist/esm/info-button/index.js +38 -19
  153. package/dist/esm/integration-icons/active-campaign.js +16 -0
  154. package/dist/esm/integration-icons/constant-contact.js +22 -0
  155. package/dist/esm/integration-icons/fundraise-up.js +19 -0
  156. package/dist/esm/integration-icons/index.js +6 -0
  157. package/dist/esm/integration-icons/mailchimp.js +13 -0
  158. package/dist/esm/integration-icons/salesforce.js +11 -0
  159. package/dist/esm/integration-icons/wisepops.js +14 -0
  160. package/dist/esm/modal/index.js +20 -13
  161. package/dist/esm/modal/style.scss +4 -0
  162. package/dist/esm/newspack-icon/index.js +40 -25
  163. package/dist/esm/notice/index.js +59 -42
  164. package/dist/esm/plugin-installer/index.js +255 -243
  165. package/dist/esm/plugin-settings/SettingsSection.js +61 -50
  166. package/dist/esm/plugin-settings/index.js +212 -189
  167. package/dist/esm/plugin-toggle/index.js +187 -190
  168. package/dist/esm/popover/index.js +35 -16
  169. package/dist/esm/position-control/index.js +22 -18
  170. package/dist/esm/progress-bar/index.js +66 -49
  171. package/dist/esm/progress-bar/index.test.js +61 -67
  172. package/dist/esm/radio-control/index.js +34 -15
  173. package/dist/esm/section-header/index.js +102 -57
  174. package/dist/esm/section-header/style.scss +31 -11
  175. package/dist/esm/select-control/ButtonGroupControl.js +23 -18
  176. package/dist/esm/select-control/GroupedSelectControl.js +38 -30
  177. package/dist/esm/select-control/index.js +47 -27
  178. package/dist/esm/settings/MinMaxSetting.js +27 -16
  179. package/dist/esm/settings/SettingsCard.js +18 -13
  180. package/dist/esm/settings/SettingsSection.js +20 -19
  181. package/dist/esm/settings/index.js +3 -3
  182. package/dist/esm/sortable-newsletter-list-control/index.js +74 -53
  183. package/dist/esm/steps-list/index.js +39 -21
  184. package/dist/esm/steps-list-item/index.js +42 -26
  185. package/dist/esm/style-card/index.js +65 -50
  186. package/dist/esm/tabbed-navigation/index.js +35 -33
  187. package/dist/esm/text-control/index.js +25 -19
  188. package/dist/esm/utils/color.js +4 -4
  189. package/dist/esm/utils/editor-toolbar-back-button.js +53 -0
  190. package/dist/esm/utils/index.js +29 -16
  191. package/dist/esm/utils/style.scss +8 -0
  192. package/dist/esm/waiting/index.js +43 -24
  193. package/dist/esm/web-preview/index.js +213 -201
  194. package/dist/esm/with-wizard/index.js +360 -358
  195. package/dist/esm/with-wizard/style.scss +4 -54
  196. package/dist/esm/with-wizard-screen/index.js +48 -46
  197. package/dist/esm/with-wizard-screen/style.scss +41 -3
  198. package/dist/esm/wizard/components/WizardError.js +18 -16
  199. package/dist/esm/wizard/components/WizardSnackbar.js +23 -17
  200. package/dist/esm/wizard/index.js +171 -103
  201. package/dist/esm/wizard/store/index.js +169 -116
  202. package/dist/esm/wizard/store/utils.js +13 -6
  203. package/package.json +30 -16
  204. package/release.config.js +1 -0
  205. package/shared/hooks/use-coauthors.js +195 -27
  206. package/shared/hooks/use-coauthors.test.js +232 -6
  207. package/shared/scss/_mixins.scss +13 -5
  208. package/src/accordion/index.js +8 -7
  209. package/src/action-card/index.js +15 -1
  210. package/src/badge/index.tsx +3 -1
  211. package/src/card/core-card.js +95 -18
  212. package/src/card/index.js +1 -0
  213. package/src/card/style-core.scss +93 -25
  214. package/src/card/style.scss +2 -2
  215. package/src/card-feature/README.md +188 -0
  216. package/src/card-feature/index.tsx +186 -0
  217. package/src/card-feature/style.scss +75 -0
  218. package/src/card-form/README.md +113 -0
  219. package/src/card-form/index.tsx +128 -0
  220. package/src/card-form/style.scss +20 -0
  221. package/src/card-settings-group/index.tsx +28 -3
  222. package/src/card-sortable-list/index.tsx +27 -4
  223. package/src/color-picker/index.js +15 -8
  224. package/src/color-picker/index.test.js +52 -0
  225. package/src/color-picker/style.scss +11 -13
  226. package/src/confirm-dialog/README.md +128 -0
  227. package/src/confirm-dialog/index.tsx +74 -6
  228. package/src/dataviews/index.tsx +34 -0
  229. package/src/dataviews/style.scss +9 -0
  230. package/src/grid/style.scss +6 -1
  231. package/src/handoff/README.md +93 -0
  232. package/src/handoff/index.js +46 -8
  233. package/src/hooks/index.ts +2 -1
  234. package/src/hooks/use-confirm-dialog.tsx +80 -0
  235. package/src/hooks/use-unsaved-changes-dialog.tsx +140 -0
  236. package/src/image-upload/index.js +10 -15
  237. package/src/image-upload/style.scss +12 -40
  238. package/src/index.js +7 -1
  239. package/src/integration-icons/active-campaign.js +14 -0
  240. package/src/integration-icons/constant-contact.js +22 -0
  241. package/src/integration-icons/fundraise-up.js +18 -0
  242. package/src/integration-icons/index.js +6 -0
  243. package/src/integration-icons/mailchimp.js +10 -0
  244. package/src/integration-icons/salesforce.js +10 -0
  245. package/src/integration-icons/wisepops.js +14 -0
  246. package/src/modal/style.scss +4 -0
  247. package/src/plugin-installer/index.js +30 -19
  248. package/src/section-header/index.js +56 -24
  249. package/src/section-header/style.scss +31 -11
  250. package/src/select-control/index.js +4 -0
  251. package/src/utils/editor-toolbar-back-button.tsx +48 -0
  252. package/src/utils/index.js +6 -0
  253. package/src/utils/style.scss +8 -0
  254. package/src/with-wizard/style.scss +4 -54
  255. package/src/with-wizard-screen/style.scss +41 -3
  256. package/src/wizard/index.js +90 -53
  257. package/src/wizard/store/index.js +2 -2
  258. package/dist/cjs/button-card/index.js +0 -72
  259. package/dist/cjs/button-card/style.scss +0 -180
  260. package/dist/esm/button-card/index.js +0 -64
  261. package/dist/esm/button-card/style.scss +0 -180
  262. package/src/button-card/index.js +0 -52
  263. package/src/button-card/style.scss +0 -180
@@ -1,3 +1,7 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1
5
  /**
2
6
  * External dependencies.
3
7
  */
@@ -10,7 +14,7 @@ import { DropdownMenu, MenuItem } from '@wordpress/components';
10
14
  import { useDispatch, useSelect } from '@wordpress/data';
11
15
  import { useEffect, useState, forwardRef } from '@wordpress/element';
12
16
  import { __ } from '@wordpress/i18n';
13
- import { category, moreVertical } from '@wordpress/icons';
17
+ import { category, chevronLeft, moreVertical } from '@wordpress/icons';
14
18
 
15
19
  /**
16
20
  * Internal dependencies
@@ -22,24 +26,39 @@ import WizardSnackbar from './components/WizardSnackbar';
22
26
  import WizardError from './components/WizardError';
23
27
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
24
28
  registerStore();
25
- const {
26
- HashRouter,
27
- Redirect,
28
- Route,
29
- Switch,
30
- useLocation
31
- } = Router;
29
+
30
+ /**
31
+ * Icon registry for resolving icon name strings passed through the data store.
32
+ * React elements from @wordpress/icons can't cross webpack entry point boundaries
33
+ * because each bundle has its own copy of the icon primitives.
34
+ */
35
+ var ICON_REGISTRY = {
36
+ chevronLeft: chevronLeft,
37
+ category: category,
38
+ moreVertical: moreVertical
39
+ };
40
+ var resolveIcon = function resolveIcon(icon) {
41
+ if (typeof icon === 'string') {
42
+ return ICON_REGISTRY[icon] || null;
43
+ }
44
+ return icon;
45
+ };
46
+ var HashRouter = Router.HashRouter,
47
+ Redirect = Router.Redirect,
48
+ Route = Router.Route,
49
+ Switch = Router.Switch,
50
+ useLocation = Router.useLocation;
32
51
 
33
52
  /**
34
53
  * Reset the header data when a new section is rendered.
35
54
  */
36
- const ResetHeaderData = () => {
37
- const location = useLocation();
38
- const {
39
- resetHeaderData
40
- } = useDispatch(WIZARD_STORE_NAMESPACE);
41
- useEffect(() => {
55
+ var ResetHeaderData = function ResetHeaderData() {
56
+ var location = useLocation();
57
+ var _useDispatch = useDispatch(WIZARD_STORE_NAMESPACE),
58
+ resetHeaderData = _useDispatch.resetHeaderData;
59
+ useEffect(function () {
42
60
  resetHeaderData();
61
+ window.scrollTo(0, 0);
43
62
  }, [location.pathname, resetHeaderData]);
44
63
  return null;
45
64
  };
@@ -65,54 +84,83 @@ const ResetHeaderData = () => {
65
84
  * @param {WizardProps} props
66
85
  * @return {JSX.Element} Wizard component
67
86
  */
68
- const Wizard = ({
69
- sections = [],
70
- headerText,
71
- apiSlug,
72
- sharedProps = {},
73
- subHeaderText,
74
- hasSimpleFooter,
75
- className,
76
- renderAboveSections,
77
- requiredPlugins = [],
78
- isInitialFetchTriggered = true,
79
- fixedHeader = false
80
- }, ref) => {
81
- const isLoading = useSelect(select => select(WIZARD_STORE_NAMESPACE).isLoading());
82
- const isQuietLoading = useSelect(select => select(WIZARD_STORE_NAMESPACE).isQuietLoading());
83
- const headerData = useSelect(select => select(WIZARD_STORE_NAMESPACE).getHeaderData());
84
- const notices = useSelect(select => select(WIZARD_STORE_NAMESPACE).getNotices());
85
- const {
86
- actions,
87
- backNav,
88
- badges,
89
- sectionDescription,
90
- sectionName,
91
- sectionTitle,
92
- sectionPrimaryAction,
93
- sectionSecondaryAction
94
- } = headerData;
95
- const mainActions = actions?.filter(action => action.type === 'primary' || action.type === 'secondary');
96
- const moreActions = actions?.filter(action => action.type === 'more');
87
+ var Wizard = function Wizard(_ref, ref) {
88
+ var _ref$sections = _ref.sections,
89
+ sections = _ref$sections === void 0 ? [] : _ref$sections,
90
+ headerText = _ref.headerText,
91
+ apiSlug = _ref.apiSlug,
92
+ _ref$sharedProps = _ref.sharedProps,
93
+ sharedProps = _ref$sharedProps === void 0 ? {} : _ref$sharedProps,
94
+ subHeaderText = _ref.subHeaderText,
95
+ hasSimpleFooter = _ref.hasSimpleFooter,
96
+ className = _ref.className,
97
+ renderAboveSections = _ref.renderAboveSections,
98
+ _ref$requiredPlugins = _ref.requiredPlugins,
99
+ requiredPlugins = _ref$requiredPlugins === void 0 ? [] : _ref$requiredPlugins,
100
+ _ref$isInitialFetchTr = _ref.isInitialFetchTriggered,
101
+ isInitialFetchTriggered = _ref$isInitialFetchTr === void 0 ? true : _ref$isInitialFetchTr,
102
+ _ref$fixedHeader = _ref.fixedHeader,
103
+ fixedHeader = _ref$fixedHeader === void 0 ? false : _ref$fixedHeader;
104
+ var isLoading = useSelect(function (select) {
105
+ return select(WIZARD_STORE_NAMESPACE).isLoading();
106
+ });
107
+ var isQuietLoading = useSelect(function (select) {
108
+ return select(WIZARD_STORE_NAMESPACE).isQuietLoading();
109
+ });
110
+ var headerData = useSelect(function (select) {
111
+ return select(WIZARD_STORE_NAMESPACE).getHeaderData();
112
+ });
113
+ var notices = useSelect(function (select) {
114
+ return select(WIZARD_STORE_NAMESPACE).getNotices();
115
+ });
116
+ var actions = headerData.actions,
117
+ backNav = headerData.backNav,
118
+ badges = headerData.badges,
119
+ sectionDescription = headerData.sectionDescription,
120
+ sectionMenu = headerData.sectionMenu,
121
+ sectionName = headerData.sectionName,
122
+ sectionTitle = headerData.sectionTitle,
123
+ sectionPrimaryAction = headerData.sectionPrimaryAction,
124
+ sectionSecondaryAction = headerData.sectionSecondaryAction;
125
+ var mainActions = actions === null || actions === void 0 ? void 0 : actions.filter(function (action) {
126
+ return action.type === 'primary' || action.type === 'secondary';
127
+ });
128
+ var moreActions = actions === null || actions === void 0 ? void 0 : actions.filter(function (action) {
129
+ return action.type === 'more';
130
+ });
97
131
 
98
132
  // Trigger initial data fetch. Some sections might not use the wizard data,
99
133
  // but for consistency, fetching is triggered regardless of the section.
100
- useSelect(select => isInitialFetchTriggered && select(WIZARD_STORE_NAMESPACE).getWizardAPIData(apiSlug));
101
- let displayedSections = sections.filter(section => !section.isHidden);
102
- const [pluginRequirementsSatisfied, setPluginRequirementsSatisfied] = useState(requiredPlugins.length === 0);
134
+ useSelect(function (select) {
135
+ return isInitialFetchTriggered && select(WIZARD_STORE_NAMESPACE).getWizardAPIData(apiSlug);
136
+ });
137
+ var displayedSections = sections.filter(function (section) {
138
+ return !section.isHidden;
139
+ });
140
+ var _useState = useState(requiredPlugins.length === 0),
141
+ _useState2 = _slicedToArray(_useState, 2),
142
+ pluginRequirementsSatisfied = _useState2[0],
143
+ setPluginRequirementsSatisfied = _useState2[1];
103
144
  if (!pluginRequirementsSatisfied) {
104
145
  headerText = requiredPlugins.length > 1 ? __('Required plugins', 'newspack-plugin') : __('Required plugin', 'newspack-plugin');
105
146
  displayedSections = [{
106
147
  path: '/',
107
- render: () => /*#__PURE__*/_jsx(PluginInstaller, {
108
- plugins: requiredPlugins,
109
- onStatus: ({
110
- complete
111
- }) => setPluginRequirementsSatisfied(complete)
112
- })
148
+ render: function render() {
149
+ return /*#__PURE__*/_jsx(PluginInstaller, {
150
+ plugins: requiredPlugins,
151
+ onStatus: function onStatus(_ref2) {
152
+ var complete = _ref2.complete;
153
+ return setPluginRequirementsSatisfied(complete);
154
+ }
155
+ });
156
+ }
113
157
  }];
114
158
  }
115
- const urlWithoutHash = window.location.href.split('#')[0];
159
+
160
+ // When plugins are required but not yet satisfied, `displayedSections` is replaced with
161
+ // the PluginInstaller. Use it for routing so the installer actually mounts and runs.
162
+ var routedSections = pluginRequirementsSatisfied ? sections : displayedSections;
163
+ var urlWithoutHash = window.location.href.split('#')[0];
116
164
  return /*#__PURE__*/_jsxs("div", {
117
165
  ref: ref,
118
166
  children: [/*#__PURE__*/_jsxs("div", {
@@ -157,67 +205,87 @@ const Wizard = ({
157
205
  })]
158
206
  })]
159
207
  })
160
- }), actions?.length > 0 && /*#__PURE__*/_jsxs("div", {
208
+ }), (actions === null || actions === void 0 ? void 0 : actions.length) > 0 && /*#__PURE__*/_jsxs("div", {
161
209
  className: "newspack-wizard__header__actions",
162
- children: [mainActions.map((action, index) => /*#__PURE__*/_jsx(Button, {
163
- icon: action.icon,
164
- variant: action.type,
165
- onClick: action.action,
166
- disabled: action.disabled || false,
167
- isDestructive: action.destructive || false,
168
- children: action.label
169
- }, index)), moreActions.length > 0 && /*#__PURE__*/_jsx(DropdownMenu, {
170
- icon: moreVertical,
171
- label: __('More', 'newspack-plugin'),
172
- children: () => moreActions.map((action, index) => /*#__PURE__*/_jsx(MenuItem, {
173
- icon: action.icon,
210
+ children: [mainActions.map(function (action, index) {
211
+ return /*#__PURE__*/_jsx(Button, {
212
+ className: "newspack-wizard__header__actions__main",
213
+ href: action.href,
214
+ icon: resolveIcon(action.icon),
215
+ variant: action.type,
174
216
  onClick: action.action,
175
217
  disabled: action.disabled || false,
176
218
  isDestructive: action.destructive || false,
177
219
  children: action.label
178
- }, index))
220
+ }, index);
221
+ }), /*#__PURE__*/_jsx(DropdownMenu, {
222
+ className: (moreActions === null || moreActions === void 0 ? void 0 : moreActions.length) === 0 ? 'newspack-wizard__header__actions__more--primary-only' : '',
223
+ icon: moreVertical,
224
+ label: __('More', 'newspack-plugin'),
225
+ popoverProps: {
226
+ className: 'newspack-wizard__header__actions__more'
227
+ },
228
+ children: function children() {
229
+ return actions.map(function (action, index) {
230
+ return /*#__PURE__*/_jsx(MenuItem, {
231
+ className: action.type === 'primary' || action.type === 'secondary' ? 'newspack-wizard__header__actions__more__main' : 'newspack-wizard__header__actions__more__more',
232
+ icon: action.icon,
233
+ href: action.href,
234
+ onClick: action.action,
235
+ disabled: action.disabled || false,
236
+ isDestructive: action.destructive || false,
237
+ children: action.label
238
+ }, index);
239
+ });
240
+ }
179
241
  })]
180
242
  })]
181
243
  }), displayedSections.length > 1 && /*#__PURE__*/_jsx(TabbedNavigation, {
182
244
  items: displayedSections,
183
245
  children: /*#__PURE__*/_jsx(WizardError, {})
184
- }), /*#__PURE__*/_jsx(HandoffMessage, {}), sections.length > 1 && /*#__PURE__*/_jsx(ResetHeaderData, {}), /*#__PURE__*/_jsxs(Switch, {
185
- children: [sections.map((section, index) => {
186
- var _section$exact;
187
- const SectionComponent = section.render;
188
- const sectionProps = section.props || {};
189
- return /*#__PURE__*/_jsx(Route, {
190
- exact: (_section$exact = section.exact) !== null && _section$exact !== void 0 ? _section$exact : false,
191
- path: section.path,
192
- render: routerProps => /*#__PURE__*/_jsxs("div", {
193
- className: classnames('newspack-wizard__content', className),
194
- children: ['function' === typeof renderAboveSections ? renderAboveSections() : null, (sectionTitle || section.title) && /*#__PURE__*/_jsx(SectionHeader, {
195
- className: "newspack-wizard__section-header",
196
- backNav: backNav || section.backNav,
197
- title: sectionTitle || section.title,
198
- description: sectionDescription || section.description,
199
- badges: badges || section.badges,
200
- primaryAction: sectionPrimaryAction || section.primaryAction,
201
- secondaryAction: sectionSecondaryAction || section.secondaryAction,
202
- heading: 1,
203
- noMargin: true
204
- }), /*#__PURE__*/_jsx(SectionComponent, {
205
- ...routerProps,
206
- ...sectionProps,
207
- ...sharedProps
208
- })]
209
- })
210
- }, index);
211
- }), /*#__PURE__*/_jsx(Redirect, {
212
- to: displayedSections[0].path
213
- })]
246
+ }), /*#__PURE__*/_jsx(HandoffMessage, {}), sections.length > 1 && /*#__PURE__*/_jsx(ResetHeaderData, {}), /*#__PURE__*/_jsx("div", {
247
+ className: "newspack-wizard__main",
248
+ children: /*#__PURE__*/_jsxs(Switch, {
249
+ children: [routedSections.map(function (section, index) {
250
+ var _section$exact;
251
+ var SectionComponent = section.render;
252
+ var sectionProps = section.props || {};
253
+ return /*#__PURE__*/_jsx(Route, {
254
+ exact: (_section$exact = section.exact) !== null && _section$exact !== void 0 ? _section$exact : false,
255
+ path: section.path,
256
+ render: function render(routerProps) {
257
+ return /*#__PURE__*/_jsxs("div", {
258
+ className: classnames('newspack-wizard__content', className, {
259
+ 'newspack-wizard__content--full-width': section.fullWidth
260
+ }),
261
+ children: ['function' === typeof renderAboveSections ? renderAboveSections() : null, (sectionTitle || section.title) && /*#__PURE__*/_jsx(SectionHeader, {
262
+ className: "newspack-wizard__section-header",
263
+ backNav: backNav || section.backNav,
264
+ title: sectionTitle || section.title,
265
+ description: sectionDescription || section.description,
266
+ badges: badges || section.badges,
267
+ menu: sectionMenu || section.menu,
268
+ primaryAction: sectionPrimaryAction || section.primaryAction,
269
+ secondaryAction: sectionSecondaryAction || section.secondaryAction,
270
+ heading: 1,
271
+ noMargin: true
272
+ }), /*#__PURE__*/_jsx(SectionComponent, _objectSpread(_objectSpread(_objectSpread({}, routerProps), sectionProps), sharedProps))]
273
+ });
274
+ }
275
+ }, index);
276
+ }), /*#__PURE__*/_jsx(Redirect, {
277
+ to: displayedSections[0].path
278
+ })]
279
+ })
214
280
  })]
215
- }), notices?.length > 0 && notices.map((notice, index) => /*#__PURE__*/_jsx(WizardSnackbar, {
216
- type: notice.type,
217
- id: notice.id,
218
- actions: notice.actions,
219
- children: notice.message
220
- }, notice.id || index))]
281
+ }), (notices === null || notices === void 0 ? void 0 : notices.length) > 0 && notices.map(function (notice, index) {
282
+ return /*#__PURE__*/_jsx(WizardSnackbar, {
283
+ type: notice.type,
284
+ id: notice.id,
285
+ actions: notice.actions,
286
+ children: notice.message
287
+ }, notice.id || index);
288
+ })]
221
289
  }), !isLoading && /*#__PURE__*/_jsx(Footer, {
222
290
  simple: hasSimpleFooter
223
291
  })]