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
@@ -117,6 +117,11 @@
117
117
  grid-template-columns: repeat(6, 1fr);
118
118
  }
119
119
 
120
+ // Columns 12
121
+ &__columns-12 {
122
+ grid-template-columns: repeat(12, 1fr);
123
+ }
124
+
120
125
  // Gutter 48
121
126
  &__gutter-48 {
122
127
  grid-gap: 48px;
@@ -217,4 +222,4 @@
217
222
  &__tbody + &__tbody {
218
223
  margin-top: -32px;
219
224
  }
220
- }
225
+ }
@@ -4,7 +4,14 @@ 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 _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
12
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
13
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
15
  var _apiFetch = _interopRequireDefault(require("@wordpress/api-fetch"));
9
16
  var _element = require("@wordpress/element");
10
17
  var _i18n = require("@wordpress/i18n");
@@ -12,172 +19,213 @@ var _ = require("../");
12
19
  var _assign = _interopRequireDefault(require("lodash/assign"));
13
20
  var _classnames = _interopRequireDefault(require("classnames"));
14
21
  var _jsxRuntime = require("react/jsx-runtime");
15
- /**
22
+ var _excluded = ["className", "children", "compact", "useModal", "modalTitle", "modalBody", "onReady", "editLink", "bannerText", "bannerButtonText", "url"];
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; }
25
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
26
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /**
16
27
  * Handoff
17
- */
18
-
19
- /**
28
+ */ /**
20
29
  * WordPress dependencies.
21
- */
22
-
23
- /**
30
+ */ /**
24
31
  * Internal dependencies.
25
- */
26
-
27
- /**
32
+ */ /**
28
33
  * External dependencies.
29
34
  */
