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
@@ -4,7 +4,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
7
+ exports["default"] = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
8
10
  var _classnames = _interopRequireDefault(require("classnames"));
9
11
  var _components = require("@wordpress/components");
10
12
  var _data = require("@wordpress/data");
@@ -17,38 +19,49 @@ var _store = _interopRequireWildcard(require("./store"));
17
19
  var _WizardSnackbar = _interopRequireDefault(require("./components/WizardSnackbar"));
18
20
  var _WizardError = _interopRequireDefault(require("./components/WizardError"));
19
21
  var _jsxRuntime = require("react/jsx-runtime");
20
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
21
- /**
22
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
23
+ 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; }
24
+ 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) { (0, _defineProperty2["default"])(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; } /**
22
25
  * External dependencies.
23
- */
24
-
25
- /**
26
+ */ /**
26
27
  * WordPress dependencies.
28
+ */ /**
29
+ * Internal dependencies
27
30
  */
31
+ (0, _store["default"])();
28
32
 
29
33
  /**
30
- * Internal dependencies
34
+ * Icon registry for resolving icon name strings passed through the data store.
35
+ * React elements from @wordpress/icons can't cross webpack entry point boundaries
36
+ * because each bundle has its own copy of the icon primitives.
31
37
  */
32
-
33
- (0, _store.default)();
34
- const {
35
- HashRouter,
36
- Redirect,
37
- Route,
38
- Switch,
39
- useLocation
40
- } = _router.default;
38
+ var ICON_REGISTRY = {
39
+ chevronLeft: _icons.chevronLeft,
40
+ category: _icons.category,
41
+ moreVertical: _icons.moreVertical
42
+ };
43
+ var resolveIcon = function resolveIcon(icon) {
44
+ if (typeof icon === 'string') {
45
+ return ICON_REGISTRY[icon] || null;
46
+ }
47
+ return icon;
48
+ };
49
+ var HashRouter = _router["default"].HashRouter,
50
+ Redirect = _router["default"].Redirect,
51
+ Route = _router["default"].Route,
52
+ Switch = _router["default"].Switch,
53
+ useLocation = _router["default"].useLocation;
41
54
 
42
55
  /**
43
56
  * Reset the header data when a new section is rendered.
44
57
  */
45
- const ResetHeaderData = () => {
46
- const location = useLocation();
47
- const {
48
- resetHeaderData
49
- } = (0, _data.useDispatch)(_store.WIZARD_STORE_NAMESPACE);
50
- (0, _element.useEffect)(() => {
58
+ var ResetHeaderData = function ResetHeaderData() {
59
+ var location = useLocation();
60
+ var _useDispatch = (0, _data.useDispatch)(_store.WIZARD_STORE_NAMESPACE),
61
+ resetHeaderData = _useDispatch.resetHeaderData;
62
+ (0, _element.useEffect)(function () {
51
63
  resetHeaderData();
64
+ window.scrollTo(0, 0);
52
65
  }, [location.pathname, resetHeaderData]);
53
66
  return null;
54
67
  };
@@ -74,58 +87,87 @@ const ResetHeaderData = () => {
74
87
  * @param {WizardProps} props
75
88
  * @return {JSX.Element} Wizard component
76
89
  */
77
- const Wizard = ({
78
- sections = [],
79
- headerText,
80
- apiSlug,
81
- sharedProps = {},
82
- subHeaderText,
83
- hasSimpleFooter,
84
- className,
85
- renderAboveSections,
86
- requiredPlugins = [],
87
- isInitialFetchTriggered = true,
88
- fixedHeader = false
89
- }, ref) => {
90
- const isLoading = (0, _data.useSelect)(select => select(_store.WIZARD_STORE_NAMESPACE).isLoading());
91
- const isQuietLoading = (0, _data.useSelect)(select => select(_store.WIZARD_STORE_NAMESPACE).isQuietLoading());
92
- const headerData = (0, _data.useSelect)(select => select(_store.WIZARD_STORE_NAMESPACE).getHeaderData());
93
- const notices = (0, _data.useSelect)(select => select(_store.WIZARD_STORE_NAMESPACE).getNotices());
94
- const {
95
- actions,
96
- backNav,
97
- badges,
98
- sectionDescription,
99
- sectionName,
100
- sectionTitle,
101
- sectionPrimaryAction,
102
- sectionSecondaryAction
103
- } = headerData;
104
- const mainActions = actions?.filter(action => action.type === 'primary' || action.type === 'secondary');
105
- const moreActions = actions?.filter(action => action.type === 'more');
90
+ var Wizard = function Wizard(_ref, ref) {
91
+ var _ref$sections = _ref.sections,
92
+ sections = _ref$sections === void 0 ? [] : _ref$sections,
93
+ headerText = _ref.headerText,
94
+ apiSlug = _ref.apiSlug,
95
+ _ref$sharedProps = _ref.sharedProps,
96
+ sharedProps = _ref$sharedProps === void 0 ? {} : _ref$sharedProps,
97
+ subHeaderText = _ref.subHeaderText,
98
+ hasSimpleFooter = _ref.hasSimpleFooter,
99
+ className = _ref.className,
100
+ renderAboveSections = _ref.renderAboveSections,
101
+ _ref$requiredPlugins = _ref.requiredPlugins,
102
+ requiredPlugins = _ref$requiredPlugins === void 0 ? [] : _ref$requiredPlugins,
103
+ _ref$isInitialFetchTr = _ref.isInitialFetchTriggered,
104
+ isInitialFetchTriggered = _ref$isInitialFetchTr === void 0 ? true : _ref$isInitialFetchTr,
105
+ _ref$fixedHeader = _ref.fixedHeader,
106
+ fixedHeader = _ref$fixedHeader === void 0 ? false : _ref$fixedHeader;
107
+ var isLoading = (0, _data.useSelect)(function (select) {
108
+ return select(_store.WIZARD_STORE_NAMESPACE).isLoading();
109
+ });
110
+ var isQuietLoading = (0, _data.useSelect)(function (select) {
111
+ return select(_store.WIZARD_STORE_NAMESPACE).isQuietLoading();
112
+ });
113
+ var headerData = (0, _data.useSelect)(function (select) {
114
+ return select(_store.WIZARD_STORE_NAMESPACE).getHeaderData();
115
+ });
116
+ var notices = (0, _data.useSelect)(function (select) {
117
+ return select(_store.WIZARD_STORE_NAMESPACE).getNotices();
118
+ });
119
+ var actions = headerData.actions,
120
+ backNav = headerData.backNav,
121
+ badges = headerData.badges,
122
+ sectionDescription = headerData.sectionDescription,
123
+ sectionMenu = headerData.sectionMenu,
124
+ sectionName = headerData.sectionName,
125
+ sectionTitle = headerData.sectionTitle,
126
+ sectionPrimaryAction = headerData.sectionPrimaryAction,
127
+ sectionSecondaryAction = headerData.sectionSecondaryAction;
128
+ var mainActions = actions === null || actions === void 0 ? void 0 : actions.filter(function (action) {
129
+ return action.type === 'primary' || action.type === 'secondary';
130
+ });
131
+ var moreActions = actions === null || actions === void 0 ? void 0 : actions.filter(function (action) {
132
+ return action.type === 'more';
133
+ });
106
134
 
107
135
  // Trigger initial data fetch. Some sections might not use the wizard data,
108
136
  // but for consistency, fetching is triggered regardless of the section.
109
- (0, _data.useSelect)(select => isInitialFetchTriggered && select(_store.WIZARD_STORE_NAMESPACE).getWizardAPIData(apiSlug));
110
- let displayedSections = sections.filter(section => !section.isHidden);
111
- const [pluginRequirementsSatisfied, setPluginRequirementsSatisfied] = (0, _element.useState)(requiredPlugins.length === 0);
137
+ (0, _data.useSelect)(function (select) {
138
+ return isInitialFetchTriggered && select(_store.WIZARD_STORE_NAMESPACE).getWizardAPIData(apiSlug);
139
+ });
140
+ var displayedSections = sections.filter(function (section) {
141
+ return !section.isHidden;
142
+ });
143
+ var _useState = (0, _element.useState)(requiredPlugins.length === 0),
144
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
145
+ pluginRequirementsSatisfied = _useState2[0],
146
+ setPluginRequirementsSatisfied = _useState2[1];
112
147
  if (!pluginRequirementsSatisfied) {
113
148
  headerText = requiredPlugins.length > 1 ? (0, _i18n.__)('Required plugins', 'newspack-plugin') : (0, _i18n.__)('Required plugin', 'newspack-plugin');
114
149
  displayedSections = [{
115
150
  path: '/',
116
- render: () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_.PluginInstaller, {
117
- plugins: requiredPlugins,
118
- onStatus: ({
119
- complete
120
- }) => setPluginRequirementsSatisfied(complete)
121
- })
151
+ render: function render() {
152
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_.PluginInstaller, {
153
+ plugins: requiredPlugins,
154
+ onStatus: function onStatus(_ref2) {
155
+ var complete = _ref2.complete;
156
+ return setPluginRequirementsSatisfied(complete);
157
+ }
158
+ });
159
+ }
122
160
  }];
123
161
  }
124
- const urlWithoutHash = window.location.href.split('#')[0];
162
+
163
+ // When plugins are required but not yet satisfied, `displayedSections` is replaced with
164
+ // the PluginInstaller. Use it for routing so the installer actually mounts and runs.
165
+ var routedSections = pluginRequirementsSatisfied ? sections : displayedSections;
166
+ var urlWithoutHash = window.location.href.split('#')[0];
125
167
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
126
168
  ref: ref,
127
169
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
128
- className: (0, _classnames.default)(isLoading ? 'newspack-wizard__is-loading' : 'newspack-wizard__is-loaded', {
170
+ className: (0, _classnames["default"])(isLoading ? 'newspack-wizard__is-loading' : 'newspack-wizard__is-loaded', {
129
171
  'newspack-wizard__is-loading-quiet': isQuietLoading,
130
172
  'newspack-wizard__fixed-header': fixedHeader
131
173
  }),
@@ -166,70 +208,90 @@ const Wizard = ({
166
208
  })]
167
209
  })]
168
210
  })
