1
1
import styled , { css } from 'styled-components' ;
2
2
import OverlayTrigger , { OverlayTriggerProps } from '@uiw/react-overlay-trigger' ;
3
-
3
+ import { getThemeVariantValue } from '@uiw/utils' ;
4
4
interface PopoverWarpProps extends OverlayTriggerProps {
5
5
defaultTheme ?: Record < string , string | number > ;
6
6
}
7
- export const OverlayTriggerPopoverArrow = styled . div < PopoverWarpProps > `
7
+ export const PopoverStyleOverlayTriggerArrow = styled . div < PopoverWarpProps > `
8
8
position: absolute;
9
9
width: 30px;
10
10
height: 30px;
11
11
border-color: transparent;
12
12
z-index: 21;
13
13
` ;
14
14
15
- export interface OverlayTriggerPopoverBodyBaseProps
15
+ export interface PopoverStyleOverlayTriggerProps
16
16
extends React . DetailedHTMLProps < React . HTMLAttributes < HTMLDivElement > , HTMLDivElement > {
17
17
params ?: {
18
18
placement ?: OverlayTriggerProps [ 'placement' ] ;
19
19
} ;
20
20
}
21
21
22
- export const OverlayTriggerPopoverBodyBase = styled . div < OverlayTriggerPopoverBodyBaseProps > `
22
+ export const PopoverStyleOverlayTriggerDiv = styled . div < PopoverStyleOverlayTriggerProps > `
23
23
${ ( props ) =>
24
24
[ 'top' , 'topLeft' , 'topRight' ] . includes ( props . params ?. placement || '' ) &&
25
25
css `
@@ -43,14 +43,14 @@ export const OverlayTriggerPopoverBodyBase = styled.div<OverlayTriggerPopoverBod
43
43
` }
44
44
` ;
45
45
46
- export const OverlayTriggerPopover = styled ( OverlayTrigger ) < PopoverWarpProps > `
46
+ export const PopoverStyleOverlayTrigger = styled ( OverlayTrigger ) < PopoverWarpProps > `
47
47
position: relative;
48
48
display: inline-block;
49
49
outline: 0;
50
50
${ ( props ) =>
51
51
[ 'right' , 'rightTop' , 'rightBottom' ] . includes ( props . placement || '' ) &&
52
52
css `
53
- & ${ OverlayTriggerPopoverArrow } {
53
+ & ${ PopoverStyleOverlayTriggerArrow } {
54
54
left : 2px ;
55
55
margin-top : -15px ;
56
56
top : 50% ;
@@ -60,7 +60,7 @@ export const OverlayTriggerPopover = styled(OverlayTrigger)<PopoverWarpProps>`
60
60
${ ( props ) =>
61
61
[ 'left' , 'leftTop' , 'leftBottom' ] . includes ( props . placement || '' ) &&
62
62
css `
63
- & ${ OverlayTriggerPopoverArrow } {
63
+ & ${ PopoverStyleOverlayTriggerArrow } {
64
64
transform : rotate (180deg );
65
65
margin-top : -15px ;
66
66
right : 2px ;
@@ -71,15 +71,15 @@ export const OverlayTriggerPopover = styled(OverlayTrigger)<PopoverWarpProps>`
71
71
${ ( props ) =>
72
72
[ 'leftTop' , 'rightTop' ] . includes ( props . placement || '' ) &&
73
73
css `
74
- & ${ OverlayTriggerPopoverArrow } {
74
+ & ${ PopoverStyleOverlayTriggerArrow } {
75
75
top : 15px ;
76
76
}
77
77
` }
78
78
79
79
${ ( props ) =>
80
80
[ 'leftBottom' , 'rightBottom' ] . includes ( props . placement || '' ) &&
81
81
css `
82
- & ${ OverlayTriggerPopoverArrow } {
82
+ & ${ PopoverStyleOverlayTriggerArrow } {
83
83
bottom : 0 ;
84
84
top : auto;
85
85
}
@@ -88,7 +88,7 @@ export const OverlayTriggerPopover = styled(OverlayTrigger)<PopoverWarpProps>`
88
88
${ ( props ) =>
89
89
[ 'top' , 'topLeft' , 'topRight' ] . includes ( props . placement || '' ) &&
90
90
css `
91
- & ${ OverlayTriggerPopoverArrow } {
91
+ & ${ PopoverStyleOverlayTriggerArrow } {
92
92
transform : rotate (-90deg );
93
93
bottom : 2px ;
94
94
left : 50% ;
@@ -99,7 +99,7 @@ export const OverlayTriggerPopover = styled(OverlayTrigger)<PopoverWarpProps>`
99
99
${ ( props ) =>
100
100
[ 'bottom' , 'bottomLeft' , 'bottomRight' ] . includes ( props . placement || '' ) &&
101
101
css `
102
- & ${ OverlayTriggerPopoverArrow } {
102
+ & ${ PopoverStyleOverlayTriggerArrow } {
103
103
transform : rotate (90deg );
104
104
left : 50% ;
105
105
margin-left : -15px ;
@@ -110,29 +110,36 @@ export const OverlayTriggerPopover = styled(OverlayTrigger)<PopoverWarpProps>`
110
110
${ ( props ) =>
111
111
[ 'bottomLeft' , 'topLeft' ] . includes ( props . placement || '' ) &&
112
112
css `
113
- & ${ OverlayTriggerPopoverArrow } {
113
+ & ${ PopoverStyleOverlayTriggerArrow } {
114
114
left : 15px ;
115
115
}
116
116
` }
117
117
118
118
${ ( props ) =>
119
119
[ 'bottomRight' , 'topRight' ] . includes ( props . placement || '' ) &&
120
120
css `
121
- & ${ OverlayTriggerPopoverArrow } {
121
+ & ${ PopoverStyleOverlayTriggerArrow } {
122
122
right : 0 ;
123
123
left : auto;
124
124
}
125
125
` }
126
126
` ;
127
127
128
- export const OverlayTriggerPopoverContent = styled . div < PopoverWarpProps > `
129
- font-size: 12px ;
128
+ export const PopoverStyleOverlayTriggerContent = styled . div < PopoverWarpProps > `
129
+ font-size: ${ ( props ) => getThemeVariantValue ( props , 'fontSizePopoverDefault' ) } ;
130
130
display: block;
131
131
text-align: left;
132
132
text-decoration: none;
133
133
background-color: #fff;
134
134
border-radius: 4px;
135
135
min-height: 23px;
136
- box-shadow: rgba(16, 22, 26, 0.1) 0px 0px 0px 1px, rgba(16, 22, 26, 0.2) 0px 2px 4px,
137
- rgba(16, 22, 26, 0.2) 0px 8px 24px;
136
+ box-shadow: ${ ( props ) => getThemeVariantValue ( props , 'boxShadowPopoverPrimary' ) } ;
138
137
` ;
138
+
139
+ PopoverStyleOverlayTriggerContent . defaultProps = {
140
+ defaultTheme : {
141
+ fontSizePopoverDefault : '12px' ,
142
+ boxShadowPopoverPrimary :
143
+ 'rgba(16, 22, 26, 0.1) 0px 0px 0px 1px, rgba(16, 22, 26, 0.2) 0px 2px 4px, rgba(16, 22, 26, 0.2) 0px 8px 24px' ,
144
+ } ,
145
+ } ;
0 commit comments