1- import React , { useState , useCallback } from 'react' ;
1+ import React from 'react' ;
22import Bridge from 'crx-bridge' ;
3- import { SettingsIcon } from '@primer/octicons-react' ;
4- import { Dialog } from '@reach/dialog' ;
53
64import inspectedWindow from '../lib/inspectedWindow' ;
75
8- import SelectIcon from './SelectIcon' ;
9- import LayersIcon from './LayersIcon' ;
10- import InspectIcon from './InspectIcon' ;
11- import LogIcon from './LogIcon' ;
6+ // we don't use octicons here, as that style doesn't really fit in devtools
7+ import SelectIcon from './Icons/SelectIcon' ;
8+ import LayersIcon from './Icons/LayersIcon' ;
9+ import InspectIcon from './Icons/InspectIcon' ;
10+ import SettingsIcon from './Icons/SettingsIcon' ;
11+ import LogIcon from './Icons/LogIcon' ;
12+ import { Menu , MenuButton , MenuPopover } from '../../../../src/components/Menu' ;
13+ import Settings from '../../../../src/components/Settings' ;
14+ import { getSettings , setSettings } from '../lib/settings' ;
1215
1316function MenuBar ( { cssPath, suggestion } ) {
14- const [ settingsModalVisible , setSettingsModalVisible ] = useState ( false ) ;
15- const [ testIdCustomAttribute , setTestIdCustomAttribute ] = useState (
16- 'data-testid' ,
17- ) ;
18-
19- const onClickSettingsHandler = useCallback (
20- ( ) => setSettingsModalVisible ( true ) ,
21- [ setSettingsModalVisible ] ,
22- ) ;
23- const onCloseSettingsModalHandler = useCallback (
24- ( ) => setSettingsModalVisible ( false ) ,
25- [ setSettingsModalVisible ] ,
26- ) ;
27-
28- const onTestIdCustomAttributeChangeHandler = useCallback (
29- ( event ) => setTestIdCustomAttribute ( event . target . value ) ,
30- [ setTestIdCustomAttribute ] ,
31- ) ;
32-
33- const onClickSettingsModalOkButtonHandler = useCallback ( ( ) => {
34- Bridge . sendMessage (
35- 'SET_CUSTOM_TEST_ID' ,
36- { customTestIdAttribute : testIdCustomAttribute } ,
37- 'content-script' ,
38- ) ;
39- onCloseSettingsModalHandler ( ) ;
40- } , [ testIdCustomAttribute , onCloseSettingsModalHandler ] ) ;
4117 return (
4218 < div className = "h-8 p-2 border-b space-x-4 flex" >
4319 < button
@@ -62,30 +38,22 @@ function MenuBar({ cssPath, suggestion }) {
6238
6339 < div className = "flex-auto" />
6440
65- < button
66- className = "focus:outline-none"
67- title = "View settings"
68- onClick = { onClickSettingsHandler }
69- >
70- < SettingsIcon />
71- </ button >
72- < Dialog
73- isOpen = { settingsModalVisible }
74- onDismiss = { onCloseSettingsModalHandler }
75- aria-label = "settings-modal"
76- >
77- < input
78- type = "text"
79- value = { testIdCustomAttribute }
80- onChange = { onTestIdCustomAttributeChangeHandler }
81- />
82- < button
83- onClick = { onClickSettingsModalOkButtonHandler }
84- disabled = { ! testIdCustomAttribute }
85- >
86- < span > Ok</ span >
87- </ button >
88- </ Dialog >
41+ < Menu >
42+ < MenuButton >
43+ < SettingsIcon />
44+ </ MenuButton >
45+
46+ < MenuPopover >
47+ < Settings
48+ dispatch = { ( { type, ...data } ) => {
49+ if ( type === 'SET_SETTINGS' ) {
50+ setSettings ( data ) ;
51+ }
52+ } }
53+ settings = { getSettings ( ) }
54+ />
55+ </ MenuPopover >
56+ </ Menu >
8957
9058 < button
9159 className = "focus:outline-none"
0 commit comments