@wordpress/components 28.8.4 → 28.9.0
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 +26 -3
- package/build/autocomplete/index.js +4 -1
- package/build/autocomplete/index.js.map +1 -1
- package/build/border-box-control/border-box-control/component.js +3 -14
- package/build/border-box-control/border-box-control/component.js.map +1 -1
- package/build/border-control/border-control/component.js +1 -2
- package/build/border-control/border-control/component.js.map +1 -1
- package/build/border-control/border-control-dropdown/component.js +2 -14
- package/build/border-control/border-control-dropdown/component.js.map +1 -1
- package/build/border-control/styles.js +13 -13
- package/build/border-control/styles.js.map +1 -1
- package/build/border-control/types.js.map +1 -1
- package/build/box-control/index.js +4 -4
- package/build/box-control/index.js.map +1 -1
- package/build/box-control/types.js.map +1 -1
- package/build/composite/group-label.js +7 -1
- package/build/composite/group-label.js.map +1 -1
- package/build/composite/group.js +7 -1
- package/build/composite/group.js.map +1 -1
- package/build/composite/hover.js +8 -2
- package/build/composite/hover.js.map +1 -1
- package/build/composite/index.js +5 -1
- package/build/composite/index.js.map +1 -1
- package/build/composite/item.js +16 -1
- package/build/composite/item.js.map +1 -1
- package/build/composite/row.js +7 -1
- package/build/composite/row.js.map +1 -1
- package/build/composite/typeahead.js +8 -2
- package/build/composite/typeahead.js.map +1 -1
- package/build/date-time/date/index.js +4 -2
- package/build/date-time/date/index.js.map +1 -1
- package/build/index.js +36 -5
- package/build/index.js.map +1 -1
- package/build/navigator/index.js +128 -32
- package/build/navigator/index.js.map +1 -1
- package/build/navigator/legacy.js +179 -0
- package/build/navigator/legacy.js.map +1 -0
- package/build/navigator/{navigator-provider → navigator}/component.js +5 -40
- package/build/navigator/navigator/component.js.map +1 -0
- package/build/navigator/navigator-back-button/component.js +2 -38
- package/build/navigator/navigator-back-button/component.js.map +1 -1
- package/build/navigator/navigator-back-button/hook.js +1 -1
- package/build/navigator/navigator-back-button/hook.js.map +1 -1
- package/build/navigator/navigator-button/component.js +2 -37
- package/build/navigator/navigator-button/component.js.map +1 -1
- package/build/navigator/navigator-button/hook.js +1 -1
- package/build/navigator/navigator-button/hook.js.map +1 -1
- package/build/navigator/navigator-screen/component.js +40 -62
- package/build/navigator/navigator-screen/component.js.map +1 -1
- package/build/navigator/navigator-screen/use-screen-animate-presence.js +114 -0
- package/build/navigator/navigator-screen/use-screen-animate-presence.js.map +1 -0
- package/build/navigator/navigator-to-parent-button/component.js +3 -7
- package/build/navigator/navigator-to-parent-button/component.js.map +1 -1
- package/build/navigator/styles.js +78 -35
- package/build/navigator/styles.js.map +1 -1
- package/build/navigator/types.js.map +1 -1
- package/build/navigator/use-navigator.js +4 -1
- package/build/navigator/use-navigator.js.map +1 -1
- package/build/search-control/index.js +5 -2
- package/build/search-control/index.js.map +1 -1
- package/build/tabs/styles.js +3 -3
- package/build/tabs/styles.js.map +1 -1
- package/build/tabs/tablist.js +61 -28
- package/build/tabs/tablist.js.map +1 -1
- package/build/tabs/use-track-overflow.js +73 -0
- package/build/tabs/use-track-overflow.js.map +1 -0
- package/build/toggle-group-control/toggle-group-control/as-button-group.js +4 -2
- package/build/toggle-group-control/toggle-group-control/as-button-group.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/as-radio-group.js +6 -2
- package/build/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/component.js +73 -8
- package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/styles.js +7 -7
- package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control-option-base/component.js +10 -19
- package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control-option-base/styles.js +8 -9
- package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
- package/build/toggle-group-control/types.js.map +1 -1
- package/build/utils/element-rect.js +22 -13
- package/build/utils/element-rect.js.map +1 -1
- package/build/utils/hooks/use-on-value-update.js +3 -7
- package/build/utils/hooks/use-on-value-update.js.map +1 -1
- package/build-module/autocomplete/index.js +4 -1
- package/build-module/autocomplete/index.js.map +1 -1
- package/build-module/border-box-control/border-box-control/component.js +3 -14
- package/build-module/border-box-control/border-box-control/component.js.map +1 -1
- package/build-module/border-control/border-control/component.js +1 -2
- package/build-module/border-control/border-control/component.js.map +1 -1
- package/build-module/border-control/border-control-dropdown/component.js +2 -14
- package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
- package/build-module/border-control/styles.js +13 -13
- package/build-module/border-control/styles.js.map +1 -1
- package/build-module/border-control/types.js.map +1 -1
- package/build-module/box-control/index.js +4 -4
- package/build-module/box-control/index.js.map +1 -1
- package/build-module/box-control/types.js.map +1 -1
- package/build-module/composite/group-label.js +7 -1
- package/build-module/composite/group-label.js.map +1 -1
- package/build-module/composite/group.js +7 -1
- package/build-module/composite/group.js.map +1 -1
- package/build-module/composite/hover.js +8 -2
- package/build-module/composite/hover.js.map +1 -1
- package/build-module/composite/index.js +5 -1
- package/build-module/composite/index.js.map +1 -1
- package/build-module/composite/item.js +16 -1
- package/build-module/composite/item.js.map +1 -1
- package/build-module/composite/row.js +7 -1
- package/build-module/composite/row.js.map +1 -1
- package/build-module/composite/typeahead.js +8 -2
- package/build-module/composite/typeahead.js.map +1 -1
- package/build-module/date-time/date/index.js +4 -2
- package/build-module/date-time/date/index.js.map +1 -1
- package/build-module/index.js +14 -4
- package/build-module/index.js.map +1 -1
- package/build-module/navigator/index.js +130 -5
- package/build-module/navigator/index.js.map +1 -1
- package/build-module/navigator/legacy.js +167 -0
- package/build-module/navigator/legacy.js.map +1 -0
- package/build-module/navigator/{navigator-provider → navigator}/component.js +4 -39
- package/build-module/navigator/navigator/component.js.map +1 -0
- package/build-module/navigator/navigator-back-button/component.js +1 -37
- package/build-module/navigator/navigator-back-button/component.js.map +1 -1
- package/build-module/navigator/navigator-back-button/hook.js +1 -1
- package/build-module/navigator/navigator-back-button/hook.js.map +1 -1
- package/build-module/navigator/navigator-button/component.js +1 -36
- package/build-module/navigator/navigator-button/component.js.map +1 -1
- package/build-module/navigator/navigator-button/hook.js +1 -1
- package/build-module/navigator/navigator-button/hook.js.map +1 -1
- package/build-module/navigator/navigator-screen/component.js +39 -61
- package/build-module/navigator/navigator-screen/component.js.map +1 -1
- package/build-module/navigator/navigator-screen/use-screen-animate-presence.js +106 -0
- package/build-module/navigator/navigator-screen/use-screen-animate-presence.js.map +1 -0
- package/build-module/navigator/navigator-to-parent-button/component.js +2 -6
- package/build-module/navigator/navigator-to-parent-button/component.js.map +1 -1
- package/build-module/navigator/styles.js +77 -33
- package/build-module/navigator/styles.js.map +1 -1
- package/build-module/navigator/types.js.map +1 -1
- package/build-module/navigator/use-navigator.js +4 -1
- package/build-module/navigator/use-navigator.js.map +1 -1
- package/build-module/search-control/index.js +5 -2
- package/build-module/search-control/index.js.map +1 -1
- package/build-module/tabs/styles.js +3 -3
- package/build-module/tabs/styles.js.map +1 -1
- package/build-module/tabs/tablist.js +62 -29
- package/build-module/tabs/tablist.js.map +1 -1
- package/build-module/tabs/use-track-overflow.js +67 -0
- package/build-module/tabs/use-track-overflow.js.map +1 -0
- package/build-module/toggle-group-control/toggle-group-control/as-button-group.js +4 -2
- package/build-module/toggle-group-control/toggle-group-control/as-button-group.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +6 -2
- package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/component.js +76 -10
- package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/styles.js +7 -7
- package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +12 -22
- package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +7 -8
- package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
- package/build-module/toggle-group-control/types.js.map +1 -1
- package/build-module/utils/element-rect.js +22 -12
- package/build-module/utils/element-rect.js.map +1 -1
- package/build-module/utils/hooks/use-on-value-update.js +3 -6
- package/build-module/utils/hooks/use-on-value-update.js.map +1 -1
- package/build-style/style-rtl.css +26 -13
- package/build-style/style.css +26 -13
- package/build-types/autocomplete/index.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control/component.d.ts +5 -15
- package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control-split-controls/component.d.ts +2 -1
- package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
- package/build-types/border-box-control/stories/index.story.d.ts +3 -2
- package/build-types/border-box-control/stories/index.story.d.ts.map +1 -1
- package/build-types/border-control/border-control/component.d.ts +3 -2
- package/build-types/border-control/border-control/component.d.ts.map +1 -1
- package/build-types/border-control/border-control-dropdown/component.d.ts +2 -1
- package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
- package/build-types/border-control/border-control-style-picker/component.d.ts.map +1 -1
- package/build-types/border-control/stories/index.story.d.ts +15 -30
- package/build-types/border-control/stories/index.story.d.ts.map +1 -1
- package/build-types/border-control/styles.d.ts.map +1 -1
- package/build-types/border-control/types.d.ts +12 -7
- package/build-types/border-control/types.d.ts.map +1 -1
- package/build-types/box-control/index.d.ts +4 -4
- package/build-types/box-control/stories/index.story.d.ts.map +1 -1
- package/build-types/box-control/types.d.ts +3 -3
- package/build-types/composite/group-label.d.ts.map +1 -1
- package/build-types/composite/index.d.ts.map +1 -1
- package/build-types/composite/item.d.ts.map +1 -1
- package/build-types/composite/stories/index.story.d.ts +22 -0
- package/build-types/composite/stories/index.story.d.ts.map +1 -1
- package/build-types/composite/test/index.d.ts +2 -0
- package/build-types/composite/test/index.d.ts.map +1 -0
- package/build-types/date-time/date/index.d.ts.map +1 -1
- package/build-types/dropdown/stories/index.story.d.ts.map +1 -1
- package/build-types/dropdown-menu/stories/index.story.d.ts.map +1 -1
- package/build-types/index.d.ts +23 -4
- package/build-types/index.d.ts.map +1 -1
- package/build-types/navigator/index.d.ts +171 -5
- package/build-types/navigator/index.d.ts.map +1 -1
- package/build-types/navigator/legacy.d.ts +226 -0
- package/build-types/navigator/legacy.d.ts.map +1 -0
- package/build-types/navigator/navigator/component.d.ts +3 -0
- package/build-types/navigator/navigator/component.d.ts.map +1 -0
- package/build-types/navigator/navigator-back-button/component.d.ts +0 -35
- package/build-types/navigator/navigator-back-button/component.d.ts.map +1 -1
- package/build-types/navigator/navigator-button/component.d.ts +0 -34
- package/build-types/navigator/navigator-button/component.d.ts.map +1 -1
- package/build-types/navigator/navigator-screen/component.d.ts +0 -35
- package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
- package/build-types/navigator/navigator-screen/use-screen-animate-presence.d.ts +16 -0
- package/build-types/navigator/navigator-screen/use-screen-animate-presence.d.ts.map +1 -0
- package/build-types/navigator/navigator-to-parent-button/component.d.ts +0 -4
- package/build-types/navigator/navigator-to-parent-button/component.d.ts.map +1 -1
- package/build-types/navigator/stories/index.story.d.ts +5 -5
- package/build-types/navigator/stories/index.story.d.ts.map +1 -1
- package/build-types/navigator/styles.d.ts +20 -7
- package/build-types/navigator/styles.d.ts.map +1 -1
- package/build-types/navigator/types.d.ts +19 -1
- package/build-types/navigator/types.d.ts.map +1 -1
- package/build-types/navigator/use-navigator.d.ts +4 -1
- package/build-types/navigator/use-navigator.d.ts.map +1 -1
- package/build-types/select-control/stories/index.story.d.ts +7 -0
- package/build-types/select-control/stories/index.story.d.ts.map +1 -1
- package/build-types/tabs/stories/index.story.d.ts +2 -1
- package/build-types/tabs/stories/index.story.d.ts.map +1 -1
- package/build-types/tabs/styles.d.ts.map +1 -1
- package/build-types/tabs/tablist.d.ts.map +1 -1
- package/build-types/tabs/use-track-overflow.d.ts +17 -0
- package/build-types/tabs/use-track-overflow.d.ts.map +1 -0
- package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +2 -2
- package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +2 -2
- package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +0 -1
- package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
- package/build-types/toggle-group-control/types.d.ts +2 -1
- package/build-types/toggle-group-control/types.d.ts.map +1 -1
- package/build-types/utils/element-rect.d.ts +8 -0
- package/build-types/utils/element-rect.d.ts.map +1 -1
- package/build-types/utils/hooks/use-on-value-update.d.ts.map +1 -1
- package/package.json +19 -19
- package/src/autocomplete/index.tsx +4 -1
- package/src/border-box-control/border-box-control/README.md +22 -26
- package/src/border-box-control/border-box-control/component.tsx +3 -14
- package/src/border-box-control/stories/index.story.tsx +2 -1
- package/src/border-control/border-control/README.md +26 -36
- package/src/border-control/border-control/component.tsx +1 -2
- package/src/border-control/border-control-dropdown/component.tsx +1 -15
- package/src/border-control/stories/index.story.tsx +4 -10
- package/src/border-control/styles.ts +0 -1
- package/src/border-control/test/index.js +2 -15
- package/src/border-control/types.ts +12 -7
- package/src/box-control/README.md +9 -12
- package/src/box-control/index.tsx +4 -4
- package/src/box-control/stories/index.story.tsx +1 -1
- package/src/box-control/types.ts +3 -3
- package/src/composite/group-label.tsx +7 -5
- package/src/composite/group.tsx +7 -7
- package/src/composite/hover.tsx +7 -7
- package/src/composite/index.tsx +6 -1
- package/src/composite/item.tsx +19 -1
- package/src/composite/legacy/test/index.tsx +22 -21
- package/src/composite/row.tsx +7 -7
- package/src/composite/stories/index.story.tsx +42 -0
- package/src/composite/test/index.tsx +123 -0
- package/src/composite/typeahead.tsx +7 -7
- package/src/date-time/date/index.tsx +2 -0
- package/src/dropdown/stories/index.story.tsx +1 -0
- package/src/dropdown/style.scss +10 -13
- package/src/dropdown-menu/stories/index.story.tsx +3 -0
- package/src/index.ts +19 -1
- package/src/menu-group/style.scss +4 -1
- package/src/menu-items-choice/style.scss +2 -0
- package/src/navigator/README.md +176 -0
- package/src/navigator/index.tsx +131 -0
- package/src/navigator/legacy.ts +169 -0
- package/src/navigator/{navigator-provider → navigator}/component.tsx +6 -44
- package/src/navigator/navigator-back-button/component.tsx +1 -37
- package/src/navigator/navigator-back-button/hook.ts +1 -1
- package/src/navigator/navigator-button/component.tsx +1 -36
- package/src/navigator/navigator-button/hook.ts +1 -1
- package/src/navigator/navigator-screen/component.tsx +48 -76
- package/src/navigator/navigator-screen/use-screen-animate-presence.ts +177 -0
- package/src/navigator/navigator-to-parent-button/component.tsx +2 -7
- package/src/navigator/stories/index.story.tsx +55 -54
- package/src/navigator/styles.ts +112 -41
- package/src/navigator/test/index.tsx +47 -47
- package/src/navigator/types.ts +19 -1
- package/src/navigator/use-navigator.ts +4 -1
- package/src/search-control/index.tsx +2 -2
- package/src/select-control/stories/index.story.tsx +14 -1
- package/src/tabs/stories/index.story.tsx +106 -0
- package/src/tabs/styles.ts +54 -20
- package/src/tabs/tablist.tsx +60 -26
- package/src/tabs/use-track-overflow.ts +76 -0
- package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +208 -44
- package/src/toggle-group-control/toggle-group-control/as-button-group.tsx +18 -10
- package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +19 -9
- package/src/toggle-group-control/toggle-group-control/component.tsx +114 -6
- package/src/toggle-group-control/toggle-group-control/styles.ts +41 -0
- package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +10 -27
- package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +0 -11
- package/src/toggle-group-control/types.ts +3 -1
- package/src/tools-panel/tools-panel/README.md +10 -10
- package/src/utils/element-rect.ts +32 -15
- package/src/utils/hooks/use-on-value-update.ts +3 -6
- package/tsconfig.tsbuildinfo +1 -1
- package/build/navigator/navigator-provider/component.js.map +0 -1
- package/build/utils/hooks/use-event.js +0 -41
- package/build/utils/hooks/use-event.js.map +0 -1
- package/build-module/navigator/navigator-provider/component.js.map +0 -1
- package/build-module/utils/hooks/use-event.js +0 -35
- package/build-module/utils/hooks/use-event.js.map +0 -1
- package/build-types/navigator/navigator-provider/component.d.ts +0 -37
- package/build-types/navigator/navigator-provider/component.d.ts.map +0 -1
- package/build-types/utils/hooks/use-event.d.ts +0 -20
- package/build-types/utils/hooks/use-event.d.ts.map +0 -1
- package/src/navigator/index.ts +0 -6
- package/src/navigator/navigator-back-button/README.md +0 -15
- package/src/navigator/navigator-button/README.md +0 -38
- package/src/navigator/navigator-provider/README.md +0 -94
- package/src/navigator/navigator-screen/README.md +0 -33
- package/src/navigator/navigator-to-parent-button/README.md +0 -17
- package/src/utils/hooks/use-event.ts +0 -38
|
@@ -3,13 +3,12 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { ForwardedRef } from 'react';
|
|
5
5
|
import * as Ariakit from '@ariakit/react';
|
|
6
|
-
import { motion } from 'framer-motion';
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
8
|
* WordPress dependencies
|
|
10
9
|
*/
|
|
11
|
-
import {
|
|
12
|
-
import { useMemo } from '@wordpress/element';
|
|
10
|
+
import { useInstanceId } from '@wordpress/compose';
|
|
11
|
+
import { useLayoutEffect, useMemo, useRef } from '@wordpress/element';
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
14
|
* Internal dependencies
|
|
@@ -27,12 +26,6 @@ import Tooltip from '../../tooltip';
|
|
|
27
26
|
|
|
28
27
|
const { ButtonContentView, LabelView } = styles;
|
|
29
28
|
|
|
30
|
-
const REDUCED_MOTION_TRANSITION_CONFIG = {
|
|
31
|
-
duration: 0,
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
const LAYOUT_ID = 'toggle-group-backdrop-shared-layout-id';
|
|
35
|
-
|
|
36
29
|
const WithToolTip = ( { showTooltip, text, children }: WithToolTipProps ) => {
|
|
37
30
|
if ( showTooltip && text ) {
|
|
38
31
|
return (
|
|
@@ -58,7 +51,6 @@ function ToggleGroupControlOptionBase(
|
|
|
58
51
|
>,
|
|
59
52
|
forwardedRef: ForwardedRef< any >
|
|
60
53
|
) {
|
|
61
|
-
const shouldReduceMotion = useReducedMotion();
|
|
62
54
|
const toggleGroupControlContext = useToggleGroupControlContext();
|
|
63
55
|
|
|
64
56
|
const id = useInstanceId(
|
|
@@ -107,7 +99,6 @@ function ToggleGroupControlOptionBase(
|
|
|
107
99
|
),
|
|
108
100
|
[ cx, isDeselectable, isIcon, isPressed, size, className ]
|
|
109
101
|
);
|
|
110
|
-
const backdropClasses = useMemo( () => cx( styles.backdropView ), [ cx ] );
|
|
111
102
|
|
|
112
103
|
const buttonOnClick = () => {
|
|
113
104
|
if ( isDeselectable && isPressed ) {
|
|
@@ -124,8 +115,15 @@ function ToggleGroupControlOptionBase(
|
|
|
124
115
|
ref: forwardedRef,
|
|
125
116
|
};
|
|
126
117
|
|
|
118
|
+
const labelRef = useRef< HTMLDivElement | null >( null );
|
|
119
|
+
useLayoutEffect( () => {
|
|
120
|
+
if ( isPressed && labelRef.current ) {
|
|
121
|
+
toggleGroupControlContext.setSelectedElement( labelRef.current );
|
|
122
|
+
}
|
|
123
|
+
}, [ isPressed, toggleGroupControlContext ] );
|
|
124
|
+
|
|
127
125
|
return (
|
|
128
|
-
<LabelView className={ labelViewClasses }>
|
|
126
|
+
<LabelView ref={ labelRef } className={ labelViewClasses }>
|
|
129
127
|
<WithToolTip
|
|
130
128
|
showTooltip={ showTooltip }
|
|
131
129
|
text={ otherButtonProps[ 'aria-label' ] }
|
|
@@ -163,21 +161,6 @@ function ToggleGroupControlOptionBase(
|
|
|
163
161
|
</Ariakit.Radio>
|
|
164
162
|
) }
|
|
165
163
|
</WithToolTip>
|
|
166
|
-
{ /* Animated backdrop using framer motion's shared layout animation */ }
|
|
167
|
-
{ isPressed ? (
|
|
168
|
-
<motion.div layout layoutRoot>
|
|
169
|
-
<motion.div
|
|
170
|
-
className={ backdropClasses }
|
|
171
|
-
transition={
|
|
172
|
-
shouldReduceMotion
|
|
173
|
-
? REDUCED_MOTION_TRANSITION_CONFIG
|
|
174
|
-
: undefined
|
|
175
|
-
}
|
|
176
|
-
role="presentation"
|
|
177
|
-
layoutId={ LAYOUT_ID }
|
|
178
|
-
/>
|
|
179
|
-
</motion.div>
|
|
180
|
-
) : null }
|
|
181
164
|
</LabelView>
|
|
182
165
|
);
|
|
183
166
|
}
|
|
@@ -119,14 +119,3 @@ const isIconStyles = ( {
|
|
|
119
119
|
padding-right: 0;
|
|
120
120
|
`;
|
|
121
121
|
};
|
|
122
|
-
|
|
123
|
-
export const backdropView = css`
|
|
124
|
-
background: ${ COLORS.gray[ 900 ] };
|
|
125
|
-
border-radius: ${ CONFIG.radiusXSmall };
|
|
126
|
-
position: absolute;
|
|
127
|
-
inset: 0;
|
|
128
|
-
z-index: 1;
|
|
129
|
-
// Windows High Contrast mode will show this outline, but not the box-shadow.
|
|
130
|
-
outline: 2px solid transparent;
|
|
131
|
-
outline-offset: -3px;
|
|
132
|
-
`;
|
|
@@ -137,9 +137,11 @@ export type ToggleGroupControlContextProps = {
|
|
|
137
137
|
size: ToggleGroupControlProps[ 'size' ];
|
|
138
138
|
value: ToggleGroupControlProps[ 'value' ];
|
|
139
139
|
setValue: ( newValue: string | number | undefined ) => void;
|
|
140
|
+
setSelectedElement: ( element: HTMLElement | undefined ) => void;
|
|
140
141
|
};
|
|
141
142
|
|
|
142
143
|
export type ToggleGroupControlMainControlProps = Pick<
|
|
143
144
|
ToggleGroupControlProps,
|
|
144
145
|
'children' | 'isAdaptiveWidth' | 'label' | 'size' | 'onChange' | 'value'
|
|
145
|
-
|
|
146
|
+
> &
|
|
147
|
+
Pick< ToggleGroupControlContextProps, 'setSelectedElement' >;
|
|
@@ -60,7 +60,7 @@ import styled from '@emotion/styled';
|
|
|
60
60
|
* WordPress dependencies
|
|
61
61
|
*/
|
|
62
62
|
import {
|
|
63
|
-
|
|
63
|
+
BoxControl,
|
|
64
64
|
__experimentalToolsPanel as ToolsPanel,
|
|
65
65
|
__experimentalToolsPanelItem as ToolsPanelItem,
|
|
66
66
|
__experimentalUnitControl as UnitControl,
|
|
@@ -91,8 +91,8 @@ export function DimensionPanel() {
|
|
|
91
91
|
return (
|
|
92
92
|
<ToolsPanel label={ __( 'Dimensions' ) } resetAll={ resetAll }>
|
|
93
93
|
<PanelDescription>
|
|
94
|
-
Select dimensions or spacing related settings from the
|
|
95
|
-
|
|
94
|
+
Select dimensions or spacing related settings from the menu for
|
|
95
|
+
additional controls.
|
|
96
96
|
</PanelDescription>
|
|
97
97
|
<SingleColumnItem
|
|
98
98
|
hasValue={ () => !! height }
|
|
@@ -154,8 +154,8 @@ export function DimensionPanel() {
|
|
|
154
154
|
Flags that the items in this ToolsPanel will be contained within an inner
|
|
155
155
|
wrapper element allowing the panel to lay them out accordingly.
|
|
156
156
|
|
|
157
|
-
-
|
|
158
|
-
-
|
|
157
|
+
- Required: No
|
|
158
|
+
- Default: `false`
|
|
159
159
|
|
|
160
160
|
### `dropdownMenuProps`: `{}`
|
|
161
161
|
|
|
@@ -176,7 +176,7 @@ The heading level of the panel's header.
|
|
|
176
176
|
Text to be displayed within the panel's header and as the `aria-label` for the
|
|
177
177
|
panel's dropdown menu.
|
|
178
178
|
|
|
179
|
-
-
|
|
179
|
+
- Required: Yes
|
|
180
180
|
|
|
181
181
|
### `panelId`: `string | null`
|
|
182
182
|
|
|
@@ -185,13 +185,13 @@ to restrict panel items. When a `panelId` is set, items can only register
|
|
|
185
185
|
themselves if the `panelId` is explicitly `null` or the item's `panelId` matches
|
|
186
186
|
exactly.
|
|
187
187
|
|
|
188
|
-
-
|
|
188
|
+
- Required: No
|
|
189
189
|
|
|
190
190
|
### `resetAll`: `( filters?: ResetAllFilter[] ) => void`
|
|
191
191
|
|
|
192
192
|
A function to call when the `Reset all` menu option is selected. As an argument, it receives an array containing the `resetAllFilter` callbacks of all the valid registered `ToolsPanelItems`.
|
|
193
193
|
|
|
194
|
-
-
|
|
194
|
+
- Required: Yes
|
|
195
195
|
|
|
196
196
|
### `shouldRenderPlaceholderItems`: `boolean`
|
|
197
197
|
|
|
@@ -201,5 +201,5 @@ placeholder content (instead of `null`) when they are toggled off and hidden.
|
|
|
201
201
|
Note that placeholder items won't apply the `className` that would be
|
|
202
202
|
normally applied to a visible `ToolsPanelItem` via the `className` prop.
|
|
203
203
|
|
|
204
|
-
-
|
|
205
|
-
-
|
|
204
|
+
- Required: No
|
|
205
|
+
- Default: `false`
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
* WordPress dependencies
|
|
4
4
|
*/
|
|
5
5
|
import { useLayoutEffect, useRef, useState } from '@wordpress/element';
|
|
6
|
-
import { useResizeObserver } from '@wordpress/compose';
|
|
7
|
-
/**
|
|
8
|
-
* Internal dependencies
|
|
9
|
-
*/
|
|
10
|
-
import { useEvent } from './hooks/use-event';
|
|
6
|
+
import { useEvent, useResizeObserver } from '@wordpress/compose';
|
|
11
7
|
|
|
12
8
|
/**
|
|
13
9
|
* The position and dimensions of an element, relative to its offset parent.
|
|
14
10
|
*/
|
|
15
11
|
export type ElementOffsetRect = {
|
|
12
|
+
/**
|
|
13
|
+
* The element the rect belongs to.
|
|
14
|
+
*/
|
|
15
|
+
element: HTMLElement | undefined;
|
|
16
16
|
/**
|
|
17
17
|
* The distance from the top edge of the offset parent to the top edge of
|
|
18
18
|
* the element.
|
|
@@ -47,6 +47,7 @@ export type ElementOffsetRect = {
|
|
|
47
47
|
* An `ElementOffsetRect` object with all values set to zero.
|
|
48
48
|
*/
|
|
49
49
|
export const NULL_ELEMENT_OFFSET_RECT = {
|
|
50
|
+
element: undefined,
|
|
50
51
|
top: 0,
|
|
51
52
|
right: 0,
|
|
52
53
|
bottom: 0,
|
|
@@ -79,9 +80,11 @@ export function getElementOffsetRect(
|
|
|
79
80
|
if ( rect.width === 0 || rect.height === 0 ) {
|
|
80
81
|
return;
|
|
81
82
|
}
|
|
83
|
+
const offsetParent = element.offsetParent;
|
|
82
84
|
const offsetParentRect =
|
|
83
|
-
|
|
84
|
-
|
|
85
|
+
offsetParent?.getBoundingClientRect() ?? NULL_ELEMENT_OFFSET_RECT;
|
|
86
|
+
const offsetParentScrollX = offsetParent?.scrollLeft ?? 0;
|
|
87
|
+
const offsetParentScrollY = offsetParent?.scrollTop ?? 0;
|
|
85
88
|
|
|
86
89
|
// Computed widths and heights have subpixel precision, and are not affected
|
|
87
90
|
// by distortions.
|
|
@@ -94,13 +97,22 @@ export function getElementOffsetRect(
|
|
|
94
97
|
const scaleY = computedHeight / rect.height;
|
|
95
98
|
|
|
96
99
|
return {
|
|
100
|
+
element,
|
|
97
101
|
// To obtain the adjusted values for the position:
|
|
98
102
|
// 1. Compute the element's position relative to the offset parent.
|
|
99
103
|
// 2. Correct for the scale factor.
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
+
// 3. Adjust for the scroll position of the offset parent.
|
|
105
|
+
top:
|
|
106
|
+
( rect.top - offsetParentRect?.top ) * scaleY + offsetParentScrollY,
|
|
107
|
+
right:
|
|
108
|
+
( offsetParentRect?.right - rect.right ) * scaleX -
|
|
109
|
+
offsetParentScrollX,
|
|
110
|
+
bottom:
|
|
111
|
+
( offsetParentRect?.bottom - rect.bottom ) * scaleY -
|
|
112
|
+
offsetParentScrollY,
|
|
113
|
+
left:
|
|
114
|
+
( rect.left - offsetParentRect?.left ) * scaleX +
|
|
115
|
+
offsetParentScrollX,
|
|
104
116
|
// Computed dimensions don't need any adjustments.
|
|
105
117
|
width: computedWidth,
|
|
106
118
|
height: computedHeight,
|
|
@@ -113,6 +125,9 @@ const POLL_RATE = 100;
|
|
|
113
125
|
* Tracks the position and dimensions of an element, relative to its offset
|
|
114
126
|
* parent. The element can be changed dynamically.
|
|
115
127
|
*
|
|
128
|
+
* When no element is provided (`null` or `undefined`), the hook will return
|
|
129
|
+
* a "null" rect, in which all values are `0` and `element` is `undefined`.
|
|
130
|
+
*
|
|
116
131
|
* **Note:** sometimes, the measurement will fail (see `getElementOffsetRect`'s
|
|
117
132
|
* documentation for more details). When that happens, this hook will attempt
|
|
118
133
|
* to measure again after a frame, and if that fails, it will poll every 100
|
|
@@ -149,10 +164,12 @@ export function useTrackElementOffsetRect(
|
|
|
149
164
|
}
|
|
150
165
|
} );
|
|
151
166
|
|
|
152
|
-
useLayoutEffect(
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
167
|
+
useLayoutEffect( () => {
|
|
168
|
+
setElement( targetElement );
|
|
169
|
+
if ( ! targetElement ) {
|
|
170
|
+
setIndicatorPosition( NULL_ELEMENT_OFFSET_RECT );
|
|
171
|
+
}
|
|
172
|
+
}, [ setElement, targetElement ] );
|
|
156
173
|
|
|
157
174
|
return indicatorPosition;
|
|
158
175
|
}
|
|
@@ -2,11 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* WordPress dependencies
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
* Internal dependencies
|
|
8
|
-
*/
|
|
9
|
-
import { useEvent } from './use-event';
|
|
5
|
+
import { useEvent } from '@wordpress/compose';
|
|
6
|
+
import { useRef, useLayoutEffect } from '@wordpress/element';
|
|
10
7
|
|
|
11
8
|
/**
|
|
12
9
|
* Context object for the `onUpdate` callback of `useOnValueUpdate`.
|
|
@@ -30,7 +27,7 @@ export function useOnValueUpdate< T >(
|
|
|
30
27
|
) {
|
|
31
28
|
const previousValueRef = useRef( value );
|
|
32
29
|
const updateCallbackEvent = useEvent( onUpdate );
|
|
33
|
-
|
|
30
|
+
useLayoutEffect( () => {
|
|
34
31
|
if ( previousValueRef.current !== value ) {
|
|
35
32
|
updateCallbackEvent( {
|
|
36
33
|
previousValue: previousValueRef.current,
|