From 3bb40d3772d1cde5fb6e5f852d7213ef7d90d062 Mon Sep 17 00:00:00 2001 From: AtsushiM Date: Fri, 24 Jan 2025 07:56:55 +0900 Subject: [PATCH 01/18] =?UTF-8?q?chore:=20decorators=E3=81=AE=E3=83=87?= =?UTF-8?q?=E3=83=95=E3=82=A9=E3=83=AB=E3=83=88=E6=96=87=E5=AD=97=E5=88=97?= =?UTF-8?q?=E3=81=AE=E6=8C=81=E3=81=A1=E6=96=B9=E3=82=92=E8=AA=BF=E6=95=B4?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/Textarea/Textarea.tsx | 42 +++++++++---------- .../Textarea/stories/VRTTextarea.stories.tsx | 24 +++++++++++ 2 files changed, 43 insertions(+), 23 deletions(-) diff --git a/packages/smarthr-ui/src/components/Textarea/Textarea.tsx b/packages/smarthr-ui/src/components/Textarea/Textarea.tsx index d1317aa5e0..37635c15df 100644 --- a/packages/smarthr-ui/src/components/Textarea/Textarea.tsx +++ b/packages/smarthr-ui/src/components/Textarea/Textarea.tsx @@ -38,13 +38,7 @@ type Props = { /** 入力可能な最大文字数。あと何文字入力できるかの表示が追加される。html的なvalidateは発生しない */ maxLetters?: number /** コンポーネント内の文言を変更するための関数を設定 */ - decorators?: DecoratorsType< - | 'beforeMaxLettersCount' - | 'afterMaxLettersCount' - | 'afterMaxLettersCountExceeded' - | 'beforeScreenReaderMaxLettersDescription' - | 'afterScreenReaderMaxLettersDescription' - > + decorators?: DecoratorsType /** * @deprecated placeholder属性は非推奨です。別途ヒント用要素の設置を検討してください。 */ @@ -65,12 +59,13 @@ const getStringLength = (value: string | number | readonly string[]) => { return formattedValue.length - (formattedValue.match(surrogatePairs) || []).length } -const TEXT_BEFORE_MAXLETTERS_COUNT = 'あと' -const TEXT_AFTER_MAXLETTERS_COUNT = '文字' -const TEXT_AFTER_MAXLETTERS_COUNT_EXCEEDED = 'オーバー' - -const SCREEN_READER_BEFORE_MAXLETTERS_DESCRIPTION = '最大' -const SCREEN_READER_AFTER_MAXLETTERS_DESCRIPTION = '文字入力できます' +const DECORATOR_DEFAULT_TEXTS = { + beforeMaxLettersCount: 'あと', + afterMaxLettersCount: '文字', + afterMaxLettersCountExceeded: 'オーバー', + beforeScreenReaderMaxLettersDescription: '最大', + afterScreenReaderMaxLettersDescription: '文字入力できます', +} const textarea = tv({ slots: { @@ -135,22 +130,23 @@ export const Textarea = forwardRef( } = useMemo( () => ({ beforeMaxLettersCount: - decorators?.beforeMaxLettersCount?.(TEXT_BEFORE_MAXLETTERS_COUNT) || - TEXT_BEFORE_MAXLETTERS_COUNT, + decorators?.beforeMaxLettersCount?.(DECORATOR_DEFAULT_TEXTS.beforeMaxLettersCount) || + DECORATOR_DEFAULT_TEXTS.beforeMaxLettersCount, afterMaxLettersCount: - decorators?.afterMaxLettersCount?.(TEXT_AFTER_MAXLETTERS_COUNT) || - TEXT_AFTER_MAXLETTERS_COUNT, + decorators?.afterMaxLettersCount?.(DECORATOR_DEFAULT_TEXTS.afterMaxLettersCount) || + DECORATOR_DEFAULT_TEXTS.afterMaxLettersCount, maxLettersCountExceeded: - decorators?.afterMaxLettersCountExceeded?.(TEXT_AFTER_MAXLETTERS_COUNT_EXCEEDED) || - TEXT_AFTER_MAXLETTERS_COUNT_EXCEEDED, + decorators?.afterMaxLettersCountExceeded?.( + DECORATOR_DEFAULT_TEXTS.afterMaxLettersCountExceeded, + ) || DECORATOR_DEFAULT_TEXTS.afterMaxLettersCountExceeded, beforeScreenReaderMaxLettersDescription: decorators?.beforeScreenReaderMaxLettersDescription?.( - SCREEN_READER_BEFORE_MAXLETTERS_DESCRIPTION, - ) || SCREEN_READER_BEFORE_MAXLETTERS_DESCRIPTION, + DECORATOR_DEFAULT_TEXTS.beforeScreenReaderMaxLettersDescription, + ) || DECORATOR_DEFAULT_TEXTS.beforeScreenReaderMaxLettersDescription, afterScreenReaderMaxLettersDescription: decorators?.afterScreenReaderMaxLettersDescription?.( - SCREEN_READER_AFTER_MAXLETTERS_DESCRIPTION, - ) || SCREEN_READER_AFTER_MAXLETTERS_DESCRIPTION, + DECORATOR_DEFAULT_TEXTS.afterScreenReaderMaxLettersDescription, + ) || DECORATOR_DEFAULT_TEXTS.afterScreenReaderMaxLettersDescription, }), [decorators], ) diff --git a/packages/smarthr-ui/src/components/Textarea/stories/VRTTextarea.stories.tsx b/packages/smarthr-ui/src/components/Textarea/stories/VRTTextarea.stories.tsx index cfb0ee5f25..8cd308c7e0 100644 --- a/packages/smarthr-ui/src/components/Textarea/stories/VRTTextarea.stories.tsx +++ b/packages/smarthr-ui/src/components/Textarea/stories/VRTTextarea.stories.tsx @@ -21,6 +21,30 @@ export default {