@@ -24,6 +24,7 @@ import { NestedEditAccessCodeForm } from 'lib/seam/components/EditAccessCodeForm
24
24
import { IconButton } from 'lib/ui/IconButton.js'
25
25
import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
26
26
import { LoadingToast } from 'lib/ui/LoadingToast/LoadingToast.js'
27
+ import { Snackbar } from 'lib/ui/Snackbar/Snackbar.js'
27
28
import { EmptyPlaceholder } from 'lib/ui/Table/EmptyPlaceholder.js'
28
29
import { TableBody } from 'lib/ui/Table/TableBody.js'
29
30
import { TableHeader } from 'lib/ui/Table/TableHeader.js'
@@ -130,6 +131,13 @@ export function AccessCodeTable({
130
131
[ setSelectedEditAccessCodeId ]
131
132
)
132
133
134
+ const [ accessCodeResult , setAccessCodeResult ] = useState <
135
+ 'created' | 'updated' | null
136
+ > ( null )
137
+
138
+ const accessCodeResultMessage =
139
+ accessCodeResult === 'created' ? t . accesCodeCreated : t . accesCodeUpdated
140
+
133
141
if ( selectedEditAccessCodeId != null ) {
134
142
return (
135
143
< NestedEditAccessCodeForm
@@ -141,27 +149,41 @@ export function AccessCodeTable({
141
149
onBack = { ( ) => {
142
150
setSelectedEditAccessCodeId ( null )
143
151
} }
152
+ onSuccess = { ( ) => {
153
+ setAccessCodeResult ( 'updated' )
154
+ } }
144
155
className = { className }
145
156
/>
146
157
)
147
158
}
148
159
149
160
if ( selectedViewAccessCodeId != null ) {
150
161
return (
151
- < NestedAccessCodeDetails
152
- accessCodeId = { selectedViewAccessCodeId }
153
- onEdit = { ( ) => {
154
- setSelectedEditAccessCodeId ( selectedViewAccessCodeId )
155
- } }
156
- disableLockUnlock = { disableLockUnlock }
157
- disableCreateAccessCode = { disableCreateAccessCode }
158
- disableEditAccessCode = { disableEditAccessCode }
159
- disableDeleteAccessCode = { disableDeleteAccessCode }
160
- onBack = { ( ) => {
161
- setSelectedViewAccessCodeId ( null )
162
- } }
163
- className = { className }
164
- />
162
+ < >
163
+ < Snackbar
164
+ variant = 'success'
165
+ message = { accessCodeResultMessage }
166
+ visible = { accessCodeResult != null }
167
+ autoDismiss
168
+ onClose = { ( ) => {
169
+ setAccessCodeResult ( null )
170
+ } }
171
+ />
172
+ < NestedAccessCodeDetails
173
+ accessCodeId = { selectedViewAccessCodeId }
174
+ onEdit = { ( ) => {
175
+ setSelectedEditAccessCodeId ( selectedViewAccessCodeId )
176
+ } }
177
+ disableLockUnlock = { disableLockUnlock }
178
+ disableCreateAccessCode = { disableCreateAccessCode }
179
+ disableEditAccessCode = { disableEditAccessCode }
180
+ disableDeleteAccessCode = { disableDeleteAccessCode }
181
+ onBack = { ( ) => {
182
+ setSelectedViewAccessCodeId ( null )
183
+ } }
184
+ className = { className }
185
+ />
186
+ </ >
165
187
)
166
188
}
167
189
@@ -175,6 +197,9 @@ export function AccessCodeTable({
175
197
disableDeleteAccessCode = { disableDeleteAccessCode }
176
198
onBack = { toggleAddAccessCodeForm }
177
199
className = { className }
200
+ onSuccess = { ( ) => {
201
+ setAccessCodeResult ( 'created' )
202
+ } }
178
203
/>
179
204
)
180
205
}
@@ -184,52 +209,63 @@ export function AccessCodeTable({
184
209
}
185
210
186
211
return (
187
- < div className = { classNames ( 'seam-table' , className ) } >
188
- < ContentHeader onBack = { onBack } />
189
- < TableHeader >
190
- < div className = 'seam-left' >
191
- { title != null ? (
192
- < TableTitle >
193
- { heading ?? title ?? t . accessCodes } { ' ' }
194
- < Caption > ({ filteredAccessCodes . length } )</ Caption >
195
- </ TableTitle >
196
- ) : (
197
- < div className = 'seam-fragment' />
198
- ) }
199
- { ! disableCreateAccessCode && (
200
- < IconButton
201
- onClick = { toggleAddAccessCodeForm }
202
- className = 'seam-add-button'
203
- >
204
- < AddIcon />
205
- </ IconButton >
212
+ < >
213
+ < Snackbar
214
+ variant = 'success'
215
+ message = { accessCodeResultMessage }
216
+ visible = { accessCodeResult != null }
217
+ autoDismiss
218
+ onClose = { ( ) => {
219
+ setAccessCodeResult ( null )
220
+ } }
221
+ />
222
+ < div className = { classNames ( 'seam-table' , className ) } >
223
+ < ContentHeader onBack = { onBack } />
224
+ < TableHeader >
225
+ < div className = 'seam-left' >
226
+ { title != null ? (
227
+ < TableTitle >
228
+ { heading ?? title ?? t . accessCodes } { ' ' }
229
+ < Caption > ({ filteredAccessCodes . length } )</ Caption >
230
+ </ TableTitle >
231
+ ) : (
232
+ < div className = 'seam-fragment' />
233
+ ) }
234
+ { ! disableCreateAccessCode && (
235
+ < IconButton
236
+ onClick = { toggleAddAccessCodeForm }
237
+ className = 'seam-add-button'
238
+ >
239
+ < AddIcon />
240
+ </ IconButton >
241
+ ) }
242
+ </ div >
243
+ < div className = 'seam-table-header-loading-wrap' >
244
+ < LoadingToast
245
+ isLoading = { isInitialLoading }
246
+ label = { t . loading }
247
+ top = { - 20 }
248
+ />
249
+ </ div >
250
+ { ! disableSearch && (
251
+ < SearchTextField
252
+ value = { searchInputValue }
253
+ onChange = { setSearchInputValue }
254
+ disabled = { ( accessCodes ?. length ?? 0 ) === 0 }
255
+ />
206
256
) }
207
- </ div >
208
- < div className = 'seam-table-header-loading-wrap' >
209
- < LoadingToast
210
- isLoading = { isInitialLoading }
211
- label = { t . loading }
212
- top = { - 20 }
257
+ </ TableHeader >
258
+ < TableBody >
259
+ < Content
260
+ accessCodes = { filteredAccessCodes }
261
+ onAccessCodeClick = { handleAccessCodeClick }
262
+ onAccessCodeEdit = { handleAccessCodeEdit }
263
+ disableEditAccessCode = { disableEditAccessCode }
264
+ disableDeleteAccessCode = { disableDeleteAccessCode }
213
265
/>
214
- </ div >
215
- { ! disableSearch && (
216
- < SearchTextField
217
- value = { searchInputValue }
218
- onChange = { setSearchInputValue }
219
- disabled = { ( accessCodes ?. length ?? 0 ) === 0 }
220
- />
221
- ) }
222
- </ TableHeader >
223
- < TableBody >
224
- < Content
225
- accessCodes = { filteredAccessCodes }
226
- onAccessCodeClick = { handleAccessCodeClick }
227
- onAccessCodeEdit = { handleAccessCodeEdit }
228
- disableEditAccessCode = { disableEditAccessCode }
229
- disableDeleteAccessCode = { disableDeleteAccessCode }
230
- />
231
- </ TableBody >
232
- </ div >
266
+ </ TableBody >
267
+ </ div >
268
+ </ >
233
269
)
234
270
}
235
271
@@ -296,4 +332,6 @@ const t = {
296
332
accessCodes : 'Access Codes' ,
297
333
noAccessCodesMessage : 'Sorry, no access codes were found' ,
298
334
loading : 'Loading access codes' ,
335
+ accesCodeUpdated : 'Access code updated' ,
336
+ accesCodeCreated : 'Access code created' ,
299
337
}
0 commit comments