169
- }), actions?.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
211
+ }), (actions === null || actions === void 0 ? void 0 : actions.length) > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
170
212
  className: "newspack-wizard__header__actions",
171
- children: [mainActions.map((action, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
172
- icon: action.icon,
173
- variant: action.type,
174
- onClick: action.action,
175
- disabled: action.disabled || false,
176
- isDestructive: action.destructive || false,
177
- children: action.label
178
- }, index)), moreActions.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DropdownMenu, {
179
- icon: _icons.moreVertical,
180
- label: (0, _i18n.__)('More', 'newspack-plugin'),
181
- children: () => moreActions.map((action, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, {
182
- icon: action.icon,
213
+ children: [mainActions.map(function (action, index) {
214
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
215
+ className: "newspack-wizard__header__actions__main",
216
+ href: action.href,
217
+ icon: resolveIcon(action.icon),
218
+ variant: action.type,
183
219
  onClick: action.action,
184
220
  disabled: action.disabled || false,
185
221
  isDestructive: action.destructive || false,
186
222
  children: action.label
187
- }, index))
223
+ }, index);
224
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DropdownMenu, {
225
+ className: (moreActions === null || moreActions === void 0 ? void 0 : moreActions.length) === 0 ? 'newspack-wizard__header__actions__more--primary-only' : '',
226
+ icon: _icons.moreVertical,
227
+ label: (0, _i18n.__)('More', 'newspack-plugin'),
228
+ popoverProps: {
229
+ className: 'newspack-wizard__header__actions__more'
230
+ },
231
+ children: function children() {
232
+ return actions.map(function (action, index) {
233
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, {
234
+ className: action.type === 'primary' || action.type === 'secondary' ? 'newspack-wizard__header__actions__more__main' : 'newspack-wizard__header__actions__more__more',
235
+ icon: action.icon,
236
+ href: action.href,
237
+ onClick: action.action,
238
+ disabled: action.disabled || false,
239
+ isDestructive: action.destructive || false,
240
+ children: action.label
241
+ }, index);
242
+ });
243
+ }
188
244
  })]
189
245
  })]
