From 6577100e95240a9112e9756d716a34e5d5cf15bc Mon Sep 17 00:00:00 2001 From: Robert Gabriel Nisipeanu <16354517+robertnisipeanu@users.noreply.github.com> Date: Thu, 20 Feb 2020 02:44:20 +0200 Subject: [PATCH] ['react-swipeable-views-utils'] Add missing 'virtualized' and 'bindKeyboard' functions (#42336) * Added missing 'virtualized' and 'bindKeyboard' functions for react-swipeable-views-utils * Revert "Added missing 'virtualized' and 'bindKeyboard' functions for react-swipeable-views-utils" This reverts commit a04ff4db27a444480d78d34fe2434231fc6dc066. * Added missing 'virtualized' and 'bindKeyboard' functions for react-swipeable-views-utils-tests * Added children prop for `virtualize` * Fixed `Bind element 'number' has an 'any' type` error * Fixed `file should end with a newline` error --- types/react-swipeable-views-utils/index.d.ts | 37 ++++++++++++++++++- .../react-swipeable-views-utils-tests.tsx | 31 +++++++++++++++- 2 files changed, 65 insertions(+), 3 deletions(-) diff --git a/types/react-swipeable-views-utils/index.d.ts b/types/react-swipeable-views-utils/index.d.ts index 3369cf07a4..23c7364568 100644 --- a/types/react-swipeable-views-utils/index.d.ts +++ b/types/react-swipeable-views-utils/index.d.ts @@ -1,12 +1,13 @@ // Type definitions for react-swipeable-views-utils 0.13 // Project: https://github.com/oliviertassinari/react-swipeable-views#react-swipeable-views // Definitions by: Sebastian Silbermann +// Robert Nisipeanu // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 3.0 import * as React from 'react'; import { ConsistentWith, Omit, PropInjector } from '@material-ui/types'; -import { OnChangeIndexCallback, OnSwitchingCallback } from 'react-swipeable-views'; +import { OnChangeIndexCallback, OnSwitchingCallback, OnTransitionEndCallback } from 'react-swipeable-views'; export interface WithAutoPlay { index: number; @@ -22,4 +23,38 @@ export interface WithAutoPlayProps { slideCount?: number; } +export interface WithVirtualize { + index: number; + onChangeIndex: OnChangeIndexCallback; + slideRenderer: (render: SlideRendererCallback) => React.ReactNode; +} +export interface WithVirtualizeProps { + index: number; + onChangeIndex: OnChangeIndexCallback; + onTransitionEnd?: OnTransitionEndCallback; + overscanSlideAfter?: number; + overscanSliedBefore?: number; + slideCount?: number; + children?: React.ReactNode; + slideRenderer: SlideRendererCallback; +} +export interface SlideRenderProps { + index: number; + key: number; +} + +export interface WithBindKeyboard { + index: number; + onChangeIndex: OnChangeIndexCallback; +} +export interface WithBindKeyboardProps { + axis?: "x" | "x-reverse" | "y" | "y-reverse"; + index: number; + onChangeIndex: OnChangeIndexCallback; + slidecount?: number; +} + export const autoPlay: PropInjector; +export type SlideRendererCallback = (render: SlideRenderProps) => React.ReactNode; +export const virtualize: PropInjector; +export const bindKeyboard: PropInjector; diff --git a/types/react-swipeable-views-utils/react-swipeable-views-utils-tests.tsx b/types/react-swipeable-views-utils/react-swipeable-views-utils-tests.tsx index c23404bf10..a9ea3f77ac 100644 --- a/types/react-swipeable-views-utils/react-swipeable-views-utils-tests.tsx +++ b/types/react-swipeable-views-utils/react-swipeable-views-utils-tests.tsx @@ -1,17 +1,44 @@ import * as React from 'react'; import SwipeableViews from 'react-swipeable-views'; -import { autoPlay } from 'react-swipeable-views-utils'; +import { autoPlay, virtualize, bindKeyboard, SlideRenderProps } from 'react-swipeable-views-utils'; const AutoPlaySwipeableViews = autoPlay(SwipeableViews); +const VirtualizeSwipeableViews = virtualize(SwipeableViews); +const BindKeyboardSwipeableViews = bindKeyboard(SwipeableViews); function autoPlayTest() { // $ExpectError ; { + onChangeIndex={(index: number) => { // $ExpectType number index; }} />; } + +function virtualizeTest() { + // $ExpectError + ; + { + index; + }} + slideRenderer={(renderer: SlideRenderProps) => { + return
Slide {renderer.index}
; + }} + />; +} + +function bindKeyboardTest() { + // $ExpectError + ; + { + index; + }} + />; +}