Merge pull request #6738 from RyanCavanaugh/reactSFC

Make HTMLProps generic; add Intrinsic Attribute types
This commit is contained in:
Ryan Cavanaugh
2015-12-01 14:51:55 -08:00
3 changed files with 127 additions and 118 deletions
+1 -1
View File
@@ -206,7 +206,7 @@ var divStyle: React.CSSProperties = { // CSSProperties
flex: "1 1 main-size",
backgroundImage: "url('hello.png')"
};
var htmlAttr: React.HTMLProps = {
var htmlAttr: React.HTMLProps<any> = {
key: 36,
ref: "htmlComponent",
children: children,
+1 -1
View File
@@ -282,7 +282,7 @@ var divStyle: React.CSSProperties = { // CSSProperties
flex: "1 1 main-size",
backgroundImage: "url('hello.png')"
};
var htmlAttr: React.HTMLProps = {
var htmlAttr: React.HTMLProps<HTMLElement> = {
key: 36,
ref: "htmlComponent",
children: children,
+125 -116
View File
@@ -27,7 +27,7 @@ declare namespace __React {
ref: string | ((element: Element) => any);
}
interface ReactHTMLElement extends DOMElement<HTMLProps> {
interface ReactHTMLElement extends DOMElement<HTMLProps<HTMLElement>> {
ref: string | ((element: HTMLElement) => any);
}
@@ -51,7 +51,7 @@ declare namespace __React {
(props?: P, ...children: ReactNode[]): DOMElement<P>;
}
type HTMLFactory = DOMFactory<HTMLProps>;
type HTMLFactory = DOMFactory<HTMLProps<HTMLElement>>;
type SVGFactory = DOMFactory<SVGProps>;
//
@@ -323,7 +323,7 @@ declare namespace __React {
ref?: string | ((component: T) => any);
}
interface HTMLProps extends HTMLAttributes, Props<HTMLElement> {
interface HTMLProps<T> extends HTMLAttributes, Props<T> {
}
interface SVGProps extends SVGAttributes, Props<SVGElement> {
@@ -2116,122 +2116,132 @@ declare namespace JSX {
}
interface ElementAttributesProperty { props: {}; }
interface IntrinsicAttributes {
key?: string | number;
}
interface IntrinsicClassAttributes<T> {
ref?: string | ((classInstance: T) => void);
}
interface IntrinsicElements {
// HTML
a: React.HTMLProps;
abbr: React.HTMLProps;
address: React.HTMLProps;
area: React.HTMLProps;
article: React.HTMLProps;
aside: React.HTMLProps;
audio: React.HTMLProps;
b: React.HTMLProps;
base: React.HTMLProps;
bdi: React.HTMLProps;
bdo: React.HTMLProps;
big: React.HTMLProps;
blockquote: React.HTMLProps;
body: React.HTMLProps;
br: React.HTMLProps;
button: React.HTMLProps;
canvas: React.HTMLProps;
caption: React.HTMLProps;
cite: React.HTMLProps;
code: React.HTMLProps;
col: React.HTMLProps;
colgroup: React.HTMLProps;
data: React.HTMLProps;
datalist: React.HTMLProps;
dd: React.HTMLProps;
del: React.HTMLProps;
details: React.HTMLProps;
dfn: React.HTMLProps;
dialog: React.HTMLProps;
div: React.HTMLProps;
dl: React.HTMLProps;
dt: React.HTMLProps;
em: React.HTMLProps;
embed: React.HTMLProps;
fieldset: React.HTMLProps;
figcaption: React.HTMLProps;
figure: React.HTMLProps;
footer: React.HTMLProps;
form: React.HTMLProps;
h1: React.HTMLProps;
h2: React.HTMLProps;
h3: React.HTMLProps;
h4: React.HTMLProps;
h5: React.HTMLProps;
h6: React.HTMLProps;
head: React.HTMLProps;
header: React.HTMLProps;
hr: React.HTMLProps;
html: React.HTMLProps;
i: React.HTMLProps;
iframe: React.HTMLProps;
img: React.HTMLProps;
input: React.HTMLProps;
ins: React.HTMLProps;
kbd: React.HTMLProps;
keygen: React.HTMLProps;
label: React.HTMLProps;
legend: React.HTMLProps;
li: React.HTMLProps;
link: React.HTMLProps;
main: React.HTMLProps;
map: React.HTMLProps;
mark: React.HTMLProps;
menu: React.HTMLProps;
menuitem: React.HTMLProps;
meta: React.HTMLProps;
meter: React.HTMLProps;
nav: React.HTMLProps;
noscript: React.HTMLProps;
object: React.HTMLProps;
ol: React.HTMLProps;
optgroup: React.HTMLProps;
option: React.HTMLProps;
output: React.HTMLProps;
p: React.HTMLProps;
param: React.HTMLProps;
picture: React.HTMLProps;
pre: React.HTMLProps;
progress: React.HTMLProps;
q: React.HTMLProps;
rp: React.HTMLProps;
rt: React.HTMLProps;
ruby: React.HTMLProps;
s: React.HTMLProps;
samp: React.HTMLProps;
script: React.HTMLProps;
section: React.HTMLProps;
select: React.HTMLProps;
small: React.HTMLProps;
source: React.HTMLProps;
span: React.HTMLProps;
strong: React.HTMLProps;
style: React.HTMLProps;
sub: React.HTMLProps;
summary: React.HTMLProps;
sup: React.HTMLProps;
table: React.HTMLProps;
tbody: React.HTMLProps;
td: React.HTMLProps;
textarea: React.HTMLProps;
tfoot: React.HTMLProps;
th: React.HTMLProps;
thead: React.HTMLProps;
time: React.HTMLProps;
title: React.HTMLProps;
tr: React.HTMLProps;
track: React.HTMLProps;
u: React.HTMLProps;
ul: React.HTMLProps;
"var": React.HTMLProps;
video: React.HTMLProps;
wbr: React.HTMLProps;
a: React.HTMLProps<HTMLAnchorElement>;
abbr: React.HTMLProps<HTMLElement>;
address: React.HTMLProps<HTMLElement>;
area: React.HTMLProps<HTMLAreaElement>;
article: React.HTMLProps<HTMLElement>;
aside: React.HTMLProps<HTMLElement>;
audio: React.HTMLProps<HTMLAudioElement>;
b: React.HTMLProps<HTMLElement>;
base: React.HTMLProps<HTMLBaseElement>;
bdi: React.HTMLProps<HTMLElement>;
bdo: React.HTMLProps<HTMLElement>;
big: React.HTMLProps<HTMLElement>;
blockquote: React.HTMLProps<HTMLElement>;
body: React.HTMLProps<HTMLBodyElement>;
br: React.HTMLProps<HTMLBRElement>;
button: React.HTMLProps<HTMLButtonElement>;
canvas: React.HTMLProps<HTMLCanvasElement>;
caption: React.HTMLProps<HTMLElement>;
cite: React.HTMLProps<HTMLElement>;
code: React.HTMLProps<HTMLElement>;
col: React.HTMLProps<HTMLTableColElement>;
colgroup: React.HTMLProps<HTMLTableColElement>;
data: React.HTMLProps<HTMLElement>;
datalist: React.HTMLProps<HTMLDataListElement>;
dd: React.HTMLProps<HTMLElement>;
del: React.HTMLProps<HTMLElement>;
details: React.HTMLProps<HTMLElement>;
dfn: React.HTMLProps<HTMLElement>;
dialog: React.HTMLProps<HTMLElement>;
div: React.HTMLProps<HTMLDivElement>;
dl: React.HTMLProps<HTMLDListElement>;
dt: React.HTMLProps<HTMLElement>;
em: React.HTMLProps<HTMLElement>;
embed: React.HTMLProps<HTMLEmbedElement>;
fieldset: React.HTMLProps<HTMLFieldSetElement>;
figcaption: React.HTMLProps<HTMLElement>;
figure: React.HTMLProps<HTMLElement>;
footer: React.HTMLProps<HTMLElement>;
form: React.HTMLProps<HTMLFormElement>;
h1: React.HTMLProps<HTMLHeadingElement>;
h2: React.HTMLProps<HTMLHeadingElement>;
h3: React.HTMLProps<HTMLHeadingElement>;
h4: React.HTMLProps<HTMLHeadingElement>;
h5: React.HTMLProps<HTMLHeadingElement>;
h6: React.HTMLProps<HTMLHeadingElement>;
head: React.HTMLProps<HTMLHeadElement>;
header: React.HTMLProps<HTMLElement>;
hr: React.HTMLProps<HTMLHRElement>;
html: React.HTMLProps<HTMLHtmlElement>;
i: React.HTMLProps<HTMLElement>;
iframe: React.HTMLProps<HTMLIFrameElement>;
img: React.HTMLProps<HTMLImageElement>;
input: React.HTMLProps<HTMLInputElement>;
ins: React.HTMLProps<HTMLModElement>;
kbd: React.HTMLProps<HTMLElement>;
keygen: React.HTMLProps<HTMLElement>;
label: React.HTMLProps<HTMLLabelElement>;
legend: React.HTMLProps<HTMLLegendElement>;
li: React.HTMLProps<HTMLLIElement>;
link: React.HTMLProps<HTMLLinkElement>;
main: React.HTMLProps<HTMLElement>;
map: React.HTMLProps<HTMLMapElement>;
mark: React.HTMLProps<HTMLElement>;
menu: React.HTMLProps<HTMLElement>;
menuitem: React.HTMLProps<HTMLElement>;
meta: React.HTMLProps<HTMLMetaElement>;
meter: React.HTMLProps<HTMLElement>;
nav: React.HTMLProps<HTMLElement>;
noscript: React.HTMLProps<HTMLElement>;
object: React.HTMLProps<HTMLObjectElement>;
ol: React.HTMLProps<HTMLOListElement>;
optgroup: React.HTMLProps<HTMLOptGroupElement>;
option: React.HTMLProps<HTMLOptionElement>;
output: React.HTMLProps<HTMLElement>;
p: React.HTMLProps<HTMLParagraphElement>;
param: React.HTMLProps<HTMLParamElement>;
picture: React.HTMLProps<HTMLElement>;
pre: React.HTMLProps<HTMLPreElement>;
progress: React.HTMLProps<HTMLProgressElement>;
q: React.HTMLProps<HTMLQuoteElement>;
rp: React.HTMLProps<HTMLElement>;
rt: React.HTMLProps<HTMLElement>;
ruby: React.HTMLProps<HTMLElement>;
s: React.HTMLProps<HTMLElement>;
samp: React.HTMLProps<HTMLElement>;
script: React.HTMLProps<HTMLElement>;
section: React.HTMLProps<HTMLElement>;
select: React.HTMLProps<HTMLSelectElement>;
small: React.HTMLProps<HTMLElement>;
source: React.HTMLProps<HTMLSourceElement>;
span: React.HTMLProps<HTMLSpanElement>;
strong: React.HTMLProps<HTMLElement>;
style: React.HTMLProps<HTMLStyleElement>;
sub: React.HTMLProps<HTMLElement>;
summary: React.HTMLProps<HTMLElement>;
sup: React.HTMLProps<HTMLElement>;
table: React.HTMLProps<HTMLTableElement>;
tbody: React.HTMLProps<HTMLTableSectionElement>;
td: React.HTMLProps<HTMLTableDataCellElement>;
textarea: React.HTMLProps<HTMLTextAreaElement>;
tfoot: React.HTMLProps<HTMLTableSectionElement>;
th: React.HTMLProps<HTMLTableHeaderCellElement>;
thead: React.HTMLProps<HTMLTableSectionElement>;
time: React.HTMLProps<HTMLElement>;
title: React.HTMLProps<HTMLTitleElement>;
tr: React.HTMLProps<HTMLTableRowElement>;
track: React.HTMLProps<HTMLTrackElement>;
u: React.HTMLProps<HTMLElement>;
ul: React.HTMLProps<HTMLUListElement>;
"var": React.HTMLProps<HTMLElement>;
video: React.HTMLProps<HTMLVideoElement>;
wbr: React.HTMLProps<HTMLElement>;
// SVG
svg: React.SVGProps;
circle: React.SVGProps;
defs: React.SVGProps;
ellipse: React.SVGProps;
@@ -2247,7 +2257,6 @@ declare namespace JSX {
radialGradient: React.SVGProps;
rect: React.SVGProps;
stop: React.SVGProps;
svg: React.SVGProps;
text: React.SVGProps;
tspan: React.SVGProps;
}