1
+ "use strict" ;
2
+
3
+ function _typeof ( obj ) { "@babel/helpers - typeof" ; if ( typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ) { _typeof = function _typeof ( obj ) { return typeof obj ; } ; } else { _typeof = function _typeof ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ; } return _typeof ( obj ) ; }
4
+
5
+ Object . defineProperty ( exports , "__esModule" , {
6
+ value : true
7
+ } ) ;
8
+ exports . default = void 0 ;
9
+
10
+ var _react = _interopRequireWildcard ( require ( "react" ) ) ;
11
+
12
+ var _Grid = _interopRequireDefault ( require ( "@material-ui/core/Grid" ) ) ;
13
+
14
+ var _Button = _interopRequireDefault ( require ( "@material-ui/core/Button" ) ) ;
15
+
16
+ var _ButtonGroup = _interopRequireDefault ( require ( "@material-ui/core/ButtonGroup" ) ) ;
17
+
18
+ var _ClickAwayListener = _interopRequireDefault ( require ( "@material-ui/core/ClickAwayListener" ) ) ;
19
+
20
+ var _Grow = _interopRequireDefault ( require ( "@material-ui/core/Grow" ) ) ;
21
+
22
+ var _Paper = _interopRequireDefault ( require ( "@material-ui/core/Paper" ) ) ;
23
+
24
+ var _Popper = _interopRequireDefault ( require ( "@material-ui/core/Popper" ) ) ;
25
+
26
+ var _MenuItem = _interopRequireDefault ( require ( "@material-ui/core/MenuItem" ) ) ;
27
+
28
+ var _MenuList = _interopRequireDefault ( require ( "@material-ui/core/MenuList" ) ) ;
29
+
30
+ var _ArrowDropDown = _interopRequireDefault ( require ( "@material-ui/icons/ArrowDropDown" ) ) ;
31
+
32
+ var _Theme = _interopRequireDefault ( require ( "../Theme/Theme" ) ) ;
33
+
34
+ var _typeUtil = require ( "../../util/typeUtil" ) ;
35
+
36
+ function _interopRequireDefault ( obj ) { return obj && obj . __esModule ? obj : { default : obj } ; }
37
+
38
+ function _getRequireWildcardCache ( nodeInterop ) { if ( typeof WeakMap !== "function" ) return null ; var cacheBabelInterop = new WeakMap ( ) ; var cacheNodeInterop = new WeakMap ( ) ; return ( _getRequireWildcardCache = function _getRequireWildcardCache ( nodeInterop ) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop ; } ) ( nodeInterop ) ; }
39
+
40
+ function _interopRequireWildcard ( obj , nodeInterop ) { if ( ! nodeInterop && obj && obj . __esModule ) { return obj ; } if ( obj === null || _typeof ( obj ) !== "object" && typeof obj !== "function" ) { return { default : obj } ; } var cache = _getRequireWildcardCache ( nodeInterop ) ; if ( cache && cache . has ( obj ) ) { return cache . get ( obj ) ; } var newObj = { } ; var hasPropertyDescriptor = Object . defineProperty && Object . getOwnPropertyDescriptor ; for ( var key in obj ) { if ( key !== "default" && Object . prototype . hasOwnProperty . call ( obj , key ) ) { var desc = hasPropertyDescriptor ? Object . getOwnPropertyDescriptor ( obj , key ) : null ; if ( desc && ( desc . get || desc . set ) ) { Object . defineProperty ( newObj , key , desc ) ; } else { newObj [ key ] = obj [ key ] ; } } } newObj . default = obj ; if ( cache ) { cache . set ( obj , newObj ) ; } return newObj ; }
41
+
42
+ function _extends ( ) { _extends = Object . assign || function ( target ) { for ( var i = 1 ; i < arguments . length ; i ++ ) { var source = arguments [ i ] ; for ( var key in source ) { if ( Object . prototype . hasOwnProperty . call ( source , key ) ) { target [ key ] = source [ key ] ; } } } return target ; } ; return _extends . apply ( this , arguments ) ; }
43
+
44
+ function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; }
45
+
46
+ function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; }
47
+
48
+ function _unsupportedIterableToArray ( o , minLen ) { if ( ! o ) return ; if ( typeof o === "string" ) return _arrayLikeToArray ( o , minLen ) ; var n = Object . prototype . toString . call ( o ) . slice ( 8 , - 1 ) ; if ( n === "Object" && o . constructor ) n = o . constructor . name ; if ( n === "Map" || n === "Set" ) return Array . from ( o ) ; if ( n === "Arguments" || / ^ (?: U i | I ) n t (?: 8 | 1 6 | 3 2 ) (?: C l a m p e d ) ? A r r a y $ / . test ( n ) ) return _arrayLikeToArray ( o , minLen ) ; }
49
+
50
+ function _arrayLikeToArray ( arr , len ) { if ( len == null || len > arr . length ) len = arr . length ; for ( var i = 0 , arr2 = new Array ( len ) ; i < len ; i ++ ) { arr2 [ i ] = arr [ i ] ; } return arr2 ; }
51
+
52
+ function _iterableToArrayLimit ( arr , i ) { var _i = arr && ( typeof Symbol !== "undefined" && arr [ Symbol . iterator ] || arr [ "@@iterator" ] ) ; if ( _i == null ) return ; var _arr = [ ] ; var _n = true ; var _d = false ; var _s , _e ; try { for ( _i = _i . call ( arr ) ; ! ( _n = ( _s = _i . next ( ) ) . done ) ; _n = true ) { _arr . push ( _s . value ) ; if ( i && _arr . length === i ) break ; } } catch ( err ) { _d = true ; _e = err ; } finally { try { if ( ! _n && _i [ "return" ] != null ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; }
53
+
54
+ function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; }
55
+
56
+ var SplitButton = function SplitButton ( props ) {
57
+ var name = props . name ,
58
+ options = props . options ,
59
+ selectedOption = props . selectedOption ,
60
+ selectedOptionDisplayCallback = props . selectedOptionDisplayCallback ,
61
+ onClick = props . onClick ,
62
+ onChange = props . onChange ,
63
+ buttonGroupProps = props . buttonGroupProps ,
64
+ buttonMenuProps = props . buttonMenuProps ,
65
+ buttonProps = props . buttonProps ;
66
+
67
+ var _useState = ( 0 , _react . useState ) ( false ) ,
68
+ _useState2 = _slicedToArray ( _useState , 2 ) ,
69
+ open = _useState2 [ 0 ] ,
70
+ setOpen = _useState2 [ 1 ] ;
71
+
72
+ var _useState3 = ( 0 , _react . useState ) ( selectedOption ) ,
73
+ _useState4 = _slicedToArray ( _useState3 , 2 ) ,
74
+ stateSelectedOption = _useState4 [ 0 ] ,
75
+ setStateSelectedOption = _useState4 [ 1 ] ;
76
+
77
+ var anchorRef = ( 0 , _react . useRef ) ( null ) ;
78
+ var appliedButtonGroupProps = {
79
+ variant : 'outlined' ,
80
+ color : 'primary'
81
+ } ;
82
+
83
+ if ( ( 0 , _typeUtil . exists ) ( buttonGroupProps ) ) {
84
+ appliedButtonGroupProps = buttonGroupProps ;
85
+ }
86
+
87
+ var appliedButtonProps = {
88
+ color : 'primary' ,
89
+ size : 'small'
90
+ } ;
91
+
92
+ if ( ( 0 , _typeUtil . exists ) ( buttonProps ) ) {
93
+ appliedButtonProps = buttonProps ;
94
+ }
95
+
96
+ var appliedButtonMenuProps = {
97
+ color : 'primary' ,
98
+ size : 'small'
99
+ } ;
100
+
101
+ if ( ( 0 , _typeUtil . exists ) ( buttonMenuProps ) ) {
102
+ appliedButtonMenuProps = buttonMenuProps ;
103
+ }
104
+
105
+ ( 0 , _react . useEffect ) ( function ( ) {
106
+ if ( selectedOption === stateSelectedOption ) return ;
107
+ setStateSelectedOption ( selectedOption ) ;
108
+ } , [ selectedOption , stateSelectedOption ] ) ;
109
+
110
+ var handleClick = function handleClick ( ) {
111
+ onClick ( stateSelectedOption ) ;
112
+ } ;
113
+
114
+ var handleMenuItemClick = function handleMenuItemClick ( event , index ) {
115
+ setStateSelectedOption ( options [ index ] ) ;
116
+ onChange ( options [ index ] ) ;
117
+ setOpen ( false ) ;
118
+ } ;
119
+
120
+ var handleToggle = function handleToggle ( ) {
121
+ setOpen ( function ( prevOpen ) {
122
+ return ! prevOpen ;
123
+ } ) ;
124
+ } ;
125
+
126
+ var handleClose = function handleClose ( event ) {
127
+ if ( anchorRef . current && anchorRef . current . contains ( event . target ) ) {
128
+ return ;
129
+ }
130
+
131
+ setOpen ( false ) ;
132
+ } ;
133
+
134
+ var renderSelectedOption = function renderSelectedOption ( ) {
135
+ if ( ( 0 , _typeUtil . exists ) ( selectedOptionDisplayCallback ) ) {
136
+ // eslint-disable-next-line max-len
137
+ return selectedOptionDisplayCallback ( stateSelectedOption ) ;
138
+ }
139
+
140
+ return stateSelectedOption ;
141
+ } ;
142
+
143
+ return /*#__PURE__*/ _react . default . createElement ( _Grid . default , {
144
+ container : true ,
145
+ direction : "column" ,
146
+ alignItems : "center"
147
+ } , /*#__PURE__*/ _react . default . createElement ( _Grid . default , {
148
+ item : true ,
149
+ xs : 12
150
+ } , /*#__PURE__*/ _react . default . createElement ( _ButtonGroup . default , _extends ( {
151
+ "aria-label" : "" . concat ( name , "-split-button" )
152
+ } , appliedButtonGroupProps , {
153
+ ref : anchorRef
154
+ } ) , /*#__PURE__*/ _react . default . createElement ( _Button . default , _extends ( { } , appliedButtonProps , {
155
+ onClick : handleClick
156
+ } ) , renderSelectedOption ( ) ) , /*#__PURE__*/ _react . default . createElement ( _Button . default , _extends ( {
157
+ "aria-controls" : open ? "" . concat ( name , "-split-button-menu" ) : undefined ,
158
+ "aria-expanded" : open ? 'true' : undefined ,
159
+ "aria-label" : "" . concat ( name , "-split-button-select" ) ,
160
+ "aria-haspopup" : "menu"
161
+ } , appliedButtonMenuProps , {
162
+ onClick : handleToggle
163
+ } ) , /*#__PURE__*/ _react . default . createElement ( _ArrowDropDown . default , null ) ) ) , /*#__PURE__*/ _react . default . createElement ( _Popper . default , {
164
+ transition : true ,
165
+ anchorEl : anchorRef . current ,
166
+ open : open ,
167
+ role : undefined
168
+ } , function ( _ref ) {
169
+ var TransitionProps = _ref . TransitionProps ,
170
+ placement = _ref . placement ;
171
+ return /*#__PURE__*/ _react . default . createElement ( _Grow . default , _extends ( { } , TransitionProps , {
172
+ style : {
173
+ transformOrigin : placement === 'bottom' ? 'center top' : 'center bottom'
174
+ }
175
+ } ) , /*#__PURE__*/ _react . default . createElement ( _Paper . default , null , /*#__PURE__*/ _react . default . createElement ( _ClickAwayListener . default , {
176
+ onClickAway : handleClose
177
+ } , /*#__PURE__*/ _react . default . createElement ( _MenuList . default , {
178
+ id : "" . concat ( name , "-split-button-menu" )
179
+ } , options . map ( function ( option , index ) {
180
+ return /*#__PURE__*/ _react . default . createElement ( _MenuItem . default , {
181
+ key : option ,
182
+ selected : option === stateSelectedOption ,
183
+ onClick : function onClick ( event ) {
184
+ return handleMenuItemClick ( event , index ) ;
185
+ }
186
+ } , option ) ;
187
+ } ) ) ) ) ) ;
188
+ } ) ) ) ;
189
+ } ;
190
+
191
+ var WrappedSplitButton = _Theme . default . getWrappedComponent ( SplitButton ) ;
192
+
193
+ var _default = WrappedSplitButton ;
194
+ exports . default = _default ;
0 commit comments