diff --git a/griddle-react/.gitignore b/griddle-react/.gitignore index e920c16718..073b01eae5 100644 --- a/griddle-react/.gitignore +++ b/griddle-react/.gitignore @@ -1,3 +1,8 @@ +*.iml +.idea +/target +/typings + # Logs logs *.log diff --git a/griddle-react/README.md b/griddle-react/README.md index 5effe58bf5..a4d789c3ea 100644 --- a/griddle-react/README.md +++ b/griddle-react/README.md @@ -1,2 +1,9 @@ # griddle-react-typings Type definition for http://griddlegriddle.github.io/ + +Depends upon the [ambient react type definitions](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/c2c22c3b953fe9730d4802022d5e0d18d083909e/react) (github:DefinitelyTyped/DefinitelyTyped/react/react.d.ts#f407264835650f5f38d4bb2c515a79e7a835916b) +which you can install with + +``` +typings install react --ambient +``` \ No newline at end of file diff --git a/griddle-react/griddle-react.d.ts b/griddle-react/griddle-react.d.ts new file mode 100644 index 0000000000..f590635746 --- /dev/null +++ b/griddle-react/griddle-react.d.ts @@ -0,0 +1,101 @@ +declare module "griddle-react" { + import * as React from 'react'; + + //TODO: Find good way to export this, and set it as first type argument on ColumnMetaData.customComponent + export interface CustomColumnComponentProps { + data: any, + rowData: T, + metaData: ColumnMetaData + } + + interface ColumnMetaData { + columnName: string; + order?: number; + locked?: boolean; + cssClassName?: string; + displayName?: string; + customComponent?: any; //TODO: should be React.Component, but getting weird error. + } + + interface BodyCssClassNameFunction { + (rowData:T): string; + } + + interface RowMetaData { + bodyCssClassName?: BodyCssClassNameFunction | string; + } + + interface GriddleProps { + columns?: string[]; + columnMetadata?: ColumnMetaData[]; + rowMetadata?: RowMetaData; + results?: T; + resultsPerPage?: number; + initialSort?: string; + initialSortAscending?: boolean; + gridClassName?: string; + tableClassName?: string; + customFormatClassName?: string; + settingsText?: string; + filterPlaceholderText?: string; + nextText?: string; + previousText?: string; + maxRowsText?: string; + enableCustomFormatText?: string; + childrenColumnName?: string; + metadataColumns?: string[]; + showFilter?: boolean; + showSettings?: boolean; + useCustomRowComponent?: boolean; + useCustomGridComponent?: boolean; + useCustomPagerComponent?: boolean; + useGriddleStyles?: boolean; + customRowComponent?: any; //TODO: should be React.Component, but getting weird error. + customGridComponent?: any; //TODO: should be React.Component, but getting weird error. + customPagerComponent?: any; //TODO: should be React.Component, but getting weird error. + enableToggleCustom?: boolean; + noDataMessage?: string; + noDataClassName?: string; + customNoDataComponent?: any; //TODO: should be React.Component, but getting weird error. + showTableHeading?: boolean; + showPager?: boolean; + useFixedHeader?: boolean; + useExternal?: boolean; + externalSetPage?(index: number): void; + externalChangeSort?(sort: string, sortAscending: boolean): void; + externalSetFilter?(filter: string): void; + externalSetPageSize?(size: number): void; + externalMaxPage?: number; + externalCurrentPage?: number; + externalSortColumn?: string; + externalSortAscending?: boolean; + externalLoadingComponent?: any; //TODO: should be React.Component, but getting weird error. + externalIsLoading?: boolean; + enableInfiniteScroll?: boolean; + bodyHeight?: number; + paddingHeight?: number; + rowHeight?: number; + infiniteScrollLoadTreshold?: number; + useFixedLayout?: boolean; + isSubGriddle?: boolean; + enableSort?: boolean; + sortAscendingClassName?: string; + sortDescendingClassName?: string; + parentRowCollapsedClassName?: string; + parentRowExpandedClassName?: string; + settingsToggleClassName?: string; + nextClassName?: string; + previousClassName?: string; + sortAscendingComponent?: string | React.ReactElement; + sortDescendingComponent?: string | React.ReactElement; + sortDefaultComponent?: string | React.ReactElement; + parentRowCollapsedComponent?: string | React.ReactElement; + parentRowExpandedComponent?: string | React.ReactElement; + settingsIconComponent?: string | React.ReactElement; + nextIconComponent?: string | React.ReactElement; + previousIconComponent?: string | React.ReactElement; + onRowClick?(): void; + } + + export default class Griddle extends React.Component, any> {} +} \ No newline at end of file diff --git a/griddle-react/tsconfig.json b/griddle-react/tsconfig.json new file mode 100644 index 0000000000..bb0f92d33a --- /dev/null +++ b/griddle-react/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "module": "commonjs", + "outDir": "./target", + "jsx": "react", + "target": "es6" + }, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/griddle-react/typings.json b/griddle-react/typings.json new file mode 100644 index 0000000000..83f0e8e61c --- /dev/null +++ b/griddle-react/typings.json @@ -0,0 +1,8 @@ +{ + "name": "griddle-react", + "main": "griddle-react.d.ts", + "dependencies": {}, + "ambientDependencies": { + "react": "github:DefinitelyTyped/DefinitelyTyped/react/react.d.ts#f407264835650f5f38d4bb2c515a79e7a835916b" + } +}