30
-
31
- class Handoff extends _element.Component {
32
- constructor() {
33
- super(...arguments);
34
- this.state = {
35
+ var Handoff = /*#__PURE__*/function (_Component) {
36
+ function Handoff() {
37
+ var _this;
38
+ (0, _classCallCheck2["default"])(this, Handoff);
39
+ _this = _callSuper(this, Handoff, arguments);
40
+ (0, _defineProperty2["default"])(_this, "componentDidMount", function () {
41
+ _this._isMounted = true;
42
+ var _this$props = _this.props,
43
+ plugin = _this$props.plugin,
44
+ url = _this$props.url;
45
+ if (plugin && !url) {
46
+ _this.retrievePluginInfo(plugin);
47
+ }
48
+ });
49
+ (0, _defineProperty2["default"])(_this, "componentWillUnmount", function () {
50
+ _this._isMounted = false;
51
+ });
52
+ (0, _defineProperty2["default"])(_this, "retrievePluginInfo", function (plugin) {
53
+ var onReady = _this.props.onReady;
54
+ (0, _apiFetch["default"])({
55
+ path: '/newspack/v1/plugins/' + plugin
56
+ }).then(function (pluginInfo) {
57
+ if (_this._isMounted) {
58
+ onReady(pluginInfo);
59
+ _this.setState({
60
+ pluginInfo: pluginInfo
61
+ });
62
+ }
63
+ });
64
+ });
65
+ (0, _defineProperty2["default"])(_this, "textForPlugin", function (pluginInfo) {
66
+ var defaults = {
67
+ modalBody: null,
68
+ modalTitle: pluginInfo.Name && "".concat((0, _i18n.__)('Manage', 'newspack-plugin'), " ").concat(pluginInfo.Name),
69
+ primaryButton: pluginInfo.Name && "".concat((0, _i18n.__)('Manage', 'newspack-plugin'), " ").concat(pluginInfo.Name),
70
+ primaryModalButton: (0, _i18n.__)('Manage', 'newspack-plugin'),
71
+ dismissModalButton: (0, _i18n.__)('Dismiss', 'newspack-plugin')
72
+ };
73
+ return (0, _assign["default"])(defaults, _this.props);
74
+ });
75
+ (0, _defineProperty2["default"])(_this, "goToUrl", function () {
76
+ var _this$props2 = _this.props,
77
+ url = _this$props2.url,
78
+ showOnBlockEditor = _this$props2.showOnBlockEditor,
79
+ bannerText = _this$props2.bannerText,
80
+ bannerButtonText = _this$props2.bannerButtonText;
81
+ (0, _apiFetch["default"])({
82
+ path: '/newspack/v1/handoff',
83
+ method: 'POST',
84
+ data: {
85
+ destinationUrl: url,
86
+ handoffReturnUrl: window && window.location.href,
87
+ showOnBlockEditor: showOnBlockEditor ? true : false,
88
+ bannerText: bannerText,
89
+ bannerButtonText: bannerButtonText
90
+ }
91
+ }).then(function (response) {
92
+ window.location.href = response.HandoffLink;
93
+ });
94
+ });
95
+ (0, _defineProperty2["default"])(_this, "goToPlugin", function (plugin) {
96
+ var _this$props3 = _this.props,
97
+ editLink = _this$props3.editLink,
98
+ showOnBlockEditor = _this$props3.showOnBlockEditor,
99
+ bannerText = _this$props3.bannerText,
100
+ bannerButtonText = _this$props3.bannerButtonText;
101
+ (0, _apiFetch["default"])({
102
+ path: '/newspack/v1/plugins/' + plugin + '/handoff',
103
+ method: 'POST',
104
+ data: {
105
+ editLink: editLink,
106
+ handoffReturnUrl: window && window.location.href,
107
+ showOnBlockEditor: showOnBlockEditor ? true : false,
108
+ bannerText: bannerText,
109
+ bannerButtonText: bannerButtonText
110
+ }
111
+ }).then(function (response) {
112
+ window.location.href = response.HandoffLink;
113
+ });
114
+ });
115
+ _this.state = {
35
116
  pluginInfo: [],
36
117
  showModal: false
37
118
  };
119
+ return _this;
38
120
  }
39
- componentDidMount = () => {
40
- this._isMounted = true;
41
- const {
42
- plugin
43
- } = this.props;
44
- this.retrievePluginInfo(plugin);
45
- };
46
- componentWillUnmount = () => {
47
- this._isMounted = false;
48
- };
49
- retrievePluginInfo = plugin => {
50
- const {
51
- onReady
52
- } = this.props;
53
- (0, _apiFetch.default)({
54
- path: '/newspack/v1/plugins/' + plugin
55
- }).then(pluginInfo => {
56
- if (this._isMounted) {
57
- onReady(pluginInfo);
58
- this.setState({
59
- pluginInfo
60
- });
61
- }
62
- });
63
- };
64
- textForPlugin = pluginInfo => {
65
- const defaults = {
66
- modalBody: null,
67
- modalTitle: pluginInfo.Name && `${(0, _i18n.__)('Manage', 'newspack-plugin')} ${pluginInfo.Name}`,
68
- primaryButton: pluginInfo.Name && `${(0, _i18n.__)('Manage', 'newspack-plugin')} ${pluginInfo.Name}`,
69
- primaryModalButton: (0, _i18n.__)('Manage', 'newspack-plugin'),
70
- dismissModalButton: (0, _i18n.__)('Dismiss', 'newspack-plugin')
71
- };
72
- return (0, _assign.default)(defaults, this.props);
73
- };
74
- goToPlugin = plugin => {
75
- const {
76
- editLink,
77
- showOnBlockEditor
78
- } = this.props;
79
- (0, _apiFetch.default)({
80
- path: '/newspack/v1/plugins/' + plugin + '/handoff',
81
- method: 'POST',
82
- data: {
83
- editLink,
84
- handoffReturnUrl: window && window.location.href,
85
- showOnBlockEditor: showOnBlockEditor ? true : false
86
- }
87
- }).then(response => {
88
- window.location.href = response.HandoffLink;
89
- });
90
- };
91
-
92
- /**
93
- * Render.
94
- */
95
- render() {
96
- const {
97
- className,
98
- children,
99
- compact,
100
- useModal,
101
- // eslint-disable-next-line no-unused-vars,@typescript-eslint/no-unused-vars
102
- modalTitle: _modalTitle,
103
- // eslint-disable-next-line no-unused-vars,@typescript-eslint/no-unused-vars
104
- modalBody: _modalBody,
105
- // eslint-disable-next-line no-unused-vars,@typescript-eslint/no-unused-vars
106
- onReady,
107
- // eslint-disable-next-line no-unused-vars,@typescript-eslint/no-unused-vars
108
- editLink,
109
- ...otherProps
110
- } = this.props;
111
- const {
112
- pluginInfo,
113
- showModal
114
- } = this.state;
115
- const {
116
- modalBody,
117
- modalTitle,
118
- primaryButton,
119
- primaryModalButton,
120
- dismissModalButton
121
- } = this.textForPlugin(pluginInfo);
122
- const {
123
- Configured,
124
- Name,
125
- Slug,
126
- Status
127
- } = pluginInfo;
128
- const classes = (0, _classnames.default)(Configured && 'is-configured', className);
129
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_element.Fragment, {
130
- children: [Name && 'active' === Status && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
131
- className: classes,
132
- isSecondary: !otherProps.isPrimary && !otherProps.isTertiary && !otherProps.isLink,
133
- ...otherProps,
134
- onClick: () => useModal ? this.setState({
135
- showModal: true
136
- }) : this.goToPlugin(Slug),
137
- children: children ? children : primaryButton
138
- }), Name && 'active' !== Status && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
139
- className: classes,
140
- variant: "secondary",
141
- disabled: true,
142
- ...otherProps,
143
- children: Name + (0, _i18n.__)(' not installed', 'newspack-plugin')
144
- }), !Name && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
145
- className: classes,
146
- isSecondary: !otherProps.isPrimary && !otherProps.isTertiary && !otherProps.isLink,
147
- ...otherProps,
148
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_element.Fragment, {
149
- children: [!compact && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Waiting, {
150
- isLeft: true
151
- }), (0, _i18n.__)('Retrieving Plugin Info', 'newspack-plugin')]
152
- })
153
- }), showModal && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.Modal, {
154
- title: modalTitle,
155
- onRequestClose: () => this.setState({
156
- showModal: false
157
- }),
158
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
159
- children: modalBody
160
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.Card, {
161
- buttonsCard: true,
162
- noBorder: true,
163
- className: "justify-end",
164
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
165
- variant: "secondary",
166
- onClick: () => this.setState({
121
+ (0, _inherits2["default"])(Handoff, _Component);
122
+ return (0, _createClass2["default"])(Handoff, [{
123
+ key: "render",
124
+ value:
125
+ /**
126
+ * Render.
127
+ */
128
+ function render() {
129
+ var _this2 = this;
130
+ var _this$props4 = this.props,
131
+ className = _this$props4.className,
132
+ children = _this$props4.children,
133
+ compact = _this$props4.compact,
134
+ useModal = _this$props4.useModal,
135
+ _modalTitle = _this$props4.modalTitle,
136
+ _modalBody = _this$props4.modalBody,
137
+ onReady = _this$props4.onReady,
138
+ editLink = _this$props4.editLink,
139
+ bannerText = _this$props4.bannerText,
140
+ bannerButtonText = _this$props4.bannerButtonText,
141
+ url = _this$props4.url,
142
+ otherProps = (0, _objectWithoutProperties2["default"])(_this$props4, _excluded);
143
+ var _this$state = this.state,
144
+ pluginInfo = _this$state.pluginInfo,
145
+ showModal = _this$state.showModal;
146
+ var _this$textForPlugin = this.textForPlugin(pluginInfo),
147
+ modalBody = _this$textForPlugin.modalBody,
148
+ modalTitle = _this$textForPlugin.modalTitle,
149
+ primaryButton = _this$textForPlugin.primaryButton,
150
+ primaryModalButton = _this$textForPlugin.primaryModalButton,
151
+ dismissModalButton = _this$textForPlugin.dismissModalButton;
152
+ var Configured = pluginInfo.Configured,
153
+ Name = pluginInfo.Name,
154
+ Slug = pluginInfo.Slug,
155
+ Status = pluginInfo.Status;
156
+ var classes = (0, _classnames["default"])(Configured && 'is-configured', className);
157
+ var goTo = function goTo() {
158
+ return url ? _this2.goToUrl() : _this2.goToPlugin(Slug);
159
+ };
160
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_element.Fragment, {
161
+ children: [url && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, _objectSpread(_objectSpread({
162
+ className: classes,
163
+ isSecondary: !otherProps.isPrimary && !otherProps.isTertiary && !otherProps.isLink
164
+ }, otherProps), {}, {
165
+ onClick: function onClick() {
166
+ return useModal && children ? _this2.setState({
167
+ showModal: true
168
+ }) : goTo();
169
+ },
170
+ children: children ? children : primaryButton
171
+ })), !url && Name && 'active' === Status && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, _objectSpread(_objectSpread({
172
+ className: classes,
173
+ isSecondary: !otherProps.isPrimary && !otherProps.isTertiary && !otherProps.isLink
174
+ }, otherProps), {}, {
175
+ onClick: function onClick() {
176
+ return useModal ? _this2.setState({
177
+ showModal: true
178
+ }) : goTo();
179
+ },
180
+ children: children ? children : primaryButton
181
+ })), !url && Name && 'active' !== Status && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, _objectSpread(_objectSpread({
182
+ className: classes,
183
+ variant: "secondary",
184
+ disabled: true
185
+ }, otherProps), {}, {
186
+ children: Name + (0, _i18n.__)(' not installed', 'newspack-plugin')
187
+ })), !url && !Name && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, _objectSpread(_objectSpread({
188
+ className: classes,
189
+ isSecondary: !otherProps.isPrimary && !otherProps.isTertiary && !otherProps.isLink
190
+ }, otherProps), {}, {
191
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_element.Fragment, {
192
+ children: [!compact && /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Waiting, {
193
+ isLeft: true
194
+ }), (0, _i18n.__)('Retrieving Plugin Info', 'newspack-plugin')]
195
+ })
196
+ })), showModal && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.Modal, {
197
+ title: modalTitle,
198
+ onRequestClose: function onRequestClose() {
199
+ return _this2.setState({
167
200
  showModal: false
168
- }),
169
- children: dismissModalButton
170
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
171
- variant: "primary",
172
- onClick: () => this.goToPlugin(Slug),
173
- children: primaryModalButton
201
+ });
202
+ },
203
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
204
+ children: modalBody
205
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.Card, {
206
+ buttonsCard: true,
207
+ noBorder: true,
208
+ className: "justify-end",
209
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
210
+ variant: "secondary",
211
+ onClick: function onClick() {
212
+ return _this2.setState({
213
+ showModal: false
214
+ });
215
+ },
216
+ children: dismissModalButton
217
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Button, {
218
+ variant: "primary",
219
+ onClick: goTo,
220
+ children: primaryModalButton
221
+ })]
174
222
  })]
