newspack-components 4.3.0 → 4.4.0-epic-editor-refactor.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 (262) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/DEVELOPMENT.md +868 -0
  3. package/copy-styles.js +3 -2
  4. package/dist/cjs/accordion/index.js +17 -12
  5. package/dist/cjs/action-card/index.js +176 -139
  6. package/dist/cjs/autocomplete-tokenfield/index.js +254 -234
  7. package/dist/cjs/autocomplete-with-latest-posts/index.js +172 -110
  8. package/dist/cjs/autocomplete-with-suggestions/index.js +229 -126
  9. package/dist/cjs/badge/index.js +7 -7
  10. package/dist/cjs/box-contrast/index.js +19 -15
  11. package/dist/cjs/button/index.js +41 -26
  12. package/dist/cjs/button-props/button-props.js +5 -5
  13. package/dist/cjs/button-props/index.js +2 -2
  14. package/dist/cjs/card/core-card.js +110 -52
  15. package/dist/cjs/card/index.js +74 -67
  16. package/dist/cjs/card/style-core.scss +93 -25
  17. package/dist/cjs/card/style.scss +2 -2
  18. package/dist/cjs/card-feature/index.js +141 -0
  19. package/dist/cjs/card-feature/style.scss +75 -0
  20. package/dist/cjs/card-form/index.js +144 -0
  21. package/dist/cjs/card-form/style.scss +20 -0
  22. package/dist/cjs/card-settings-group/index.js +36 -16
  23. package/dist/cjs/card-sortable-list/index.js +176 -140
  24. package/dist/cjs/category-autocomplete/index.js +175 -155
  25. package/dist/cjs/color-picker/index.js +41 -23
  26. package/dist/cjs/color-picker/index.test.js +82 -0
  27. package/dist/cjs/color-picker/style.scss +11 -13
  28. package/dist/cjs/confirm-dialog/index.js +86 -22
  29. package/dist/cjs/consts.js +1 -1
  30. package/dist/cjs/custom-select-control/index.js +39 -28
  31. package/dist/cjs/dataviews/index.js +38 -0
  32. package/dist/cjs/dataviews/style.scss +9 -0
  33. package/dist/cjs/divider/index.js +26 -21
  34. package/dist/cjs/footer/index.js +36 -30
  35. package/dist/cjs/form-token-field/index.js +51 -40
  36. package/dist/cjs/global-notices/index.js +5 -5
  37. package/dist/cjs/grid/index.js +25 -19
  38. package/dist/cjs/grid/style.scss +6 -1
  39. package/dist/cjs/handoff/index.js +204 -156
  40. package/dist/cjs/handoff-message/index.js +12 -7
  41. package/dist/cjs/hooks/index.js +10 -8
  42. package/dist/cjs/hooks/use-confirm-dialog.js +79 -0
  43. package/dist/cjs/hooks/use-unsaved-changes-dialog.js +144 -0
  44. package/dist/cjs/hooks/useObjectState.js +21 -12
  45. package/dist/cjs/hooks/useObjectState.test.js +55 -33
  46. package/dist/cjs/hooks/useOnClickOutside.js +6 -6
  47. package/dist/cjs/hooks/usePrompt.js +10 -13
  48. package/dist/cjs/image-upload/index.js +114 -123
  49. package/dist/cjs/image-upload/index.test.js +11 -13
  50. package/dist/cjs/image-upload/style.scss +12 -40
  51. package/dist/cjs/index.js +136 -104
  52. package/dist/cjs/info-button/index.js +43 -32
  53. package/dist/cjs/integration-icons/active-campaign.js +22 -0
  54. package/dist/cjs/integration-icons/constant-contact.js +28 -0
  55. package/dist/cjs/integration-icons/fundraise-up.js +25 -0
  56. package/dist/cjs/integration-icons/index.js +48 -0
  57. package/dist/cjs/integration-icons/mailchimp.js +19 -0
  58. package/dist/cjs/integration-icons/salesforce.js +17 -0
  59. package/dist/cjs/integration-icons/wisepops.js +20 -0
  60. package/dist/cjs/modal/index.js +22 -19
  61. package/dist/cjs/modal/style.scss +4 -0
  62. package/dist/cjs/newspack-icon/index.js +45 -38
  63. package/dist/cjs/notice/index.js +64 -55
  64. package/dist/cjs/plugin-installer/index.js +259 -253
  65. package/dist/cjs/plugin-settings/SettingsSection.js +66 -60
  66. package/dist/cjs/plugin-settings/index.js +217 -200
  67. package/dist/cjs/plugin-toggle/index.js +192 -199
  68. package/dist/cjs/popover/index.js +41 -28
  69. package/dist/cjs/position-control/index.js +24 -23
  70. package/dist/cjs/progress-bar/index.js +71 -59
  71. package/dist/cjs/progress-bar/index.test.js +62 -68
  72. package/dist/cjs/proxied-imports/router.js +3 -3
  73. package/dist/cjs/radio-control/index.js +40 -27
  74. package/dist/cjs/section-header/index.js +103 -58
  75. package/dist/cjs/section-header/style.scss +31 -11
  76. package/dist/cjs/select-control/ButtonGroupControl.js +26 -21
  77. package/dist/cjs/select-control/GroupedSelectControl.js +41 -35
  78. package/dist/cjs/select-control/index.js +52 -40
  79. package/dist/cjs/settings/MinMaxSetting.js +30 -20
  80. package/dist/cjs/settings/SettingsCard.js +20 -17
  81. package/dist/cjs/settings/SettingsSection.js +22 -21
  82. package/dist/cjs/settings/index.js +5 -5
  83. package/dist/cjs/sortable-newsletter-list-control/index.js +78 -57
  84. package/dist/cjs/steps-list/index.js +44 -34
  85. package/dist/cjs/steps-list-item/index.js +47 -39
  86. package/dist/cjs/style-card/index.js +70 -63
  87. package/dist/cjs/tabbed-navigation/index.js +38 -36
  88. package/dist/cjs/text-control/index.js +27 -25
  89. package/dist/cjs/utils/color.js +4 -4
  90. package/dist/cjs/utils/editor-toolbar-back-button.js +61 -0
  91. package/dist/cjs/utils/index.js +31 -19
  92. package/dist/cjs/utils/style.scss +8 -0
  93. package/dist/cjs/waiting/index.js +48 -37
  94. package/dist/cjs/web-preview/index.js +217 -211
  95. package/dist/cjs/with-wizard/index.js +362 -364
  96. package/dist/cjs/with-wizard/style.scss +4 -54
  97. package/dist/cjs/with-wizard-screen/index.js +54 -58
  98. package/dist/cjs/with-wizard-screen/style.scss +41 -3
  99. package/dist/cjs/wizard/components/WizardError.js +20 -18
  100. package/dist/cjs/wizard/components/WizardSnackbar.js +26 -23
  101. package/dist/cjs/wizard/index.js +176 -114
  102. package/dist/cjs/wizard/store/index.js +171 -123
  103. package/dist/cjs/wizard/store/utils.js +13 -8
  104. package/dist/esm/accordion/index.js +14 -9
  105. package/dist/esm/action-card/index.js +168 -123
  106. package/dist/esm/autocomplete-tokenfield/index.js +248 -222
  107. package/dist/esm/autocomplete-with-latest-posts/index.js +169 -103
  108. package/dist/esm/autocomplete-with-suggestions/index.js +226 -119
  109. package/dist/esm/badge/index.js +5 -5
  110. package/dist/esm/box-contrast/index.js +15 -11
  111. package/dist/esm/button/index.js +39 -21
  112. package/dist/esm/button-props/button-props.js +1 -1
  113. package/dist/esm/card/core-card.js +109 -47
  114. package/dist/esm/card/index.js +69 -54
  115. package/dist/esm/card/style-core.scss +93 -25
  116. package/dist/esm/card/style.scss +2 -2
  117. package/dist/esm/card-feature/index.js +131 -0
  118. package/dist/esm/card-feature/style.scss +75 -0
  119. package/dist/esm/card-form/index.js +134 -0
  120. package/dist/esm/card-form/style.scss +20 -0
  121. package/dist/esm/card-settings-group/index.js +33 -14
  122. package/dist/esm/card-sortable-list/index.js +170 -126
  123. package/dist/esm/category-autocomplete/index.js +168 -140
  124. package/dist/esm/color-picker/index.js +39 -21
  125. package/dist/esm/color-picker/index.test.js +78 -0
  126. package/dist/esm/color-picker/style.scss +11 -13
  127. package/dist/esm/confirm-dialog/index.js +85 -18
  128. package/dist/esm/consts.js +1 -1
  129. package/dist/esm/custom-select-control/index.js +34 -15
  130. package/dist/esm/dataviews/index.js +34 -0
  131. package/dist/esm/dataviews/style.scss +9 -0
  132. package/dist/esm/divider/index.js +24 -16
  133. package/dist/esm/footer/index.js +34 -28
  134. package/dist/esm/form-token-field/index.js +46 -27
  135. package/dist/esm/global-notices/index.js +3 -3
  136. package/dist/esm/grid/index.js +23 -14
  137. package/dist/esm/grid/style.scss +6 -1
  138. package/dist/esm/handoff/index.js +199 -143
  139. package/dist/esm/handoff-message/index.js +10 -6
  140. package/dist/esm/hooks/index.js +8 -6
  141. package/dist/esm/hooks/use-confirm-dialog.js +73 -0
  142. package/dist/esm/hooks/use-unsaved-changes-dialog.js +136 -0
  143. package/dist/esm/hooks/useObjectState.js +19 -9
  144. package/dist/esm/hooks/useObjectState.test.js +54 -32
  145. package/dist/esm/hooks/useOnClickOutside.js +4 -4
  146. package/dist/esm/hooks/usePrompt.js +9 -11
  147. package/dist/esm/image-upload/index.js +110 -111
  148. package/dist/esm/image-upload/index.test.js +11 -13
  149. package/dist/esm/image-upload/style.scss +12 -40
  150. package/dist/esm/index.js +7 -1
  151. package/dist/esm/info-button/index.js +38 -19
  152. package/dist/esm/integration-icons/active-campaign.js +16 -0
  153. package/dist/esm/integration-icons/constant-contact.js +22 -0
  154. package/dist/esm/integration-icons/fundraise-up.js +19 -0
  155. package/dist/esm/integration-icons/index.js +6 -0
  156. package/dist/esm/integration-icons/mailchimp.js +13 -0
  157. package/dist/esm/integration-icons/salesforce.js +11 -0
  158. package/dist/esm/integration-icons/wisepops.js +14 -0
  159. package/dist/esm/modal/index.js +20 -13
  160. package/dist/esm/modal/style.scss +4 -0
  161. package/dist/esm/newspack-icon/index.js +40 -25
  162. package/dist/esm/notice/index.js +59 -42
  163. package/dist/esm/plugin-installer/index.js +255 -243
  164. package/dist/esm/plugin-settings/SettingsSection.js +61 -50
  165. package/dist/esm/plugin-settings/index.js +212 -189
  166. package/dist/esm/plugin-toggle/index.js +187 -190
  167. package/dist/esm/popover/index.js +35 -16
  168. package/dist/esm/position-control/index.js +22 -18
  169. package/dist/esm/progress-bar/index.js +66 -49
  170. package/dist/esm/progress-bar/index.test.js +61 -67
  171. package/dist/esm/radio-control/index.js +34 -15
  172. package/dist/esm/section-header/index.js +102 -57
  173. package/dist/esm/section-header/style.scss +31 -11
  174. package/dist/esm/select-control/ButtonGroupControl.js +23 -18
  175. package/dist/esm/select-control/GroupedSelectControl.js +38 -30
  176. package/dist/esm/select-control/index.js +47 -27
  177. package/dist/esm/settings/MinMaxSetting.js +27 -16
  178. package/dist/esm/settings/SettingsCard.js +18 -13
  179. package/dist/esm/settings/SettingsSection.js +20 -19
  180. package/dist/esm/settings/index.js +3 -3
  181. package/dist/esm/sortable-newsletter-list-control/index.js +74 -53
  182. package/dist/esm/steps-list/index.js +39 -21
  183. package/dist/esm/steps-list-item/index.js +42 -26
  184. package/dist/esm/style-card/index.js +65 -50
  185. package/dist/esm/tabbed-navigation/index.js +35 -33
  186. package/dist/esm/text-control/index.js +25 -19
  187. package/dist/esm/utils/color.js +4 -4
  188. package/dist/esm/utils/editor-toolbar-back-button.js +53 -0
  189. package/dist/esm/utils/index.js +29 -16
  190. package/dist/esm/utils/style.scss +8 -0
  191. package/dist/esm/waiting/index.js +43 -24
  192. package/dist/esm/web-preview/index.js +213 -201
  193. package/dist/esm/with-wizard/index.js +360 -358
  194. package/dist/esm/with-wizard/style.scss +4 -54
  195. package/dist/esm/with-wizard-screen/index.js +48 -46
  196. package/dist/esm/with-wizard-screen/style.scss +41 -3
  197. package/dist/esm/wizard/components/WizardError.js +18 -16
  198. package/dist/esm/wizard/components/WizardSnackbar.js +23 -17
  199. package/dist/esm/wizard/index.js +171 -103
  200. package/dist/esm/wizard/store/index.js +169 -116
  201. package/dist/esm/wizard/store/utils.js +13 -6
  202. package/package.json +30 -16
  203. package/release.config.js +1 -0
  204. package/shared/hooks/use-coauthors.js +195 -27
  205. package/shared/hooks/use-coauthors.test.js +232 -6
  206. package/shared/scss/_mixins.scss +13 -5
  207. package/src/accordion/index.js +8 -7
  208. package/src/action-card/index.js +15 -1
  209. package/src/badge/index.tsx +3 -1
  210. package/src/card/core-card.js +95 -18
  211. package/src/card/index.js +1 -0
  212. package/src/card/style-core.scss +93 -25
  213. package/src/card/style.scss +2 -2
  214. package/src/card-feature/README.md +188 -0
  215. package/src/card-feature/index.tsx +186 -0
  216. package/src/card-feature/style.scss +75 -0
  217. package/src/card-form/README.md +113 -0
  218. package/src/card-form/index.tsx +128 -0
  219. package/src/card-form/style.scss +20 -0
  220. package/src/card-settings-group/index.tsx +28 -3
  221. package/src/card-sortable-list/index.tsx +27 -4
  222. package/src/color-picker/index.js +15 -8
  223. package/src/color-picker/index.test.js +52 -0
  224. package/src/color-picker/style.scss +11 -13
  225. package/src/confirm-dialog/README.md +128 -0
  226. package/src/confirm-dialog/index.tsx +74 -6
  227. package/src/dataviews/index.tsx +34 -0
  228. package/src/dataviews/style.scss +9 -0
  229. package/src/grid/style.scss +6 -1
  230. package/src/handoff/README.md +93 -0
  231. package/src/handoff/index.js +46 -8
  232. package/src/hooks/index.ts +2 -1
  233. package/src/hooks/use-confirm-dialog.tsx +80 -0
  234. package/src/hooks/use-unsaved-changes-dialog.tsx +140 -0
  235. package/src/image-upload/index.js +10 -15
  236. package/src/image-upload/style.scss +12 -40
  237. package/src/index.js +7 -1
  238. package/src/integration-icons/active-campaign.js +14 -0
  239. package/src/integration-icons/constant-contact.js +22 -0
  240. package/src/integration-icons/fundraise-up.js +18 -0
  241. package/src/integration-icons/index.js +6 -0
  242. package/src/integration-icons/mailchimp.js +10 -0
  243. package/src/integration-icons/salesforce.js +10 -0
  244. package/src/integration-icons/wisepops.js +14 -0
  245. package/src/modal/style.scss +4 -0
  246. package/src/plugin-installer/index.js +30 -19
  247. package/src/section-header/index.js +56 -24
  248. package/src/section-header/style.scss +31 -11
  249. package/src/select-control/index.js +4 -0
  250. package/src/utils/editor-toolbar-back-button.tsx +48 -0
  251. package/src/utils/index.js +6 -0
  252. package/src/utils/style.scss +8 -0
  253. package/src/with-wizard/style.scss +4 -54
  254. package/src/with-wizard-screen/style.scss +41 -3
  255. package/src/wizard/index.js +90 -53
  256. package/src/wizard/store/index.js +2 -2
  257. package/dist/cjs/button-card/index.js +0 -72
  258. package/dist/cjs/button-card/style.scss +0 -180
  259. package/dist/esm/button-card/index.js +0 -64
  260. package/dist/esm/button-card/style.scss +0 -180
  261. package/src/button-card/index.js +0 -52
  262. 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);