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.
- package/CHANGELOG.md +11 -0
- package/DEVELOPMENT.md +868 -0
- package/copy-styles.js +3 -2
- package/dist/cjs/accordion/index.js +17 -12
- package/dist/cjs/action-card/index.js +176 -139
- package/dist/cjs/autocomplete-tokenfield/index.js +254 -234
- package/dist/cjs/autocomplete-with-latest-posts/index.js +172 -110
- package/dist/cjs/autocomplete-with-suggestions/index.js +229 -126
- package/dist/cjs/badge/index.js +7 -7
- package/dist/cjs/box-contrast/index.js +19 -15
- package/dist/cjs/button/index.js +41 -26
- package/dist/cjs/button-props/button-props.js +5 -5
- package/dist/cjs/button-props/index.js +2 -2
- package/dist/cjs/card/core-card.js +110 -52
- package/dist/cjs/card/index.js +74 -67
- package/dist/cjs/card/style-core.scss +93 -25
- package/dist/cjs/card/style.scss +2 -2
- package/dist/cjs/card-feature/index.js +141 -0
- package/dist/cjs/card-feature/style.scss +75 -0
- package/dist/cjs/card-form/index.js +144 -0
- package/dist/cjs/card-form/style.scss +20 -0
- package/dist/cjs/card-settings-group/index.js +36 -16
- package/dist/cjs/card-sortable-list/index.js +176 -140
- package/dist/cjs/category-autocomplete/index.js +175 -155
- package/dist/cjs/color-picker/index.js +41 -23
- package/dist/cjs/color-picker/index.test.js +82 -0
- package/dist/cjs/color-picker/style.scss +11 -13
- package/dist/cjs/confirm-dialog/index.js +86 -22
- package/dist/cjs/consts.js +1 -1
- package/dist/cjs/custom-select-control/index.js +39 -28
- package/dist/cjs/dataviews/index.js +38 -0
- package/dist/cjs/dataviews/style.scss +9 -0
- package/dist/cjs/divider/index.js +26 -21
- package/dist/cjs/footer/index.js +36 -30
- package/dist/cjs/form-token-field/index.js +51 -40
- package/dist/cjs/global-notices/index.js +5 -5
- package/dist/cjs/grid/index.js +25 -19
- package/dist/cjs/grid/style.scss +6 -1
- package/dist/cjs/handoff/index.js +204 -156
- package/dist/cjs/handoff-message/index.js +12 -7
- package/dist/cjs/hooks/index.js +10 -8
- package/dist/cjs/hooks/use-confirm-dialog.js +79 -0
- package/dist/cjs/hooks/use-unsaved-changes-dialog.js +144 -0
- package/dist/cjs/hooks/useObjectState.js +21 -12
- package/dist/cjs/hooks/useObjectState.test.js +55 -33
- package/dist/cjs/hooks/useOnClickOutside.js +6 -6
- package/dist/cjs/hooks/usePrompt.js +10 -13
- package/dist/cjs/image-upload/index.js +114 -123
- package/dist/cjs/image-upload/index.test.js +11 -13
- package/dist/cjs/image-upload/style.scss +12 -40
- package/dist/cjs/index.js +136 -104
- package/dist/cjs/info-button/index.js +43 -32
- package/dist/cjs/integration-icons/active-campaign.js +22 -0
- package/dist/cjs/integration-icons/constant-contact.js +28 -0
- package/dist/cjs/integration-icons/fundraise-up.js +25 -0
- package/dist/cjs/integration-icons/index.js +48 -0
- package/dist/cjs/integration-icons/mailchimp.js +19 -0
- package/dist/cjs/integration-icons/salesforce.js +17 -0
- package/dist/cjs/integration-icons/wisepops.js +20 -0
- package/dist/cjs/modal/index.js +22 -19
- package/dist/cjs/modal/style.scss +4 -0
- package/dist/cjs/newspack-icon/index.js +45 -38
- package/dist/cjs/notice/index.js +64 -55
- package/dist/cjs/plugin-installer/index.js +259 -253
- package/dist/cjs/plugin-settings/SettingsSection.js +66 -60
- package/dist/cjs/plugin-settings/index.js +217 -200
- package/dist/cjs/plugin-toggle/index.js +192 -199
- package/dist/cjs/popover/index.js +41 -28
- package/dist/cjs/position-control/index.js +24 -23
- package/dist/cjs/progress-bar/index.js +71 -59
- package/dist/cjs/progress-bar/index.test.js +62 -68
- package/dist/cjs/proxied-imports/router.js +3 -3
- package/dist/cjs/radio-control/index.js +40 -27
- package/dist/cjs/section-header/index.js +103 -58
- package/dist/cjs/section-header/style.scss +31 -11
- package/dist/cjs/select-control/ButtonGroupControl.js +26 -21
- package/dist/cjs/select-control/GroupedSelectControl.js +41 -35
- package/dist/cjs/select-control/index.js +52 -40
- package/dist/cjs/settings/MinMaxSetting.js +30 -20
- package/dist/cjs/settings/SettingsCard.js +20 -17
- package/dist/cjs/settings/SettingsSection.js +22 -21
- package/dist/cjs/settings/index.js +5 -5
- package/dist/cjs/sortable-newsletter-list-control/index.js +78 -57
- package/dist/cjs/steps-list/index.js +44 -34
- package/dist/cjs/steps-list-item/index.js +47 -39
- package/dist/cjs/style-card/index.js +70 -63
- package/dist/cjs/tabbed-navigation/index.js +38 -36
- package/dist/cjs/text-control/index.js +27 -25
- package/dist/cjs/utils/color.js +4 -4
- package/dist/cjs/utils/editor-toolbar-back-button.js +61 -0
- package/dist/cjs/utils/index.js +31 -19
- package/dist/cjs/utils/style.scss +8 -0
- package/dist/cjs/waiting/index.js +48 -37
- package/dist/cjs/web-preview/index.js +217 -211
- package/dist/cjs/with-wizard/index.js +362 -364
- package/dist/cjs/with-wizard/style.scss +4 -54
- package/dist/cjs/with-wizard-screen/index.js +54 -58
- package/dist/cjs/with-wizard-screen/style.scss +41 -3
- package/dist/cjs/wizard/components/WizardError.js +20 -18
- package/dist/cjs/wizard/components/WizardSnackbar.js +26 -23
- package/dist/cjs/wizard/index.js +176 -114
- package/dist/cjs/wizard/store/index.js +171 -123
- package/dist/cjs/wizard/store/utils.js +13 -8
- package/dist/esm/accordion/index.js +14 -9
- package/dist/esm/action-card/index.js +168 -123
- package/dist/esm/autocomplete-tokenfield/index.js +248 -222
- package/dist/esm/autocomplete-with-latest-posts/index.js +169 -103
- package/dist/esm/autocomplete-with-suggestions/index.js +226 -119
- package/dist/esm/badge/index.js +5 -5
- package/dist/esm/box-contrast/index.js +15 -11
- package/dist/esm/button/index.js +39 -21
- package/dist/esm/button-props/button-props.js +1 -1
- package/dist/esm/card/core-card.js +109 -47
- package/dist/esm/card/index.js +69 -54
- package/dist/esm/card/style-core.scss +93 -25
- package/dist/esm/card/style.scss +2 -2
- package/dist/esm/card-feature/index.js +131 -0
- package/dist/esm/card-feature/style.scss +75 -0
- package/dist/esm/card-form/index.js +134 -0
- package/dist/esm/card-form/style.scss +20 -0
- package/dist/esm/card-settings-group/index.js +33 -14
- package/dist/esm/card-sortable-list/index.js +170 -126
- package/dist/esm/category-autocomplete/index.js +168 -140
- package/dist/esm/color-picker/index.js +39 -21
- package/dist/esm/color-picker/index.test.js +78 -0
- package/dist/esm/color-picker/style.scss +11 -13
- package/dist/esm/confirm-dialog/index.js +85 -18
- package/dist/esm/consts.js +1 -1
- package/dist/esm/custom-select-control/index.js +34 -15
- package/dist/esm/dataviews/index.js +34 -0
- package/dist/esm/dataviews/style.scss +9 -0
- package/dist/esm/divider/index.js +24 -16
- package/dist/esm/footer/index.js +34 -28
- package/dist/esm/form-token-field/index.js +46 -27
- package/dist/esm/global-notices/index.js +3 -3
- package/dist/esm/grid/index.js +23 -14
- package/dist/esm/grid/style.scss +6 -1
- package/dist/esm/handoff/index.js +199 -143
- package/dist/esm/handoff-message/index.js +10 -6
- package/dist/esm/hooks/index.js +8 -6
- package/dist/esm/hooks/use-confirm-dialog.js +73 -0
- package/dist/esm/hooks/use-unsaved-changes-dialog.js +136 -0
- package/dist/esm/hooks/useObjectState.js +19 -9
- package/dist/esm/hooks/useObjectState.test.js +54 -32
- package/dist/esm/hooks/useOnClickOutside.js +4 -4
- package/dist/esm/hooks/usePrompt.js +9 -11
- package/dist/esm/image-upload/index.js +110 -111
- package/dist/esm/image-upload/index.test.js +11 -13
- package/dist/esm/image-upload/style.scss +12 -40
- package/dist/esm/index.js +7 -1
- package/dist/esm/info-button/index.js +38 -19
- package/dist/esm/integration-icons/active-campaign.js +16 -0
- package/dist/esm/integration-icons/constant-contact.js +22 -0
- package/dist/esm/integration-icons/fundraise-up.js +19 -0
- package/dist/esm/integration-icons/index.js +6 -0
- package/dist/esm/integration-icons/mailchimp.js +13 -0
- package/dist/esm/integration-icons/salesforce.js +11 -0
- package/dist/esm/integration-icons/wisepops.js +14 -0
- package/dist/esm/modal/index.js +20 -13
- package/dist/esm/modal/style.scss +4 -0
- package/dist/esm/newspack-icon/index.js +40 -25
- package/dist/esm/notice/index.js +59 -42
- package/dist/esm/plugin-installer/index.js +255 -243
- package/dist/esm/plugin-settings/SettingsSection.js +61 -50
- package/dist/esm/plugin-settings/index.js +212 -189
- package/dist/esm/plugin-toggle/index.js +187 -190
- package/dist/esm/popover/index.js +35 -16
- package/dist/esm/position-control/index.js +22 -18
- package/dist/esm/progress-bar/index.js +66 -49
- package/dist/esm/progress-bar/index.test.js +61 -67
- package/dist/esm/radio-control/index.js +34 -15
- package/dist/esm/section-header/index.js +102 -57
- package/dist/esm/section-header/style.scss +31 -11
- package/dist/esm/select-control/ButtonGroupControl.js +23 -18
- package/dist/esm/select-control/GroupedSelectControl.js +38 -30
- package/dist/esm/select-control/index.js +47 -27
- package/dist/esm/settings/MinMaxSetting.js +27 -16
- package/dist/esm/settings/SettingsCard.js +18 -13
- package/dist/esm/settings/SettingsSection.js +20 -19
- package/dist/esm/settings/index.js +3 -3
- package/dist/esm/sortable-newsletter-list-control/index.js +74 -53
- package/dist/esm/steps-list/index.js +39 -21
- package/dist/esm/steps-list-item/index.js +42 -26
- package/dist/esm/style-card/index.js +65 -50
- package/dist/esm/tabbed-navigation/index.js +35 -33
- package/dist/esm/text-control/index.js +25 -19
- package/dist/esm/utils/color.js +4 -4
- package/dist/esm/utils/editor-toolbar-back-button.js +53 -0
- package/dist/esm/utils/index.js +29 -16
- package/dist/esm/utils/style.scss +8 -0
- package/dist/esm/waiting/index.js +43 -24
- package/dist/esm/web-preview/index.js +213 -201
- package/dist/esm/with-wizard/index.js +360 -358
- package/dist/esm/with-wizard/style.scss +4 -54
- package/dist/esm/with-wizard-screen/index.js +48 -46
- package/dist/esm/with-wizard-screen/style.scss +41 -3
- package/dist/esm/wizard/components/WizardError.js +18 -16
- package/dist/esm/wizard/components/WizardSnackbar.js +23 -17
- package/dist/esm/wizard/index.js +171 -103
- package/dist/esm/wizard/store/index.js +169 -116
- package/dist/esm/wizard/store/utils.js +13 -6
- package/package.json +30 -16
- package/release.config.js +1 -0
- package/shared/hooks/use-coauthors.js +195 -27
- package/shared/hooks/use-coauthors.test.js +232 -6
- package/shared/scss/_mixins.scss +13 -5
- package/src/accordion/index.js +8 -7
- package/src/action-card/index.js +15 -1
- package/src/badge/index.tsx +3 -1
- package/src/card/core-card.js +95 -18
- package/src/card/index.js +1 -0
- package/src/card/style-core.scss +93 -25
- package/src/card/style.scss +2 -2
- package/src/card-feature/README.md +188 -0
- package/src/card-feature/index.tsx +186 -0
- package/src/card-feature/style.scss +75 -0
- package/src/card-form/README.md +113 -0
- package/src/card-form/index.tsx +128 -0
- package/src/card-form/style.scss +20 -0
- package/src/card-settings-group/index.tsx +28 -3
- package/src/card-sortable-list/index.tsx +27 -4
- package/src/color-picker/index.js +15 -8
- package/src/color-picker/index.test.js +52 -0
- package/src/color-picker/style.scss +11 -13
- package/src/confirm-dialog/README.md +128 -0
- package/src/confirm-dialog/index.tsx +74 -6
- package/src/dataviews/index.tsx +34 -0
- package/src/dataviews/style.scss +9 -0
- package/src/grid/style.scss +6 -1
- package/src/handoff/README.md +93 -0
- package/src/handoff/index.js +46 -8
- package/src/hooks/index.ts +2 -1
- package/src/hooks/use-confirm-dialog.tsx +80 -0
- package/src/hooks/use-unsaved-changes-dialog.tsx +140 -0
- package/src/image-upload/index.js +10 -15
- package/src/image-upload/style.scss +12 -40
- package/src/index.js +7 -1
- package/src/integration-icons/active-campaign.js +14 -0
- package/src/integration-icons/constant-contact.js +22 -0
- package/src/integration-icons/fundraise-up.js +18 -0
- package/src/integration-icons/index.js +6 -0
- package/src/integration-icons/mailchimp.js +10 -0
- package/src/integration-icons/salesforce.js +10 -0
- package/src/integration-icons/wisepops.js +14 -0
- package/src/modal/style.scss +4 -0
- package/src/plugin-installer/index.js +30 -19
- package/src/section-header/index.js +56 -24
- package/src/section-header/style.scss +31 -11
- package/src/select-control/index.js +4 -0
- package/src/utils/editor-toolbar-back-button.tsx +48 -0
- package/src/utils/index.js +6 -0
- package/src/utils/style.scss +8 -0
- package/src/with-wizard/style.scss +4 -54
- package/src/with-wizard-screen/style.scss +41 -3
- package/src/wizard/index.js +90 -53
- package/src/wizard/store/index.js +2 -2
- package/dist/cjs/button-card/index.js +0 -72
- package/dist/cjs/button-card/style.scss +0 -180
- package/dist/esm/button-card/index.js +0 -64
- package/dist/esm/button-card/style.scss +0 -180
- package/src/button-card/index.js +0 -52
- package/src/button-card/style.scss +0 -180
|
@@ -4,7 +4,11 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
8
12
|
var _debounce = _interopRequireDefault(require("lodash/debounce"));
|
|
9
13
|
var _apiFetch = _interopRequireDefault(require("@wordpress/api-fetch"));
|
|
10
14
|
var _components = require("@wordpress/components");
|
|
@@ -14,43 +18,66 @@ var _i18n = require("@wordpress/i18n");
|
|
|
14
18
|
var _url = require("@wordpress/url");
|
|
15
19
|
require("./style.scss");
|
|
16
20
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
|
-
|
|
21
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
22
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, 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; } /**
|
|
18
25
|
* External dependencies
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
/**
|
|
26
|
+
*/ /**
|
|
22
27
|
* WordPress dependencies
|
|
23
28
|
*/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
29
|
+
var AutocompleteWithLatestPosts = function AutocompleteWithLatestPosts(_ref) {
|
|
30
|
+
var _ref$fetchSuggestions = _ref.fetchSuggestions,
|
|
31
|
+
fetchSuggestions = _ref$fetchSuggestions === void 0 ? false : _ref$fetchSuggestions,
|
|
32
|
+
_ref$help = _ref.help,
|
|
33
|
+
help = _ref$help === void 0 ? (0, _i18n.__)('Begin typing search term, click autocomplete result to select.', 'newspack-plugin') : _ref$help,
|
|
34
|
+
_ref$hideHelp = _ref.hideHelp,
|
|
35
|
+
hideHelp = _ref$hideHelp === void 0 ? true : _ref$hideHelp,
|
|
36
|
+
_ref$hideFormTokenHel = _ref.hideFormTokenHelp,
|
|
37
|
+
hideFormTokenHelp = _ref$hideFormTokenHel === void 0 ? true : _ref$hideFormTokenHel,
|
|
38
|
+
_ref$label = _ref.label,
|
|
39
|
+
label = _ref$label === void 0 ? (0, _i18n.__)('Search', 'newspack-plugin') : _ref$label,
|
|
40
|
+
_ref$maxItemsToSugges = _ref.maxItemsToSuggest,
|
|
41
|
+
maxItemsToSuggest = _ref$maxItemsToSugges === void 0 ? 0 : _ref$maxItemsToSugges,
|
|
42
|
+
_ref$multiSelect = _ref.multiSelect,
|
|
43
|
+
multiSelect = _ref$multiSelect === void 0 ? false : _ref$multiSelect,
|
|
44
|
+
_ref$onChange = _ref.onChange,
|
|
45
|
+
onChange = _ref$onChange === void 0 ? false : _ref$onChange,
|
|
46
|
+
_ref$selectedItems = _ref.selectedItems,
|
|
47
|
+
selectedItems = _ref$selectedItems === void 0 ? [] : _ref$selectedItems,
|
|
48
|
+
_ref$suggestionsToFet = _ref.suggestionsToFetch,
|
|
49
|
+
suggestionsToFetch = _ref$suggestionsToFet === void 0 ? 20 : _ref$suggestionsToFet;
|
|
50
|
+
var _useState = (0, _element.useState)(true),
|
|
51
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
52
|
+
isLoading = _useState2[0],
|
|
53
|
+
setIsLoading = _useState2[1];
|
|
54
|
+
var _useState3 = (0, _element.useState)(false),
|
|
55
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
56
|
+
isLoadingMore = _useState4[0],
|
|
57
|
+
setIsLoadingMore = _useState4[1];
|
|
58
|
+
var _useState5 = (0, _element.useState)([]),
|
|
59
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
60
|
+
suggestions = _useState6[0],
|
|
61
|
+
setSuggestions = _useState6[1];
|
|
62
|
+
var _useState7 = (0, _element.useState)(0),
|
|
63
|
+
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
64
|
+
maxSuggestions = _useState8[0],
|
|
65
|
+
setMaxSuggestions = _useState8[1];
|
|
66
|
+
var _useState9 = (0, _element.useState)([]),
|
|
67
|
+
_useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
68
|
+
searchSuggestions = _useState0[0],
|
|
69
|
+
setSearchSuggestions = _useState0[1];
|
|
70
|
+
var _useState1 = (0, _element.useState)({}),
|
|
71
|
+
_useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
|
|
72
|
+
validValues = _useState10[0],
|
|
73
|
+
setValidValues = _useState10[1];
|
|
74
|
+
var _useState11 = (0, _element.useState)(false),
|
|
75
|
+
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
76
|
+
isSearching = _useState12[0],
|
|
77
|
+
setIsSearching = _useState12[1];
|
|
51
78
|
// Leaving this in here so we can expand to use different post types in the future; right now it defaults to 'post'.
|
|
52
|
-
|
|
53
|
-
|
|
79
|
+
var postTypeToSearch = 'post';
|
|
80
|
+
var classNames = ['newspack-autocomplete-with-latest-posts'];
|
|
54
81
|
if (hideFormTokenHelp) {
|
|
55
82
|
classNames.push('hide-form-token-help');
|
|
56
83
|
}
|
|
@@ -61,116 +88,141 @@ const AutocompleteWithLatestPosts = ({
|
|
|
61
88
|
/**
|
|
62
89
|
* Debounced function to update search suggestions.
|
|
63
90
|
*/
|
|
64
|
-
|
|
91
|
+
var debouncedUpdateSuggestions = (0, _debounce["default"])(function (input) {
|
|
65
92
|
if (!input || input.length < 2) {
|
|
66
93
|
setSearchSuggestions([]);
|
|
67
94
|
setIsSearching(false);
|
|
68
95
|
return;
|
|
69
96
|
}
|
|
70
97
|
setIsSearching(true);
|
|
71
|
-
handleFetchSuggestions(input, 0, postTypeToSearch).then(_suggestions
|
|
98
|
+
handleFetchSuggestions(input, 0, postTypeToSearch).then(function (_suggestions) {
|
|
72
99
|
setSearchSuggestions(_suggestions);
|
|
73
100
|
// Update valid values for token conversion
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
};
|
|
77
|
-
_suggestions.forEach(suggestion => {
|
|
101
|
+
var newValidValues = _objectSpread({}, validValues);
|
|
102
|
+
_suggestions.forEach(function (suggestion) {
|
|
78
103
|
newValidValues[suggestion.value] = suggestion.label;
|
|
79
104
|
});
|
|
80
105
|
setValidValues(newValidValues);
|
|
81
|
-
})
|
|
106
|
+
})["finally"](function () {
|
|
107
|
+
return setIsSearching(false);
|
|
108
|
+
});
|
|
82
109
|
}, 500);
|
|
83
110
|
|
|
84
111
|
/**
|
|
85
112
|
* Fetch recent posts to show as suggestions.
|
|
86
113
|
*/
|
|
87
|
-
(0, _element.useEffect)(()
|
|
114
|
+
(0, _element.useEffect)(function () {
|
|
88
115
|
setIsLoading(true);
|
|
89
|
-
handleFetchSuggestions(null, 0, postTypeToSearch).then(_suggestions
|
|
116
|
+
handleFetchSuggestions(null, 0, postTypeToSearch).then(function (_suggestions) {
|
|
90
117
|
if (0 < _suggestions.length) {
|
|
91
118
|
setSuggestions(_suggestions);
|
|
92
119
|
// Update valid values for token conversion
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
};
|
|
96
|
-
_suggestions.forEach(suggestion => {
|
|
120
|
+
var newValidValues = _objectSpread({}, validValues);
|
|
121
|
+
_suggestions.forEach(function (suggestion) {
|
|
97
122
|
newValidValues[suggestion.value] = suggestion.label;
|
|
98
123
|
});
|
|
99
124
|
setValidValues(newValidValues);
|
|
100
125
|
}
|
|
101
|
-
})
|
|
126
|
+
})["finally"](function () {
|
|
127
|
+
return setIsLoading(false);
|
|
128
|
+
});
|
|
102
129
|
}, []);
|
|
103
130
|
|
|
104
131
|
/**
|
|
105
132
|
* Fetch more suggestions.
|
|
106
133
|
*/
|
|
107
|
-
(0, _element.useEffect)(()
|
|
134
|
+
(0, _element.useEffect)(function () {
|
|
108
135
|
if (isLoadingMore) {
|
|
109
|
-
handleFetchSuggestions(null, suggestions.length, postTypeToSearch).then(_suggestions
|
|
136
|
+
handleFetchSuggestions(null, suggestions.length, postTypeToSearch).then(function (_suggestions) {
|
|
110
137
|
if (0 < _suggestions.length) {
|
|
111
138
|
setSuggestions(suggestions.concat(_suggestions));
|
|
112
139
|
}
|
|
113
|
-
})
|
|
140
|
+
})["finally"](function () {
|
|
141
|
+
return setIsLoadingMore(false);
|
|
142
|
+
});
|
|
114
143
|
}
|
|
115
144
|
}, [isLoadingMore]);
|
|
116
145
|
|
|
117
146
|
/**
|
|
118
147
|
* If passed a `fetchSuggestions` prop, use that, otherwise, build it based on the selected post type.
|
|
119
148
|
*/
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
149
|
+
var handleFetchSuggestions = fetchSuggestions ? fetchSuggestions : /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
150
|
+
var search,
|
|
151
|
+
offset,
|
|
152
|
+
searchSlug,
|
|
153
|
+
postTypeSlug,
|
|
154
|
+
endpoint,
|
|
155
|
+
response,
|
|
156
|
+
total,
|
|
157
|
+
posts,
|
|
158
|
+
_args = arguments;
|
|
159
|
+
return _regenerator().w(function (_context) {
|
|
160
|
+
while (1) switch (_context.n) {
|
|
161
|
+
case 0:
|
|
162
|
+
search = _args.length > 0 && _args[0] !== undefined ? _args[0] : null;
|
|
163
|
+
offset = _args.length > 1 && _args[1] !== undefined ? _args[1] : 0;
|
|
164
|
+
searchSlug = _args.length > 2 && _args[2] !== undefined ? _args[2] : null;
|
|
165
|
+
postTypeSlug = searchSlug || postTypeToSearch;
|
|
166
|
+
endpoint = 'post' === postTypeSlug || 'page' === postTypeSlug ? postTypeSlug + 's' // Default post type endpoints are plural.
|
|
167
|
+
: postTypeSlug; // Custom post type endpoints are singular.
|
|
168
|
+
_context.n = 1;
|
|
169
|
+
return (0, _apiFetch["default"])({
|
|
170
|
+
parse: false,
|
|
171
|
+
path: (0, _url.addQueryArgs)('/wp/v2/' + endpoint, {
|
|
172
|
+
search: search,
|
|
173
|
+
offset: offset,
|
|
174
|
+
per_page: suggestionsToFetch,
|
|
175
|
+
_fields: 'id,title'
|
|
176
|
+
})
|
|
177
|
+
});
|
|
178
|
+
case 1:
|
|
179
|
+
response = _context.v;
|
|
180
|
+
total = parseInt(response.headers.get('x-wp-total') || 0);
|
|
181
|
+
_context.n = 2;
|
|
182
|
+
return response.json();
|
|
183
|
+
case 2:
|
|
184
|
+
posts = _context.v;
|
|
185
|
+
setMaxSuggestions(total);
|
|
136
186
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
187
|
+
// Format suggestions for FormTokenField display.
|
|
188
|
+
return _context.a(2, posts.reduce(function (acc, post) {
|
|
189
|
+
acc.push({
|
|
190
|
+
value: parseInt(post.id),
|
|
191
|
+
label: (0, _htmlEntities.decodeEntities)(post === null || post === void 0 ? void 0 : post.title.rendered) || (0, _i18n.__)('(no title)', 'newspack-plugin')
|
|
192
|
+
});
|
|
193
|
+
return acc;
|
|
194
|
+
}, []));
|
|
195
|
+
}
|
|
196
|
+
}, _callee);
|
|
197
|
+
}));
|
|
146
198
|
|
|
147
199
|
/**
|
|
148
200
|
* Get labels for token values.
|
|
149
201
|
*/
|
|
150
|
-
|
|
151
|
-
return values.reduce((accumulator, value)
|
|
202
|
+
var getLabelsForValues = function getLabelsForValues(values) {
|
|
203
|
+
return values.reduce(function (accumulator, value) {
|
|
152
204
|
if (!value) {
|
|
153
205
|
return accumulator;
|
|
154
206
|
}
|
|
155
207
|
if (value.label) {
|
|
156
|
-
return [
|
|
208
|
+
return [].concat((0, _toConsumableArray2["default"])(accumulator), [value.label]);
|
|
157
209
|
}
|
|
158
|
-
return validValues[value] ? [
|
|
210
|
+
return validValues[value] ? [].concat((0, _toConsumableArray2["default"])(accumulator), [validValues[value]]) : accumulator;
|
|
159
211
|
}, []);
|
|
160
212
|
};
|
|
161
213
|
|
|
162
214
|
/**
|
|
163
215
|
* Get values for token labels.
|
|
164
216
|
*/
|
|
165
|
-
|
|
217
|
+
var getValuesForLabels = function getValuesForLabels(labels) {
|
|
166
218
|
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
167
|
-
return labels.reduce((acc, label)
|
|
168
|
-
Object.keys(validValues).forEach(key
|
|
219
|
+
return labels.reduce(function (acc, label) {
|
|
220
|
+
Object.keys(validValues).forEach(function (key) {
|
|
169
221
|
if (validValues[key] === label) {
|
|
170
|
-
|
|
222
|
+
var value = isNaN(parseInt(key)) ? key.toString() : parseInt(key);
|
|
171
223
|
acc.push({
|
|
172
|
-
value,
|
|
173
|
-
label
|
|
224
|
+
value: value,
|
|
225
|
+
label: label
|
|
174
226
|
});
|
|
175
227
|
}
|
|
176
228
|
});
|
|
@@ -181,32 +233,32 @@ const AutocompleteWithLatestPosts = ({
|
|
|
181
233
|
/**
|
|
182
234
|
* Handle FormTokenField onChange.
|
|
183
235
|
*/
|
|
184
|
-
|
|
185
|
-
|
|
236
|
+
var handleTokenChange = function handleTokenChange(tokenStrings) {
|
|
237
|
+
var newSelections = getValuesForLabels(tokenStrings);
|
|
186
238
|
|
|
187
239
|
// If only allowing one selection, just return the one selected item.
|
|
188
240
|
if (!multiSelect) {
|
|
189
|
-
|
|
241
|
+
var newSelection = newSelections[newSelections.length - 1]; // Get the last selected item
|
|
190
242
|
if (newSelection) {
|
|
191
|
-
return onChange([{
|
|
192
|
-
...newSelection,
|
|
243
|
+
return onChange([_objectSpread(_objectSpread({}, newSelection), {}, {
|
|
193
244
|
postType: postTypeToSearch
|
|
194
|
-
}]);
|
|
245
|
+
})]);
|
|
195
246
|
}
|
|
196
247
|
return onChange([]);
|
|
197
248
|
}
|
|
198
249
|
|
|
199
250
|
// For multi-select, include currently selected post type in selection results.
|
|
200
|
-
onChange(newSelections.map(selection
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
251
|
+
onChange(newSelections.map(function (selection) {
|
|
252
|
+
return _objectSpread(_objectSpread({}, selection), {}, {
|
|
253
|
+
postType: postTypeToSearch
|
|
254
|
+
});
|
|
255
|
+
}));
|
|
204
256
|
};
|
|
205
257
|
|
|
206
258
|
/**
|
|
207
259
|
* Get tokens for FormTokenField.
|
|
208
260
|
*/
|
|
209
|
-
|
|
261
|
+
var getTokens = function getTokens() {
|
|
210
262
|
return getLabelsForValues(selectedItems);
|
|
211
263
|
};
|
|
212
264
|
|
|
@@ -215,22 +267,26 @@ const AutocompleteWithLatestPosts = ({
|
|
|
215
267
|
*
|
|
216
268
|
* @param {Object} suggestion Suggestion object with value and label keys.
|
|
217
269
|
*/
|
|
218
|
-
|
|
270
|
+
var renderSuggestion = function renderSuggestion(suggestion) {
|
|
219
271
|
if (multiSelect) {
|
|
220
|
-
|
|
272
|
+
var isSelected = !!selectedItems.find(function (_selection) {
|
|
273
|
+
return parseInt(_selection.value) === parseInt(suggestion.value) && _selection.label === suggestion.label;
|
|
274
|
+
});
|
|
221
275
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.CheckboxControl, {
|
|
222
276
|
checked: isSelected,
|
|
223
|
-
onChange: ()
|
|
277
|
+
onChange: function onChange() {
|
|
224
278
|
// For multi-select, we need to toggle the selection
|
|
225
|
-
|
|
226
|
-
|
|
279
|
+
var currentTokens = getTokens();
|
|
280
|
+
var suggestionLabel = suggestion.label;
|
|
227
281
|
if (isSelected) {
|
|
228
282
|
// Remove the suggestion
|
|
229
|
-
|
|
283
|
+
var newTokens = currentTokens.filter(function (token) {
|
|
284
|
+
return token !== suggestionLabel;
|
|
285
|
+
});
|
|
230
286
|
handleTokenChange(newTokens);
|
|
231
287
|
} else {
|
|
232
288
|
// Add the suggestion
|
|
233
|
-
handleTokenChange([
|
|
289
|
+
handleTokenChange([].concat((0, _toConsumableArray2["default"])(currentTokens), [suggestionLabel]));
|
|
234
290
|
}
|
|
235
291
|
},
|
|
236
292
|
label: suggestion.label
|
|
@@ -238,7 +294,9 @@ const AutocompleteWithLatestPosts = ({
|
|
|
238
294
|
}
|
|
239
295
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
|
|
240
296
|
isLink: true,
|
|
241
|
-
onClick:
|
|
297
|
+
onClick: function onClick() {
|
|
298
|
+
return handleTokenChange([].concat((0, _toConsumableArray2["default"])(getTokens()), [suggestion.label]));
|
|
299
|
+
},
|
|
242
300
|
children: suggestion.label
|
|
243
301
|
}, suggestion.value);
|
|
244
302
|
};
|
|
@@ -246,11 +304,11 @@ const AutocompleteWithLatestPosts = ({
|
|
|
246
304
|
/**
|
|
247
305
|
* Render a list of suggestions that can be clicked to select instead of searching by title.
|
|
248
306
|
*/
|
|
249
|
-
|
|
307
|
+
var renderSuggestions = function renderSuggestions() {
|
|
250
308
|
if (0 === suggestions.length) {
|
|
251
309
|
return null;
|
|
252
310
|
}
|
|
253
|
-
|
|
311
|
+
var className = multiSelect ? 'newspack-autocomplete-with-latest-posts__search-suggestions-multiselect' : 'newspack-autocomplete-with-latest-posts__search-suggestions';
|
|
254
312
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
255
313
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
256
314
|
className: "newspack-autocomplete-with-latest-posts__search-suggestions-container",
|
|
@@ -262,7 +320,9 @@ const AutocompleteWithLatestPosts = ({
|
|
|
262
320
|
children: [suggestions.map(renderSuggestion), suggestions.length < (maxItemsToSuggest || maxSuggestions) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
|
|
263
321
|
disabled: isLoadingMore,
|
|
264
322
|
isSecondary: true,
|
|
265
|
-
onClick: ()
|
|
323
|
+
onClick: function onClick() {
|
|
324
|
+
return setIsLoadingMore(true);
|
|
325
|
+
},
|
|
266
326
|
children: isLoadingMore ? (0, _i18n.__)('Loading…', 'newspack-plugin') : (0, _i18n.__)('Load more', 'newspack-plugin')
|
|
267
327
|
})]
|
|
268
328
|
})]
|
|
@@ -275,7 +335,9 @@ const AutocompleteWithLatestPosts = ({
|
|
|
275
335
|
className: "newspack-autocomplete-with-latest-posts__input-container",
|
|
276
336
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.FormTokenField, {
|
|
277
337
|
value: getTokens(),
|
|
278
|
-
suggestions: searchSuggestions.map(
|
|
338
|
+
suggestions: searchSuggestions.map(function (suggestion) {
|
|
339
|
+
return suggestion.label;
|
|
340
|
+
}),
|
|
279
341
|
onChange: handleTokenChange,
|
|
280
342
|
onInputChange: debouncedUpdateSuggestions,
|
|
281
343
|
label: label,
|
|
@@ -286,4 +348,4 @@ const AutocompleteWithLatestPosts = ({
|
|
|
286
348
|
}), renderSuggestions()]
|
|
287
349
|
});
|
|
288
350
|
};
|
|
289
|
-
var _default = exports
|
|
351
|
+
var _default = exports["default"] = AutocompleteWithLatestPosts;
|