175
223
  })]
176
- })]
177
- });
178
- }
179
- }
224
+ });
225
+ }
226
+ }]);
227
+ }(_element.Component);
180
228
  Handoff.defaultProps = {
181
- onReady: () => {}
229
+ onReady: function onReady() {}
182
230
  };
183
- var _default = exports.default = Handoff;
231
+ var _default = exports["default"] = Handoff;
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.default = HandoffMessage;
7
+ exports["default"] = HandoffMessage;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
7
9
  var _element = require("@wordpress/element");
8
10
  var _consts = require("../consts");
9
11
  var _ = require("../");
@@ -19,19 +21,22 @@ var _jsxRuntime = require("react/jsx-runtime");
19
21
  /**
20
22
  * Handoff Message Component.
21
23
  */function HandoffMessage() {
22
- const [handoffMessage, setHandoffMessage] = (0, _element.useState)(false);
23
- (0, _element.useEffect)(() => {
24
+ var _useState = (0, _element.useState)(false),
25
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
26
+ handoffMessage = _useState2[0],
27
+ setHandoffMessage = _useState2[1];
28
+ (0, _element.useEffect)(function () {
24
29
  // Slight delay to allow for localStorage to be updated by RAS component.
25
- setTimeout(() => {
26
- const handoff = JSON.parse(localStorage.getItem(_consts.HANDOFF_KEY));
27
- if (handoff?.message) {
30
+ setTimeout(function () {
31
+ var handoff = JSON.parse(localStorage.getItem(_consts.HANDOFF_KEY));
32
+ if (handoff !== null && handoff !== void 0 && handoff.message) {
28
33
  setHandoffMessage(handoff.message);
29
34
  } else {
30
35
  setHandoffMessage(false);
31
36
  }
32
37
 
33
38
  // Clean up the notification if navigating away from the relevant page.
34
- if (handoff?.url && -1 === window.location.href.indexOf(handoff.url)) {
39
+ if (handoff !== null && handoff !== void 0 && handoff.url && -1 === window.location.href.indexOf(handoff.url)) {
35
40
  window.localStorage.removeItem(_consts.HANDOFF_KEY);
36
41
  setHandoffMessage(false);
37
42
  }
@@ -4,22 +4,24 @@ 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
8
  var _element = require("@wordpress/element");
9
9
  var _usePrompt = _interopRequireDefault(require("./usePrompt"));
10
10
  var _useObjectState = _interopRequireDefault(require("./useObjectState"));
11
11
  var _useOnClickOutside = _interopRequireDefault(require("./useOnClickOutside"));
12
+ var _useConfirmDialog = _interopRequireDefault(require("./use-confirm-dialog"));
12
13
  /**
13
14
  * WordPress dependencies
14
15
  */
15
16
 
16
- const useUniqueId = prefix => {
17
- const id = (0, _element.useRef)(`${prefix}-${Math.round(Math.random() * 99999)}`);
17
+ var useUniqueId = function useUniqueId(prefix) {
18
+ var id = (0, _element.useRef)("".concat(prefix, "-").concat(Math.round(Math.random() * 99999)));
18
19
  return id.current;
19
20
  };
20
- var _default = exports.default = {
21
- usePrompt: _usePrompt.default,
22
- useObjectState: _useObjectState.default,
23
- useOnClickOutside: _useOnClickOutside.default,
24
- useUniqueId
21
+ var _default = exports["default"] = {
22
+ usePrompt: _usePrompt["default"],
23
+ useObjectState: _useObjectState["default"],
24
+ useOnClickOutside: _useOnClickOutside["default"],
25
+ useUniqueId: useUniqueId,
26
+ useConfirmDialog: _useConfirmDialog["default"]
25
27
  };
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _element = require("@wordpress/element");
12
+ var _confirmDialog = _interopRequireDefault(require("../confirm-dialog"));
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ var _excluded = ["message", "when"];
15
+ /**
16
+ * WordPress dependencies.
17
+ */
18
+ /**
19
+ * Internal dependencies.
20
+ */
21
+ 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; }
22
+ 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; }
23
+ /**
24
+ * A hook that encapsulates the ConfirmDialog component and provides a
25
+ * `requestConfirm` function for imperative use.
26
+ *
27
+ * Calling `requestConfirm( callback )` will show a confirmation dialog.
28
+ * If the user confirms, `callback` is invoked. If the user cancels, it is not.
29
+ *
30
+ * When `when` is explicitly `false`, `requestConfirm( callback )` calls
31
+ * `callback` immediately without showing the dialog. This is useful for
32
+ * guarding actions that are only destructive when there are unsaved changes
33
+ * (e.g. `when={ isDirty }`). When `when` is omitted or `true`, the dialog
34
+ * is always shown.
35
+ *
36
+ * The `confirmDialog` element must be rendered somewhere in the component's
37
+ * JSX for the dialog to appear.
38
+ */
39
+ function useConfirmDialog(options) {
40
+ var message = options.message,
41
+ when = options.when,
42
+ dialogProps = (0, _objectWithoutProperties2["default"])(options, _excluded);
43
+ var _useState = (0, _element.useState)(null),
44
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
45
+ pendingAction = _useState2[0],
46
+ setPendingAction = _useState2[1];
47
+
48
+ // Keep a ref so `requestConfirm` can always read the latest `when` value
49
+ // without needing to be recreated on every render.
50
+ var whenRef = (0, _element.useRef)(when);
51
+ whenRef.current = when;
52
+ var requestConfirm = (0, _element.useCallback)(function (callback) {
53
+ if (whenRef.current !== false) {
54
+ // Store as a thunk to opt out of React's functional-update interpretation.
55
+ setPendingAction(function () {
56
+ return callback;
57
+ });
58
+ } else {
59
+ callback();
60
+ }
61
+ }, []);
62
+ var confirmDialog = /*#__PURE__*/(0, _jsxRuntime.jsx)(_confirmDialog["default"], _objectSpread(_objectSpread({}, dialogProps), {}, {
63
+ when: when,
64
+ isOpen: !!pendingAction,
65
+ onConfirm: function onConfirm() {
66
+ pendingAction === null || pendingAction === void 0 || pendingAction();
67
+ setPendingAction(null);
68
+ },
69
+ onCancel: function onCancel() {
70
+ return setPendingAction(null);
71
+ },
72
+ children: message
73
+ }));
74
+ return {
75
+ confirmDialog: confirmDialog,
76
+ requestConfirm: requestConfirm
77
+ };
78
+ }
79
+ var _default = exports["default"] = useConfirmDialog;