@@ -4,15 +4,14 @@ import { FeatureNames } from "api/types"
4
4
import {
5
5
Badges ,
6
6
DisabledBadge ,
7
- EnabledBadge ,
8
7
EnterpriseBadge ,
9
8
EntitledBadge ,
10
9
} from "components/DeploySettingsLayout/Badges"
11
10
import { Header } from "components/DeploySettingsLayout/Header"
12
11
import { LoadingButton } from "components/LoadingButton/LoadingButton"
13
12
import { Stack } from "components/Stack/Stack"
14
13
import { FormikContextType , useFormik } from "formik"
15
- import React , { useContext } from "react"
14
+ import React , { useContext , useState } from "react"
16
15
import { Helmet } from "react-helmet-async"
17
16
import { pageTitle } from "util/page"
18
17
import * as Yup from "yup"
@@ -21,17 +20,23 @@ import { getFormHelpers } from "util/formUtils"
21
20
import makeStyles from "@material-ui/core/styles/makeStyles"
22
21
import FormControlLabel from "@material-ui/core/FormControlLabel"
23
22
import Switch from "@material-ui/core/Switch"
23
+ import { BlockPicker } from "react-color"
24
+ import { useTheme } from "@material-ui/core/styles"
25
+
26
+ import { colors } from "theme/colors"
24
27
25
28
export const Language = {
26
29
messageLabel : "Message" ,
27
30
backgroundColorLabel : "Background Color" ,
28
31
updateBanner : "Update" ,
32
+ previewBanner : "Preview" ,
29
33
}
30
34
31
35
export interface ServiceBannerFormValues {
32
36
message ?: string
33
37
backgroundColor ?: string
34
38
enabled ?: boolean
39
+ preview : boolean
35
40
}
36
41
37
42
// TODO:
@@ -59,20 +64,19 @@ const ServiceBannerSettingsPage: React.FC = () => {
59
64
60
65
const onSubmit = ( values : ServiceBannerFormValues ) => {
61
66
const newBanner = {
62
- ...serviceBanner ,
63
- }
64
- if ( values . message !== undefined ) {
65
- newBanner . message = values . message
67
+ message : values . message ,
68
+ enabled : true ,
69
+ background_color : values . backgroundColor ,
66
70
}
67
- if ( values . enabled !== undefined ) {
68
- newBanner . enabled = values . enabled
71
+ if ( values . preview ) {
72
+ serviceBannerSend ( {
73
+ type : "SET_PREVIEW_BANNER" ,
74
+ serviceBanner : newBanner ,
75
+ } )
76
+ return
69
77
}
70
- if ( values . backgroundColor !== undefined ) {
71
- newBanner . background_color = values . backgroundColor
72
- }
73
-
74
78
serviceBannerSend ( {
75
- type : "SET_PREVIEW " ,
79
+ type : "SET_BANNER " ,
76
80
serviceBanner : newBanner ,
77
81
} )
78
82
}
@@ -81,6 +85,7 @@ const ServiceBannerSettingsPage: React.FC = () => {
81
85
message : serviceBanner . message ,
82
86
enabled : serviceBanner . enabled ,
83
87
backgroundColor : serviceBanner . background_color ,
88
+ preview : false ,
84
89
}
85
90
86
91
const form : FormikContextType < ServiceBannerFormValues > =
@@ -91,6 +96,12 @@ const ServiceBannerSettingsPage: React.FC = () => {
91
96
} )
92
97
const getFieldHelpers = getFormHelpers < ServiceBannerFormValues > ( form )
93
98
99
+ const [ backgroundColor , setBackgroundColor ] = useState (
100
+ form . values . backgroundColor ,
101
+ )
102
+
103
+ const theme = useTheme ( )
104
+
94
105
return (
95
106
< >
96
107
< Helmet >
@@ -107,16 +118,12 @@ const ServiceBannerSettingsPage: React.FC = () => {
107
118
< EnterpriseBadge />
108
119
</ Badges >
109
120
110
- < form
111
- className = { styles . form }
112
- onSubmit = { form . handleSubmit }
113
- // onChange={form.handleSubmit}
114
- >
121
+ < form className = { styles . form } >
115
122
< Stack >
116
123
< FormControlLabel
117
- value = "enable "
124
+ value = "enabled "
118
125
control = { < Switch { ...getFieldHelpers ( "enabled" ) } color = "primary" /> }
119
- label = "Enable "
126
+ label = "Enabled "
120
127
/>
121
128
< TextField
122
129
fullWidth
@@ -125,15 +132,56 @@ const ServiceBannerSettingsPage: React.FC = () => {
125
132
variant = "outlined"
126
133
/>
127
134
128
- < LoadingButton
129
- loading = { false }
130
- // aria-disabled={!editable}
131
- // disabled={!editable}
132
- type = "submit"
133
- variant = "contained"
134
- >
135
- { Language . updateBanner }
136
- </ LoadingButton >
135
+ < Stack >
136
+ < h3 > Background Color</ h3 >
137
+ < BlockPicker
138
+ color = { backgroundColor }
139
+ onChange = { ( color ) => {
140
+ setBackgroundColor ( color . hex )
141
+ form . setFieldValue ( "backgroundColor" , color . hex )
142
+ } }
143
+ triangle = "hide"
144
+ styles = { {
145
+ default : {
146
+ input : {
147
+ color : "white" ,
148
+ backgroundColor : theme . palette . background . default ,
149
+ } ,
150
+ body : {
151
+ backgroundColor : "black" ,
152
+ color : "white" ,
153
+ } ,
154
+ } ,
155
+ } }
156
+ />
157
+ </ Stack >
158
+
159
+ < Stack direction = "row" >
160
+ < LoadingButton
161
+ loading = { false }
162
+ // aria-disabled={!editable}
163
+ // disabled={!editable}
164
+ onClick = { ( ) => {
165
+ form . setFieldValue ( "preview" , true )
166
+ onSubmit ( form . values )
167
+ } }
168
+ variant = "contained"
169
+ >
170
+ { Language . previewBanner }
171
+ </ LoadingButton >
172
+ < LoadingButton
173
+ loading = { false }
174
+ // aria-disabled={!editable}
175
+ // disabled={!editable}
176
+ onClick = { ( ) => {
177
+ form . setFieldValue ( "preview" , false )
178
+ onSubmit ( form . values )
179
+ } }
180
+ variant = "contained"
181
+ >
182
+ { Language . updateBanner }
183
+ </ LoadingButton >
184
+ </ Stack >
137
185
</ Stack >
138
186
</ form >
139
187
</ >
0 commit comments