ingred-ui 28.3.2 → 29.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/components/Calendar/Calendar/Calendar.d.ts +7 -16
  2. package/dist/components/Calendar/Calendar/Calendar.stories.d.ts +1 -2
  3. package/dist/components/Calendar/CalendarRange/CalendarRange.d.ts +10 -24
  4. package/dist/components/Calendar/CalendarRange/CalendarRange.stories.d.ts +1 -2
  5. package/dist/components/Calendar/constants.d.ts +6 -0
  6. package/dist/components/Calendar/index.d.ts +1 -0
  7. package/dist/components/Calendar/types.d.ts +15 -0
  8. package/dist/components/Calendar/utils/__tests__/resolveCalendarWeekDisplay.test.d.ts +1 -0
  9. package/dist/components/Calendar/utils/resolveCalendarWeekDisplay.d.ts +12 -0
  10. package/dist/components/ContextMenu2/ContextMenu2TextInputItem.d.ts +5 -1
  11. package/dist/components/ContextMenu2/menuRowStyles.d.ts +7 -0
  12. package/dist/components/DateField/DateField2/DateField2.d.ts +19 -0
  13. package/dist/components/DateField/DateField2/DateField2.stories.d.ts +23 -0
  14. package/dist/components/DateField/DateField2/index.d.ts +2 -0
  15. package/dist/components/DateField/DateField2/styled.d.ts +17 -0
  16. package/dist/components/DateField/DateField2/useDateField2.d.ts +69 -0
  17. package/dist/components/DateField/DateRangeField2/DateRangeField2.d.ts +21 -0
  18. package/dist/components/DateField/DateRangeField2/DateRangeField2.stories.d.ts +23 -0
  19. package/dist/components/DateField/DateRangeField2/index.d.ts +2 -0
  20. package/dist/components/DateField/DateRangeField2/styled.d.ts +10 -0
  21. package/dist/components/DateField/__tests__/useDateField2.test.d.ts +1 -0
  22. package/dist/components/DateField/index.d.ts +4 -0
  23. package/dist/components/DatePicker/DatePicker.d.ts +3 -7
  24. package/dist/components/DateRangePicker/DateRangePicker.d.ts +3 -7
  25. package/dist/components/FilterComboBox/styled.d.ts +3 -1
  26. package/dist/components/FilterSelectInput/styled.d.ts +3 -1
  27. package/dist/components/Select2/styled.d.ts +3 -1
  28. package/dist/components/TimeField/TimeField2.d.ts +20 -0
  29. package/dist/components/TimeField/TimeField2.stories.d.ts +12 -0
  30. package/dist/components/TimeField/__tests__/useTimeField2.test.d.ts +1 -0
  31. package/dist/components/TimeField/index.d.ts +2 -0
  32. package/dist/components/TimeField/useTimeField2.d.ts +68 -0
  33. package/dist/components/index.d.ts +2 -2
  34. package/dist/constants/locale.d.ts +3 -11
  35. package/dist/index.es.js +909 -868
  36. package/dist/index.es.js.map +1 -1
  37. package/dist/index.js +890 -849
  38. package/dist/index.js.map +1 -1
  39. package/dist/styles/interaction.d.ts +5 -0
  40. package/package.json +1 -1
@@ -2,6 +2,7 @@ import { Dayjs } from "dayjs";
2
2
  import React from "react";
3
3
  import { PresetButton } from "../internal/Actions";
4
4
  import { TimeFieldProps } from "../../TimeField/TimeField";
