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,59 +4,76 @@ 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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
8
11
|
var _components = require("@wordpress/components");
|
|
9
12
|
var _element = require("@wordpress/element");
|
|
10
13
|
var _ = require("../");
|
|
11
14
|
require("./style.scss");
|
|
12
15
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
16
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
-
|
|
17
|
+
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; }
|
|
18
|
+
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; } /**
|
|
15
19
|
* Card - Sortable list component.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
/**
|
|
20
|
+
*/ /**
|
|
19
21
|
* WordPress dependencies.
|
|
20
|
-
*/
|
|
21
|
-
// eslint-disable-line @wordpress/no-unsafe-wp-apis
|
|
22
|
-
|
|
22
|
+
*/ // eslint-disable-line @wordpress/no-unsafe-wp-apis
|
|
23
23
|
/**
|
|
24
24
|
* Internal dependencies
|
|
25
|
-
*/
|
|
26
|
-
|
|
27
|
-
/**
|
|
25
|
+
*/ /**
|
|
28
26
|
* External dependencies
|
|
29
27
|
*/
|
|
28
|
+
var DROP_ANIMATION_DURATION = 400; // ms — must match $drop-duration in style.scss
|
|
29
|
+
var BUTTON_MOVE_DURATION = 200; // ms — must match $shift-duration in style.scss
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
31
|
+
var CardSortableList = function CardSortableList(_ref) {
|
|
32
|
+
var _ref$disabled = _ref.disabled,
|
|
33
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
34
|
+
_ref$items = _ref.items,
|
|
35
|
+
items = _ref$items === void 0 ? [] : _ref$items,
|
|
36
|
+
_ref$onDragCallback = _ref.onDragCallback,
|
|
37
|
+
onDragCallback = _ref$onDragCallback === void 0 ? function () {} : _ref$onDragCallback;
|
|
38
|
+
var _useState = (0, _element.useState)(items),
|
|
39
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
40
|
+
sortedItems = _useState2[0],
|
|
41
|
+
setSortedItems = _useState2[1];
|
|
42
|
+
var _useState3 = (0, _element.useState)(null),
|
|
43
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
44
|
+
draggingIndex = _useState4[0],
|
|
45
|
+
setDraggingIndex = _useState4[1];
|
|
46
|
+
var _useState5 = (0, _element.useState)(null),
|
|
47
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
48
|
+
hoverIndex = _useState6[0],
|
|
49
|
+
setHoverIndex = _useState6[1];
|
|
50
|
+
var _useState7 = (0, _element.useState)(null),
|
|
51
|
+
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
52
|
+
droppedIndex = _useState8[0],
|
|
53
|
+
setDroppedIndex = _useState8[1];
|
|
54
|
+
var _useState9 = (0, _element.useState)(null),
|
|
55
|
+
_useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
56
|
+
measurements = _useState0[0],
|
|
57
|
+
setMeasurements = _useState0[1];
|
|
58
|
+
var listRef = (0, _element.useRef)(null);
|
|
59
|
+
var itemRefs = (0, _element.useRef)([]);
|
|
60
|
+
var dropAnimationTimer = (0, _element.useRef)(null);
|
|
61
|
+
var buttonMoveTimer = (0, _element.useRef)(null);
|
|
62
|
+
var buttonFlipRef = (0, _element.useRef)(null);
|
|
63
|
+
var _useState1 = (0, _element.useState)(0),
|
|
64
|
+
_useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
|
|
65
|
+
buttonMoveId = _useState10[0],
|
|
66
|
+
setButtonMoveId = _useState10[1];
|
|
67
|
+
var documentDragOverRef = (0, _element.useRef)(null);
|
|
51
68
|
|
|
52
69
|
// Keep sortedItems in sync when the items prop changes externally (e.g. after a save).
|
|
53
|
-
(0, _element.useEffect)(()
|
|
70
|
+
(0, _element.useEffect)(function () {
|
|
54
71
|
setSortedItems(items);
|
|
55
72
|
}, [items]);
|
|
56
73
|
|
|
57
74
|
// Clean up any pending animation timer on unmount.
|
|
58
|
-
(0, _element.useEffect)(()
|
|
59
|
-
return ()
|
|
75
|
+
(0, _element.useEffect)(function () {
|
|
76
|
+
return function () {
|
|
60
77
|
if (dropAnimationTimer.current) {
|
|
61
78
|
clearTimeout(dropAnimationTimer.current);
|
|
62
79
|
}
|
|
@@ -73,28 +90,32 @@ const CardSortableList = ({
|
|
|
73
90
|
* Handle a chevron-button move. Records item positions before the reorder so
|
|
74
91
|
* the FLIP animation can play after React commits the new DOM order.
|
|
75
92
|
*/
|
|
76
|
-
|
|
93
|
+
var handleButtonMove = function handleButtonMove(fromIndex, toIndex) {
|
|
77
94
|
if (toIndex < 0 || toIndex >= sortedItems.length) {
|
|
78
95
|
return;
|
|
79
96
|
}
|
|
80
|
-
|
|
81
|
-
|
|
97
|
+
var fromEl = itemRefs.current[fromIndex];
|
|
98
|
+
var toEl = itemRefs.current[toIndex];
|
|
82
99
|
if (!fromEl || !toEl) {
|
|
83
100
|
return;
|
|
84
101
|
}
|
|
85
|
-
|
|
86
|
-
|
|
102
|
+
var stride = Math.abs(toEl.getBoundingClientRect().top - fromEl.getBoundingClientRect().top);
|
|
103
|
+
var direction = toIndex > fromIndex ? 1 : -1;
|
|
87
104
|
buttonFlipRef.current = {
|
|
88
|
-
fromIndex,
|
|
89
|
-
toIndex,
|
|
90
|
-
stride,
|
|
91
|
-
direction
|
|
105
|
+
fromIndex: fromIndex,
|
|
106
|
+
toIndex: toIndex,
|
|
107
|
+
stride: stride,
|
|
108
|
+
direction: direction
|
|
92
109
|
};
|
|
93
|
-
|
|
94
|
-
|
|
110
|
+
var reordered = (0, _toConsumableArray2["default"])(sortedItems);
|
|
111
|
+
var _reordered$splice = reordered.splice(fromIndex, 1),
|
|
112
|
+
_reordered$splice2 = (0, _slicedToArray2["default"])(_reordered$splice, 1),
|
|
113
|
+
moved = _reordered$splice2[0];
|
|
95
114
|
reordered.splice(toIndex, 0, moved);
|
|
96
115
|
setSortedItems(reordered);
|
|
97
|
-
setButtonMoveId(
|
|
116
|
+
setButtonMoveId(function (id) {
|
|
117
|
+
return id + 1;
|
|
118
|
+
});
|
|
98
119
|
};
|
|
99
120
|
|
|
100
121
|
/**
|
|
@@ -103,30 +124,28 @@ const CardSortableList = ({
|
|
|
103
124
|
* using inline CSS transitions (no CSS classes, to avoid creating a new
|
|
104
125
|
* containing block that would break position:fixed on the Draggable clone).
|
|
105
126
|
*/
|
|
106
|
-
(0, _element.useLayoutEffect)(()
|
|
107
|
-
|
|
127
|
+
(0, _element.useLayoutEffect)(function () {
|
|
128
|
+
var flipData = buttonFlipRef.current;
|
|
108
129
|
if (!flipData) {
|
|
109
130
|
return;
|
|
110
131
|
}
|
|
111
132
|
buttonFlipRef.current = null;
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
} = flipData;
|
|
118
|
-
const startAnimation = (el, startY) => {
|
|
133
|
+
var fromIndex = flipData.fromIndex,
|
|
134
|
+
toIndex = flipData.toIndex,
|
|
135
|
+
stride = flipData.stride,
|
|
136
|
+
direction = flipData.direction;
|
|
137
|
+
var startAnimation = function startAnimation(el, startY) {
|
|
119
138
|
if (!el) {
|
|
120
139
|
return;
|
|
121
140
|
}
|
|
122
141
|
// Snap to the starting position with no transition.
|
|
123
142
|
el.style.transition = 'none';
|
|
124
|
-
el.style.transform =
|
|
143
|
+
el.style.transform = "translateY(".concat(startY, "px)");
|
|
125
144
|
// Force a reflow so the browser registers the starting position
|
|
126
145
|
// before we switch to the animated transition.
|
|
127
146
|
el.getBoundingClientRect();
|
|
128
147
|
// Animate from startY back to 0 (its new natural position).
|
|
129
|
-
el.style.transition =
|
|
148
|
+
el.style.transition = "transform ".concat(BUTTON_MOVE_DURATION, "ms ease-out");
|
|
130
149
|
el.style.transform = '';
|
|
131
150
|
};
|
|
132
151
|
|
|
@@ -137,11 +156,11 @@ const CardSortableList = ({
|
|
|
137
156
|
if (buttonMoveTimer.current) {
|
|
138
157
|
clearTimeout(buttonMoveTimer.current);
|
|
139
158
|
}
|
|
140
|
-
buttonMoveTimer.current = setTimeout(()
|
|
159
|
+
buttonMoveTimer.current = setTimeout(function () {
|
|
141
160
|
// Clear inline animation styles before calling the external callback so
|
|
142
161
|
// the subsequent React re-render doesn't fight a live animation.
|
|
143
|
-
[fromIndex, toIndex].forEach(i
|
|
144
|
-
|
|
162
|
+
[fromIndex, toIndex].forEach(function (i) {
|
|
163
|
+
var el = itemRefs.current[i];
|
|
145
164
|
if (el) {
|
|
146
165
|
el.style.transition = '';
|
|
147
166
|
el.style.transform = '';
|
|
@@ -150,13 +169,13 @@ const CardSortableList = ({
|
|
|
150
169
|
|
|
151
170
|
// Move focus to the matching chevron button on the card at toIndex.
|
|
152
171
|
// Focus before onDragCallback so a parent rerender can't steal focus.
|
|
153
|
-
|
|
172
|
+
var targetEl = itemRefs.current[toIndex];
|
|
154
173
|
if (targetEl) {
|
|
155
|
-
|
|
174
|
+
var moveButtons = targetEl.querySelectorAll('.newspack-card--core__header__draggable-controls__move-buttons button');
|
|
156
175
|
// direction > 0 = moved down → prefer the down button (index 1).
|
|
157
176
|
// direction < 0 = moved up → prefer the up button (index 0).
|
|
158
|
-
|
|
159
|
-
|
|
177
|
+
var preferred = direction > 0 ? moveButtons[1] : moveButtons[0];
|
|
178
|
+
var fallback = direction > 0 ? moveButtons[0] : moveButtons[1];
|
|
160
179
|
if (preferred && !preferred.disabled) {
|
|
161
180
|
preferred.focus();
|
|
162
181
|
} else if (fallback && !fallback.disabled) {
|
|
@@ -168,7 +187,7 @@ const CardSortableList = ({
|
|
|
168
187
|
}, BUTTON_MOVE_DURATION);
|
|
169
188
|
}, [buttonMoveId]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
170
189
|
|
|
171
|
-
|
|
190
|
+
var handleDragStart = function handleDragStart(index) {
|
|
172
191
|
// Cancel any in-progress button-move animation so no item wrapper keeps
|
|
173
192
|
// an inline transform. A transformed ancestor breaks position:fixed on
|
|
174
193
|
// the Draggable clone (CSS spec: fixed positioning is relative to the
|
|
@@ -176,46 +195,50 @@ const CardSortableList = ({
|
|
|
176
195
|
if (buttonMoveTimer.current) {
|
|
177
196
|
clearTimeout(buttonMoveTimer.current);
|
|
178
197
|
buttonMoveTimer.current = null;
|
|
179
|
-
itemRefs.current.forEach(el
|
|
198
|
+
itemRefs.current.forEach(function (el) {
|
|
180
199
|
if (el) {
|
|
181
200
|
el.style.transition = '';
|
|
182
201
|
el.style.transform = '';
|
|
183
202
|
}
|
|
184
203
|
});
|
|
185
204
|
}
|
|
186
|
-
|
|
205
|
+
var listEl = listRef.current;
|
|
187
206
|
if (listEl) {
|
|
188
|
-
var _rects$index$height;
|
|
189
|
-
|
|
190
|
-
|
|
207
|
+
var _rects$index$height, _rects$index;
|
|
208
|
+
var itemEls = itemRefs.current;
|
|
209
|
+
var rects = itemEls.map(function (el) {
|
|
210
|
+
return el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
|
|
211
|
+
});
|
|
191
212
|
|
|
192
213
|
// Stride = item height + gap to next item (difference between consecutive tops).
|
|
193
|
-
|
|
214
|
+
var itemStrides = rects.map(function (rect, i) {
|
|
194
215
|
if (!rect) {
|
|
195
216
|
return 0;
|
|
196
217
|
}
|
|
197
|
-
|
|
218
|
+
var nextRect = rects[i + 1];
|
|
198
219
|
return nextRect ? nextRect.top - rect.top : rect.height;
|
|
199
220
|
});
|
|
200
221
|
setMeasurements({
|
|
201
222
|
lockedHeight: listEl.getBoundingClientRect().height,
|
|
202
|
-
sourceHeight: (_rects$index$height = rects[index]
|
|
203
|
-
itemStrides,
|
|
204
|
-
itemTops: rects.map(rect
|
|
223
|
+
sourceHeight: (_rects$index$height = (_rects$index = rects[index]) === null || _rects$index === void 0 ? void 0 : _rects$index.height) !== null && _rects$index$height !== void 0 ? _rects$index$height : 0,
|
|
224
|
+
itemStrides: itemStrides,
|
|
225
|
+
itemTops: rects.map(function (rect) {
|
|
205
226
|
var _rect$top;
|
|
206
|
-
return (_rect$top = rect
|
|
227
|
+
return (_rect$top = rect === null || rect === void 0 ? void 0 : rect.top) !== null && _rect$top !== void 0 ? _rect$top : 0;
|
|
207
228
|
})
|
|
208
229
|
});
|
|
209
230
|
}
|
|
210
231
|
// Make the entire document a valid drop target so the browser skips
|
|
211
232
|
// its snap-back animation when the cursor is released outside the list.
|
|
212
|
-
|
|
233
|
+
var preventSnapback = function preventSnapback(e) {
|
|
234
|
+
return e.preventDefault();
|
|
235
|
+
};
|
|
213
236
|
document.addEventListener('dragover', preventSnapback);
|
|
214
237
|
documentDragOverRef.current = preventSnapback;
|
|
215
238
|
setDraggingIndex(index);
|
|
216
239
|
setDroppedIndex(null);
|
|
217
240
|
};
|
|
218
|
-
|
|
241
|
+
var clearDragState = function clearDragState() {
|
|
219
242
|
if (documentDragOverRef.current) {
|
|
220
243
|
document.removeEventListener('dragover', documentDragOverRef.current);
|
|
221
244
|
documentDragOverRef.current = null;
|
|
@@ -230,39 +253,39 @@ const CardSortableList = ({
|
|
|
230
253
|
* top positions snapshotted at drag start. Mirrors the midpoint logic
|
|
231
254
|
* previously used in getDropIndex but works without a live event target.
|
|
232
255
|
*/
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
const movingDown = sourceIndex > i;
|
|
241
|
-
const midpoint = itemTops[i] + (movingDown ? itemStrides[i] : itemStrides[i] - sourceHeight);
|
|
256
|
+
var getDropIndexFromCursor = function getDropIndexFromCursor(clientY, m, sourceIndex) {
|
|
257
|
+
var itemTops = m.itemTops,
|
|
258
|
+
itemStrides = m.itemStrides,
|
|
259
|
+
sourceHeight = m.sourceHeight;
|
|
260
|
+
for (var i = 0; i < itemTops.length; i++) {
|
|
261
|
+
var movingDown = sourceIndex > i;
|
|
262
|
+
var midpoint = itemTops[i] + (movingDown ? itemStrides[i] : itemStrides[i] - sourceHeight);
|
|
242
263
|
if (clientY < midpoint) {
|
|
243
264
|
return i;
|
|
244
265
|
}
|
|
245
266
|
}
|
|
246
267
|
return itemTops.length; // below all items
|
|
247
268
|
};
|
|
248
|
-
|
|
269
|
+
var handleDragEnd = function handleDragEnd(event) {
|
|
249
270
|
// Take a local copy of measurements before clearDragState nulls it.
|
|
250
|
-
|
|
251
|
-
|
|
271
|
+
var m = measurements;
|
|
272
|
+
var sourceIndex = draggingIndex;
|
|
252
273
|
clearDragState();
|
|
253
274
|
if (m === null || sourceIndex === null) {
|
|
254
275
|
return;
|
|
255
276
|
}
|
|
256
|
-
|
|
277
|
+
var dropIndex = getDropIndexFromCursor(event.clientY, m, sourceIndex);
|
|
257
278
|
|
|
258
279
|
// Compute the destination index in the post-removal array.
|
|
259
280
|
// After splicing out the dragged item, indices above it shift down by one.
|
|
260
|
-
|
|
281
|
+
var insertIndex = dropIndex > sourceIndex ? dropIndex - 1 : dropIndex;
|
|
261
282
|
if (insertIndex === sourceIndex) {
|
|
262
283
|
return;
|
|
263
284
|
}
|
|
264
|
-
|
|
265
|
-
|
|
285
|
+
var reordered = (0, _toConsumableArray2["default"])(sortedItems);
|
|
286
|
+
var _reordered$splice3 = reordered.splice(sourceIndex, 1),
|
|
287
|
+
_reordered$splice4 = (0, _slicedToArray2["default"])(_reordered$splice3, 1),
|
|
288
|
+
moved = _reordered$splice4[0];
|
|
266
289
|
reordered.splice(insertIndex, 0, moved);
|
|
267
290
|
|
|
268
291
|
// First render: show items in their new order with no animation.
|
|
@@ -272,21 +295,21 @@ const CardSortableList = ({
|
|
|
272
295
|
|
|
273
296
|
// Next frame: trigger the drop animation on the newly-positioned item,
|
|
274
297
|
// then call onDragCallback after the animation completes.
|
|
275
|
-
requestAnimationFrame(()
|
|
298
|
+
requestAnimationFrame(function () {
|
|
276
299
|
setDroppedIndex(insertIndex);
|
|
277
|
-
dropAnimationTimer.current = setTimeout(()
|
|
300
|
+
dropAnimationTimer.current = setTimeout(function () {
|
|
278
301
|
setDroppedIndex(null);
|
|
279
302
|
onDragCallback(sourceIndex, insertIndex);
|
|
280
303
|
}, DROP_ANIMATION_DURATION);
|
|
281
304
|
});
|
|
282
305
|
};
|
|
283
|
-
|
|
306
|
+
var handleDragOver = function handleDragOver(event, index) {
|
|
284
307
|
event.preventDefault();
|
|
285
308
|
if (!measurements) {
|
|
286
309
|
return;
|
|
287
310
|
}
|
|
288
|
-
|
|
289
|
-
|
|
311
|
+
var rect = event.currentTarget.getBoundingClientRect();
|
|
312
|
+
var midpoint = rect.top + rect.height / 2;
|
|
290
313
|
setHoverIndex(event.clientY < midpoint ? index : index + 1);
|
|
291
314
|
};
|
|
292
315
|
|
|
@@ -300,7 +323,7 @@ const CardSortableList = ({
|
|
|
300
323
|
* item's stride (height + gap) to either fill the vacated source slot or make
|
|
301
324
|
* room for the incoming gap at the hover position.
|
|
302
325
|
*/
|
|
303
|
-
|
|
326
|
+
var getTranslateY = function getTranslateY(index) {
|
|
304
327
|
var _itemStrides$dragging;
|
|
305
328
|
if (draggingIndex === null || hoverIndex === null || !measurements) {
|
|
306
329
|
return 0;
|
|
@@ -308,11 +331,9 @@ const CardSortableList = ({
|
|
|
308
331
|
if (index === draggingIndex) {
|
|
309
332
|
return 0;
|
|
310
333
|
}
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
} = measurements;
|
|
315
|
-
const sourceStride = (_itemStrides$dragging = itemStrides[draggingIndex]) !== null && _itemStrides$dragging !== void 0 ? _itemStrides$dragging : sourceHeight;
|
|
334
|
+
var itemStrides = measurements.itemStrides,
|
|
335
|
+
sourceHeight = measurements.sourceHeight;
|
|
336
|
+
var sourceStride = (_itemStrides$dragging = itemStrides[draggingIndex]) !== null && _itemStrides$dragging !== void 0 ? _itemStrides$dragging : sourceHeight;
|
|
316
337
|
if (hoverIndex > draggingIndex) {
|
|
317
338
|
// Dragging downward: items strictly between source and hover position slide up.
|
|
318
339
|
if (index > draggingIndex && index < hoverIndex) {
|
|
@@ -324,67 +345,82 @@ const CardSortableList = ({
|
|
|
324
345
|
}
|
|
325
346
|
return 0;
|
|
326
347
|
};
|
|
327
|
-
|
|
348
|
+
var isDragging = draggingIndex !== null;
|
|
328
349
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
|
|
329
350
|
ref: listRef,
|
|
330
|
-
className: (0, _classnames
|
|
351
|
+
className: (0, _classnames["default"])('newspack-card--core--sortable-list', disabled && 'newspack-card--core--sortable-list__is-disabled', isDragging && 'newspack-card--core--sortable-list__is-dragging'),
|
|
331
352
|
style: measurements ? {
|
|
332
353
|
height: measurements.lockedHeight
|
|
333
354
|
} : undefined,
|
|
334
355
|
spacing: 4,
|
|
335
|
-
children: sortedItems.map((item, index)
|
|
336
|
-
|
|
356
|
+
children: sortedItems.map(function (item, index) {
|
|
357
|
+
var translateY = getTranslateY(index);
|
|
337
358
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Disabled, {
|
|
338
359
|
isDisabled: disabled,
|
|
339
360
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
340
|
-
ref: el
|
|
361
|
+
ref: function ref(el) {
|
|
341
362
|
itemRefs.current[index] = el;
|
|
342
363
|
},
|
|
343
|
-
className: (0, _classnames
|
|
364
|
+
className: (0, _classnames["default"])('newspack-card--core--sortable-list__item', {
|
|
344
365
|
'is-source': draggingIndex === index,
|
|
345
366
|
'is-dropped': droppedIndex === index
|
|
346
367
|
}),
|
|
347
368
|
style: translateY ? {
|
|
348
|
-
transform:
|
|
369
|
+
transform: "translateY(".concat(translateY, "px)")
|
|
349
370
|
} : {
|
|
350
371
|
transition: !isDragging ? 'none' : undefined
|
|
351
372
|
},
|
|
352
|
-
id:
|
|
353
|
-
onDragOver:
|
|
373
|
+
id: "draggable-card-".concat(index),
|
|
374
|
+
onDragOver: function onDragOver(e) {
|
|
375
|
+
return handleDragOver(e, index);
|
|
376
|
+
},
|
|
354
377
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Draggable, {
|
|
355
378
|
transferData: {},
|
|
356
379
|
cloneClassname: "newspack-card--core--sortable-list__item__clone",
|
|
357
|
-
elementId:
|
|
358
|
-
onDragStart: ()
|
|
380
|
+
elementId: "draggable-card-".concat(index),
|
|
381
|
+
onDragStart: function onDragStart() {
|
|
382
|
+
return handleDragStart(index);
|
|
383
|
+
},
|
|
359
384
|
onDragEnd: handleDragEnd,
|
|
360
385
|
appendToOwnerDocument: true,
|
|
361
|
-
children: ({
|
|
362
|
-
onDraggableStart,
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
386
|
+
children: function children(_ref2) {
|
|
387
|
+
var onDraggableStart = _ref2.onDraggableStart,
|
|
388
|
+
onDraggableEnd = _ref2.onDraggableEnd;
|
|
389
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Card, {
|
|
390
|
+
isSmall: true,
|
|
391
|
+
draggable: true,
|
|
392
|
+
onDragStart: onDraggableStart,
|
|
393
|
+
onDragEnd: onDraggableEnd,
|
|
394
|
+
__experimentalCoreCard: true,
|
|
395
|
+
__experimentalCoreProps: _objectSpread(_objectSpread({
|
|
396
|
+
header: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
397
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("h3", {
|
|
398
|
+
children: [item.title, /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Badge, {
|
|
399
|
+
level: item.badgeLevel,
|
|
400
|
+
text: item.badgeText
|
|
401
|
+
})]
|
|
402
|
+
}), item.description && /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
403
|
+
children: item.description
|
|
404
|
+
})]
|
|
405
|
+
}),
|
|
406
|
+
isDraggable: true,
|
|
407
|
+
isFirstTarget: index === 0,
|
|
408
|
+
isLastTarget: index === sortedItems.length - 1,
|
|
409
|
+
dragIndex: index,
|
|
410
|
+
onDragCallback: handleButtonMove
|
|
411
|
+
}, item.onToggleChange !== undefined && {
|
|
412
|
+
actionType: 'toggle',
|
|
413
|
+
isActive: item.toggleChecked,
|
|
414
|
+
onToggle: item.onToggleChange
|
|
415
|
+
}), item.actions !== undefined && {
|
|
416
|
+
actions: item.actions
|
|
417
|
+
})
|
|
418
|
+
});
|
|
419
|
+
}
|
|
384
420
|
})
|
|
385
421
|
})
|
|
386
422
|
}, item.id);
|
|
387
423
|
})
|
|
388
424
|
});
|
|
389
425
|
};
|
|
390
|
-
var _default = exports
|
|
426
|
+
var _default = exports["default"] = CardSortableList;
|