From 8e43f077479b5d9d589dc6852904a65a93fcc113 Mon Sep 17 00:00:00 2001 From: "Sam A. Horvath-Hunt" Date: Wed, 12 Sep 2018 16:35:50 +0100 Subject: [PATCH 1/2] Add initial Dayzed types --- types/dayzed/dayzed-tests.tsx | 47 +++++++++++++++++++++++++++++++ types/dayzed/index.d.ts | 52 +++++++++++++++++++++++++++++++++++ types/dayzed/tsconfig.json | 25 +++++++++++++++++ types/dayzed/tslint.json | 1 + 4 files changed, 125 insertions(+) create mode 100644 types/dayzed/dayzed-tests.tsx create mode 100644 types/dayzed/index.d.ts create mode 100644 types/dayzed/tsconfig.json create mode 100644 types/dayzed/tslint.json 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..dc754b9ebf --- /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.3 + +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" } From ddb6bc655aaf3a300099a13dee0b2b1c712bfd9d Mon Sep 17 00:00:00 2001 From: "Sam A. Horvath-Hunt" Date: Tue, 18 Sep 2018 10:44:49 +0100 Subject: [PATCH 2/2] Bump minimum supported TS version to match React --- types/dayzed/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/dayzed/index.d.ts b/types/dayzed/index.d.ts index dc754b9ebf..2356778328 100644 --- a/types/dayzed/index.d.ts +++ b/types/dayzed/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/deseretdigital/dayzed // Definitions by: Sam A. Horvath-Hunt // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 import { Component, ReactNode } from 'react';