190
246
  }), displayedSections.length > 1 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.TabbedNavigation, {
191
247
  items: displayedSections,
192
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_WizardError.default, {})
193
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.HandoffMessage, {}), sections.length > 1 && /*#__PURE__*/(0, _jsxRuntime.jsx)(ResetHeaderData, {}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(Switch, {
194
- children: [sections.map((section, index) => {
195
- var _section$exact;
196
- const SectionComponent = section.render;
197
- const sectionProps = section.props || {};
198
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(Route, {
199
- exact: (_section$exact = section.exact) !== null && _section$exact !== void 0 ? _section$exact : false,
200
- path: section.path,
201
- render: routerProps => /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
202
- className: (0, _classnames.default)('newspack-wizard__content', className),
203
- children: ['function' === typeof renderAboveSections ? renderAboveSections() : null, (sectionTitle || section.title) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.SectionHeader, {
204
- className: "newspack-wizard__section-header",
205
- backNav: backNav || section.backNav,
206
- title: sectionTitle || section.title,
207
- description: sectionDescription || section.description,
208
- badges: badges || section.badges,
209
- primaryAction: sectionPrimaryAction || section.primaryAction,
210
- secondaryAction: sectionSecondaryAction || section.secondaryAction,
211
- heading: 1,
212
- noMargin: true
213
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(SectionComponent, {
214
- ...routerProps,
215
- ...sectionProps,
216
- ...sharedProps
217
- })]
218
- })
219
- }, index);
220
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Redirect, {
221
- to: displayedSections[0].path
222
- })]
248
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_WizardError["default"], {})
249
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.HandoffMessage, {}), sections.length > 1 && /*#__PURE__*/(0, _jsxRuntime.jsx)(ResetHeaderData, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
250
+ className: "newspack-wizard__main",
251
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(Switch, {
252
+ children: [routedSections.map(function (section, index) {
253
+ var _section$exact;
254
+ var SectionComponent = section.render;
255
+ var sectionProps = section.props || {};
256
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Route, {
257
+ exact: (_section$exact = section.exact) !== null && _section$exact !== void 0 ? _section$exact : false,
258
+ path: section.path,
259
+ render: function render(routerProps) {
260
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
261
+ className: (0, _classnames["default"])('newspack-wizard__content', className, {
262
+ 'newspack-wizard__content--full-width': section.fullWidth
263
+ }),
264
+ children: ['function' === typeof renderAboveSections ? renderAboveSections() : null, (sectionTitle || section.title) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.SectionHeader, {
265
+ className: "newspack-wizard__section-header",
266
+ backNav: backNav || section.backNav,
267
+ title: sectionTitle || section.title,
268
+ description: sectionDescription || section.description,
269
+ badges: badges || section.badges,
270
+ menu: sectionMenu || section.menu,
271
+ primaryAction: sectionPrimaryAction || section.primaryAction,
272
+ secondaryAction: sectionSecondaryAction || section.secondaryAction,
273
+ heading: 1,
274
+ noMargin: true
275
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(SectionComponent, _objectSpread(_objectSpread(_objectSpread({}, routerProps), sectionProps), sharedProps))]
276
+ });
277
+ }
278
+ }, index);
279
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Redirect, {
280
+ to: displayedSections[0].path
281
+ })]
282
+ })
223
283
  })]
224
- }), notices?.length > 0 && notices.map((notice, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_WizardSnackbar.default, {
225
- type: notice.type,
226
- id: notice.id,
227
- actions: notice.actions,
228
- children: notice.message
229
- }, notice.id || index))]
284
+ }), (notices === null || notices === void 0 ? void 0 : notices.length) > 0 && notices.map(function (notice, index) {
285
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_WizardSnackbar["default"], {
286
+ type: notice.type,
287
+ id: notice.id,
288
+ actions: notice.actions,
289
+ children: notice.message
290
+ }, notice.id || index);
291
+ })]
230
292
  }), !isLoading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Footer, {
231
293
  simple: hasSimpleFooter
232
294
  })]
233
295
  });
234
296
  };
235
- var _default = exports.default = (0, _element.forwardRef)(Wizard);
297
+ var _default = exports["default"] = (0, _element.forwardRef)(Wizard);