@fluentui/react-popover 9.0.0-alpha.40 → 9.0.0-alpha.44
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.json +67 -1
- package/CHANGELOG.md +39 -2
- package/dist/react-popover.d.ts +35 -46
- package/lib/common/isConformant.js +2 -0
- package/lib/common/isConformant.js.map +1 -1
- package/lib/components/Popover/Popover.types.d.ts +13 -20
- package/lib/components/Popover/Popover.types.js.map +1 -1
- package/lib/components/Popover/usePopover.js +42 -55
- package/lib/components/Popover/usePopover.js.map +1 -1
- package/lib/components/PopoverSurface/PopoverSurface.d.ts +1 -1
- package/lib/components/PopoverSurface/PopoverSurface.js.map +1 -1
- package/lib/components/PopoverSurface/PopoverSurface.types.d.ts +7 -15
- package/lib/components/PopoverSurface/PopoverSurface.types.js.map +1 -1
- package/lib/components/PopoverSurface/renderPopoverSurface.js +4 -3
- package/lib/components/PopoverSurface/renderPopoverSurface.js.map +1 -1
- package/lib/components/PopoverSurface/usePopoverSurface.d.ts +4 -3
- package/lib/components/PopoverSurface/usePopoverSurface.js +24 -15
- package/lib/components/PopoverSurface/usePopoverSurface.js.map +1 -1
- package/lib/components/PopoverSurface/usePopoverSurfaceStyles.js +1 -1
- package/lib/components/PopoverSurface/usePopoverSurfaceStyles.js.map +1 -1
- package/lib/components/PopoverTrigger/usePopoverTrigger.js +13 -16
- package/lib/components/PopoverTrigger/usePopoverTrigger.js.map +1 -1
- package/lib-amd/common/isConformant.js +2 -0
- package/lib-amd/common/isConformant.js.map +1 -1
- package/lib-amd/components/Popover/Popover.types.d.ts +13 -20
- package/lib-amd/components/Popover/Popover.types.js.map +1 -1
- package/lib-amd/components/Popover/usePopover.js +30 -40
- package/lib-amd/components/Popover/usePopover.js.map +1 -1
- package/lib-amd/components/PopoverSurface/PopoverSurface.d.ts +1 -1
- package/lib-amd/components/PopoverSurface/PopoverSurface.js.map +1 -1
- package/lib-amd/components/PopoverSurface/PopoverSurface.types.d.ts +7 -15
- package/lib-amd/components/PopoverSurface/PopoverSurface.types.js.map +1 -1
- package/lib-amd/components/PopoverSurface/renderPopoverSurface.js +3 -3
- package/lib-amd/components/PopoverSurface/renderPopoverSurface.js.map +1 -1
- package/lib-amd/components/PopoverSurface/usePopoverSurface.d.ts +4 -3
- package/lib-amd/components/PopoverSurface/usePopoverSurface.js +12 -10
- package/lib-amd/components/PopoverSurface/usePopoverSurface.js.map +1 -1
- package/lib-amd/components/PopoverSurface/usePopoverSurfaceStyles.js +1 -1
- package/lib-amd/components/PopoverSurface/usePopoverSurfaceStyles.js.map +1 -1
- package/lib-amd/components/PopoverTrigger/usePopoverTrigger.js +8 -11
- package/lib-amd/components/PopoverTrigger/usePopoverTrigger.js.map +1 -1
- package/lib-commonjs/common/isConformant.js +2 -0
- package/lib-commonjs/common/isConformant.js.map +1 -1
- package/lib-commonjs/components/Popover/Popover.types.d.ts +13 -20
- package/lib-commonjs/components/Popover/usePopover.js +41 -54
- package/lib-commonjs/components/Popover/usePopover.js.map +1 -1
- package/lib-commonjs/components/PopoverSurface/PopoverSurface.d.ts +1 -1
- package/lib-commonjs/components/PopoverSurface/PopoverSurface.js.map +1 -1
- package/lib-commonjs/components/PopoverSurface/PopoverSurface.types.d.ts +7 -15
- package/lib-commonjs/components/PopoverSurface/renderPopoverSurface.js +5 -3
- package/lib-commonjs/components/PopoverSurface/renderPopoverSurface.js.map +1 -1
- package/lib-commonjs/components/PopoverSurface/usePopoverSurface.d.ts +4 -3
- package/lib-commonjs/components/PopoverSurface/usePopoverSurface.js +25 -16
- package/lib-commonjs/components/PopoverSurface/usePopoverSurface.js.map +1 -1
- package/lib-commonjs/components/PopoverSurface/usePopoverSurfaceStyles.js +1 -1
- package/lib-commonjs/components/PopoverSurface/usePopoverSurfaceStyles.js.map +1 -1
- package/lib-commonjs/components/PopoverTrigger/usePopoverTrigger.js +13 -16
- package/lib-commonjs/components/PopoverTrigger/usePopoverTrigger.js.map +1 -1
- package/package.json +10 -10
package/CHANGELOG.json
CHANGED
@@ -2,7 +2,73 @@
|
|
2
2
|
"name": "@fluentui/react-popover",
|
3
3
|
"entries": [
|
4
4
|
{
|
5
|
-
"date": "Fri,
|
5
|
+
"date": "Fri, 17 Sep 2021 07:32:57 GMT",
|
6
|
+
"tag": "@fluentui/react-popover_v9.0.0-alpha.44",
|
7
|
+
"version": "9.0.0-alpha.44",
|
8
|
+
"comments": {
|
9
|
+
"prerelease": [
|
10
|
+
{
|
11
|
+
"author": "Humberto.Morimoto@microsoft.com",
|
12
|
+
"package": "@fluentui/react-popover",
|
13
|
+
"commit": "90d71a0914acbb73a0365d60a85237e3d58ef575",
|
14
|
+
"comment": "Bump @fluentui/react-popover to v9.0.0-alpha.44"
|
15
|
+
}
|
16
|
+
]
|
17
|
+
}
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"date": "Thu, 16 Sep 2021 07:38:39 GMT",
|
21
|
+
"tag": "@fluentui/react-popover_v9.0.0-alpha.43",
|
22
|
+
"version": "9.0.0-alpha.43",
|
23
|
+
"comments": {
|
24
|
+
"prerelease": [
|
25
|
+
{
|
26
|
+
"author": "behowell@microsoft.com",
|
27
|
+
"package": "@fluentui/react-popover",
|
28
|
+
"comment": "Fix typings in React.forwardRef",
|
29
|
+
"commit": "fbe41e2877a20ce0f3c01b5188e17c12f941cc4c"
|
30
|
+
},
|
31
|
+
{
|
32
|
+
"author": "behowell@microsoft.com",
|
33
|
+
"package": "@fluentui/react-popover",
|
34
|
+
"commit": "fbe41e2877a20ce0f3c01b5188e17c12f941cc4c",
|
35
|
+
"comment": "Bump @fluentui/react-popover to v9.0.0-alpha.43"
|
36
|
+
}
|
37
|
+
]
|
38
|
+
}
|
39
|
+
},
|
40
|
+
{
|
41
|
+
"date": "Tue, 14 Sep 2021 20:09:02 GMT",
|
42
|
+
"tag": "@fluentui/react-popover_v9.0.0-alpha.42",
|
43
|
+
"version": "9.0.0-alpha.42",
|
44
|
+
"comments": {
|
45
|
+
"prerelease": [
|
46
|
+
{
|
47
|
+
"author": "bsunderhus@microsoft.com",
|
48
|
+
"package": "@fluentui/react-popover",
|
49
|
+
"commit": "10495c31fb5c5cf48b4665601a75a0cfabb6a03c",
|
50
|
+
"comment": "Bump @fluentui/react-popover to v9.0.0-alpha.42"
|
51
|
+
}
|
52
|
+
]
|
53
|
+
}
|
54
|
+
},
|
55
|
+
{
|
56
|
+
"date": "Tue, 14 Sep 2021 07:38:18 GMT",
|
57
|
+
"tag": "@fluentui/react-popover_v9.0.0-alpha.41",
|
58
|
+
"version": "9.0.0-alpha.41",
|
59
|
+
"comments": {
|
60
|
+
"prerelease": [
|
61
|
+
{
|
62
|
+
"author": "lingfangao@hotmail.com",
|
63
|
+
"package": "@fluentui/react-popover",
|
64
|
+
"comment": "refactor(Popover): Remove mergeProps and migrate to simple slots",
|
65
|
+
"commit": "fe05da92ddc2742135a689b7b990f8152bd752c3"
|
66
|
+
}
|
67
|
+
]
|
68
|
+
}
|
69
|
+
},
|
70
|
+
{
|
71
|
+
"date": "Fri, 10 Sep 2021 16:31:53 GMT",
|
6
72
|
"tag": "@fluentui/react-popover_v9.0.0-alpha.40",
|
7
73
|
"version": "9.0.0-alpha.40",
|
8
74
|
"comments": {
|
package/CHANGELOG.md
CHANGED
@@ -1,12 +1,49 @@
|
|
1
1
|
# Change Log - @fluentui/react-popover
|
2
2
|
|
3
|
-
This log was last generated on Fri,
|
3
|
+
This log was last generated on Fri, 17 Sep 2021 07:32:57 GMT and should not be manually modified.
|
4
4
|
|
5
5
|
<!-- Start content -->
|
6
6
|
|
7
|
+
## [9.0.0-alpha.44](https://github.com/microsoft/fluentui/tree/@fluentui/react-popover_v9.0.0-alpha.44)
|
8
|
+
|
9
|
+
Fri, 17 Sep 2021 07:32:57 GMT
|
10
|
+
[Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-popover_v9.0.0-alpha.43..@fluentui/react-popover_v9.0.0-alpha.44)
|
11
|
+
|
12
|
+
### Changes
|
13
|
+
|
14
|
+
- Bump @fluentui/react-popover to v9.0.0-alpha.44 ([PR #19840](https://github.com/microsoft/fluentui/pull/19840) by Humberto.Morimoto@microsoft.com)
|
15
|
+
|
16
|
+
## [9.0.0-alpha.43](https://github.com/microsoft/fluentui/tree/@fluentui/react-popover_v9.0.0-alpha.43)
|
17
|
+
|
18
|
+
Thu, 16 Sep 2021 07:38:39 GMT
|
19
|
+
[Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-popover_v9.0.0-alpha.42..@fluentui/react-popover_v9.0.0-alpha.43)
|
20
|
+
|
21
|
+
### Changes
|
22
|
+
|
23
|
+
- Fix typings in React.forwardRef ([PR #19815](https://github.com/microsoft/fluentui/pull/19815) by behowell@microsoft.com)
|
24
|
+
- Bump @fluentui/react-popover to v9.0.0-alpha.43 ([PR #19815](https://github.com/microsoft/fluentui/pull/19815) by behowell@microsoft.com)
|
25
|
+
|
26
|
+
## [9.0.0-alpha.42](https://github.com/microsoft/fluentui/tree/@fluentui/react-popover_v9.0.0-alpha.42)
|
27
|
+
|
28
|
+
Tue, 14 Sep 2021 20:09:02 GMT
|
29
|
+
[Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-popover_v9.0.0-alpha.41..@fluentui/react-popover_v9.0.0-alpha.42)
|
30
|
+
|
31
|
+
### Changes
|
32
|
+
|
33
|
+
- Bump @fluentui/react-popover to v9.0.0-alpha.42 ([PR #19155](https://github.com/microsoft/fluentui/pull/19155) by bsunderhus@microsoft.com)
|
34
|
+
|
35
|
+
## [9.0.0-alpha.41](https://github.com/microsoft/fluentui/tree/@fluentui/react-popover_v9.0.0-alpha.41)
|
36
|
+
|
37
|
+
Tue, 14 Sep 2021 07:38:18 GMT
|
38
|
+
[Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-popover_v9.0.0-alpha.40..@fluentui/react-popover_v9.0.0-alpha.41)
|
39
|
+
|
40
|
+
### Changes
|
41
|
+
|
42
|
+
- refactor(Popover): Remove mergeProps and migrate to simple slots ([PR #19605](https://github.com/microsoft/fluentui/pull/19605) by lingfangao@hotmail.com)
|
43
|
+
|
7
44
|
## [9.0.0-alpha.40](https://github.com/microsoft/fluentui/tree/@fluentui/react-popover_v9.0.0-alpha.40)
|
8
45
|
|
9
|
-
Fri, 10 Sep 2021 16:
|
46
|
+
Fri, 10 Sep 2021 16:31:53 GMT
|
10
47
|
[Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-popover_v9.0.0-alpha.39..@fluentui/react-popover_v9.0.0-alpha.40)
|
11
48
|
|
12
49
|
### Changes
|
package/dist/react-popover.d.ts
CHANGED
@@ -1,11 +1,13 @@
|
|
1
|
-
import type {
|
2
|
-
import type {
|
1
|
+
import type { ComponentProps } from '@fluentui/react-utilities';
|
2
|
+
import type { ComponentState } from '@fluentui/react-utilities';
|
3
3
|
import type { Context } from '@fluentui/react-context-selector';
|
4
4
|
import type { ContextSelector } from '@fluentui/react-context-selector';
|
5
|
+
import type { IntrinsicShorthandProps } from '@fluentui/react-utilities';
|
5
6
|
import type { PopperVirtualElement } from '@fluentui/react-positioning';
|
6
7
|
import type { PortalProps } from '@fluentui/react-portal';
|
7
8
|
import type { PositioningShorthand } from '@fluentui/react-positioning';
|
8
9
|
import * as React_2 from 'react';
|
10
|
+
import type { usePopperMouseTarget } from '@fluentui/react-positioning';
|
9
11
|
|
10
12
|
export declare const arrowHeights: Record<PopoverSize, number>;
|
11
13
|
|
@@ -25,28 +27,11 @@ export declare type OpenPopoverEvents = MouseEvent | TouchEvent | React_2.MouseE
|
|
25
27
|
*/
|
26
28
|
export declare const Popover: React_2.FC<PopoverProps>;
|
27
29
|
|
28
|
-
export declare
|
29
|
-
|
30
|
-
/**
|
31
|
-
* Context shared between Popover and its children components
|
32
|
-
*/
|
33
|
-
export declare interface PopoverContextValue extends Pick<PopoverState, 'open' | 'setOpen' | 'triggerRef' | 'contentRef' | 'openOnHover' | 'openOnContext' | 'mountNode' | 'noArrow' | 'arrowRef' | 'size' | 'brand' | 'inverted' | 'trapFocus'> {
|
34
|
-
}
|
35
|
-
|
36
|
-
/**
|
37
|
-
* Names of PopoverProps that have a default value in usePopover
|
38
|
-
*/
|
39
|
-
export declare type PopoverDefaultedProps = never;
|
40
|
-
|
41
|
-
/**
|
42
|
-
* Popover Props
|
43
|
-
*/
|
44
|
-
export declare interface PopoverProps extends Pick<PortalProps, 'mountNode'> {
|
45
|
-
children: React_2.ReactNode;
|
30
|
+
export declare interface PopoverCommons extends Pick<PortalProps, 'mountNode'> {
|
46
31
|
/**
|
47
32
|
* Controls the opening of the Popover
|
48
33
|
*/
|
49
|
-
open
|
34
|
+
open: boolean;
|
50
35
|
/**
|
51
36
|
* Used to set the initial open state of the Popover in uncontrolled mode
|
52
37
|
*/
|
@@ -93,10 +78,24 @@ export declare interface PopoverProps extends Pick<PortalProps, 'mountNode'> {
|
|
93
78
|
positioning?: PositioningShorthand;
|
94
79
|
}
|
95
80
|
|
81
|
+
export declare const PopoverContext: Context<PopoverContextValue>;
|
82
|
+
|
83
|
+
/**
|
84
|
+
* Context shared between Popover and its children components
|
85
|
+
*/
|
86
|
+
export declare interface PopoverContextValue extends Pick<PopoverState, 'open' | 'setOpen' | 'triggerRef' | 'contentRef' | 'openOnHover' | 'openOnContext' | 'mountNode' | 'noArrow' | 'arrowRef' | 'size' | 'brand' | 'inverted' | 'trapFocus'> {
|
87
|
+
}
|
88
|
+
|
96
89
|
/**
|
97
|
-
*
|
90
|
+
* Popover Props
|
98
91
|
*/
|
99
|
-
export declare
|
92
|
+
export declare interface PopoverProps extends Partial<PopoverCommons> {
|
93
|
+
/**
|
94
|
+
* Can contain two children including {@link PopoverTrigger} and {@link PopoverPopover}.
|
95
|
+
* Alternatively can only contain {@link PopoverPopover} if using a custom `target`.
|
96
|
+
*/
|
97
|
+
children: [JSX.Element, JSX.Element] | JSX.Element;
|
98
|
+
}
|
100
99
|
|
101
100
|
/**
|
102
101
|
* Determines popover padding and arrow size
|
@@ -106,11 +105,7 @@ export declare type PopoverSize = 'small' | 'medium' | 'large';
|
|
106
105
|
/**
|
107
106
|
* Popover State
|
108
107
|
*/
|
109
|
-
export declare interface PopoverState extends
|
110
|
-
/**
|
111
|
-
* Open state of the Popover
|
112
|
-
*/
|
113
|
-
open: boolean;
|
108
|
+
export declare interface PopoverState extends PopoverCommons, Pick<PopoverProps, 'children'> {
|
114
109
|
/**
|
115
110
|
* Callback to open/close the Popover
|
116
111
|
*/
|
@@ -134,40 +129,34 @@ export declare interface PopoverState extends ComponentStateCompat<PopoverProps,
|
|
134
129
|
/**
|
135
130
|
* A callback to set the target of the popper to the mouse click for context events
|
136
131
|
*/
|
137
|
-
setContextTarget:
|
132
|
+
setContextTarget: ReturnType<typeof usePopperMouseTarget>[1];
|
138
133
|
size: NonNullable<PopoverProps['size']>;
|
139
134
|
}
|
140
135
|
|
141
136
|
/**
|
142
137
|
* PopoverSurface component renders react children in a positioned box
|
143
138
|
*/
|
144
|
-
export declare const PopoverSurface: React_2.ForwardRefExoticComponent<PopoverSurfaceProps & React_2.RefAttributes<
|
145
|
-
|
146
|
-
/**
|
147
|
-
* Names of PopoverSurfaceProps that have a default value in usePopoverSurface
|
148
|
-
*/
|
149
|
-
export declare type PopoverSurfaceDefaultedProps = never;
|
139
|
+
export declare const PopoverSurface: React_2.ForwardRefExoticComponent<PopoverSurfaceProps & React_2.RefAttributes<HTMLDivElement>>;
|
150
140
|
|
151
141
|
/**
|
152
142
|
* PopoverSurface Props
|
153
143
|
*/
|
154
|
-
export declare interface PopoverSurfaceProps extends
|
144
|
+
export declare interface PopoverSurfaceProps extends ComponentProps<PopoverSurfaceSlots> {
|
155
145
|
}
|
156
146
|
|
157
147
|
/**
|
158
|
-
* Names of the
|
148
|
+
* Names of the slots in PopoverSurfaceProps
|
159
149
|
*/
|
160
|
-
export declare type
|
150
|
+
export declare type PopoverSurfaceSlots = {
|
151
|
+
root: IntrinsicShorthandProps<'div'>;
|
152
|
+
};
|
153
|
+
|
154
|
+
export declare const popoverSurfaceSlots: Array<keyof PopoverSurfaceSlots>;
|
161
155
|
|
162
156
|
/**
|
163
157
|
* PopoverSurface State
|
164
158
|
*/
|
165
|
-
export declare interface PopoverSurfaceState extends
|
166
|
-
ref: React_2.Ref<HTMLElement>;
|
167
|
-
/**
|
168
|
-
* Ref to the arrow element
|
169
|
-
*/
|
170
|
-
arrowRef?: React_2.Ref<HTMLDivElement>;
|
159
|
+
export declare interface PopoverSurfaceState extends ComponentState<PopoverSurfaceSlots>, Pick<PopoverContextValue, 'open' | 'mountNode' | 'noArrow' | 'size' | 'brand' | 'inverted' | 'arrowRef'> {
|
171
160
|
/**
|
172
161
|
* CSS class for the arrow element
|
173
162
|
*/
|
@@ -227,10 +216,10 @@ export declare const usePopoverContext: <T>(selector: ContextSelector<PopoverCon
|
|
227
216
|
* before being passed to renderPopoverSurface.
|
228
217
|
*
|
229
218
|
* @param props - props from this instance of PopoverSurface
|
230
|
-
* @param ref - reference to root
|
219
|
+
* @param ref - reference to root HTMLDivElement of PopoverSurface
|
231
220
|
* @param defaultProps - (optional) default prop values provided by the implementing type
|
232
221
|
*/
|
233
|
-
export declare const usePopoverSurface: (props: PopoverSurfaceProps, ref: React_2.Ref<
|
222
|
+
export declare const usePopoverSurface: (props: PopoverSurfaceProps, ref: React_2.Ref<HTMLDivElement>) => PopoverSurfaceState;
|
234
223
|
|
235
224
|
/**
|
236
225
|
* Apply styling to the PopoverSurface slots based on the state
|
@@ -4,6 +4,8 @@ export function isConformant(testInfo) {
|
|
4
4
|
var defaultOptions = {
|
5
5
|
asPropHandlesRef: true,
|
6
6
|
componentPath: module.parent.filename.replace('.test', ''),
|
7
|
+
// TODO // https://github.com/microsoft/fluentui/issues/19522
|
8
|
+
skipAsPropTests: true,
|
7
9
|
extraTests: makeStylesTests
|
8
10
|
};
|
9
11
|
baseIsConformant(defaultOptions, testInfo);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["common/isConformant.ts"],"names":[],"mappings":"AAAA,SAAS,YAAY,IAAI,gBAAzB,QAAiD,6BAAjD;AAEA,OAAO,eAAP,MAA4B,yCAA5B;AAEA,OAAM,SAAU,YAAV,CACJ,QADI,EACqF;AAEzF,MAAM,cAAc,GAAyC;AAC3D,IAAA,gBAAgB,EAAE,IADyC;AAE3D,IAAA,aAAa,EAAE,MAAO,CAAC,MAAR,CAAgB,QAAhB,CAAyB,OAAzB,CAAiC,OAAjC,EAA0C,EAA1C,CAF4C;AAG3D,IAAA,UAAU,EAAE;
|
1
|
+
{"version":3,"sources":["common/isConformant.ts"],"names":[],"mappings":"AAAA,SAAS,YAAY,IAAI,gBAAzB,QAAiD,6BAAjD;AAEA,OAAO,eAAP,MAA4B,yCAA5B;AAEA,OAAM,SAAU,YAAV,CACJ,QADI,EACqF;AAEzF,MAAM,cAAc,GAAyC;AAC3D,IAAA,gBAAgB,EAAE,IADyC;AAE3D,IAAA,aAAa,EAAE,MAAO,CAAC,MAAR,CAAgB,QAAhB,CAAyB,OAAzB,CAAiC,OAAjC,EAA0C,EAA1C,CAF4C;AAG3D;AACA,IAAA,eAAe,EAAE,IAJ0C;AAK3D,IAAA,UAAU,EAAE;AAL+C,GAA7D;AAQA,EAAA,gBAAgB,CAAC,cAAD,EAAiB,QAAjB,CAAhB;AACD","sourcesContent":["import { isConformant as baseIsConformant } from '@fluentui/react-conformance';\nimport type { IsConformantOptions, TestObject } from '@fluentui/react-conformance';\nimport makeStylesTests from '@fluentui/react-conformance-make-styles';\n\nexport function isConformant<TProps = {}>(\n testInfo: Omit<IsConformantOptions<TProps>, 'componentPath'> & { componentPath?: string },\n) {\n const defaultOptions: Partial<IsConformantOptions<TProps>> = {\n asPropHandlesRef: true,\n componentPath: module!.parent!.filename.replace('.test', ''),\n // TODO // https://github.com/microsoft/fluentui/issues/19522\n skipAsPropTests: true,\n extraTests: makeStylesTests as TestObject<TProps>,\n };\n\n baseIsConformant(defaultOptions, testInfo);\n}\n"],"sourceRoot":"../src/"}
|
@@ -1,20 +1,15 @@
|
|
1
1
|
import * as React from 'react';
|
2
|
-
import type { PopperVirtualElement, PositioningShorthand } from '@fluentui/react-positioning';
|
2
|
+
import type { PopperVirtualElement, PositioningShorthand, usePopperMouseTarget } from '@fluentui/react-positioning';
|
3
3
|
import type { PortalProps } from '@fluentui/react-portal';
|
4
|
-
import type { ComponentStateCompat } from '@fluentui/react-utilities';
|
5
4
|
/**
|
6
5
|
* Determines popover padding and arrow size
|
7
6
|
*/
|
8
7
|
export declare type PopoverSize = 'small' | 'medium' | 'large';
|
9
|
-
|
10
|
-
* Popover Props
|
11
|
-
*/
|
12
|
-
export interface PopoverProps extends Pick<PortalProps, 'mountNode'> {
|
13
|
-
children: React.ReactNode;
|
8
|
+
export interface PopoverCommons extends Pick<PortalProps, 'mountNode'> {
|
14
9
|
/**
|
15
10
|
* Controls the opening of the Popover
|
16
11
|
*/
|
17
|
-
open
|
12
|
+
open: boolean;
|
18
13
|
/**
|
19
14
|
* Used to set the initial open state of the Popover in uncontrolled mode
|
20
15
|
*/
|
@@ -61,21 +56,19 @@ export interface PopoverProps extends Pick<PortalProps, 'mountNode'> {
|
|
61
56
|
positioning?: PositioningShorthand;
|
62
57
|
}
|
63
58
|
/**
|
64
|
-
*
|
65
|
-
*/
|
66
|
-
export declare type PopoverShorthandProps = never;
|
67
|
-
/**
|
68
|
-
* Names of PopoverProps that have a default value in usePopover
|
59
|
+
* Popover Props
|
69
60
|
*/
|
70
|
-
export
|
61
|
+
export interface PopoverProps extends Partial<PopoverCommons> {
|
62
|
+
/**
|
63
|
+
* Can contain two children including {@link PopoverTrigger} and {@link PopoverPopover}.
|
64
|
+
* Alternatively can only contain {@link PopoverPopover} if using a custom `target`.
|
65
|
+
*/
|
66
|
+
children: [JSX.Element, JSX.Element] | JSX.Element;
|
67
|
+
}
|
71
68
|
/**
|
72
69
|
* Popover State
|
73
70
|
*/
|
74
|
-
export interface PopoverState extends
|
75
|
-
/**
|
76
|
-
* Open state of the Popover
|
77
|
-
*/
|
78
|
-
open: boolean;
|
71
|
+
export interface PopoverState extends PopoverCommons, Pick<PopoverProps, 'children'> {
|
79
72
|
/**
|
80
73
|
* Callback to open/close the Popover
|
81
74
|
*/
|
@@ -99,7 +92,7 @@ export interface PopoverState extends ComponentStateCompat<PopoverProps, Popover
|
|
99
92
|
/**
|
100
93
|
* A callback to set the target of the popper to the mouse click for context events
|
101
94
|
*/
|
102
|
-
setContextTarget:
|
95
|
+
setContextTarget: ReturnType<typeof usePopperMouseTarget>[1];
|
103
96
|
size: NonNullable<PopoverProps['size']>;
|
104
97
|
}
|
105
98
|
/**
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Popover.types.js","sourceRoot":"../src/","sources":["components/Popover/Popover.types.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\nimport type { PopperVirtualElement, PositioningShorthand } from '@fluentui/react-positioning';\nimport type { PortalProps } from '@fluentui/react-portal';\
|
1
|
+
{"version":3,"file":"Popover.types.js","sourceRoot":"../src/","sources":["components/Popover/Popover.types.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\nimport type { PopperVirtualElement, PositioningShorthand, usePopperMouseTarget } from '@fluentui/react-positioning';\nimport type { PortalProps } from '@fluentui/react-portal';\n\n/**\n * Determines popover padding and arrow size\n */\nexport type PopoverSize = 'small' | 'medium' | 'large';\n\nexport interface PopoverCommons extends Pick<PortalProps, 'mountNode'> {\n /**\n * Controls the opening of the Popover\n */\n open: boolean;\n /**\n * Used to set the initial open state of the Popover in uncontrolled mode\n */\n defaultOpen?: boolean;\n /**\n * Call back when the component requests to change value\n * The `open` value is used as a hint when directly controlling the component\n */\n onOpenChange?: (e: OpenPopoverEvents, data: OnOpenChangeData) => void;\n /**\n * Flag to open the Popover by hovering the trigger\n */\n openOnHover?: boolean;\n /**\n * Flag to open the Popover as a context menu. Disables all other interactions\n */\n openOnContext?: boolean;\n /**\n * Do not display the arrow\n */\n noArrow?: boolean;\n /**\n * Determines popover padding and arrow size\n * @default medium\n */\n size?: PopoverSize;\n /**\n * Uses brand colour as background\n * Mutually exclusive with `inverted`\n */\n brand?: boolean;\n /**\n * Inverts the foreground/background colour of the popover\n * Mutually exclusive with `brand`\n */\n inverted?: boolean;\n\n /**\n * Should trap focus\n */\n trapFocus?: boolean;\n\n /**\n * Configures the position of the Popover\n */\n positioning?: PositioningShorthand;\n}\n\n/**\n * Popover Props\n */\nexport interface PopoverProps extends Partial<PopoverCommons> {\n /**\n * Can contain two children including {@link PopoverTrigger} and {@link PopoverPopover}.\n * Alternatively can only contain {@link PopoverPopover} if using a custom `target`.\n */\n children: [JSX.Element, JSX.Element] | JSX.Element;\n}\n\n/**\n * Popover State\n */\nexport interface PopoverState extends PopoverCommons, Pick<PopoverProps, 'children'> {\n /**\n * Callback to open/close the Popover\n */\n setOpen: (e: OpenPopoverEvents, open: boolean) => void;\n /**\n * Ref of the PopoverTrigger\n */\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n /**\n * Ref of the PopoverSurface\n */\n contentRef: React.MutableRefObject<HTMLElement | null>;\n /**\n * Ref of the pointing arrow\n */\n arrowRef: React.MutableRefObject<HTMLDivElement | null>;\n /**\n * Anchors the popper to the mouse click for context events\n */\n contextTarget: PopperVirtualElement | undefined;\n /**\n * A callback to set the target of the popper to the mouse click for context events\n */\n setContextTarget: ReturnType<typeof usePopperMouseTarget>[1];\n\n size: NonNullable<PopoverProps['size']>;\n}\n\n/**\n * Data attached to open/close events\n */\nexport interface OnOpenChangeData extends Pick<PopoverState, 'open'> {}\n\n/**\n * The supported events that will trigger open/close of the menu\n */\nexport type OpenPopoverEvents =\n | MouseEvent\n | TouchEvent\n | React.MouseEvent<HTMLElement>\n | React.KeyboardEvent<HTMLElement>\n | React.FocusEvent<HTMLElement>;\n"]}
|
@@ -1,15 +1,10 @@
|
|
1
1
|
import { __assign } from "tslib";
|
2
2
|
import * as React from 'react';
|
3
|
-
import {
|
3
|
+
import { useControllableState, useEventCallback, useOnClickOutside, useOnScrollOutside } from '@fluentui/react-utilities';
|
4
4
|
import { useFluent } from '@fluentui/react-shared-contexts';
|
5
|
-
import { usePopper,
|
5
|
+
import { usePopper, resolvePositioningShorthand, mergeArrowOffset, usePopperMouseTarget } from '@fluentui/react-positioning';
|
6
6
|
import { elementContains } from '@fluentui/react-portal';
|
7
7
|
import { arrowHeights } from '../PopoverSurface/index';
|
8
|
-
/**
|
9
|
-
* Names of the shorthand properties in PopoverProps
|
10
|
-
*/
|
11
|
-
|
12
|
-
var mergeProps = /*#__PURE__*/makeMergeProps({});
|
13
8
|
/**
|
14
9
|
* Create the state required to render Popover.
|
15
10
|
*
|
@@ -21,60 +16,49 @@ var mergeProps = /*#__PURE__*/makeMergeProps({});
|
|
21
16
|
*/
|
22
17
|
|
23
18
|
export var usePopover = function (props, defaultProps) {
|
24
|
-
var
|
25
|
-
size: 'medium',
|
26
|
-
open: undefined,
|
27
|
-
setOpen: function () {
|
28
|
-
return null;
|
29
|
-
},
|
30
|
-
triggerRef: {
|
31
|
-
current: null
|
32
|
-
},
|
33
|
-
contentRef: {
|
34
|
-
current: null
|
35
|
-
},
|
36
|
-
arrowRef: {
|
37
|
-
current: null
|
38
|
-
},
|
39
|
-
children: null,
|
40
|
-
setContextTarget: function () {
|
41
|
-
return null;
|
42
|
-
},
|
43
|
-
contextTarget: undefined
|
44
|
-
}, defaultProps, props);
|
45
|
-
|
46
|
-
var _a = React.useState(),
|
19
|
+
var _a = usePopperMouseTarget(),
|
47
20
|
contextTarget = _a[0],
|
48
21
|
setContextTarget = _a[1];
|
49
22
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
23
|
+
var initialState = __assign({
|
24
|
+
size: 'medium',
|
25
|
+
contextTarget: contextTarget,
|
26
|
+
setContextTarget: setContextTarget
|
27
|
+
}, props);
|
28
|
+
|
29
|
+
var _b = useOpenState(initialState),
|
30
|
+
open = _b[0],
|
31
|
+
setOpen = _b[1];
|
32
|
+
|
33
|
+
var popperRefs = usePopoverRefs(initialState);
|
54
34
|
var targetDocument = useFluent().targetDocument;
|
55
35
|
useOnClickOutside({
|
56
36
|
contains: elementContains,
|
57
37
|
element: targetDocument,
|
58
38
|
callback: function (ev) {
|
59
|
-
return
|
39
|
+
return setOpen(ev, false);
|
60
40
|
},
|
61
|
-
refs: [
|
62
|
-
disabled: !
|
41
|
+
refs: [popperRefs.triggerRef, popperRefs.contentRef],
|
42
|
+
disabled: !open
|
63
43
|
});
|
64
44
|
useOnScrollOutside({
|
65
45
|
contains: elementContains,
|
66
46
|
element: targetDocument,
|
67
47
|
callback: function (ev) {
|
68
|
-
return
|
48
|
+
return setOpen(ev, false);
|
69
49
|
},
|
70
|
-
refs: [
|
71
|
-
disabled: !
|
50
|
+
refs: [popperRefs.triggerRef, popperRefs.contentRef],
|
51
|
+
disabled: !open || !initialState.openOnContext
|
52
|
+
});
|
53
|
+
return __assign(__assign(__assign({}, initialState), popperRefs), {
|
54
|
+
open: open,
|
55
|
+
setOpen: setOpen,
|
56
|
+
setContextTarget: setContextTarget,
|
57
|
+
contextTarget: contextTarget
|
72
58
|
});
|
73
|
-
return state;
|
74
59
|
};
|
75
60
|
/**
|
76
61
|
* Creates and manages the Popover open state
|
77
|
-
* @param state Popover state
|
78
62
|
*/
|
79
63
|
|
80
64
|
function useOpenState(state) {
|
@@ -84,23 +68,26 @@ function useOpenState(state) {
|
|
84
68
|
return (_a = state.onOpenChange) === null || _a === void 0 ? void 0 : _a.call(state, e, data);
|
85
69
|
});
|
86
70
|
|
87
|
-
var _a =
|
71
|
+
var _a = useControllableState({
|
72
|
+
state: state.open,
|
73
|
+
defaultState: state.defaultOpen,
|
74
|
+
initialState: false
|
75
|
+
}),
|
88
76
|
open = _a[0],
|
89
|
-
|
77
|
+
setOpenState = _a[1];
|
90
78
|
|
91
79
|
state.open = open !== undefined ? open : state.open;
|
92
80
|
var setContextTarget = state.setContextTarget;
|
93
|
-
|
81
|
+
var setOpen = React.useCallback(function (e, shouldOpen) {
|
94
82
|
if (shouldOpen && e.type === 'contextmenu') {
|
95
|
-
|
96
|
-
setContextTarget(virtualElement);
|
83
|
+
setContextTarget(e);
|
97
84
|
}
|
98
85
|
|
99
86
|
if (!shouldOpen) {
|
100
87
|
setContextTarget(undefined);
|
101
88
|
}
|
102
89
|
|
103
|
-
|
90
|
+
setOpenState(function (prevOpen) {
|
104
91
|
// More than one event (mouse, focus, keyboard) can request the Popover to close
|
105
92
|
// We assume the first event is the correct one
|
106
93
|
if (prevOpen !== shouldOpen) {
|
@@ -111,12 +98,11 @@ function useOpenState(state) {
|
|
111
98
|
|
112
99
|
return shouldOpen;
|
113
100
|
});
|
114
|
-
}, [
|
115
|
-
return
|
101
|
+
}, [setOpenState, onOpenChange, setContextTarget]);
|
102
|
+
return [open, setOpen];
|
116
103
|
}
|
117
104
|
/**
|
118
105
|
* Creates and sets the necessary trigger, target and content refs used by Popover
|
119
|
-
* @param state Popover state
|
120
106
|
*/
|
121
107
|
|
122
108
|
|
@@ -141,9 +127,10 @@ function usePopoverRefs(state) {
|
|
141
127
|
contentRef = _a.containerRef,
|
142
128
|
arrowRef = _a.arrowRef;
|
143
129
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
130
|
+
return {
|
131
|
+
triggerRef: triggerRef,
|
132
|
+
contentRef: contentRef,
|
133
|
+
arrowRef: arrowRef
|
134
|
+
};
|
148
135
|
}
|
149
136
|
//# sourceMappingURL=usePopover.js.map
|