55 * -------------------------------------------------------------------------------------------
66 */
77
8- import addonAPI from '@storybook/addons' ;
8+ import React , { useState } from 'react' ;
9+ import { addons , types } from '@storybook/addons' ;
910import { STORIES_CONFIGURED , STORY_MISSING } from '@storybook/core-events' ;
11+ import { AddonPanel } from '@storybook/components' ;
12+ import { useParameter , useChannel } from '@storybook/api' ;
13+ import { Providers , MsalProvider , LoginType , ProviderState } from '../dist/commonjs' ;
1014
11- addonAPI . register ( 'microsoft/graph-toolkit' , storybookAPI => {
15+ const PARAM_KEY = 'signInAddon' ;
16+
17+ const msalProvider = new MsalProvider ( {
18+ clientId : 'a974dfa0-9f57-49b9-95db-90f04ce2111a' ,
19+ loginType : LoginType . Popup
20+ } ) ;
21+
22+ Providers . globalProvider = msalProvider ;
23+
24+ const SignInPanel = ( ) => {
25+ const value = useParameter ( PARAM_KEY , null ) ;
26+
27+ const [ state , setState ] = useState ( Providers . globalProvider . state ) ;
28+
29+ const emit = useChannel ( {
30+ STORY_RENDERED : id => {
31+ console . log ( 'storyRendered' , id ) ;
32+ } ,
33+ 'mgt/getProvider' : params => {
34+ emitProvider ( state ) ;
35+ }
36+ } ) ;
37+
38+ const emitProvider = loginState => {
39+ emit ( 'mgt/setProvider' , { state : loginState } ) ;
40+ } ;
41+
42+ Providers . onProviderUpdated ( ( ) => {
43+ setState ( Providers . globalProvider . state ) ;
44+ emitProvider ( Providers . globalProvider . state ) ;
45+ } ) ;
46+
47+ emitProvider ( state ) ;
48+
49+ return (
50+ < div >
51+ { state === ProviderState . SignedIn
52+ ? 'You are Signed In and all components are using real data'
53+ : 'All components are using mock data - sign in to use real data' }
54+ < mgt-login />
55+ { /* {JSON.stringify(value)} */ }
56+ </ div >
57+ ) ;
58+ } ;
59+
60+ addons . register ( 'microsoft/graph-toolkit' , storybookAPI => {
1261 storybookAPI . on ( STORIES_CONFIGURED , ( kind , story ) => {
1362 if ( storybookAPI . getUrlState ( ) . path === '/story/*' ) {
1463 storybookAPI . selectStory ( 'mgt-login' , 'login' ) ;
@@ -17,4 +66,17 @@ addonAPI.register('microsoft/graph-toolkit', storybookAPI => {
1766 storybookAPI . on ( STORY_MISSING , ( kind , story ) => {
1867 storybookAPI . selectStory ( 'mgt-login' , 'login' ) ;
1968 } ) ;
69+
70+ const render = ( { active, key } ) => (
71+ < AddonPanel active = { active } key = { key } >
72+ < SignInPanel />
73+ </ AddonPanel >
74+ ) ;
75+
76+ addons . add ( 'mgt/sign-in' , {
77+ type : types . PANEL ,
78+ title : 'Sign In' ,
79+ render,
80+ paramKey : PARAM_KEY
81+ } ) ;
2082} ) ;
0 commit comments