5
+ import type { CalendarWeekConfig } from "../types";
5
6
  export type CalendarProps = React.HTMLAttributes<HTMLDivElement> & {
6
7
  /**
7
8
  * 日付
@@ -13,15 +14,10 @@ export type CalendarProps = React.HTMLAttributes<HTMLDivElement> & {
13
14
  */
14
15
  monthFormat?: string;
15
16
  /**
16
- * カレンダーに表示する曜日のリスト
17
- * @memo dayjs().format("ddd") で対応したいが、階層が深くなったりするので一旦静的な値で対処
17
+ * 週の開始曜日と曜日見出し。未指定時はコンポーネント既定(日曜始まり・日本語短縮曜日)。
18
+ * `LocaleProvider` defaultProps で上書き可能。
18
19
  */
19
- weekList?: string[];
20
- /**
21
- * 週の開始日 (0=日曜日, 1=月曜日, 2=火曜日, ...)
22
- * @default 0
23
- */
24
- weekStart?: number;
20
+ weekConfig?: CalendarWeekConfig;
25
21
  /**
26
22
  * デフォルトで選択されているプリセットボタン
27
23
  */
@@ -75,15 +71,10 @@ declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponen
75
71
  */
76
72
  monthFormat?: string | undefined;
77
73
  /**
78
- * カレンダーに表示する曜日のリスト
79
- * @memo dayjs().format("ddd") で対応したいが、階層が深くなったりするので一旦静的な値で対処
80
- */
81
- weekList?: string[] | undefined;
82
- /**
83
- * 週の開始日 (0=日曜日, 1=月曜日, 2=火曜日, ...)
84
- * @default 0
74
+ * 週の開始曜日と曜日見出し。未指定時はコンポーネント既定(日曜始まり・日本語短縮曜日)。
75
+ * `LocaleProvider` defaultProps で上書き可能。
85
76
  */
86
- weekStart?: number | undefined;
77
+ weekConfig?: CalendarWeekConfig | undefined;
87
78
  /**
88
79
  * デフォルトで選択されているプリセットボタン
89
80
  */
@@ -7,8 +7,7 @@ declare const _default: {
7
7
  components: React.MemoExoticComponent<React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
8
8
  date: dayjs.Dayjs;
9
9
  monthFormat?: string | undefined;
10
- weekList?: string[] | undefined;
11
- weekStart?: number | undefined;
10
+ weekConfig?: import("..").CalendarWeekConfig | undefined;
12
11
  defaultPresetButton?: string | undefined;
13
12
  presetButtons?: import("../internal/Actions").PresetButton[] | undefined;
14
13
  onPresetButtonClick?: ((action: import("../internal/Actions").PresetButton) => void) | undefined;
@@ -3,6 +3,7 @@ import { DateRange } from "../..";
3
3
  import React from "react";
4
4
  import { PresetButton } from "../internal/Actions";
5
5
  import { TimeFieldProps } from "../../TimeField/TimeField";
6
+ import type { CalendarWeekConfig } from "../types";
6
7
  export type CalendarRangeProps = React.HTMLAttributes<HTMLDivElement> & {
7
8
  /**
8
9
  * 開始日
@@ -19,15 +20,10 @@ export type CalendarRangeProps = React.HTMLAttributes<HTMLDivElement> & {
19
20
  */
20
21
  monthFormat?: string;
21
22
  /**
22
- * カレンダーに表示する曜日のリスト
23
- * @memo dayjs().format("ddd") で対応したいが、階層が深くなったりするので一旦静的な値で対処
23
+ * 週の開始曜日と曜日見出し。未指定時はコンポーネント既定(日曜始まり・日本語短縮曜日)。
24
+ * `LocaleProvider` defaultProps で上書き可能。
24
25
  */
25
- weekList?: string[];
26
- /**
27
- * 週の開始日 (0=日曜日, 1=月曜日, 2=火曜日, ...)
28
- * @default 0
29
- */
30
- weekStart?: number;
26
+ weekConfig?: CalendarWeekConfig;
31
27
  /**
32
28
  * デフォルトで選択されているプリセットボタン
33
29
  */
@@ -109,15 +105,10 @@ export declare const CalendarRange: React.ForwardRefExoticComponent<React.HTMLAt
109
105
  */
110
106
  monthFormat?: string | undefined;
111
107
  /**
112
- * カレンダーに表示する曜日のリスト
113
- * @memo dayjs().format("ddd") で対応したいが、階層が深くなったりするので一旦静的な値で対処
114
- */
115
- weekList?: string[] | undefined;
116
- /**
117
- * 週の開始日 (0=日曜日, 1=月曜日, 2=火曜日, ...)
118
- * @default 0
108
+ * 週の開始曜日と曜日見出し。未指定時はコンポーネント既定(日曜始まり・日本語短縮曜日)。
109
+ * `LocaleProvider` defaultProps で上書き可能。
119
110
  */
120
- weekStart?: number | undefined;
111
+ weekConfig?: CalendarWeekConfig | undefined;
121
112
  /**
122
113
  * デフォルトで選択されているプリセットボタン
123
114
  */
@@ -195,15 +186,10 @@ declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponen
195
186
  */
196
187
  monthFormat?: string | undefined;
197
188
  /**
198
- * カレンダーに表示する曜日のリスト
199
- * @memo dayjs().format("ddd") で対応したいが、階層が深くなったりするので一旦静的な値で対処
200
- */
201
- weekList?: string[] | undefined;
202
- /**
203
- * 週の開始日 (0=日曜日, 1=月曜日, 2=火曜日, ...)
204
- * @default 0
189
+ * 週の開始曜日と曜日見出し。未指定時はコンポーネント既定(日曜始まり・日本語短縮曜日)。
190
+ * `LocaleProvider` defaultProps で上書き可能。
205
191
  */
206
- weekStart?: number | undefined;
192
+ weekConfig?: CalendarWeekConfig | undefined;
207
193
  /**
208
194
  * デフォルトで選択されているプリセットボタン
209
195
  */
@@ -8,8 +8,7 @@ declare const _default: {
8
8
  startDate: dayjs.Dayjs;
9
9
  endDate: dayjs.Dayjs;
10
10
  monthFormat?: string | undefined;
11
- weekList?: string[] | undefined;
12
- weekStart?: number | undefined;
11
+ weekConfig?: import("..").CalendarWeekConfig | undefined;
13
12
  defaultPresetButton?: string | undefined;
14
13
  presetButtons?: import("../internal/Actions").PresetButton[] | undefined;
15
14
  onPresetButtonClick?: ((action: import("../internal/Actions").PresetButton) => void) | undefined;
@@ -1,2 +1,8 @@
1
1
  /** カレンダーカード(グリッド+Actions)の最大幅。1fr グリッドや広い親・100vw 上限だけでは横に伸び切るのを防ぐ */
2
2
  export declare const CALENDAR_CARD_MAX_WIDTH_PX = 640;
3
+ /**
4
+ * `weekConfig` 未指定かつ `LocaleProvider` でも埋まらないときの曜日見出し(日曜始まり・日本語1文字)。
5
+ * ja のロケール既定と揃える。
6
+ */
7
+ export declare const DEFAULT_CALENDAR_WEEK_FALLBACK_LABELS: readonly string[];
8
+ export declare const DEFAULT_CALENDAR_WEEK_FALLBACK_START = 0;
@@ -1,3 +1,4 @@
1
1
  import Calendar from "./Calendar";
2
2
  import CalendarRange from "./CalendarRange";
3
3
  export { Calendar, CalendarRange };
4
+ export type { CalendarWeekConfig } from "./types";
@@ -0,0 +1,15 @@
1
+ /**
2
+ * カレンダー見出し行とグリッドの左端をひとまとめにした設定。
3
+ * `labels` の先頭は `start` で指定した曜日に対応する必要がある。
4
+ */
5
+ export type CalendarWeekConfig = {
6
+ /**
7
+ * 週の開始曜日 (0=日曜日, 1=月曜日, … 6=土曜日)。
8
+ * 列の左端がこの曜日になる。
9
+ */
10
+ start: number;
11
+ /**
12
+ * 左から右へ並ぶ 7 つの曜日見出し文言。
13
+ */
14
+ labels: string[];
15
+ };
@@ -0,0 +1,12 @@
1
+ import type { CalendarWeekConfig } from "../types";
2
+ export type ResolveCalendarWeekDisplayArgs = {
3
+ weekConfig?: CalendarWeekConfig;
4
+ fallbackLabels: string[];
5
+ fallbackStart: number;
6
+ };
7
+ /** dayjs().day() と同じ 0–6(日–土)に収める */
8
+ export declare function normalizeCalendarWeekStart(start: number): number;
9
+ /**
10
+ * `weekConfig` があれば検証して返し、なければフォールバックで埋める。
11
+ */
12
+ export declare function resolveCalendarWeekDisplay(args: ResolveCalendarWeekDisplayArgs): CalendarWeekConfig;
@@ -1,4 +1,8 @@
1
1
  import React from "react";
2
+ /** styled の transient。フォーカスリング用 padding を付けるか(検索ヘッダー内など親レイアウトがある場合は false) */
3
+ export type ContextMenu2TextInputItemStyledProps = {
4
+ $insetFocusRingPadding?: boolean;
5
+ };
2
6
  export declare const ContextMenu2TextInputItem: import("styled-components").StyledComponent<React.ForwardRefExoticComponent<{
3
7
  onEnter?: (() => void) | undefined;
4
- } & React.InputHTMLAttributes<HTMLInputElement> & React.RefAttributes<HTMLInputElement>>, import("styled-components").DefaultTheme, {}, never>;
8
+ } & React.InputHTMLAttributes<HTMLInputElement> & React.RefAttributes<HTMLInputElement>>, import("styled-components").DefaultTheme, ContextMenu2TextInputItemStyledProps, never>;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * ButtonItem / CheckItem / TriggerItem / SwitchItem 共通のレイアウトとベース見た目。
3
+ * タイポや gap・ホバーは各コンポーネント側で足す。
4
+ */
5
+ export declare const contextMenu2InteractiveRowLayout: import("styled-components").FlattenSimpleInterpolation;
6
+ /** メインラベルがテキストの行向け(UI/Text 14) */
7
+ export declare const contextMenu2RowTextUi: import("styled-components").FlattenSimpleInterpolation;
@@ -0,0 +1,19 @@
1
+ import React from "react";
2
+ import { Dayjs } from "dayjs";
3
+ import { InputSize, InputVariant } from "../types";
4
+ export type DateField2Props = {
5
+ date: Dayjs;
6
+ format?: string;
7
+ name?: string;
8
+ error?: boolean;
9
+ errorText?: string;
10
+ disabled?: boolean;
11
+ size?: InputSize;
12
+ variant?: InputVariant;
13
+ width?: string | number;
14
+ append?: React.ReactNode;
15
+ onAppendClick?: () => void;
16
+ onDateChange?: (date: Dayjs) => void;
17
+ };
18
+ declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<DateField2Props & React.RefAttributes<HTMLDivElement>>>;
19
+ export default _default;
@@ -0,0 +1,23 @@
1
+ import { StoryObj } from "@storybook/react-vite";
2
+ import { DateField2Props } from "./DateField2";
3
+ import React from "react";
4
+ declare const _default: {
5
+ title: string;
6
+ component: React.MemoExoticComponent<React.ForwardRefExoticComponent<DateField2Props & React.RefAttributes<HTMLDivElement>>>;
7
+ parameters: {
8
+ docs: {
9
+ description: {
10
+ component: string;
11
+ };
12
+ };
13
+ };
14
+ };
15
+ export default _default;
16
+ export declare const Example: StoryObj<DateField2Props>;
17
+ export declare const Custom: StoryObj<DateField2Props>;
18
+ export declare const Japanese: StoryObj<DateField2Props>;
19
+ export declare const Error: StoryObj<DateField2Props>;
20
+ export declare const Disabled: StoryObj<DateField2Props>;
21
+ export declare const Small: StoryObj<DateField2Props>;
22
+ export declare const Large: StoryObj<DateField2Props>;
23
+ export declare const Dark: StoryObj<DateField2Props>;
@@ -0,0 +1,2 @@
1
+ export { default as DateField2 } from "./DateField2";
2
+ export type { DateField2Props } from "./DateField2";
@@ -0,0 +1,17 @@
1
+ import { InputSize, InputVariant } from "../../Input/types";
2
+ export declare const Container: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {
3
+ $size: InputSize;
4
+ $variant: InputVariant;
5
+ $error: boolean;
6
+ $disabled: boolean;
7
+ $focused: boolean;
8
+ $isIOS?: boolean | undefined;
9
+ $width?: string | number | undefined;
10
+ }, never>;
11
+ export declare const SegmentsRow: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
12
+ export declare const Segment: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, {
13
+ $focused: boolean;
14
+ $editable: boolean;
15
+ }, never>;
16
+ export declare const Separator: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, {}, never>;
17
+ export declare const AppendContainer: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, {}, never>;
@@ -0,0 +1,69 @@
1
+ import React from "react";
2
+ import { Dayjs } from "dayjs";
3
+ type Props = {
4
+ date: Dayjs | null;
5
+ format?: string;
6
+ disabled?: boolean;
7
+ onDateChange?: (date: Dayjs) => void;
8
+ };
9
+ /**
10
+ * React Aria 方式の DateField2 向けフック。
11
+ * 各セグメント span が contentEditable + tabIndex={0} で直接フォーカス・入力を受ける。
12
+ * setSelectionRange を使わないためモバイル (iOS) でも安定動作する。
13
+ */
14
+ export declare const useDateField2: ({ date, format, disabled, onDateChange, }: Props) => {
15
+ value: string;
16
+ sections: {
17
+ start: number;
18
+ end: number;
19
+ value: string;
20
+ editable: boolean;
21
+ }[];
22
+ focusedIndex: number | null;
23
+ isFocused: boolean;
24
+ getSegmentProps: (index: number) => {
25
+ ref: (el: HTMLSpanElement | null) => void;
26
+ "aria-hidden": true;
27
+ role?: undefined;
28
+ contentEditable?: undefined;
29
+ suppressContentEditableWarning?: undefined;
30
+ inputMode?: undefined;
31
+ tabIndex?: undefined;
32
+ enterKeyHint?: undefined;
33
+ spellCheck?: undefined;
34
+ autoCorrect?: undefined;
35
+ style?: undefined;
36
+ onFocus?: undefined;
37
+ onBlur?: undefined;
38
+ onKeyDown?: undefined;
39
+ onBeforeInput?: undefined;
40
+ onPointerDown?: undefined;
41
+ onMouseDown?: undefined;
42
+ } | {
43
+ ref: (el: HTMLSpanElement | null) => void;
44
+ role: "spinbutton";
45
+ contentEditable: true;
46
+ suppressContentEditableWarning: true;
47
+ inputMode: "numeric";
48
+ tabIndex: number;
49
+ enterKeyHint: "next";
50
+ spellCheck: false;
51
+ autoCorrect: "off";
52
+ style: {
53
+ caretColor: "transparent";
54
+ };
55
+ onFocus: () => void;
56
+ onBlur: (e: React.FocusEvent) => void;
57
+ onKeyDown: (event: React.KeyboardEvent<HTMLSpanElement>) => void;
58
+ onBeforeInput: (e: React.FormEvent<HTMLSpanElement>) => void;
59
+ onPointerDown(e: React.PointerEvent): void;
60
+ onMouseDown(e: React.MouseEvent): void;
61
+ "aria-hidden"?: undefined;
62
+ };
63
+ groupProps: {
64
+ ref: React.MutableRefObject<HTMLDivElement | null>;
65
+ onKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => void;
66
+ onPaste: (event: React.ClipboardEvent<HTMLDivElement>) => void;
67
+ };
68
+ };
69
+ export {};
@@ -0,0 +1,21 @@
1
+ import React from "react";
2
+ import { DateRange } from "../..";
3
+ import { InputSize, InputVariant } from "../types";
4
+ export type DateRangeField2Props = {
5
+ date: DateRange;
6
+ format?: string;
7
+ error?: boolean;
8
+ errorText?: string;
9
+ disabled?: boolean;
10
+ size?: InputSize;
11
+ variant?: InputVariant;
12
+ startWidth?: string | number;
13
+ endWidth?: string | number;
14
+ startName?: string;
15
+ endName?: string;
16
+ append?: React.ReactNode;
17
+ onAppendClick?: () => void;
18
+ onDatesChange?: (date: DateRange) => void;
19
+ };
20
+ declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<DateRangeField2Props & React.RefAttributes<HTMLDivElement>>>;
21
+ export default _default;
@@ -0,0 +1,23 @@
1
+ import { StoryObj } from "@storybook/react-vite";
2
+ import { DateRangeField2Props } from "./DateRangeField2";
3
+ import React from "react";
4
+ declare const _default: {
5
+ title: string;
6
+ component: React.MemoExoticComponent<React.ForwardRefExoticComponent<DateRangeField2Props & React.RefAttributes<HTMLDivElement>>>;
7
+ parameters: {
8
+ docs: {
9
+ description: {
10
+ component: string;
11
+ };
12
+ };
13
+ };
14
+ };
15
+ export default _default;
16
+ export declare const Example: StoryObj<DateRangeField2Props>;
17
+ export declare const Custom: StoryObj<DateRangeField2Props>;
18
+ export declare const Japanese: StoryObj<DateRangeField2Props>;
19
+ export declare const Error: StoryObj<DateRangeField2Props>;
20
+ export declare const Disabled: StoryObj<DateRangeField2Props>;
21
+ export declare const Small: StoryObj<DateRangeField2Props>;
22
+ export declare const Large: StoryObj<DateRangeField2Props>;
23
+ export declare const Dark: StoryObj<DateRangeField2Props>;
@@ -0,0 +1,2 @@
1
+ export { default as DateRangeField2 } from "./DateRangeField2";
2
+ export type { DateRangeField2Props } from "./DateRangeField2";
@@ -0,0 +1,10 @@
1
+ import { InputSize, InputVariant } from "../../Input/types";
2
+ export declare const RangeContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {
3
+ $size: InputSize;
4
+ $variant: InputVariant;
5
+ $error: boolean;
6
+ $disabled: boolean;
7
+ $focused: boolean;
8
+ $isIOS?: boolean | undefined;
9
+ }, never>;
10
+ export declare const RangeSeparator: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, {}, never>;
@@ -1,3 +1,7 @@
1
1
  import DateField from "./DateField";
2
2
  import DateRangeField from "./DateRangeField";
3
3
  export { DateField, DateRangeField };
4
+ export { DateField2 } from "./DateField2";
5
+ export type { DateField2Props } from "./DateField2";
6
+ export { DateRangeField2 } from "./DateRangeField2";
7
+ export type { DateRangeField2Props } from "./DateRangeField2";
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import type { CalendarWeekConfig } from "../Calendar/types";
2
3
  import { PresetButton } from "../Calendar/internal/Actions";
3
4
  import { Dayjs } from "dayjs";
4
5
  import { TimeFieldProps } from "../TimeField/TimeField";
@@ -63,14 +64,9 @@ export type DatePickerProps = {
63
64
  */
64
65
  monthFormat?: string;
65
66
  /**
66
- * カレンダーに表示する曜日のリスト
67
+ * 週の開始曜日と曜日見出し。未指定時は `LocaleProvider` の defaultProps、なければ Calendar と同様のフォールバック。
67
68
  */
68
- weekList?: string[];
69
- /**
70
- * 週の開始日 (0=日曜日, 1=月曜日, 2=火曜日, ...)
71
- * @default 0
72
- */
73
- weekStart?: number;
69
+ weekConfig?: CalendarWeekConfig;
74
70
  /**
75
71
  * カレンダーのActionsエリアにDateFieldを表示する
76
72
  * @default false
@@ -1,5 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { Dayjs } from "dayjs";
3
+ import type { CalendarWeekConfig } from "../Calendar/types";
3
4
  import { PresetButton } from "../Calendar/internal/Actions";
4
5
  import { TimeFieldProps } from "../TimeField/TimeField";
5
6
  import { InputSize, InputVariant } from "../Input/types";
@@ -63,14 +64,9 @@ export type DateRangePickerProps = {
63
64
  */
64
65
  monthFormat?: string;
65
66
  /**
66
- * カレンダーに表示する曜日のリスト
67
+ * 週の開始曜日と曜日見出し。未指定時は `LocaleProvider` の defaultProps、なければ Calendar と同様のフォールバック。
67
68
  */
68
- weekList?: string[];
69
- /**
70
- * 週の開始日 (0=日曜日, 1=月曜日, 2=火曜日, ...)
71
- * @default 0
72
- */
73
- weekStart?: number;
69
+ weekConfig?: CalendarWeekConfig;
74
70
  /**
75
71
  * カレンダーのActionsエリアにDateFieldを表示する
76
72
  * @default false
@@ -18,7 +18,9 @@ export declare const Select: import("styled-components").StyledComponent<"button
18
18
  export declare const SelectIcon: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, {}, never>;
19
19
  export declare const StyledContextMenu2TextInputItem: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<{
20
20
  onEnter?: (() => void) | undefined;
21
- } & import("react").InputHTMLAttributes<HTMLInputElement> & import("react").RefAttributes<HTMLInputElement>>, import("styled-components").DefaultTheme, {}, never>;
21
+ } & import("react").InputHTMLAttributes<HTMLInputElement> & import("react").RefAttributes<HTMLInputElement>>, import("styled-components").DefaultTheme, import("../ContextMenu2/ContextMenu2TextInputItem").ContextMenu2TextInputItemStyledProps & {
22
+ $insetFocusRingPadding: boolean;
23
+ }, "$insetFocusRingPadding">;
22
24
  export declare const SearchHeaderContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
23
25
  export declare const SearchInputWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
24
26
  export declare const SearchResetButton: import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, {}, never>;
@@ -16,7 +16,9 @@ type StyledContextMenu2TextInputItemProps = {
16
16
  };
17
17
  export declare const StyledContextMenu2TextInputItem: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<{
18
18
  onEnter?: (() => void) | undefined;
19
- } & import("react").InputHTMLAttributes<HTMLInputElement> & import("react").RefAttributes<HTMLInputElement>>, import("styled-components").DefaultTheme, StyledContextMenu2TextInputItemProps, never>;
19
+ } & import("react").InputHTMLAttributes<HTMLInputElement> & import("react").RefAttributes<HTMLInputElement>>, import("styled-components").DefaultTheme, import("../ContextMenu2/ContextMenu2TextInputItem").ContextMenu2TextInputItemStyledProps & {
20
+ $insetFocusRingPadding: boolean;
21
+ } & StyledContextMenu2TextInputItemProps, "$insetFocusRingPadding">;
20
22
  export declare const StyledTrigger: import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, {
21
23
  $isOpen?: boolean | undefined;
22
24
  $placeholder?: boolean | undefined;
@@ -42,7 +42,9 @@ export declare const IconArea: import("styled-components").StyledComponent<"div"
42
42
  }, never>;
43
43
  export declare const StyledContextMenu2TextInputItem: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<{
44
44
  onEnter?: (() => void) | undefined;
45
- } & import("react").InputHTMLAttributes<HTMLInputElement> & import("react").RefAttributes<HTMLInputElement>>, import("styled-components").DefaultTheme, {}, never>;
45
+ } & import("react").InputHTMLAttributes<HTMLInputElement> & import("react").RefAttributes<HTMLInputElement>>, import("styled-components").DefaultTheme, import("../ContextMenu2/ContextMenu2TextInputItem").ContextMenu2TextInputItemStyledProps & {
46
+ $insetFocusRingPadding: boolean;
47
+ }, "$insetFocusRingPadding">;
46
48
  export declare const OptionsContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
47
49
  export declare const SearchHeaderContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
48
50
  export declare const SearchInputWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
@@ -0,0 +1,20 @@
1
+ import React from "react";
2
+ import { Dayjs } from "dayjs";
3
+ export type TimeField2Props = {
4
+ time?: Dayjs | null;
5
+ name?: string;
6
+ error?: boolean;
7
+ errorText?: string;
8
+ disabled?: boolean;
9
+ onTimeChange?: (time: Dayjs) => void;
10
+ dropdownInterval?: number;
11
+ filterTimeOptions?: Array<(time: string) => boolean>;
12
+ size?: "small" | "medium" | "large";
13
+ variant?: "light" | "dark";
14
+ width?: string;
15
+ maxHeight?: number | string;
16
+ onFocus?: () => void;
17
+ onBlur?: () => void;
18
+ };
19
+ declare const _default: React.NamedExoticComponent<TimeField2Props>;
20
+ export default _default;
@@ -0,0 +1,12 @@
1
+ import { Meta, StoryObj } from "@storybook/react-vite";
2
+ import TimeField2, { TimeField2Props } from "./TimeField2";
3
+ declare const meta: Meta<typeof TimeField2>;
4
+ export default meta;
5
+ type Story = StoryObj<TimeField2Props>;
6
+ export declare const Example: Story;
7
+ export declare const SmallSize: Story;
8
+ export declare const LargeSize: Story;
9
+ export declare const DarkVariant: Story;
10
+ export declare const Disabled: Story;
11
+ export declare const Error: Story;
12
+ export declare const FilteredTimeOptions: Story;
@@ -1,2 +1,4 @@
1
1
  export { default, default as TimeField } from "./TimeField";
2
2
  export type { TimeFieldProps } from "./TimeField";
3
+ export { default as TimeField2 } from "./TimeField2";
4
+ export type { TimeField2Props } from "./TimeField2";
@@ -0,0 +1,68 @@
1
+ import React from "react";
2
+ import { Dayjs } from "dayjs";
3
+ type Props = {
4
+ time: Dayjs | null;
5
+ disabled?: boolean;
6
+ onTimeChange?: (time: Dayjs) => void;
7
+ };
8
+ /**
9
+ * React Aria 方式の TimeField2 向けフック。
10
+ * 各セグメント span が contentEditable + tabIndex={0} で直接フォーカス・入力を受ける。
11
+ * setSelectionRange を使わないためモバイル (iOS) でも安定動作する。
12
+ */
13
+ export declare const useTimeField2: ({ time, disabled, onTimeChange, }: Props) => {
14
+ value: string;
15
+ sections: {
16
+ start: number;
17
+ end: number;
18
+ value: string;
19
+ editable: boolean;
20
+ }[];
21
+ focusedIndex: number | null;
22
+ isFocused: boolean;
23
+ getSegmentProps: (index: number) => {
24
+ ref: (el: HTMLSpanElement | null) => void;
25
+ "aria-hidden": true;
26
+ role?: undefined;
27
+ contentEditable?: undefined;
28
+ suppressContentEditableWarning?: undefined;
29
+ inputMode?: undefined;
30
+ tabIndex?: undefined;
31
+ enterKeyHint?: undefined;
32
+ spellCheck?: undefined;
33
+ autoCorrect?: undefined;
34
+ style?: undefined;
35
+ onFocus?: undefined;
36
+ onBlur?: undefined;
37
+ onKeyDown?: undefined;
38
+ onBeforeInput?: undefined;
39
+ onPointerDown?: undefined;
40
+ onMouseDown?: undefined;
41
+ } | {
42
+ ref: (el: HTMLSpanElement | null) => void;
43
+ role: "spinbutton";
44
+ contentEditable: true;
45
+ suppressContentEditableWarning: true;
46
+ inputMode: "numeric";
47
+ tabIndex: number;
48
+ enterKeyHint: "next";
49
+ spellCheck: false;
50
+ autoCorrect: "off";
51
+ style: {
52
+ caretColor: "transparent";
53
+ };
54
+ onFocus: () => void;
55
+ onBlur: (e: React.FocusEvent) => void;
56
+ onKeyDown: (event: React.KeyboardEvent<HTMLSpanElement>) => void;
57
+ onBeforeInput: (e: React.FormEvent<HTMLSpanElement>) => void;
58
+ onPointerDown(e: React.PointerEvent): void;
59
+ onMouseDown(e: React.MouseEvent): void;
60
+ "aria-hidden"?: undefined;
61
+ };
62
+ groupProps: {
63
+ ref: React.MutableRefObject<HTMLDivElement | null>;
64
+ onKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => void;
65
+ onPaste: (event: React.ClipboardEvent<HTMLDivElement>) => void;
66
+ };
67
+ };
68
+ export {};
@@ -33,7 +33,7 @@ export * from "./CreatableSelect";
33
33
  export { default as DataTable } from "./DataTable";
34
34
  export * from "./DataTable";
35
35
  export * from "./DataTable2";
36
- export { DateField, DateRangeField } from "./DateField";
36
+ export { DateField, DateRangeField, DateField2, DateRangeField2, } from "./DateField";
37
37
  export * from "./DateField";
38
38
  export { default as DatePicker } from "./DatePicker";
39
39
  export * from "./DatePicker";
@@ -130,7 +130,7 @@ export * from "./Tabs";
130
130
  export * from "./Tag";
131
131
  export { default as TextField } from "./TextField";
132
132
  export * from "./TextField";
133
- export { TimeField } from "./TimeField";
133
+ export { TimeField, TimeField2 } from "./TimeField";
134
134
  export * from "./TimeField";
135
135
  export { default as Toast } from "./Toast";
136
136
  export * from "./Toast";