@fluentui/react-popover 9.0.0-beta.1 → 9.0.0-beta.5
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.json +287 -1
- package/CHANGELOG.md +72 -2
- package/dist/react-popover.d.ts +7 -3
- package/lib/components/Popover/Popover.js +2 -2
- package/lib/components/Popover/Popover.js.map +1 -1
- package/lib/components/Popover/Popover.types.d.ts +5 -3
- package/lib/components/Popover/renderPopover.js +27 -25
- package/lib/components/Popover/renderPopover.js.map +1 -1
- package/lib/components/Popover/usePopover.js +39 -51
- package/lib/components/Popover/usePopover.js.map +1 -1
- package/lib/components/PopoverSurface/PopoverSurface.js +2 -2
- package/lib/components/PopoverSurface/PopoverSurface.js.map +1 -1
- package/lib/components/PopoverSurface/renderPopoverSurface.js +6 -7
- package/lib/components/PopoverSurface/renderPopoverSurface.js.map +1 -1
- package/lib/components/PopoverSurface/usePopoverSurface.js +41 -55
- package/lib/components/PopoverSurface/usePopoverSurface.js.map +1 -1
- package/lib/components/PopoverSurface/usePopoverSurfaceStyles.d.ts +1 -0
- package/lib/components/PopoverSurface/usePopoverSurfaceStyles.js +16 -8
- package/lib/components/PopoverSurface/usePopoverSurfaceStyles.js.map +1 -1
- package/lib/components/PopoverTrigger/PopoverTrigger.js +2 -2
- package/lib/components/PopoverTrigger/PopoverTrigger.js.map +1 -1
- package/lib/components/PopoverTrigger/renderPopoverTrigger.js +1 -1
- package/lib/components/PopoverTrigger/renderPopoverTrigger.js.map +1 -1
- package/lib/components/PopoverTrigger/usePopoverTrigger.js +25 -33
- package/lib/components/PopoverTrigger/usePopoverTrigger.js.map +1 -1
- package/lib/popoverContext.js +3 -7
- package/lib/popoverContext.js.map +1 -1
- package/lib-commonjs/Popover.js +1 -1
- package/lib-commonjs/PopoverSurface.js +1 -1
- package/lib-commonjs/PopoverTrigger.js +1 -1
- package/lib-commonjs/components/Popover/Popover.js +4 -4
- package/lib-commonjs/components/Popover/Popover.js.map +1 -1
- package/lib-commonjs/components/Popover/Popover.types.d.ts +5 -3
- package/lib-commonjs/components/Popover/index.js +1 -1
- package/lib-commonjs/components/Popover/renderPopover.js +29 -27
- package/lib-commonjs/components/Popover/renderPopover.js.map +1 -1
- package/lib-commonjs/components/Popover/usePopover.js +45 -58
- package/lib-commonjs/components/Popover/usePopover.js.map +1 -1
- package/lib-commonjs/components/PopoverSurface/PopoverSurface.js +6 -6
- package/lib-commonjs/components/PopoverSurface/PopoverSurface.js.map +1 -1
- package/lib-commonjs/components/PopoverSurface/index.js +1 -1
- package/lib-commonjs/components/PopoverSurface/renderPopoverSurface.js +10 -12
- package/lib-commonjs/components/PopoverSurface/renderPopoverSurface.js.map +1 -1
- package/lib-commonjs/components/PopoverSurface/usePopoverSurface.js +44 -59
- package/lib-commonjs/components/PopoverSurface/usePopoverSurface.js.map +1 -1
- package/lib-commonjs/components/PopoverSurface/usePopoverSurfaceStyles.d.ts +1 -0
- package/lib-commonjs/components/PopoverSurface/usePopoverSurfaceStyles.js +18 -9
- package/lib-commonjs/components/PopoverSurface/usePopoverSurfaceStyles.js.map +1 -1
- package/lib-commonjs/components/PopoverTrigger/PopoverTrigger.js +4 -4
- package/lib-commonjs/components/PopoverTrigger/PopoverTrigger.js.map +1 -1
- package/lib-commonjs/components/PopoverTrigger/index.js +1 -1
- package/lib-commonjs/components/PopoverTrigger/renderPopoverTrigger.js +1 -1
- package/lib-commonjs/components/PopoverTrigger/renderPopoverTrigger.js.map +1 -1
- package/lib-commonjs/components/PopoverTrigger/usePopoverTrigger.js +29 -38
- package/lib-commonjs/components/PopoverTrigger/usePopoverTrigger.js.map +1 -1
- package/lib-commonjs/index.js +1 -1
- package/lib-commonjs/popoverContext.js +3 -7
- package/lib-commonjs/popoverContext.js.map +1 -1
- package/package.json +13 -13
- package/lib/common/isConformant.d.ts +0 -4
- package/lib/common/isConformant.js +0 -13
- package/lib/common/isConformant.js.map +0 -1
- package/lib/common/mockUsePopoverContext.d.ts +0 -7
- package/lib/common/mockUsePopoverContext.js +0 -38
- package/lib/common/mockUsePopoverContext.js.map +0 -1
- package/lib-commonjs/common/isConformant.d.ts +0 -4
- package/lib-commonjs/common/isConformant.js +0 -24
- package/lib-commonjs/common/isConformant.js.map +0 -1
- package/lib-commonjs/common/mockUsePopoverContext.d.ts +0 -7
- package/lib-commonjs/common/mockUsePopoverContext.js +0 -49
- package/lib-commonjs/common/mockUsePopoverContext.js.map +0 -1
@@ -1,4 +1,3 @@
|
|
1
|
-
import { __assign } from "tslib";
|
2
1
|
import * as React from 'react';
|
3
2
|
import { useControllableState, useEventCallback, useOnClickOutside, useOnScrollOutside } from '@fluentui/react-utilities';
|
4
3
|
import { useFluent } from '@fluentui/react-shared-contexts';
|
@@ -14,70 +13,59 @@ import { arrowHeights } from '../PopoverSurface/index';
|
|
14
13
|
* @param props - props from this instance of Popover
|
15
14
|
*/
|
16
15
|
|
17
|
-
export
|
18
|
-
|
19
|
-
|
20
|
-
setContextTarget = _a[1];
|
21
|
-
|
22
|
-
var initialState = __assign({
|
16
|
+
export const usePopover = props => {
|
17
|
+
const [contextTarget, setContextTarget] = usePopperMouseTarget();
|
18
|
+
const initialState = {
|
23
19
|
size: 'medium',
|
24
|
-
contextTarget
|
25
|
-
setContextTarget
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
var targetDocument = useFluent().targetDocument;
|
20
|
+
contextTarget,
|
21
|
+
setContextTarget,
|
22
|
+
...props
|
23
|
+
};
|
24
|
+
const [open, setOpen] = useOpenState(initialState);
|
25
|
+
const popperRefs = usePopoverRefs(initialState);
|
26
|
+
const {
|
27
|
+
targetDocument
|
28
|
+
} = useFluent();
|
34
29
|
useOnClickOutside({
|
35
30
|
contains: elementContains,
|
36
31
|
element: targetDocument,
|
37
|
-
callback:
|
38
|
-
return setOpen(ev, false);
|
39
|
-
},
|
32
|
+
callback: ev => setOpen(ev, false),
|
40
33
|
refs: [popperRefs.triggerRef, popperRefs.contentRef],
|
41
34
|
disabled: !open
|
42
35
|
});
|
43
36
|
useOnScrollOutside({
|
44
37
|
contains: elementContains,
|
45
38
|
element: targetDocument,
|
46
|
-
callback:
|
47
|
-
return setOpen(ev, false);
|
48
|
-
},
|
39
|
+
callback: ev => setOpen(ev, false),
|
49
40
|
refs: [popperRefs.triggerRef, popperRefs.contentRef],
|
50
41
|
disabled: !open || !initialState.openOnContext
|
51
42
|
});
|
52
|
-
return
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
43
|
+
return { ...initialState,
|
44
|
+
...popperRefs,
|
45
|
+
open,
|
46
|
+
setOpen,
|
47
|
+
setContextTarget,
|
48
|
+
contextTarget
|
49
|
+
};
|
58
50
|
};
|
59
51
|
/**
|
60
52
|
* Creates and manages the Popover open state
|
61
53
|
*/
|
62
54
|
|
63
55
|
function useOpenState(state) {
|
64
|
-
|
56
|
+
const onOpenChange = useEventCallback((e, data) => {
|
65
57
|
var _a;
|
66
58
|
|
67
59
|
return (_a = state.onOpenChange) === null || _a === void 0 ? void 0 : _a.call(state, e, data);
|
68
60
|
});
|
69
|
-
|
70
|
-
var _a = useControllableState({
|
61
|
+
const [open, setOpenState] = useControllableState({
|
71
62
|
state: state.open,
|
72
63
|
defaultState: state.defaultOpen,
|
73
64
|
initialState: false
|
74
|
-
})
|
75
|
-
open = _a[0],
|
76
|
-
setOpenState = _a[1];
|
77
|
-
|
65
|
+
});
|
78
66
|
state.open = open !== undefined ? open : state.open;
|
79
|
-
|
80
|
-
|
67
|
+
const setContextTarget = state.setContextTarget;
|
68
|
+
const setOpen = React.useCallback((e, shouldOpen) => {
|
81
69
|
if (shouldOpen && e.type === 'contextmenu') {
|
82
70
|
setContextTarget(e);
|
83
71
|
}
|
@@ -86,7 +74,7 @@ function useOpenState(state) {
|
|
86
74
|
setContextTarget(undefined);
|
87
75
|
}
|
88
76
|
|
89
|
-
setOpenState(
|
77
|
+
setOpenState(prevOpen => {
|
90
78
|
// More than one event (mouse, focus, keyboard) can request the Popover to close
|
91
79
|
// We assume the first event is the correct one
|
92
80
|
if (prevOpen !== shouldOpen) {
|
@@ -106,12 +94,12 @@ function useOpenState(state) {
|
|
106
94
|
|
107
95
|
|
108
96
|
function usePopoverRefs(state) {
|
109
|
-
|
97
|
+
const popperOptions = {
|
110
98
|
position: 'above',
|
111
99
|
align: 'center',
|
112
|
-
target: state.openOnContext ? state.contextTarget : undefined
|
113
|
-
|
114
|
-
|
100
|
+
target: state.openOnContext ? state.contextTarget : undefined,
|
101
|
+
...resolvePositioningShorthand(state.positioning)
|
102
|
+
}; // no reason to render arrow when covering the target
|
115
103
|
|
116
104
|
if (popperOptions.coverTarget) {
|
117
105
|
state.noArrow = true;
|
@@ -121,15 +109,15 @@ function usePopoverRefs(state) {
|
|
121
109
|
popperOptions.offset = mergeArrowOffset(popperOptions.offset, arrowHeights[state.size]);
|
122
110
|
}
|
123
111
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
112
|
+
const {
|
113
|
+
targetRef: triggerRef,
|
114
|
+
containerRef: contentRef,
|
115
|
+
arrowRef
|
116
|
+
} = usePopper(popperOptions);
|
129
117
|
return {
|
130
|
-
triggerRef
|
131
|
-
contentRef
|
132
|
-
arrowRef
|
118
|
+
triggerRef,
|
119
|
+
contentRef,
|
120
|
+
arrowRef
|
133
121
|
};
|
134
122
|
}
|
135
123
|
//# sourceMappingURL=usePopover.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Popover/usePopover.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"sources":["../../../src/components/Popover/usePopover.ts"],"names":[],"mappings":"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","sourceRoot":""}
|
@@ -6,8 +6,8 @@ import { usePopoverSurfaceStyles } from './usePopoverSurfaceStyles';
|
|
6
6
|
* PopoverSurface component renders react children in a positioned box
|
7
7
|
*/
|
8
8
|
|
9
|
-
export
|
10
|
-
|
9
|
+
export const PopoverSurface = /*#__PURE__*/React.forwardRef((props, ref) => {
|
10
|
+
const state = usePopoverSurface(props, ref);
|
11
11
|
usePopoverSurfaceStyles(state);
|
12
12
|
return renderPopoverSurface(state);
|
13
13
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/components/PopoverSurface/PopoverSurface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AACA,SAAS,iBAAT,QAAkC,qBAAlC;AACA,SAAS,oBAAT,QAAqC,wBAArC;AACA,SAAS,uBAAT,QAAwC,2BAAxC;AAIA;;AAEG;;AACH,OAAO,
|
1
|
+
{"version":3,"sources":["../../../src/components/PopoverSurface/PopoverSurface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AACA,SAAS,iBAAT,QAAkC,qBAAlC;AACA,SAAS,oBAAT,QAAqC,wBAArC;AACA,SAAS,uBAAT,QAAwC,2BAAxC;AAIA;;AAEG;;AACH,OAAO,MAAM,cAAc,gBAA6C,KAAK,CAAC,UAAN,CAAiB,CAAC,KAAD,EAAQ,GAAR,KAAe;AACtG,QAAM,KAAK,GAAG,iBAAiB,CAAC,KAAD,EAAQ,GAAR,CAA/B;AAEA,EAAA,uBAAuB,CAAC,KAAD,CAAvB;AACA,SAAO,oBAAoB,CAAC,KAAD,CAA3B;AACD,CALuE,CAAjE;AAOP,cAAc,CAAC,WAAf,GAA6B,gBAA7B","sourceRoot":""}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import { __assign } from "tslib";
|
2
1
|
import * as React from 'react';
|
3
2
|
import { Portal } from '@fluentui/react-portal';
|
4
3
|
import { getSlots } from '@fluentui/react-utilities';
|
@@ -7,11 +6,11 @@ import { popoverSurfaceSlots } from './usePopoverSurface';
|
|
7
6
|
* Render the final JSX of PopoverSurface
|
8
7
|
*/
|
9
8
|
|
10
|
-
export
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
9
|
+
export const renderPopoverSurface = state => {
|
10
|
+
const {
|
11
|
+
slots,
|
12
|
+
slotProps
|
13
|
+
} = getSlots(state, popoverSurfaceSlots); // TODO should hidden Popovers be supported ?
|
15
14
|
|
16
15
|
if (!state.open) {
|
17
16
|
return null;
|
@@ -19,7 +18,7 @@ export var renderPopoverSurface = function (state) {
|
|
19
18
|
|
20
19
|
return /*#__PURE__*/React.createElement(Portal, {
|
21
20
|
mountNode: state.mountNode
|
22
|
-
}, /*#__PURE__*/React.createElement(slots.root,
|
21
|
+
}, /*#__PURE__*/React.createElement(slots.root, Object.assign({}, slotProps.root), !state.noArrow && /*#__PURE__*/React.createElement("div", {
|
23
22
|
ref: state.arrowRef,
|
24
23
|
className: state.arrowClassName
|
25
24
|
}), slotProps.root.children));
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/components/PopoverSurface/renderPopoverSurface.tsx"],"names":[],"mappings":"
|
1
|
+
{"version":3,"sources":["../../../src/components/PopoverSurface/renderPopoverSurface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AACA,SAAS,MAAT,QAAuB,wBAAvB;AACA,SAAS,QAAT,QAAyB,2BAAzB;AAEA,SAAS,mBAAT,QAAoC,qBAApC;AAEA;;AAEG;;AACH,OAAO,MAAM,oBAAoB,GAAI,KAAD,IAA+B;AACjE,QAAM;AAAE,IAAA,KAAF;AAAS,IAAA;AAAT,MAAuB,QAAQ,CAAsB,KAAtB,EAA6B,mBAA7B,CAArC,CADiE,CAGjE;;AACA,MAAI,CAAC,KAAK,CAAC,IAAX,EAAiB;AACf,WAAO,IAAP;AACD;;AAED,sBACE,KAAA,CAAA,aAAA,CAAC,MAAD,EAAO;AAAC,IAAA,SAAS,EAAE,KAAK,CAAC;AAAlB,GAAP,eACE,KAAA,CAAA,aAAA,CAAC,KAAK,CAAC,IAAP,EAAW,MAAA,CAAA,MAAA,CAAA,EAAA,EAAK,SAAS,CAAC,IAAf,CAAX,EACG,CAAC,KAAK,CAAC,OAAP,iBAAkB,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,IAAA,GAAG,EAAE,KAAK,CAAC,QAAhB;AAA0B,IAAA,SAAS,EAAE,KAAK,CAAC;AAA3C,GAAA,CADrB,EAEG,SAAS,CAAC,IAAV,CAAe,QAFlB,CADF,CADF;AAQD,CAhBM","sourceRoot":""}
|
@@ -1,9 +1,8 @@
|
|
1
|
-
import { __assign } from "tslib";
|
2
1
|
import * as React from 'react';
|
3
2
|
import { getNativeElementProps, useMergedRefs } from '@fluentui/react-utilities';
|
4
3
|
import { useFocusFinders, useModalAttributes } from '@fluentui/react-tabster';
|
5
4
|
import { usePopoverContext } from '../../popoverContext';
|
6
|
-
export
|
5
|
+
export const popoverSurfaceSlots = ['root'];
|
7
6
|
/**
|
8
7
|
* Create the state required to render PopoverSurface.
|
9
8
|
*
|
@@ -14,61 +13,46 @@ export var popoverSurfaceSlots = ['root'];
|
|
14
13
|
* @param ref - reference to root HTMLDivElement of PopoverSurface
|
15
14
|
*/
|
16
15
|
|
17
|
-
export
|
18
|
-
|
19
|
-
|
16
|
+
export const usePopoverSurface = (props, ref) => {
|
17
|
+
const contentRef = usePopoverContext(context => context.contentRef);
|
18
|
+
const open = usePopoverContext(context => context.open);
|
19
|
+
const openOnHover = usePopoverContext(context => context.openOnHover);
|
20
|
+
const setOpen = usePopoverContext(context => context.setOpen);
|
21
|
+
const mountNode = usePopoverContext(context => context.mountNode);
|
22
|
+
const arrowRef = usePopoverContext(context => context.arrowRef);
|
23
|
+
const size = usePopoverContext(context => context.size);
|
24
|
+
const noArrow = usePopoverContext(context => context.noArrow);
|
25
|
+
const appearance = usePopoverContext(context => context.appearance);
|
26
|
+
const trapFocus = usePopoverContext(context => context.trapFocus);
|
27
|
+
const {
|
28
|
+
modalAttributes
|
29
|
+
} = useModalAttributes({
|
30
|
+
trapFocus
|
20
31
|
});
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
return context.setOpen;
|
29
|
-
});
|
30
|
-
var mountNode = usePopoverContext(function (context) {
|
31
|
-
return context.mountNode;
|
32
|
-
});
|
33
|
-
var arrowRef = usePopoverContext(function (context) {
|
34
|
-
return context.arrowRef;
|
35
|
-
});
|
36
|
-
var size = usePopoverContext(function (context) {
|
37
|
-
return context.size;
|
38
|
-
});
|
39
|
-
var noArrow = usePopoverContext(function (context) {
|
40
|
-
return context.noArrow;
|
41
|
-
});
|
42
|
-
var appearance = usePopoverContext(function (context) {
|
43
|
-
return context.appearance;
|
44
|
-
});
|
45
|
-
var trapFocus = usePopoverContext(function (context) {
|
46
|
-
return context.trapFocus;
|
47
|
-
});
|
48
|
-
var modalAttributes = useModalAttributes({
|
49
|
-
trapFocus: trapFocus
|
50
|
-
}).modalAttributes;
|
51
|
-
var state = {
|
52
|
-
appearance: appearance,
|
53
|
-
noArrow: noArrow,
|
54
|
-
size: size,
|
55
|
-
arrowRef: arrowRef,
|
56
|
-
open: open,
|
57
|
-
mountNode: mountNode,
|
32
|
+
const state = {
|
33
|
+
appearance,
|
34
|
+
noArrow,
|
35
|
+
size,
|
36
|
+
arrowRef,
|
37
|
+
open,
|
38
|
+
mountNode,
|
58
39
|
components: {
|
59
40
|
root: 'div'
|
60
41
|
},
|
61
|
-
root: getNativeElementProps('div',
|
42
|
+
root: getNativeElementProps('div', {
|
62
43
|
ref: useMergedRefs(ref, contentRef),
|
63
|
-
role: 'dialog'
|
64
|
-
|
44
|
+
role: 'dialog',
|
45
|
+
...modalAttributes,
|
46
|
+
...props
|
47
|
+
})
|
65
48
|
};
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
49
|
+
const {
|
50
|
+
onMouseEnter: onMouseEnterOriginal,
|
51
|
+
onMouseLeave: onMouseLeaveOriginal,
|
52
|
+
onKeyDown: onKeyDownOriginal
|
53
|
+
} = state.root;
|
70
54
|
|
71
|
-
state.root.onMouseEnter =
|
55
|
+
state.root.onMouseEnter = e => {
|
72
56
|
if (openOnHover) {
|
73
57
|
setOpen(e, true);
|
74
58
|
}
|
@@ -76,7 +60,7 @@ export var usePopoverSurface = function (props, ref) {
|
|
76
60
|
onMouseEnterOriginal === null || onMouseEnterOriginal === void 0 ? void 0 : onMouseEnterOriginal(e);
|
77
61
|
};
|
78
62
|
|
79
|
-
state.root.onMouseLeave =
|
63
|
+
state.root.onMouseLeave = e => {
|
80
64
|
if (openOnHover) {
|
81
65
|
setOpen(e, false);
|
82
66
|
}
|
@@ -84,7 +68,7 @@ export var usePopoverSurface = function (props, ref) {
|
|
84
68
|
onMouseLeaveOriginal === null || onMouseLeaveOriginal === void 0 ? void 0 : onMouseLeaveOriginal(e);
|
85
69
|
};
|
86
70
|
|
87
|
-
state.root.onKeyDown =
|
71
|
+
state.root.onKeyDown = e => {
|
88
72
|
var _a; // only close if the event happened inside the current popover
|
89
73
|
// If using a stack of inline popovers, the user should call `stopPropagation` to avoid dismissing the entire stack
|
90
74
|
|
@@ -96,10 +80,12 @@ export var usePopoverSurface = function (props, ref) {
|
|
96
80
|
onKeyDownOriginal === null || onKeyDownOriginal === void 0 ? void 0 : onKeyDownOriginal(e);
|
97
81
|
};
|
98
82
|
|
99
|
-
|
100
|
-
|
83
|
+
const {
|
84
|
+
findFirstFocusable
|
85
|
+
} = useFocusFinders();
|
86
|
+
React.useEffect(() => {
|
101
87
|
if (state.open && contentRef.current) {
|
102
|
-
|
88
|
+
const firstFocusable = findFirstFocusable(contentRef.current);
|
103
89
|
firstFocusable === null || firstFocusable === void 0 ? void 0 : firstFocusable.focus();
|
104
90
|
}
|
105
91
|
}, [contentRef, findFirstFocusable, state.open]);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/components/PopoverSurface/usePopoverSurface.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"sources":["../../../src/components/PopoverSurface/usePopoverSurface.ts"],"names":[],"mappings":"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","sourceRoot":""}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import type { PopoverSize } from '../Popover/Popover.types';
|
2
2
|
import type { PopoverSurfaceState } from './PopoverSurface.types';
|
3
|
+
export declare const popoverSurfaceClassName = "fui-PopoverSurface";
|
3
4
|
export declare const arrowHeights: Record<PopoverSize, number>;
|
4
5
|
/**
|
5
6
|
* Apply styling to the PopoverSurface slots based on the state
|
@@ -1,5 +1,7 @@
|
|
1
1
|
import { __styles, mergeClasses } from '@fluentui/react-make-styles';
|
2
|
-
|
2
|
+
import { createArrowStyles } from '@fluentui/react-positioning';
|
3
|
+
export const popoverSurfaceClassName = 'fui-PopoverSurface';
|
4
|
+
export const arrowHeights = {
|
3
5
|
small: 6,
|
4
6
|
medium: 8,
|
5
7
|
large: 8
|
@@ -8,10 +10,10 @@ export var arrowHeights = {
|
|
8
10
|
* Styles for the root slot
|
9
11
|
*/
|
10
12
|
|
11
|
-
|
13
|
+
const useStyles = /*#__PURE__*/__styles({
|
12
14
|
"root": {
|
13
15
|
"De3pzq": "fxugw4r",
|
14
|
-
"E5pizo":
|
16
|
+
"E5pizo": "f1hg901r",
|
15
17
|
"Dimara": "ff3glw6",
|
16
18
|
"B4j52fo": "f5ogflp",
|
17
19
|
"Bekrc4i": ["f1hqa2wf", "finvdd3"],
|
@@ -73,7 +75,13 @@ var useStyles = /*#__PURE__*/__styles({
|
|
73
75
|
"B4zgs9e": "ffo048g",
|
74
76
|
"Bex5imi": "fkk33zh",
|
75
77
|
"px8gyy": ["f5bg3dr", "f1rfdd74"],
|
76
|
-
"h6z6rw":
|
78
|
+
"h6z6rw": "fzd2j21",
|
79
|
+
"Iykf4b": ["feexxpo", "f7s5fvx"],
|
80
|
+
"F42hee": ["f1jq8eg5", "f12n7c5j"],
|
81
|
+
"Blxsnla": ["f1wv7y6t", "fi4qyh6"],
|
82
|
+
"t2scew": "fcvru7r",
|
83
|
+
"Emsed9": "f7ybgnc",
|
84
|
+
"E11wbp": "f16xtfle",
|
77
85
|
"hl6cv3": "fotnskf",
|
78
86
|
"Bh2vraf": "f1n8855c",
|
79
87
|
"yayu3t": ["f1nq055x", "f13ohf3"],
|
@@ -84,16 +92,16 @@ var useStyles = /*#__PURE__*/__styles({
|
|
84
92
|
"Bwwlvwl": "fm1ycve"
|
85
93
|
}
|
86
94
|
}, {
|
87
|
-
"d": [".fxugw4r{background-color:var(--colorNeutralBackground1);}", ".f1hg901r{box-shadow:var(--shadow16);}", ".
|
95
|
+
"d": [".fxugw4r{background-color:var(--colorNeutralBackground1);}", ".f1hg901r{box-shadow:var(--shadow16);}", ".ff3glw6{border-radius:4px;}", ".f5ogflp{border-top-width:1px;}", ".f1hqa2wf{border-right-width:1px;}", ".finvdd3{border-left-width:1px;}", ".f1f09k3d{border-bottom-width:1px;}", ".fzkkow9{border-top-style:solid;}", ".fcdblym{border-right-style:solid;}", ".fjik90z{border-left-style:solid;}", ".fg706s2{border-bottom-style:solid;}", ".fghlq4f{border-top-color:var(--colorTransparentStroke);}", ".f1gn591s{border-right-color:var(--colorTransparentStroke);}", ".fjscplz{border-left-color:var(--colorTransparentStroke);}", ".fb073pr{border-bottom-color:var(--colorTransparentStroke);}", ".f1c73kur{background-color:var(--colorNeutralForeground1);}", ".fqpbvvt{color:var(--colorNeutralForegroundInverted);}", ".ffp7eso{background-color:var(--colorBrandBackground);}", ".f1kcqot9{padding-top:12px;}", ".f11qrl6u{padding-right:12px;}", ".fjlbh76{padding-left:12px;}", ".fpe6lb7{padding-bottom:12px;}", ".fqag9an{padding-top:16px;}", ".f1gbmcue{padding-right:16px;}", ".f1rh9g5y{padding-left:16px;}", ".fp67ikv{padding-bottom:16px;}", ".fc7z3ec{padding-top:20px;}", ".fat0sn4{padding-right:20px;}", ".fekwl8i{padding-left:20px;}", ".fe2my4m{padding-bottom:20px;}", ".f1smug5u{width:8.485281374238571px;}", ".f11ci07v{height:8.485281374238571px;}", ".ftmg478{width:11.313708498984761px;}", ".f7bsbfx{height:11.313708498984761px;}", ".f1euv43f{position:absolute;}", ".f1uo6wrk{background:inherit;}", ".fd7fpy0{visibility:hidden;}", ".f1bsuimh{z-index:-1;}", ".fuzzvh5:before{content:\"\";}", ".f1qudtws:before{border-radius:4px;}", ".fxf9f1y:before{position:absolute;}", ".f103af6e:before{width:inherit;}", ".f15umuo5:before{height:inherit;}", ".ffo048g:before{background:inherit;}", ".fkk33zh:before{visibility:visible;}", ".f5bg3dr:before{border-bottom-right-radius:var(--borderRadiusSmall);}", ".f1rfdd74:before{border-bottom-left-radius:var(--borderRadiusSmall);}", ".fzd2j21:before{-webkit-transform:rotate(var(--angle)) translate(0, 50%) rotate(45deg);-moz-transform:rotate(var(--angle)) translate(0, 50%) rotate(45deg);-ms-transform:rotate(var(--angle)) translate(0, 50%) rotate(45deg);transform:rotate(var(--angle)) translate(0, 50%) rotate(45deg);}", "[data-popper-placement] .feexxpo:before{border-right-width:1px;}", "[data-popper-placement] .f7s5fvx:before{border-left-width:1px;}", "[data-popper-placement] .f1jq8eg5:before{border-right-style:solid;}", "[data-popper-placement] .f12n7c5j:before{border-left-style:solid;}", "[data-popper-placement] .f1wv7y6t:before{border-right-color:transparent;}", "[data-popper-placement] .fi4qyh6:before{border-left-color:transparent;}", "[data-popper-placement] .fcvru7r:before{border-bottom-width:1px;}", "[data-popper-placement] .f7ybgnc:before{border-bottom-style:solid;}", "[data-popper-placement] .f16xtfle:before{border-bottom-color:transparent;}", "[data-popper-placement^=\"top\"] .fotnskf{bottom:0;}", "[data-popper-placement^=\"top\"] .f1n8855c{--angle:0;}", "[data-popper-placement^=\"right\"] .f1nq055x{left:0;}", "[data-popper-placement^=\"right\"] .f13ohf3{right:0;}", "[data-popper-placement^=\"right\"] .fsw6im5{--angle:90deg;}", "[data-popper-placement^=\"bottom\"] .ftghsr9{top:0;}", "[data-popper-placement^=\"bottom\"] .f159pzir{--angle:180deg;}", "[data-popper-placement^=\"left\"] .f1l8vbt4{right:0;}", "[data-popper-placement^=\"left\"] .fsxzh25{left:0;}", "[data-popper-placement^=\"left\"] .fm1ycve{--angle:270deg;}"]
|
88
96
|
});
|
89
97
|
/**
|
90
98
|
* Apply styling to the PopoverSurface slots based on the state
|
91
99
|
*/
|
92
100
|
|
93
101
|
|
94
|
-
export
|
95
|
-
|
96
|
-
state.root.className = mergeClasses(styles.root, state.size === 'small' && styles.smallPadding, state.size === 'medium' && styles.mediumPadding, state.size === 'large' && styles.largePadding, state.appearance === 'inverted' && styles.inverted, state.appearance === 'brand' && styles.brand, state.root.className);
|
102
|
+
export const usePopoverSurfaceStyles = state => {
|
103
|
+
const styles = useStyles();
|
104
|
+
state.root.className = mergeClasses(popoverSurfaceClassName, styles.root, state.size === 'small' && styles.smallPadding, state.size === 'medium' && styles.mediumPadding, state.size === 'large' && styles.largePadding, state.appearance === 'inverted' && styles.inverted, state.appearance === 'brand' && styles.brand, state.root.className);
|
97
105
|
state.arrowClassName = mergeClasses(styles.arrow, state.size === 'small' ? styles.smallArrow : styles.mediumLargeArrow);
|
98
106
|
return state;
|
99
107
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/components/PopoverSurface/usePopoverSurfaceStyles.ts"],"names":[],"mappings":"AAAA,mBAAqB,YAArB,QAAyC,6BAAzC;AAIA,OAAO,
|
1
|
+
{"version":3,"sources":["../../../src/components/PopoverSurface/usePopoverSurfaceStyles.ts"],"names":[],"mappings":"AAAA,mBAAqB,YAArB,QAAyC,6BAAzC;AACA,SAAS,iBAAT,QAAkC,6BAAlC;AAIA,OAAO,MAAM,uBAAuB,GAAG,oBAAhC;AAEP,OAAO,MAAM,YAAY,GAAgC;AACvD,EAAA,KAAK,EAAE,CADgD;AAEvD,EAAA,MAAM,EAAE,CAF+C;AAGvD,EAAA,KAAK,EAAE;AAHgD,CAAlD;AAMP;;AAEG;;AACH,MAAM,SAAS,gBAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAlB;AA6CA;;AAEG;;;AACH,OAAO,MAAM,uBAAuB,GAAI,KAAD,IAAoD;AACzF,QAAM,MAAM,GAAG,SAAS,EAAxB;AACA,EAAA,KAAK,CAAC,IAAN,CAAW,SAAX,GAAuB,YAAY,CACjC,uBADiC,EAEjC,MAAM,CAAC,IAF0B,EAGjC,KAAK,CAAC,IAAN,KAAe,OAAf,IAA0B,MAAM,CAAC,YAHA,EAIjC,KAAK,CAAC,IAAN,KAAe,QAAf,IAA2B,MAAM,CAAC,aAJD,EAKjC,KAAK,CAAC,IAAN,KAAe,OAAf,IAA0B,MAAM,CAAC,YALA,EAMjC,KAAK,CAAC,UAAN,KAAqB,UAArB,IAAmC,MAAM,CAAC,QANT,EAOjC,KAAK,CAAC,UAAN,KAAqB,OAArB,IAAgC,MAAM,CAAC,KAPN,EAQjC,KAAK,CAAC,IAAN,CAAW,SARsB,CAAnC;AAWA,EAAA,KAAK,CAAC,cAAN,GAAuB,YAAY,CACjC,MAAM,CAAC,KAD0B,EAEjC,KAAK,CAAC,IAAN,KAAe,OAAf,GAAyB,MAAM,CAAC,UAAhC,GAA6C,MAAM,CAAC,gBAFnB,CAAnC;AAKA,SAAO,KAAP;AACD,CAnBM","sourceRoot":""}
|
@@ -4,8 +4,8 @@ import { renderPopoverTrigger } from './renderPopoverTrigger';
|
|
4
4
|
* Wraps a trigger element as an only child and adds the necessary event handling to open a popover.
|
5
5
|
*/
|
6
6
|
|
7
|
-
export
|
8
|
-
|
7
|
+
export const PopoverTrigger = props => {
|
8
|
+
const state = usePopoverTrigger(props);
|
9
9
|
return renderPopoverTrigger(state);
|
10
10
|
};
|
11
11
|
PopoverTrigger.displayName = 'PopoverTrigger';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/components/PopoverTrigger/PopoverTrigger.tsx"],"names":[],"mappings":"AACA,SAAS,iBAAT,QAAkC,qBAAlC;AACA,SAAS,oBAAT,QAAqC,wBAArC;AAGA;;AAEG;;AACH,OAAO,
|
1
|
+
{"version":3,"sources":["../../../src/components/PopoverTrigger/PopoverTrigger.tsx"],"names":[],"mappings":"AACA,SAAS,iBAAT,QAAkC,qBAAlC;AACA,SAAS,oBAAT,QAAqC,wBAArC;AAGA;;AAEG;;AACH,OAAO,MAAM,cAAc,GAAkC,KAAK,IAAG;AACnE,QAAM,KAAK,GAAG,iBAAiB,CAAC,KAAD,CAA/B;AAEA,SAAO,oBAAoB,CAAC,KAAD,CAA3B;AACD,CAJM;AAMP,cAAc,CAAC,WAAf,GAA6B,gBAA7B","sourceRoot":""}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/components/PopoverTrigger/renderPopoverTrigger.tsx"],"names":[],"mappings":"AAEA;;AAEG;AACH,OAAO,
|
1
|
+
{"version":3,"sources":["../../../src/components/PopoverTrigger/renderPopoverTrigger.tsx"],"names":[],"mappings":"AAEA;;AAEG;AACH,OAAO,MAAM,oBAAoB,GAAI,KAAD,IAA4C;AAC9E,SAAO,KAAK,CAAC,QAAb;AACD,CAFM","sourceRoot":""}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import { __assign } from "tslib";
|
2
1
|
import * as React from 'react';
|
3
2
|
import { useMergedRefs, useEventCallback, shouldPreventDefaultOnKeyDown } from '@fluentui/react-utilities';
|
4
3
|
import { useModalAttributes } from '@fluentui/react-tabster';
|
@@ -12,24 +11,17 @@ import { usePopoverContext } from '../../popoverContext';
|
|
12
11
|
* @param props - props from this instance of PopoverTrigger
|
13
12
|
*/
|
14
13
|
|
15
|
-
export
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
});
|
25
|
-
|
26
|
-
return context.openOnHover;
|
27
|
-
});
|
28
|
-
var openOnContext = usePopoverContext(function (context) {
|
29
|
-
return context.openOnContext;
|
30
|
-
});
|
31
|
-
var triggerAttributes = useModalAttributes().triggerAttributes;
|
32
|
-
var onContextMenu = useEventCallback(function (e) {
|
14
|
+
export const usePopoverTrigger = props => {
|
15
|
+
const setOpen = usePopoverContext(context => context.setOpen);
|
16
|
+
const open = usePopoverContext(context => context.open);
|
17
|
+
const triggerRef = usePopoverContext(context => context.triggerRef);
|
18
|
+
const openOnHover = usePopoverContext(context => context.openOnHover);
|
19
|
+
const openOnContext = usePopoverContext(context => context.openOnContext);
|
20
|
+
const trapFocus = usePopoverContext(context => context.trapFocus);
|
21
|
+
const {
|
22
|
+
triggerAttributes
|
23
|
+
} = useModalAttributes();
|
24
|
+
const onContextMenu = useEventCallback(e => {
|
33
25
|
var _a, _b;
|
34
26
|
|
35
27
|
if (openOnContext) {
|
@@ -39,7 +31,7 @@ export var usePopoverTrigger = function (props) {
|
|
39
31
|
|
40
32
|
(_b = (_a = child.props) === null || _a === void 0 ? void 0 : _a.onContextMenu) === null || _b === void 0 ? void 0 : _b.call(_a, e);
|
41
33
|
});
|
42
|
-
|
34
|
+
const onClick = useEventCallback(e => {
|
43
35
|
var _a, _b;
|
44
36
|
|
45
37
|
if (!openOnContext) {
|
@@ -48,7 +40,7 @@ export var usePopoverTrigger = function (props) {
|
|
48
40
|
|
49
41
|
(_b = (_a = child.props) === null || _a === void 0 ? void 0 : _a.onClick) === null || _b === void 0 ? void 0 : _b.call(_a, e);
|
50
42
|
});
|
51
|
-
|
43
|
+
const onKeyDown = useEventCallback(e => {
|
52
44
|
var _a, _b, _c;
|
53
45
|
|
54
46
|
if (shouldPreventDefaultOnKeyDown(e) && (e.key === ' ' || e.key === 'Enter')) {
|
@@ -62,7 +54,7 @@ export var usePopoverTrigger = function (props) {
|
|
62
54
|
|
63
55
|
(_c = (_b = child.props) === null || _b === void 0 ? void 0 : _b.onKeyDown) === null || _c === void 0 ? void 0 : _c.call(_b, e);
|
64
56
|
});
|
65
|
-
|
57
|
+
const onMouseEnter = useEventCallback(e => {
|
66
58
|
var _a, _b;
|
67
59
|
|
68
60
|
if (openOnHover) {
|
@@ -71,7 +63,7 @@ export var usePopoverTrigger = function (props) {
|
|
71
63
|
|
72
64
|
(_b = (_a = child.props) === null || _a === void 0 ? void 0 : _a.onMouseEnter) === null || _b === void 0 ? void 0 : _b.call(_a, e);
|
73
65
|
});
|
74
|
-
|
66
|
+
const onMouseLeave = useEventCallback(e => {
|
75
67
|
var _a, _b;
|
76
68
|
|
77
69
|
if (openOnHover) {
|
@@ -80,18 +72,18 @@ export var usePopoverTrigger = function (props) {
|
|
80
72
|
|
81
73
|
(_b = (_a = child.props) === null || _a === void 0 ? void 0 : _a.onMouseLeave) === null || _b === void 0 ? void 0 : _b.call(_a, e);
|
82
74
|
});
|
83
|
-
|
75
|
+
const child = React.Children.only(props.children);
|
84
76
|
return {
|
85
|
-
children: /*#__PURE__*/React.cloneElement(child,
|
86
|
-
'aria-haspopup': 'true'
|
87
|
-
|
88
|
-
onClick
|
89
|
-
onMouseEnter
|
90
|
-
onKeyDown
|
91
|
-
onMouseLeave
|
92
|
-
onContextMenu
|
77
|
+
children: /*#__PURE__*/React.cloneElement(child, { ...triggerAttributes,
|
78
|
+
'aria-haspopup': trapFocus ? 'dialog' : 'true',
|
79
|
+
...child.props,
|
80
|
+
onClick,
|
81
|
+
onMouseEnter,
|
82
|
+
onKeyDown,
|
83
|
+
onMouseLeave,
|
84
|
+
onContextMenu,
|
93
85
|
ref: useMergedRefs(child.ref, triggerRef)
|
94
|
-
})
|
86
|
+
})
|
95
87
|
};
|
96
88
|
};
|
97
89
|
//# sourceMappingURL=usePopoverTrigger.js.map
|