From 469a2877674f08436b436e1c294b7c5fb5e0323e Mon Sep 17 00:00:00 2001 From: Dennis Siqueira Date: Thu, 23 Mar 2023 09:52:02 -0300 Subject: [PATCH] feat: typescript migration (#833) * feat: initial commit for typescript migration * fix: tsconfig with next * feat: migrate footer to ts * feat: migrate components to ts * fix: prettier error * fix: prettier error * fix: all lint errors * fix: remove unused vscode settings * fix: migrate and improve widget.js * feat: migrate all helpers to ts * fix: types * feat: migrate api to ts * feat: migrate page files * Fix for tz Page component is not being set correctly when the component is rendered * Add type check to ensure that router.query.tz is a string --------- Co-authored-by: Alexis Sgarbossa --- component/footer.js | 59 ------------- component/footer.tsx | 66 +++++++++++++++ component/head.js | 43 ---------- component/head.tsx | 45 ++++++++++ component/{timezone.js => timezone.tsx} | 27 +++--- component/widget.js | 75 ----------------- component/widget.tsx | 67 +++++++++++++++ helpers/{constans.js => constans.ts} | 14 ++-- helpers/{reasons.js => reasons.ts} | 2 +- helpers/{time.js => time.ts} | 59 ++++++------- helpers/{timezones.js => timezones.ts} | 0 next-env.d.ts | 5 ++ package-lock.json | 87 +++++++++++++++++-- package.json | 5 +- pages/{_app.js => _app.tsx} | 5 +- pages/_document.js | 26 ------ pages/_document.tsx | 17 ++++ pages/api/{index.js => index.ts} | 16 +++- pages/api/slack/{index.js => index.ts} | 20 ++++- pages/index.js | 86 ------------------- pages/index.tsx | 68 +++++++++++++++ tsconfig.json | 106 ++++++++++++++++++++++++ 22 files changed, 549 insertions(+), 349 deletions(-) delete mode 100644 component/footer.js create mode 100644 component/footer.tsx delete mode 100644 component/head.js create mode 100644 component/head.tsx rename component/{timezone.js => timezone.tsx} (53%) delete mode 100644 component/widget.js create mode 100644 component/widget.tsx rename helpers/{constans.js => constans.ts} (78%) rename helpers/{reasons.js => reasons.ts} (99%) rename helpers/{time.js => time.ts} (72%) rename helpers/{timezones.js => timezones.ts} (100%) create mode 100644 next-env.d.ts rename pages/{_app.js => _app.tsx} (63%) delete mode 100644 pages/_document.js create mode 100644 pages/_document.tsx rename pages/api/{index.js => index.ts} (62%) rename pages/api/slack/{index.js => index.ts} (64%) delete mode 100644 pages/index.js create mode 100644 pages/index.tsx create mode 100644 tsconfig.json diff --git a/component/footer.js b/component/footer.js deleted file mode 100644 index 3f564c0a..00000000 --- a/component/footer.js +++ /dev/null @@ -1,59 +0,0 @@ -import React from 'react' -import Timezone from './timezone' - -const Footer = (props) => ( - <> - - - - -) - -export default Footer diff --git a/component/footer.tsx b/component/footer.tsx new file mode 100644 index 00000000..5c92fb0c --- /dev/null +++ b/component/footer.tsx @@ -0,0 +1,66 @@ +import React from 'react' +import Timezone from './timezone' + +interface IFooter { + changeTimezone: (timezone: string) => void + timezone: string +} + +const Footer = (props: IFooter) => { + return ( + <> + + + + + ) +} + +export default Footer diff --git a/component/head.js b/component/head.js deleted file mode 100644 index 8cc2f506..00000000 --- a/component/head.js +++ /dev/null @@ -1,43 +0,0 @@ -import React from 'react' - -const Head = () => ( - <> - - - - - - - - - - - - - - - - - - - - -) - -export default Head diff --git a/component/head.tsx b/component/head.tsx new file mode 100644 index 00000000..def8552c --- /dev/null +++ b/component/head.tsx @@ -0,0 +1,45 @@ +import React from 'react' + +const Head = () => { + return ( + <> + + + + + + + + + + + + + + + + + + + + + ) +} + +export default Head diff --git a/component/timezone.js b/component/timezone.tsx similarity index 53% rename from component/timezone.js rename to component/timezone.tsx index 1b3eefd6..c3150969 100644 --- a/component/timezone.js +++ b/component/timezone.tsx @@ -1,20 +1,25 @@ import React from 'react' import names from '../helpers/timezones' -export default class Timezone extends React.Component { +interface ITimezone { + onChange: (value: string) => void + timezone: string +} + +const Timezone = (props: ITimezone) => { /** * On change timezone propagate new timezone value * @return void */ - onChange = (event) => { - this.props.onChange(event.target.value) + const onChange = (event: React.ChangeEvent) => { + props.onChange(event.target.value) } /** * Build options list * @return JSX.Element[] */ - options = () => { + const options = () => { return names.map((name, index) => { return (