diff --git a/types/dayzed/dayzed-tests.tsx b/types/dayzed/dayzed-tests.tsx new file mode 100644 index 0000000000..d01d29b7b0 --- /dev/null +++ b/types/dayzed/dayzed-tests.tsx @@ -0,0 +1,47 @@ +import * as React from 'react'; +import { render } from 'react-dom'; +import Dayzed, { DateObj } from 'dayzed'; + +interface State { + selectedDate: Date; + monthOffset: number; +} + +class App extends React.Component<{}, State> { + state = { + selectedDate: new Date(), + monthOffset: 0, + }; + + handleSetDate = (dateObj: DateObj) => { + this.setState({ selectedDate: dateObj.date }); + } + + render() { + return ( + + {({ calendars, ...rp }) => calendars.map(cal => ( +
+ Calendar: + + {cal.weeks.map(week => ( +
+ Week: + + {week.map(day => day && ( + Day({day.date.getDate()}): + ))} +
+ ))} +
+ ))} +
+ ); + } +} + +render(, document.body); diff --git a/types/dayzed/index.d.ts b/types/dayzed/index.d.ts new file mode 100644 index 0000000000..2356778328 --- /dev/null +++ b/types/dayzed/index.d.ts @@ -0,0 +1,52 @@ +// Type definitions for dayzed 2.2 +// Project: https://github.com/deseretdigital/dayzed +// Definitions by: Sam A. Horvath-Hunt +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.8 + +import { Component, ReactNode } from 'react'; + +export interface DateObj { + date: Date; + nextMonth: boolean; + prevMonth: boolean; + selectable: boolean; + selected: boolean; + today: boolean; +} + +interface Calendar { + firstDayOfMonth: Date; + lastDayOfMonth: Date; + month: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11; + weeks: Array>; + year: number; +} + +interface RenderProps { + calendars: Calendar[]; + getBackProps: (data: { calendars: Calendar[]; offset?: number; }) => Record; + getForwardProps: (data: { calendars: Calendar[]; offset?: number; }) => Record; + getDateProps: (data: { dateObj: DateObj; }) => Record; +} + +type RenderFn = (renderProps: RenderProps) => ReactNode; + +interface Props { + date?: Date; + maxDate?: Date; + minDate?: Date; + monthsToDisplay?: number; + firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6; + showOutsideDays?: boolean; + selected?: Date | Date[]; + children?: RenderFn; + render?: RenderFn; + offset?: number; + onOffsetChanged?(offset: number): void; + onDateSelected(selectedDate: DateObj): void; +} + +declare class Dayzed extends Component { } + +export default Dayzed; diff --git a/types/dayzed/tsconfig.json b/types/dayzed/tsconfig.json new file mode 100644 index 0000000000..8cce53e6df --- /dev/null +++ b/types/dayzed/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6", + "dom" + ], + "jsx": "react", + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "dayzed-tests.tsx" + ] +} diff --git a/types/dayzed/tslint.json b/types/dayzed/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/dayzed/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }