add react-facebook-login (#14077)

* add react-facebook-login

* add allowSyntheticDefaultImports

* use namespace ReactFacebookLogin
This commit is contained in:
Alexandre Paré 2017-01-18 16:00:56 -05:00 committed by Mohamed Hegazy
parent 0471d55976
commit b6e2b3f577
4 changed files with 172 additions and 0 deletions

50
react-facebook-login/index.d.ts vendored Normal file
View File

@ -0,0 +1,50 @@
// Type definitions for react-facebook-login 3.4
// Project: https://github.com/keppelen/react-facebook-login
// Definitions by: Alexandre Paré <https://github.com/apare>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
import * as React from "react";
declare namespace ReactFacebookLogin {
export interface ReactFacebookLoginProps {
appId: string;
callback: (userInfo: ReactFacebookLoginInfo) => void;
autoLoad?: boolean;
buttonStyle?: React.CSSProperties;
containerStyle?: React.CSSProperties;
cookie?: boolean;
cssClass?: string;
disableMobileRedirect?: boolean;
fields?: string;
icon?: string | React.ReactNode;
isDisabled?: boolean;
language?: string;
onClick?: () => void;
reAuthenticate?: boolean;
redirectUri?: string;
scope?: string;
size?: "small" | "medium" | "metro";
textButton?: string;
typeButton?: string;
version?: string;
xfbml?: boolean;
}
export interface ReactFacebookLoginInfo {
id: string;
name: string;
}
export interface ReactFacebookLoginState {
isSdkLoaded?: boolean;
isProcessing?: boolean;
}
}
declare class ReactFacebookLogin extends React.Component<ReactFacebookLogin.ReactFacebookLoginProps, ReactFacebookLogin.ReactFacebookLoginState> {
}
export = ReactFacebookLogin;

View File

@ -0,0 +1,99 @@
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import FacebookLogin from 'react-facebook-login';
import { ReactFacebookLoginInfo } from 'react-facebook-login';
const responseFacebook = (response: ReactFacebookLoginInfo) => {
console.log(response);
};
const componentClicked = () => {
console.log("component clicked");
};
ReactDOM.render(
<FacebookLogin
appId="1088597931155576"
autoLoad={true}
fields="name,email,picture"
onClick={componentClicked}
callback={responseFacebook} />,
document.getElementById('demo')
);
ReactDOM.render(
<FacebookLogin
appId="1088597931155576"
autoLoad={true}
fields="name,email,picture"
callback={responseFacebook}
cssClass="my-facebook-button-class"
icon="fa-facebook"
/>,
document.getElementById('demo')
);
ReactDOM.render(
<FacebookLogin
appId="1088597931155576"
autoLoad={true}
fields="name,email,picture"
callback={responseFacebook}
cssClass="my-facebook-button-class"
icon={<div className="myIcon" />}
/>,
document.getElementById('demo')
);
ReactDOM.render(
<FacebookLogin
appId="1088597931155576"
autoLoad={true}
fields="name,email,picture"
callback={responseFacebook}
cssClass="my-facebook-button-class"
icon={<div className="myIcon" />}
/>,
document.getElementById('demo')
);
class MyComponent extends React.Component<any, any> {
private responseFacebook(response: ReactFacebookLoginInfo) {
console.log(response);
}
render() {
return (
<FacebookLogin
appId="1088597931155576"
autoLoad={true}
fields="name,email,picture"
scope="public_profile,user_friends,user_actions.books"
callback={responseFacebook}
/>
);
}
}
class MyComponent2 extends React.Component<any, any> {
private responseFacebook(response: ReactFacebookLoginInfo) {
console.log(response);
}
render() {
return (
<FacebookLogin
appId="1088597931155576"
autoLoad={true}
fields="name,email,picture"
callback={responseFacebook}
/>
)
}
}

View File

@ -0,0 +1,22 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"jsx": "react",
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"allowSyntheticDefaultImports": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"react-facebook-login-tests.tsx"
]
}

View File

@ -0,0 +1 @@
{ "extends": "../tslint.json" }