-
Notifications
You must be signed in to change notification settings - Fork 201
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(compass-web): make banners dismissible COMPASS-8976 #6764
base: main
Are you sure you want to change the base?
Conversation
{!isReadonlyView && | ||
!enableAtlasSearchIndexes && | ||
localStorage.getItem( | ||
DIMISSED_SEARCH_INDEXES_BANNER_LOCAL_STORAGE_KEY | ||
) !== 'true' && <AtlasIndexesBanner namespace={namespace} />} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know if you tried this locally yet, but this is currently not really working until you somehow trigger a component re-render (like navigating back and forth) because this is not wired to the component state, so when the onClick happens, nothing is triggering the component re-render and the banner stays on the screen. What you'd want is a corresponding UI state here that would be in sync with localStorage. Wrapped in a custom hook just to easier demostrate the encapsulated example:
function useDismissedState(key: string) {
const [dismissed, setDismissed] = useState<'true' | null>(() => localStorage.getItem(key))
const onDismissed = useCallback(() => {
localStorage.setItem(key, 'true')
setDismissed('true')
}, [])
return [dismissed === 'true', onDismissed]
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thans for catching this. I would have noticed this design mistake... eventually haha.
I'm also asking #leafygreen-ui if I can upstream this to their Banner. Your point actually stands though, I was about to send them bad sample code repeating this mistake. I think it's a good feature, I think I have time to get it in leafygreen and get it in our code, and it's somewhat lower effort if I don't have to replicate tests and stuff in two places. I could centralize to our own component which is fine, just a lot of overhead for a glorified wrapper.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have a feeling they'd be reluctant to accept something like this, but it's worth asking! Also I kinda forgot about this, but we do have usePersistedState
hook in compass-components (used exactly once 😆) that basically does what I wrote above already, so you can probably use it too here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, done with usePersistedState
5a9501c
to
c4acb5c
Compare
c4acb5c
to
02578e8
Compare
Description
Checklist
Motivation and Context
Open Questions
Dependents
Types of changes