@wordpress/components 28.7.0 → 28.8.1-next.1f6eadc42.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 +32 -0
- package/build/box-control/utils.js +1 -1
- package/build/box-control/utils.js.map +1 -1
- package/build/composite/context.js +1 -1
- package/build/composite/context.js.map +1 -1
- package/build/composite/group-label.js +1 -1
- package/build/composite/group-label.js.map +1 -1
- package/build/composite/group.js +1 -1
- package/build/composite/group.js.map +1 -1
- package/build/composite/hover.js +1 -1
- package/build/composite/hover.js.map +1 -1
- package/build/composite/index.js +17 -26
- package/build/composite/index.js.map +1 -1
- package/build/composite/item.js +1 -1
- package/build/composite/item.js.map +1 -1
- package/build/composite/legacy/index.js +59 -8
- package/build/composite/legacy/index.js.map +1 -1
- package/build/composite/row.js +1 -1
- package/build/composite/row.js.map +1 -1
- package/build/composite/typeahead.js +1 -1
- package/build/composite/typeahead.js.map +1 -1
- package/build/composite/types.js.map +1 -1
- package/build/date-time/date/index.js +1 -1
- package/build/date-time/date/index.js.map +1 -1
- package/build/date-time/date/styles.js +35 -24
- package/build/date-time/date/styles.js.map +1 -1
- package/build/date-time/date/use-lilius/index.js +163 -0
- package/build/date-time/date/use-lilius/index.js.map +1 -0
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/modal/index.js +11 -4
- package/build/modal/index.js.map +1 -1
- package/build/navigator/navigator-screen/component.js +5 -0
- package/build/navigator/navigator-screen/component.js.map +1 -1
- package/build/private-apis.js +0 -9
- package/build/private-apis.js.map +1 -1
- package/build/slot-fill/index.js +1 -0
- package/build/slot-fill/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 +5 -4
- package/build/tabs/tablist.js.map +1 -1
- package/build/utils/element-rect.js +73 -105
- package/build/utils/element-rect.js.map +1 -1
- package/build-module/box-control/utils.js +1 -1
- package/build-module/box-control/utils.js.map +1 -1
- package/build-module/composite/context.js +1 -1
- package/build-module/composite/context.js.map +1 -1
- package/build-module/composite/group-label.js +1 -1
- package/build-module/composite/group-label.js.map +1 -1
- package/build-module/composite/group.js +1 -1
- package/build-module/composite/group.js.map +1 -1
- package/build-module/composite/hover.js +1 -1
- package/build-module/composite/hover.js.map +1 -1
- package/build-module/composite/index.js +17 -26
- package/build-module/composite/index.js.map +1 -1
- package/build-module/composite/item.js +1 -1
- package/build-module/composite/item.js.map +1 -1
- package/build-module/composite/legacy/index.js +56 -8
- package/build-module/composite/legacy/index.js.map +1 -1
- package/build-module/composite/row.js +1 -1
- package/build-module/composite/row.js.map +1 -1
- package/build-module/composite/typeahead.js +1 -1
- package/build-module/composite/typeahead.js.map +1 -1
- package/build-module/composite/types.js.map +1 -1
- package/build-module/date-time/date/index.js +1 -2
- package/build-module/date-time/date/index.js.map +1 -1
- package/build-module/date-time/date/styles.js +31 -24
- package/build-module/date-time/date/styles.js.map +1 -1
- package/build-module/date-time/date/use-lilius/index.js +158 -0
- package/build-module/date-time/date/use-lilius/index.js.map +1 -0
- package/build-module/index.js +1 -0
- package/build-module/index.js.map +1 -1
- package/build-module/modal/index.js +12 -4
- package/build-module/modal/index.js.map +1 -1
- package/build-module/navigator/navigator-screen/component.js +4 -0
- package/build-module/navigator/navigator-screen/component.js.map +1 -1
- package/build-module/private-apis.js +0 -9
- package/build-module/private-apis.js.map +1 -1
- package/build-module/slot-fill/index.js +1 -0
- package/build-module/slot-fill/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 +5 -4
- package/build-module/tabs/tablist.js.map +1 -1
- package/build-module/utils/element-rect.js +74 -105
- package/build-module/utils/element-rect.js.map +1 -1
- package/build-style/style-rtl.css +1 -4
- package/build-style/style.css +1 -4
- package/build-types/box-control/utils.d.ts +1 -1
- package/build-types/box-control/utils.d.ts.map +1 -1
- package/build-types/composite/context.d.ts.map +1 -1
- package/build-types/composite/index.d.ts +36 -24
- package/build-types/composite/index.d.ts.map +1 -1
- package/build-types/composite/legacy/index.d.ts +25 -2
- package/build-types/composite/legacy/index.d.ts.map +1 -1
- package/build-types/composite/legacy/stories/index.story.d.ts.map +1 -1
- package/build-types/composite/stories/index.story.d.ts +9 -9
- package/build-types/composite/stories/index.story.d.ts.map +1 -1
- package/build-types/composite/types.d.ts +11 -10
- package/build-types/composite/types.d.ts.map +1 -1
- package/build-types/date-time/date/index.d.ts +0 -3
- package/build-types/date-time/date/index.d.ts.map +1 -1
- package/build-types/date-time/date/styles.d.ts.map +1 -1
- package/build-types/date-time/date/test/use-lilius.d.ts +2 -0
- package/build-types/date-time/date/test/use-lilius.d.ts.map +1 -0
- package/build-types/date-time/date/use-lilius/index.d.ts +169 -0
- package/build-types/date-time/date/use-lilius/index.d.ts.map +1 -0
- package/build-types/index.d.ts +1 -0
- package/build-types/index.d.ts.map +1 -1
- package/build-types/modal/index.d.ts.map +1 -1
- package/build-types/modal/stories/index.story.d.ts +3 -0
- package/build-types/modal/stories/index.story.d.ts.map +1 -1
- package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
- package/build-types/private-apis.d.ts.map +1 -1
- package/build-types/slot-fill/index.d.ts +3 -0
- package/build-types/slot-fill/index.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/utils/element-rect.d.ts +32 -74
- package/build-types/utils/element-rect.d.ts.map +1 -1
- package/package.json +19 -20
- package/src/box-control/utils.ts +1 -1
- package/src/composite/README.md +5 -24
- package/src/composite/{context.ts → context.tsx} +1 -2
- package/src/composite/group-label.tsx +1 -1
- package/src/composite/group.tsx +1 -1
- package/src/composite/hover.tsx +1 -1
- package/src/composite/index.tsx +17 -28
- package/src/composite/item.tsx +1 -1
- package/src/composite/legacy/index.tsx +72 -11
- package/src/composite/legacy/stories/index.story.tsx +2 -1
- package/src/composite/legacy/test/index.tsx +57 -1
- package/src/composite/row.tsx +1 -1
- package/src/composite/stories/index.story.tsx +185 -169
- package/src/composite/typeahead.tsx +1 -1
- package/src/composite/types.ts +13 -15
- package/src/date-time/date/index.tsx +1 -1
- package/src/date-time/date/styles.ts +31 -11
- package/src/date-time/date/test/use-lilius.ts +417 -0
- package/src/date-time/date/use-lilius/index.ts +394 -0
- package/src/index.ts +1 -0
- package/src/modal/index.tsx +16 -7
- package/src/modal/stories/index.story.tsx +8 -14
- package/src/modal/style.scss +0 -5
- package/src/navigator/navigator-screen/component.tsx +7 -0
- package/src/navigator/test/index.tsx +8 -0
- package/src/popover/style.scss +2 -1
- package/src/private-apis.ts +0 -9
- package/src/select-control/README.md +2 -2
- package/src/slot-fill/index.tsx +1 -0
- package/src/tabs/styles.ts +40 -11
- package/src/tabs/tablist.tsx +5 -4
- package/src/utils/element-rect.ts +93 -130
- package/tsconfig.tsbuildinfo +1 -1
- package/build/composite/store.js +0 -54
- package/build/composite/store.js.map +0 -1
- package/build-module/composite/store.js +0 -46
- package/build-module/composite/store.js.map +0 -1
- package/build-types/composite/store.d.ts +0 -25
- package/build-types/composite/store.d.ts.map +0 -1
- package/build-types/composite/stories/utils.d.ts +0 -29
- package/build-types/composite/stories/utils.d.ts.map +0 -1
- package/src/composite/store.ts +0 -46
- package/src/composite/stories/utils.tsx +0 -76
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/components",
|
|
3
|
-
"version": "28.
|
|
3
|
+
"version": "28.8.1-next.1f6eadc42.0",
|
|
4
4
|
"description": "UI components for WordPress.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -43,23 +43,23 @@
|
|
|
43
43
|
"@types/gradient-parser": "0.1.3",
|
|
44
44
|
"@types/highlight-words-core": "1.2.1",
|
|
45
45
|
"@use-gesture/react": "^10.3.1",
|
|
46
|
-
"@wordpress/a11y": "^4.7.0",
|
|
47
|
-
"@wordpress/compose": "^7.
|
|
48
|
-
"@wordpress/date": "^5.7.0",
|
|
49
|
-
"@wordpress/deprecated": "^4.7.0",
|
|
50
|
-
"@wordpress/dom": "^4.7.0",
|
|
51
|
-
"@wordpress/element": "^6.7.0",
|
|
52
|
-
"@wordpress/escape-html": "^3.7.0",
|
|
53
|
-
"@wordpress/hooks": "^4.7.0",
|
|
54
|
-
"@wordpress/html-entities": "^4.7.0",
|
|
55
|
-
"@wordpress/i18n": "^5.7.0",
|
|
56
|
-
"@wordpress/icons": "^10.7.0",
|
|
57
|
-
"@wordpress/is-shallow-equal": "^5.7.0",
|
|
58
|
-
"@wordpress/keycodes": "^4.7.0",
|
|
59
|
-
"@wordpress/primitives": "^4.7.0",
|
|
60
|
-
"@wordpress/private-apis": "^1.7.0",
|
|
61
|
-
"@wordpress/rich-text": "^7.7.0",
|
|
62
|
-
"@wordpress/warning": "^3.7.0",
|
|
46
|
+
"@wordpress/a11y": "^4.7.1-next.1f6eadc42.0",
|
|
47
|
+
"@wordpress/compose": "^7.8.1-next.1f6eadc42.0",
|
|
48
|
+
"@wordpress/date": "^5.7.1-next.1f6eadc42.0",
|
|
49
|
+
"@wordpress/deprecated": "^4.7.1-next.1f6eadc42.0",
|
|
50
|
+
"@wordpress/dom": "^4.7.1-next.1f6eadc42.0",
|
|
51
|
+
"@wordpress/element": "^6.7.1-next.1f6eadc42.0",
|
|
52
|
+
"@wordpress/escape-html": "^3.7.1-next.1f6eadc42.0",
|
|
53
|
+
"@wordpress/hooks": "^4.7.1-next.1f6eadc42.0",
|
|
54
|
+
"@wordpress/html-entities": "^4.7.1-next.1f6eadc42.0",
|
|
55
|
+
"@wordpress/i18n": "^5.7.1-next.1f6eadc42.0",
|
|
56
|
+
"@wordpress/icons": "^10.7.1-next.1f6eadc42.0",
|
|
57
|
+
"@wordpress/is-shallow-equal": "^5.7.1-next.1f6eadc42.0",
|
|
58
|
+
"@wordpress/keycodes": "^4.7.1-next.1f6eadc42.0",
|
|
59
|
+
"@wordpress/primitives": "^4.7.1-next.1f6eadc42.0",
|
|
60
|
+
"@wordpress/private-apis": "^1.7.1-next.1f6eadc42.0",
|
|
61
|
+
"@wordpress/rich-text": "^7.7.1-next.1f6eadc42.0",
|
|
62
|
+
"@wordpress/warning": "^3.7.1-next.1f6eadc42.0",
|
|
63
63
|
"change-case": "^4.1.2",
|
|
64
64
|
"clsx": "^2.1.1",
|
|
65
65
|
"colord": "^2.7.0",
|
|
@@ -75,7 +75,6 @@
|
|
|
75
75
|
"re-resizable": "^6.4.0",
|
|
76
76
|
"react-colorful": "^5.3.1",
|
|
77
77
|
"remove-accents": "^0.5.0",
|
|
78
|
-
"use-lilius": "^2.0.5",
|
|
79
78
|
"uuid": "^9.0.1"
|
|
80
79
|
},
|
|
81
80
|
"peerDependencies": {
|
|
@@ -85,5 +84,5 @@
|
|
|
85
84
|
"publishConfig": {
|
|
86
85
|
"access": "public"
|
|
87
86
|
},
|
|
88
|
-
"gitHead": "
|
|
87
|
+
"gitHead": "960a22b909c9fdbc90e7435b7ba8947b9218837a"
|
|
89
88
|
}
|
package/src/box-control/utils.ts
CHANGED
|
@@ -179,7 +179,7 @@ export function isValuesMixed(
|
|
|
179
179
|
*/
|
|
180
180
|
export function isValuesDefined( values?: BoxControlValue ) {
|
|
181
181
|
return (
|
|
182
|
-
values
|
|
182
|
+
values &&
|
|
183
183
|
Object.values( values ).filter(
|
|
184
184
|
// Switching units when input is empty causes values only
|
|
185
185
|
// containing units. This gives false positive on mixed values
|
package/src/composite/README.md
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
# `Composite`
|
|
2
2
|
|
|
3
|
-
<div class="callout callout-alert">
|
|
4
|
-
This feature is still experimental. “Experimental” means this is an early implementation subject to drastic and breaking changes.
|
|
5
|
-
</div>
|
|
6
|
-
|
|
7
3
|
`Composite` provides a single tab stop on the page and allows navigation through the focusable descendants with arrow keys. This abstract component is based on the [WAI-ARIA Composite Role](https://w3c.github.io/aria/#composite).
|
|
8
4
|
|
|
9
5
|
## Usage
|
|
10
6
|
|
|
11
7
|
```jsx
|
|
12
|
-
import { Composite
|
|
8
|
+
import { Composite } from '@wordpress/components';
|
|
13
9
|
|
|
14
|
-
|
|
15
|
-
<Composite store={store}>
|
|
10
|
+
<Composite>
|
|
16
11
|
<Composite.Group>
|
|
17
12
|
<Composite.GroupLabel>Label</Composite.GroupLabel>
|
|
18
13
|
<Composite.Item>Item 1</Composite.Item>
|
|
@@ -21,11 +16,11 @@ const store = useCompositeStore();
|
|
|
21
16
|
</Composite>
|
|
22
17
|
```
|
|
23
18
|
|
|
24
|
-
##
|
|
19
|
+
## Components
|
|
25
20
|
|
|
26
|
-
### `
|
|
21
|
+
### `Composite`
|
|
27
22
|
|
|
28
|
-
|
|
23
|
+
Renders a composite widget.
|
|
29
24
|
|
|
30
25
|
#### Props
|
|
31
26
|
|
|
@@ -131,20 +126,6 @@ This only affects the composite widget behavior. You still need to set `dir="rtl
|
|
|
131
126
|
- Required: no
|
|
132
127
|
- Default: `false`
|
|
133
128
|
|
|
134
|
-
## Components
|
|
135
|
-
|
|
136
|
-
### `Composite`
|
|
137
|
-
|
|
138
|
-
Renders a composite widget.
|
|
139
|
-
|
|
140
|
-
#### Props
|
|
141
|
-
|
|
142
|
-
##### `store`: `CompositeStore<CompositeStoreItem>`
|
|
143
|
-
|
|
144
|
-
Object returned by the `useCompositeStore` hook.
|
|
145
|
-
|
|
146
|
-
- Required: yes
|
|
147
|
-
|
|
148
129
|
##### `render`: `RenderProp<React.HTMLAttributes<any> & { ref?: React.Ref<any> | undefined; }> | React.ReactElement<any, string | React.JSXElementConstructor<any>>`
|
|
149
130
|
|
|
150
131
|
Allows the component to be rendered as a different HTML element or React component. The value can be a React element or a function that takes in the original component props and gives back a React element with the props merged.
|
|
@@ -8,7 +8,6 @@ import { createContext, useContext } from '@wordpress/element';
|
|
|
8
8
|
*/
|
|
9
9
|
import type { CompositeContextProps } from './types';
|
|
10
10
|
|
|
11
|
-
export const CompositeContext =
|
|
12
|
-
createContext< CompositeContextProps >( undefined );
|
|
11
|
+
export const CompositeContext = createContext< CompositeContextProps >( {} );
|
|
13
12
|
|
|
14
13
|
export const useCompositeContext = () => useContext( CompositeContext );
|
package/src/composite/group.tsx
CHANGED
package/src/composite/hover.tsx
CHANGED
package/src/composite/index.tsx
CHANGED
|
@@ -16,6 +16,7 @@ import * as Ariakit from '@ariakit/react';
|
|
|
16
16
|
/**
|
|
17
17
|
* WordPress dependencies
|
|
18
18
|
*/
|
|
19
|
+
import { isRTL } from '@wordpress/i18n';
|
|
19
20
|
import { useMemo, forwardRef } from '@wordpress/element';
|
|
20
21
|
|
|
21
22
|
/**
|
|
@@ -38,10 +39,9 @@ import type { CompositeProps } from './types';
|
|
|
38
39
|
*
|
|
39
40
|
* @example
|
|
40
41
|
* ```jsx
|
|
41
|
-
* import { Composite
|
|
42
|
+
* import { Composite } from '@wordpress/components';
|
|
42
43
|
*
|
|
43
|
-
*
|
|
44
|
-
* <Composite store={store}>
|
|
44
|
+
* <Composite>
|
|
45
45
|
* <Composite.Item>Item 1</Composite.Item>
|
|
46
46
|
* <Composite.Item>Item 2</Composite.Item>
|
|
47
47
|
* </Composite>
|
|
@@ -62,21 +62,18 @@ export const Composite = Object.assign(
|
|
|
62
62
|
focusShift = false,
|
|
63
63
|
virtualFocus = false,
|
|
64
64
|
orientation = 'both',
|
|
65
|
-
rtl =
|
|
65
|
+
rtl = isRTL(),
|
|
66
66
|
|
|
67
67
|
// Composite component props
|
|
68
68
|
children,
|
|
69
69
|
disabled = false,
|
|
70
70
|
|
|
71
|
-
// To be removed
|
|
72
|
-
store: storeProp,
|
|
73
|
-
|
|
74
71
|
// Rest props
|
|
75
72
|
...props
|
|
76
73
|
},
|
|
77
74
|
ref
|
|
78
75
|
) {
|
|
79
|
-
const
|
|
76
|
+
const store = Ariakit.useCompositeStore( {
|
|
80
77
|
activeId,
|
|
81
78
|
defaultActiveId,
|
|
82
79
|
setActiveId,
|
|
@@ -88,8 +85,6 @@ export const Composite = Object.assign(
|
|
|
88
85
|
rtl,
|
|
89
86
|
} );
|
|
90
87
|
|
|
91
|
-
const store = storeProp || newStore;
|
|
92
|
-
|
|
93
88
|
const contextValue = useMemo(
|
|
94
89
|
() => ( {
|
|
95
90
|
store,
|
|
@@ -116,10 +111,9 @@ export const Composite = Object.assign(
|
|
|
116
111
|
*
|
|
117
112
|
* @example
|
|
118
113
|
* ```jsx
|
|
119
|
-
* import { Composite
|
|
114
|
+
* import { Composite } from '@wordpress/components';
|
|
120
115
|
*
|
|
121
|
-
*
|
|
122
|
-
* <Composite store={store}>
|
|
116
|
+
* <Composite>
|
|
123
117
|
* <Composite.Group>
|
|
124
118
|
* <Composite.GroupLabel>Label</Composite.GroupLabel>
|
|
125
119
|
* <Composite.Item>Item 1</Composite.Item>
|
|
@@ -138,10 +132,9 @@ export const Composite = Object.assign(
|
|
|
138
132
|
*
|
|
139
133
|
* @example
|
|
140
134
|
* ```jsx
|
|
141
|
-
* import { Composite
|
|
135
|
+
* import { Composite } from '@wordpress/components';
|
|
142
136
|
*
|
|
143
|
-
*
|
|
144
|
-
* <Composite store={store}>
|
|
137
|
+
* <Composite>
|
|
145
138
|
* <Composite.Group>
|
|
146
139
|
* <Composite.GroupLabel>Label</Composite.GroupLabel>
|
|
147
140
|
* <Composite.Item>Item 1</Composite.Item>
|
|
@@ -158,10 +151,9 @@ export const Composite = Object.assign(
|
|
|
158
151
|
*
|
|
159
152
|
* @example
|
|
160
153
|
* ```jsx
|
|
161
|
-
* import { Composite
|
|
154
|
+
* import { Composite } from '@wordpress/components';
|
|
162
155
|
*
|
|
163
|
-
*
|
|
164
|
-
* <Composite store={store}>
|
|
156
|
+
* <Composite>
|
|
165
157
|
* <Composite.Item>Item 1</Composite.Item>
|
|
166
158
|
* <Composite.Item>Item 2</Composite.Item>
|
|
167
159
|
* <Composite.Item>Item 3</Composite.Item>
|
|
@@ -176,10 +168,9 @@ export const Composite = Object.assign(
|
|
|
176
168
|
*
|
|
177
169
|
* @example
|
|
178
170
|
* ```jsx
|
|
179
|
-
* import { Composite
|
|
171
|
+
* import { Composite } from '@wordpress/components';
|
|
180
172
|
*
|
|
181
|
-
*
|
|
182
|
-
* <Composite store={store}>
|
|
173
|
+
* <Composite>
|
|
183
174
|
* <Composite.Row>
|
|
184
175
|
* <Composite.Item>Item 1.1</Composite.Item>
|
|
185
176
|
* <Composite.Item>Item 1.2</Composite.Item>
|
|
@@ -201,10 +192,9 @@ export const Composite = Object.assign(
|
|
|
201
192
|
*
|
|
202
193
|
* @example
|
|
203
194
|
* ```jsx
|
|
204
|
-
* import { Composite
|
|
195
|
+
* import { Composite } from '@wordpress/components';
|
|
205
196
|
*
|
|
206
|
-
*
|
|
207
|
-
* <Composite store={store}>
|
|
197
|
+
* <Composite>
|
|
208
198
|
* <Composite.Hover render={ <Composite.Item /> }>
|
|
209
199
|
* Item 1
|
|
210
200
|
* </Composite.Hover>
|
|
@@ -224,10 +214,9 @@ export const Composite = Object.assign(
|
|
|
224
214
|
*
|
|
225
215
|
* @example
|
|
226
216
|
* ```jsx
|
|
227
|
-
* import { Composite
|
|
217
|
+
* import { Composite } from '@wordpress/components';
|
|
228
218
|
*
|
|
229
|
-
*
|
|
230
|
-
* <Composite store={store} render={ <CompositeTypeahead /> }>
|
|
219
|
+
* <Composite render={ <CompositeTypeahead /> }>
|
|
231
220
|
* <Composite.Item>Item 1</Composite.Item>
|
|
232
221
|
* <Composite.Item>Item 2</Composite.Item>
|
|
233
222
|
* </Composite>
|
package/src/composite/item.tsx
CHANGED
|
@@ -13,17 +13,22 @@
|
|
|
13
13
|
* @see https://ariakit.org/components/composite
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* External dependencies
|
|
18
|
+
*/
|
|
19
|
+
import * as Ariakit from '@ariakit/react';
|
|
20
|
+
|
|
16
21
|
/**
|
|
17
22
|
* WordPress dependencies
|
|
18
23
|
*/
|
|
19
24
|
import { forwardRef } from '@wordpress/element';
|
|
25
|
+
import { useInstanceId } from '@wordpress/compose';
|
|
26
|
+
import deprecated from '@wordpress/deprecated';
|
|
20
27
|
|
|
21
28
|
/**
|
|
22
29
|
* Internal dependencies
|
|
23
30
|
*/
|
|
24
31
|
import { Composite as Current } from '..';
|
|
25
|
-
import { useCompositeStore } from '../store';
|
|
26
|
-
import { useInstanceId } from '@wordpress/compose';
|
|
27
32
|
|
|
28
33
|
type Orientation = 'horizontal' | 'vertical';
|
|
29
34
|
|
|
@@ -79,7 +84,7 @@ export interface LegacyStateOptions {
|
|
|
79
84
|
|
|
80
85
|
type Component = React.FunctionComponent< any >;
|
|
81
86
|
|
|
82
|
-
type CompositeStore = ReturnType< typeof useCompositeStore >;
|
|
87
|
+
type CompositeStore = ReturnType< typeof Ariakit.useCompositeStore >;
|
|
83
88
|
type CompositeStoreState = { store: CompositeStore };
|
|
84
89
|
export type CompositeState = CompositeStoreState &
|
|
85
90
|
Required< Pick< LegacyStateOptions, 'baseId' > >;
|
|
@@ -119,12 +124,31 @@ function mapLegacyStatePropsToComponentProps(
|
|
|
119
124
|
return legacyProps;
|
|
120
125
|
}
|
|
121
126
|
|
|
127
|
+
const LEGACY_TO_NEW_DISPLAY_NAME = {
|
|
128
|
+
__unstableComposite: 'Composite',
|
|
129
|
+
__unstableCompositeGroup: 'Composite.Group or Composite.Row',
|
|
130
|
+
__unstableCompositeItem: 'Composite.Item',
|
|
131
|
+
__unstableUseCompositeState: 'Composite',
|
|
132
|
+
};
|
|
133
|
+
|
|
122
134
|
function proxyComposite< C extends Component >(
|
|
123
135
|
ProxiedComponent: C | React.ForwardRefExoticComponent< C >,
|
|
124
136
|
propMap: Record< string, string > = {}
|
|
125
137
|
): CompositeComponent< C > {
|
|
126
|
-
const displayName = ProxiedComponent.displayName;
|
|
138
|
+
const displayName = ProxiedComponent.displayName ?? '';
|
|
139
|
+
|
|
127
140
|
const Component = ( legacyProps: CompositeStateProps ) => {
|
|
141
|
+
deprecated( `wp.components.${ displayName }`, {
|
|
142
|
+
since: '6.7',
|
|
143
|
+
alternative: LEGACY_TO_NEW_DISPLAY_NAME.hasOwnProperty(
|
|
144
|
+
displayName
|
|
145
|
+
)
|
|
146
|
+
? LEGACY_TO_NEW_DISPLAY_NAME[
|
|
147
|
+
displayName as keyof typeof LEGACY_TO_NEW_DISPLAY_NAME
|
|
148
|
+
]
|
|
149
|
+
: undefined,
|
|
150
|
+
} );
|
|
151
|
+
|
|
128
152
|
const { store, ...rest } =
|
|
129
153
|
mapLegacyStatePropsToComponentProps( legacyProps );
|
|
130
154
|
const props = rest as ComponentProps< C >;
|
|
@@ -149,7 +173,7 @@ function proxyComposite< C extends Component >(
|
|
|
149
173
|
// `CompositeRow`, but this has been split into two different
|
|
150
174
|
// components. We handle that difference by checking on the
|
|
151
175
|
// provided role, and returning the appropriate component.
|
|
152
|
-
const
|
|
176
|
+
const UnproxiedCompositeGroup = forwardRef<
|
|
153
177
|
any,
|
|
154
178
|
React.ComponentPropsWithoutRef< typeof Current.Group | typeof Current.Row >
|
|
155
179
|
>( ( { role, ...props }, ref ) => {
|
|
@@ -157,15 +181,52 @@ const unproxiedCompositeGroup = forwardRef<
|
|
|
157
181
|
return <Component ref={ ref } role={ role } { ...props } />;
|
|
158
182
|
} );
|
|
159
183
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
184
|
+
/**
|
|
185
|
+
* _Note: please use the `Composite` component instead._
|
|
186
|
+
*
|
|
187
|
+
* @deprecated
|
|
188
|
+
*/
|
|
189
|
+
export const Composite = proxyComposite(
|
|
190
|
+
Object.assign( Current, { displayName: '__unstableComposite' } ),
|
|
191
|
+
{ baseId: 'id' }
|
|
192
|
+
);
|
|
193
|
+
/**
|
|
194
|
+
* _Note: please use the `Composite.Row` or `Composite.Group` components instead._
|
|
195
|
+
*
|
|
196
|
+
* @deprecated
|
|
197
|
+
*/
|
|
198
|
+
export const CompositeGroup = proxyComposite(
|
|
199
|
+
Object.assign( UnproxiedCompositeGroup, {
|
|
200
|
+
displayName: '__unstableCompositeGroup',
|
|
201
|
+
} )
|
|
202
|
+
);
|
|
203
|
+
/**
|
|
204
|
+
* _Note: please use the `Composite.Item` component instead._
|
|
205
|
+
*
|
|
206
|
+
* @deprecated
|
|
207
|
+
*/
|
|
208
|
+
export const CompositeItem = proxyComposite(
|
|
209
|
+
Object.assign( Current.Item, {
|
|
210
|
+
displayName: '__unstableCompositeItem',
|
|
211
|
+
} ),
|
|
212
|
+
{
|
|
213
|
+
focusable: 'accessibleWhenDisabled',
|
|
214
|
+
}
|
|
215
|
+
);
|
|
165
216
|
|
|
217
|
+
/**
|
|
218
|
+
* _Note: please use the `Composite` component instead._
|
|
219
|
+
*
|
|
220
|
+
* @deprecated
|
|
221
|
+
*/
|
|
166
222
|
export function useCompositeState(
|
|
167
223
|
legacyStateOptions: LegacyStateOptions = {}
|
|
168
224
|
): CompositeState {
|
|
225
|
+
deprecated( `wp.components.__unstableUseCompositeState`, {
|
|
226
|
+
since: '6.7',
|
|
227
|
+
alternative: LEGACY_TO_NEW_DISPLAY_NAME.__unstableUseCompositeState,
|
|
228
|
+
} );
|
|
229
|
+
|
|
169
230
|
const {
|
|
170
231
|
baseId,
|
|
171
232
|
currentId: defaultActiveId,
|
|
@@ -180,7 +241,7 @@ export function useCompositeState(
|
|
|
180
241
|
|
|
181
242
|
return {
|
|
182
243
|
baseId: useInstanceId( Composite, 'composite', baseId ),
|
|
183
|
-
store: useCompositeStore( {
|
|
244
|
+
store: Ariakit.useCompositeStore( {
|
|
184
245
|
defaultActiveId,
|
|
185
246
|
rtl,
|
|
186
247
|
orientation,
|
|
@@ -15,7 +15,8 @@ import {
|
|
|
15
15
|
import { UseCompositeStatePlaceholder, transform } from './utils';
|
|
16
16
|
|
|
17
17
|
const meta: Meta< typeof UseCompositeStatePlaceholder > = {
|
|
18
|
-
title: 'Components/Composite',
|
|
18
|
+
title: 'Components (Deprecated)/Composite (Unstable)',
|
|
19
|
+
id: 'components-composite-unstable',
|
|
19
20
|
component: UseCompositeStatePlaceholder,
|
|
20
21
|
subcomponents: {
|
|
21
22
|
Composite,
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
queryByAttribute,
|
|
6
|
+
render,
|
|
7
|
+
screen,
|
|
8
|
+
renderHook,
|
|
9
|
+
} from '@testing-library/react';
|
|
5
10
|
import { press, waitFor } from '@ariakit/test';
|
|
6
11
|
|
|
7
12
|
/**
|
|
@@ -156,6 +161,57 @@ function getShiftTestItems() {
|
|
|
156
161
|
};
|
|
157
162
|
}
|
|
158
163
|
|
|
164
|
+
// Checking for deprecation warnings before other tests because the `deprecated`
|
|
165
|
+
// utility only fires a console.warn the first time a component is rendered.
|
|
166
|
+
describe( 'Shows a deprecation warning', () => {
|
|
167
|
+
it( 'useCompositeState', () => {
|
|
168
|
+
renderHook( () => useCompositeState() );
|
|
169
|
+
expect( console ).toHaveWarnedWith(
|
|
170
|
+
'wp.components.__unstableUseCompositeState is deprecated since version 6.7. Please use Composite instead.'
|
|
171
|
+
);
|
|
172
|
+
} );
|
|
173
|
+
it( 'Composite', () => {
|
|
174
|
+
const Test = () => {
|
|
175
|
+
const props = useCompositeState();
|
|
176
|
+
return <Composite { ...props } />;
|
|
177
|
+
};
|
|
178
|
+
render( <Test /> );
|
|
179
|
+
expect( console ).toHaveWarnedWith(
|
|
180
|
+
'wp.components.__unstableComposite is deprecated since version 6.7. Please use Composite instead.'
|
|
181
|
+
);
|
|
182
|
+
} );
|
|
183
|
+
it( 'CompositeItem', () => {
|
|
184
|
+
const Test = () => {
|
|
185
|
+
const props = useCompositeState();
|
|
186
|
+
return (
|
|
187
|
+
<Composite { ...props }>
|
|
188
|
+
<CompositeItem { ...props } />
|
|
189
|
+
</Composite>
|
|
190
|
+
);
|
|
191
|
+
};
|
|
192
|
+
render( <Test /> );
|
|
193
|
+
expect( console ).toHaveWarnedWith(
|
|
194
|
+
'wp.components.__unstableCompositeItem is deprecated since version 6.7. Please use Composite.Item instead.'
|
|
195
|
+
);
|
|
196
|
+
} );
|
|
197
|
+
it( 'CompositeGroup', () => {
|
|
198
|
+
const Test = () => {
|
|
199
|
+
const props = useCompositeState();
|
|
200
|
+
return (
|
|
201
|
+
<Composite { ...props }>
|
|
202
|
+
<CompositeGroup { ...props }>
|
|
203
|
+
<CompositeItem { ...props } />
|
|
204
|
+
</CompositeGroup>
|
|
205
|
+
</Composite>
|
|
206
|
+
);
|
|
207
|
+
};
|
|
208
|
+
render( <Test /> );
|
|
209
|
+
expect( console ).toHaveWarnedWith(
|
|
210
|
+
'wp.components.__unstableCompositeGroup is deprecated since version 6.7. Please use Composite.Group or Composite.Row instead.'
|
|
211
|
+
);
|
|
212
|
+
} );
|
|
213
|
+
} );
|
|
214
|
+
|
|
159
215
|
describe.each( [
|
|
160
216
|
[
|
|
161
217
|
'With "spread" state',
|
package/src/composite/row.tsx
CHANGED