From 548cdad59c6636bbbd6b0a220c19e706f331406a Mon Sep 17 00:00:00 2001 From: roman Date: Tue, 4 Aug 2026 14:39:38 +0200 Subject: [PATCH] refactor(select): migrate Select from Flow to TypeScript --- src/components/index.ts | 3 + .../select/{Select.js => Select.js.flow} | 2 +- .../{Select.stories.js => Select.stories.tsx} | 1 - src/components/select/Select.tsx | 107 ++++++++++++++++++ .../{Select.test.js => Select.test.tsx} | 21 ++-- ...lect.test.js.snap => Select.test.tsx.snap} | 0 .../select/{index.js => index.js.flow} | 0 src/components/select/index.ts | 2 + .../select/{messages.js => messages.js.flow} | 0 src/components/select/messages.ts | 11 ++ 10 files changed, 134 insertions(+), 13 deletions(-) rename src/components/select/{Select.js => Select.js.flow} (99%) rename src/components/select/{Select.stories.js => Select.stories.tsx} (99%) create mode 100644 src/components/select/Select.tsx rename src/components/select/__tests__/{Select.test.js => Select.test.tsx} (86%) rename src/components/select/__tests__/__snapshots__/{Select.test.js.snap => Select.test.tsx.snap} (100%) rename src/components/select/{index.js => index.js.flow} (100%) create mode 100644 src/components/select/index.ts rename src/components/select/{messages.js => messages.js.flow} (100%) create mode 100644 src/components/select/messages.ts diff --git a/src/components/index.ts b/src/components/index.ts index 0186feb291..31e7e2ecf6 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -113,6 +113,9 @@ export * from './radio'; export { default as Section } from './section'; export * from './section'; +export { default as Select } from './select'; +export * from './select'; + export { default as TimeInput } from './time-input'; export * from './time-input'; diff --git a/src/components/select/Select.js b/src/components/select/Select.js.flow similarity index 99% rename from src/components/select/Select.js rename to src/components/select/Select.js.flow index 02bd2953c1..91d9f820e1 100644 --- a/src/components/select/Select.js +++ b/src/components/select/Select.js.flow @@ -22,7 +22,7 @@ type Props = { /** Label displayed for the input */ label: React.Node, labelTooltip?: string, - name: string, + name?: string, /** Handler for the change event on the select element */ onChange?: Function, showErrorOutline?: boolean, diff --git a/src/components/select/Select.stories.js b/src/components/select/Select.stories.tsx similarity index 99% rename from src/components/select/Select.stories.js rename to src/components/select/Select.stories.tsx index ec330e7f49..3b9734092a 100644 --- a/src/components/select/Select.stories.js +++ b/src/components/select/Select.stories.tsx @@ -1,4 +1,3 @@ -// @flow import * as React from 'react'; import Select from './Select'; diff --git a/src/components/select/Select.tsx b/src/components/select/Select.tsx new file mode 100644 index 0000000000..431095b5da --- /dev/null +++ b/src/components/select/Select.tsx @@ -0,0 +1,107 @@ +import React, { useState } from 'react'; +import classNames from 'classnames'; +import { FormattedMessage } from 'react-intl'; + +import IconInfo from '../../icons/general/IconInfo'; +import type { Icon } from '../../icons/iconTypes'; + +import { ButtonType } from '../button'; +import Tooltip, { TooltipPosition, TooltipTheme } from '../tooltip'; +import Label from '../label'; +import PlainButton from '../plain-button'; +import messages from './messages'; +import './Select.scss'; + +export interface SelectProps extends React.SelectHTMLAttributes { + /** Input `