File tree Expand file tree Collapse file tree 4 files changed +48
-2
lines changed
storybook/examples/rich-tooltip Expand file tree Collapse file tree 4 files changed +48
-2
lines changed Original file line number Diff line number Diff line change 1+ import type { CloserTarget } from '@modulify/m3-foundation/types/components/popper'
2+ import type { ElementEffect } from '@/hooks/useElementEffect'
3+
4+ import {
5+ addCloserListeners ,
6+ removeCloserListeners ,
7+ } from '@modulify/m3-foundation/lib/popper/closer'
8+
9+ import { useCallback } from 'react'
10+
11+ export type CloserOptions = {
12+ active ?: boolean ;
13+ all ?: boolean ;
14+ }
15+
16+ export const createM3PopperCloserEffect = < T extends Element > ( {
17+ active = true ,
18+ all = false ,
19+ } : CloserOptions = { } ) : ElementEffect < T > => {
20+ return useCallback ( ( el : T ) => {
21+ const _el = el as CloserTarget < T >
22+ _el . m3PopperCloseAll = all
23+ if ( active ) {
24+ addCloserListeners ( _el )
25+ } else {
26+ removeCloserListeners ( _el )
27+ }
28+
29+ return ( ) => removeCloserListeners ( _el )
30+ } , [ active , all ] )
31+ }
Original file line number Diff line number Diff line change @@ -3,4 +3,6 @@ export type {
33 M3PopperProps ,
44} from './types'
55
6+ export { createM3PopperCloserEffect } from './closer'
7+
68export { default as M3Popper } from './M3Popper'
Original file line number Diff line number Diff line change @@ -78,6 +78,11 @@ export {
7878 useM3NavigationAppearance ,
7979} from '@/components/navigation'
8080
81+ export {
82+ M3Popper ,
83+ createM3PopperCloserEffect ,
84+ } from '@/components/popper'
85+
8186export {
8287 M3RichTooltip ,
8388} from '@/components/rich-tooltip'
Original file line number Diff line number Diff line change 77 useState ,
88} from 'react'
99
10+ import { createM3PopperCloserEffect } from '@/components/popper/closer'
11+
1012const DeleteTooltip : FC = ( ) => {
1113 const [ target , setTarget ] = useState < HTMLElement | null > ( null )
1214
@@ -24,11 +26,17 @@ const DeleteTooltip: FC = () => {
2426 This action can not be undone
2527
2628 < M3RichTooltip . Footer >
27- < M3Button appearance = "text" >
29+ < M3Button
30+ appearance = "text"
31+ effects = { [ createM3PopperCloserEffect ( ) ] }
32+ >
2833 Proceed
2934 </ M3Button >
3035
31- < M3Button appearance = "text" >
36+ < M3Button
37+ appearance = "text"
38+ effects = { [ createM3PopperCloserEffect ( ) ] }
39+ >
3240 Cancel
3341 </ M3Button >
3442 </ M3RichTooltip . Footer >
You can’t perform that action at this time.
0 commit comments