@ya-accelerators/nextjs-framework 0.0.85 → 0.0.87
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.
- package/dist/env.d.ts +0 -2
- package/dist/env.js +0 -6
- package/dist/env.js.map +1 -1
- package/dist/hooks/mounted/index.d.ts +1 -0
- package/dist/hooks/mounted/index.js +14 -0
- package/dist/hooks/mounted/index.js.map +1 -0
- package/dist/i18n/strings/ja-JP.json +5 -1
- package/dist/lib/index.d.ts +0 -2
- package/dist/lib/index.js +0 -2
- package/dist/lib/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/ui/composite/index.d.ts +28 -13
- package/dist/ui/composite/input/datePicker/index.d.ts +3 -1
- package/dist/ui/composite/input/datePicker/index.jsx +69 -19
- package/dist/ui/composite/input/datePicker/index.jsx.map +1 -1
- package/dist/ui/composite/input/dateTimePicker/index.jsx +12 -2
- package/dist/ui/composite/input/dateTimePicker/index.jsx.map +1 -1
- package/dist/ui/composite/input/file/index.d.ts +22 -0
- package/dist/ui/composite/input/file/index.jsx +225 -0
- package/dist/ui/composite/input/file/index.jsx.map +1 -0
- package/dist/ui/composite/input/index.d.ts +28 -13
- package/dist/ui/composite/input/index.js +2 -0
- package/dist/ui/composite/input/index.js.map +1 -1
- package/dist/ui/composite/input/list/index.d.ts +5 -15
- package/dist/ui/composite/input/list/index.jsx +36 -18
- package/dist/ui/composite/input/list/index.jsx.map +1 -1
- package/dist/ui/layout/form/index.d.ts +7 -3
- package/dist/ui/layout/form/index.jsx +72 -101
- package/dist/ui/layout/form/index.jsx.map +1 -1
- package/dist/ui/layout/form/renderItem.d.ts +21 -0
- package/dist/ui/layout/form/renderItem.jsx +123 -0
- package/dist/ui/layout/form/renderItem.jsx.map +1 -0
- package/dist/ui/layout/index.d.ts +10 -2
- package/dist/ui/types/index.d.ts +17 -4
- package/dist/ui/types/index.js.map +1 -1
- package/package.json +1 -2
- package/dist/lib/s3/index.d.ts +0 -2
- package/dist/lib/s3/index.js +0 -18
- package/dist/lib/s3/index.js.map +0 -1
|
@@ -130,25 +130,39 @@ export declare const Composite: {
|
|
|
130
130
|
disabled?: boolean;
|
|
131
131
|
required?: boolean;
|
|
132
132
|
}) => import("react").JSX.Element;
|
|
133
|
-
List: ({ name, rounded,
|
|
133
|
+
List: ({ name, rounded, columns, scalarArray, defaultValues, minListLength, maxListLength, isFirstItem, }: {
|
|
134
134
|
name: string;
|
|
135
135
|
rounded?: import("..").Rounded;
|
|
136
|
-
|
|
136
|
+
columns: import("..").FormListColumn[];
|
|
137
|
+
scalarArray?: boolean;
|
|
138
|
+
defaultValues?: Record<string, string | number | boolean | Date | string[]>[];
|
|
137
139
|
minListLength?: number;
|
|
138
140
|
maxListLength?: number;
|
|
139
|
-
valueLength: number;
|
|
140
141
|
isFirstItem: boolean;
|
|
142
|
+
}) => import("react").JSX.Element;
|
|
143
|
+
File: ({ name, accept, multiple, rounded, disabled, required, onChange, upload, className, }: {
|
|
144
|
+
name: string;
|
|
145
|
+
accept?: string;
|
|
146
|
+
multiple?: boolean;
|
|
147
|
+
rounded?: import("..").Rounded;
|
|
148
|
+
disabled?: boolean;
|
|
141
149
|
required?: boolean;
|
|
142
|
-
|
|
150
|
+
onChange?: (value?: {
|
|
151
|
+
key: string;
|
|
143
152
|
name: string;
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
};
|
|
153
|
+
mimeType: string;
|
|
154
|
+
size: number;
|
|
155
|
+
} | {
|
|
156
|
+
key: string;
|
|
157
|
+
name: string;
|
|
158
|
+
mimeType: string;
|
|
159
|
+
size: number;
|
|
160
|
+
}[]) => void;
|
|
161
|
+
upload?: () => Promise<{
|
|
162
|
+
token: string;
|
|
163
|
+
url: string;
|
|
164
|
+
}>;
|
|
165
|
+
className?: string;
|
|
152
166
|
}) => import("react").JSX.Element;
|
|
153
167
|
DateTimeRange: ({ defaultValue, name, disabled, error, stepMinutes, onChange, ...props }: Omit<import("react").ComponentProps<typeof import("./input/dateTimePicker").DateTimePicker>, "defaultValue" | "onChange"> & {
|
|
154
168
|
defaultValue?: {
|
|
@@ -187,7 +201,7 @@ export declare const Composite: {
|
|
|
187
201
|
end?: Date;
|
|
188
202
|
}) => void;
|
|
189
203
|
}) => import("react").JSX.Element;
|
|
190
|
-
DatePicker: (props: Parameters<({ name, rounded, placement, defaultValue, value, min, max, onChange, disabled, className, required, error, autoFocus, }: {
|
|
204
|
+
DatePicker: (props: Parameters<({ name, rounded, placement, defaultValue, value, min, max, precision, onChange, disabled, className, required, error, autoFocus, }: {
|
|
191
205
|
name: string;
|
|
192
206
|
rounded?: import("..").Rounded;
|
|
193
207
|
placement?: "top" | "right" | "bottom" | "left" | "top-start" | "top-end" | "right-start" | "right-end" | "bottom-start" | "bottom-end" | "left-start" | "left-end";
|
|
@@ -195,6 +209,7 @@ export declare const Composite: {
|
|
|
195
209
|
value?: Date;
|
|
196
210
|
min?: Date;
|
|
197
211
|
max?: Date;
|
|
212
|
+
precision?: "year" | "month" | "day";
|
|
198
213
|
onChange?: (value?: Date) => void;
|
|
199
214
|
disabled?: boolean;
|
|
200
215
|
className?: string;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import 'react-datepicker/dist/react-datepicker.css';
|
|
2
2
|
import { Rounded } from '../../../theme';
|
|
3
|
+
type Precision = 'year' | 'month' | 'day';
|
|
3
4
|
export declare const DatePicker: (props: Parameters<typeof DatePickerImpl>[0]) => import("react").JSX.Element;
|
|
4
|
-
declare const DatePickerImpl: ({ name, rounded, placement, defaultValue, value, min, max, onChange, disabled, className, required, error, autoFocus, }: {
|
|
5
|
+
declare const DatePickerImpl: ({ name, rounded, placement, defaultValue, value, min, max, precision, onChange, disabled, className, required, error, autoFocus, }: {
|
|
5
6
|
name: string;
|
|
6
7
|
rounded?: Rounded;
|
|
7
8
|
placement?: "top" | "right" | "bottom" | "left" | "top-start" | "top-end" | "right-start" | "right-end" | "bottom-start" | "bottom-end" | "left-start" | "left-end";
|
|
@@ -9,6 +10,7 @@ declare const DatePickerImpl: ({ name, rounded, placement, defaultValue, value,
|
|
|
9
10
|
value?: Date;
|
|
10
11
|
min?: Date;
|
|
11
12
|
max?: Date;
|
|
13
|
+
precision?: Precision;
|
|
12
14
|
onChange?: (value?: Date) => void;
|
|
13
15
|
disabled?: boolean;
|
|
14
16
|
className?: string;
|
|
@@ -5,38 +5,72 @@ import NavigateBeforeOutlinedIcon from '@mui/icons-material/NavigateBeforeOutlin
|
|
|
5
5
|
import NavigateNextOutlinedIcon from '@mui/icons-material/NavigateNextOutlined';
|
|
6
6
|
import classNames from 'classnames';
|
|
7
7
|
import { enGB, enUS, ja } from 'date-fns/locale';
|
|
8
|
+
import { useLocale } from 'next-intl';
|
|
8
9
|
import { forwardRef, useMemo, useState } from 'react';
|
|
9
10
|
import RDatePicker, { registerLocale } from 'react-datepicker';
|
|
10
11
|
import { useDateFormat } from '../../../../hooks/date';
|
|
12
|
+
import { useMounted } from '../../../../hooks/mounted';
|
|
11
13
|
import { Component } from '../../../component';
|
|
12
14
|
import { Rounded, TextColorTypes } from '../../../theme';
|
|
13
15
|
import { Text } from '../text';
|
|
16
|
+
// Register both the BCP-47 tags the app uses (en-GB / en-US / ja-JP) and their bare-language
|
|
17
|
+
// aliases, so react-datepicker localizes even when the active locale is a short code (`ja` / `en`).
|
|
18
|
+
registerLocale('en', enGB);
|
|
14
19
|
registerLocale('en-GB', enGB);
|
|
15
20
|
registerLocale('en-US', enUS);
|
|
21
|
+
registerLocale('ja', ja);
|
|
16
22
|
registerLocale('ja-JP', ja);
|
|
23
|
+
// Snap a date to the start of its precision unit so the persisted value carries no spurious
|
|
24
|
+
// day/month component (a month picker must not leak the day it happened to open on).
|
|
25
|
+
const snapToPrecision = (date, precision) => {
|
|
26
|
+
if (precision === 'year') {
|
|
27
|
+
return new Date(date.getFullYear(), 0, 1);
|
|
28
|
+
}
|
|
29
|
+
if (precision === 'month') {
|
|
30
|
+
return new Date(date.getFullYear(), date.getMonth(), 1);
|
|
31
|
+
}
|
|
32
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
33
|
+
};
|
|
17
34
|
export const DatePicker = (props) => {
|
|
18
35
|
const { name, value, ...rest } = props;
|
|
19
|
-
|
|
36
|
+
// Key on the value only, not the name: DatePickerImpl re-inits its `date` state from `value` on remount,
|
|
37
|
+
// so it must remount when the controlled value changes — but a name change (e.g. a list row re-indexing
|
|
38
|
+
// list[1]→list[0] after a removal) must NOT remount it, or an uncontrolled picked date would be lost.
|
|
39
|
+
const key = useMemo(() => value?.toISOString(), [value]);
|
|
20
40
|
return <DatePickerImpl {...rest} key={key} name={name} value={value}/>;
|
|
21
41
|
};
|
|
22
|
-
const DatePickerImpl = ({ name, rounded = Rounded.m, placement, defaultValue, value, min, max, onChange, disabled, className, required, error, autoFocus, }) => {
|
|
23
|
-
const { toDateString, dataFormat } = useDateFormat();
|
|
42
|
+
const DatePickerImpl = ({ name, rounded = Rounded.m, placement, defaultValue, value, min, max, precision = 'day', onChange, disabled, className, required, error, autoFocus, }) => {
|
|
43
|
+
const { toString, toDateString, dataFormat } = useDateFormat();
|
|
44
|
+
const locale = useLocale();
|
|
45
|
+
const mounted = useMounted();
|
|
24
46
|
const [date, setDate] = useState(() => {
|
|
25
47
|
const dateToUse = value ?? defaultValue;
|
|
26
|
-
|
|
27
|
-
return new Date(dateToUse.getFullYear(), dateToUse.getMonth(), dateToUse.getDate());
|
|
28
|
-
}
|
|
29
|
-
return undefined;
|
|
48
|
+
return dateToUse ? snapToPrecision(dateToUse, precision) : undefined;
|
|
30
49
|
});
|
|
50
|
+
// The rendered value is TZ-derived (snapToPrecision uses runtime-local Date parts), so it must not be
|
|
51
|
+
// emitted on the server; render it only after mount so the first client render matches the server.
|
|
52
|
+
const renderedDate = mounted ? date : undefined;
|
|
31
53
|
const [onFocus, setOnFocus] = useState(autoFocus ?? false);
|
|
54
|
+
const displayValue = (target) => {
|
|
55
|
+
if (!target) {
|
|
56
|
+
return '-';
|
|
57
|
+
}
|
|
58
|
+
if (precision === 'year') {
|
|
59
|
+
return toString(target, { year: 'numeric' });
|
|
60
|
+
}
|
|
61
|
+
if (precision === 'month') {
|
|
62
|
+
return toString(target, { year: 'numeric', month: '2-digit' });
|
|
63
|
+
}
|
|
64
|
+
return toDateString(target);
|
|
65
|
+
};
|
|
32
66
|
return (<div className={classNames('flex w-full min-w-[100px] cursor-pointer', className)}>
|
|
33
|
-
<input className='absolute size-0 opacity-0' name={name} value={
|
|
67
|
+
<input className='absolute size-0 opacity-0' name={name} value={renderedDate ? renderedDate.toISOString() : ''} onChange={() => { }} required={required}/>
|
|
34
68
|
<div className='relative w-full'>
|
|
35
|
-
<RDatePicker portalId='portal' wrapperClassName='w-full' selected={
|
|
69
|
+
<RDatePicker portalId='portal' wrapperClassName='w-full' locale={locale} selected={renderedDate} minDate={min ?? undefined} maxDate={max ?? undefined} showMonthYearPicker={precision === 'month'} showYearPicker={precision === 'year'} onChange={(e) => {
|
|
36
70
|
if (e) {
|
|
37
|
-
const
|
|
38
|
-
setDate(
|
|
39
|
-
onChange?.(
|
|
71
|
+
const snapped = snapToPrecision(e, precision);
|
|
72
|
+
setDate(snapped);
|
|
73
|
+
onChange?.(snapped);
|
|
40
74
|
}
|
|
41
75
|
else {
|
|
42
76
|
setDate(undefined);
|
|
@@ -47,8 +81,10 @@ const DatePickerImpl = ({ name, rounded = Rounded.m, placement, defaultValue, va
|
|
|
47
81
|
const event = new Event('change', { bubbles: true });
|
|
48
82
|
hiddenInput.dispatchEvent(event);
|
|
49
83
|
}
|
|
50
|
-
}} placeholderText={
|
|
51
|
-
|
|
84
|
+
}} placeholderText={mounted ? displayValue(new Date()) : ''} dateFormat={precision === 'year' ? 'yyyy' : precision === 'month' ? 'yyyy-MM' : dataFormat} renderCustomHeader={precision === 'year'
|
|
85
|
+
? undefined
|
|
86
|
+
: ({ date, changeYear, changeMonth, decreaseMonth, increaseMonth, decreaseYear, increaseYear, prevMonthButtonDisabled, nextMonthButtonDisabled, prevYearButtonDisabled, nextYearButtonDisabled, }) => (<CustomCalendarHeader precision={precision} date={date} changeYear={changeYear} changeMonth={changeMonth} decreaseMonth={decreaseMonth} increaseMonth={increaseMonth} decreaseYear={decreaseYear} increaseYear={increaseYear} prevMonthButtonDisabled={prevMonthButtonDisabled} nextMonthButtonDisabled={nextMonthButtonDisabled} prevYearButtonDisabled={prevYearButtonDisabled} nextYearButtonDisabled={nextYearButtonDisabled} minYear={min?.getFullYear()} maxYear={max?.getFullYear()}/>)} onCalendarOpen={() => setOnFocus(true)} onCalendarClose={() => setOnFocus(false)} customInput={<CustomInput value={displayValue(renderedDate)} focused={onFocus} rounded={rounded} disabled={disabled} error={error}/>} popperPlacement={placement} disabled={disabled} required={false}/>
|
|
87
|
+
{required !== true && renderedDate && (<div className='absolute top-0 right-0 bottom-0 flex items-center justify-center p-control-padding-base'>
|
|
52
88
|
<ClearIcon className='size-control-sm! cursor-pointer! bg-transparent!' onClick={() => {
|
|
53
89
|
setDate(undefined);
|
|
54
90
|
onChange?.(undefined);
|
|
@@ -68,17 +104,31 @@ const CustomInput = forwardRef(({ value, focused, rounded, disabled, error, plac
|
|
|
68
104
|
</div>);
|
|
69
105
|
});
|
|
70
106
|
CustomInput.displayName = 'CustomInput';
|
|
71
|
-
const CustomCalendarHeader = ({ date, changeYear, changeMonth, decreaseMonth, increaseMonth, prevMonthButtonDisabled, nextMonthButtonDisabled, minYear, maxYear, }) => {
|
|
107
|
+
const CustomCalendarHeader = ({ precision, date, changeYear, changeMonth, decreaseMonth, increaseMonth, decreaseYear, increaseYear, prevMonthButtonDisabled, nextMonthButtonDisabled, prevYearButtonDisabled, nextYearButtonDisabled, minYear, maxYear, }) => {
|
|
72
108
|
const { toString } = useDateFormat();
|
|
73
109
|
const years = useMemo(() => [...Array((maxYear ?? new Date().getFullYear() + 50) - (minYear ?? 1970) + 1)].map((_, i) => (minYear ?? 1970) + i), [minYear, maxYear]);
|
|
74
110
|
const handleYearChange = (e) => {
|
|
75
|
-
|
|
76
|
-
changeYear(year);
|
|
111
|
+
changeYear(Number(e.target.value));
|
|
77
112
|
};
|
|
78
113
|
const handleMonthChange = (e) => {
|
|
79
|
-
|
|
80
|
-
changeMonth(month);
|
|
114
|
+
changeMonth(Number(e.target.value));
|
|
81
115
|
};
|
|
116
|
+
// Month precision picks the month from the grid, so the header only navigates the year.
|
|
117
|
+
if (precision === 'month') {
|
|
118
|
+
return (<div className='flex flex-col'>
|
|
119
|
+
<div className='flex items-center justify-between'>
|
|
120
|
+
<Component.Button variant='text' className='bg-transparent!' icon={NavigateBeforeOutlinedIcon} color={TextColorTypes.sub} onClick={decreaseYear} disabled={prevYearButtonDisabled}/>
|
|
121
|
+
<div className='flex items-center justify-center'>
|
|
122
|
+
<select key={`year-${date.getFullYear()}`} defaultValue={date.getFullYear()} onChange={handleYearChange}>
|
|
123
|
+
{years.map((year) => (<option key={year} value={year}>
|
|
124
|
+
{year}
|
|
125
|
+
</option>))}
|
|
126
|
+
</select>
|
|
127
|
+
</div>
|
|
128
|
+
<Component.Button variant='text' className='bg-transparent!' icon={NavigateNextOutlinedIcon} color={TextColorTypes.sub} onClick={increaseYear} disabled={nextYearButtonDisabled}/>
|
|
129
|
+
</div>
|
|
130
|
+
</div>);
|
|
131
|
+
}
|
|
82
132
|
return (<div className='flex flex-col'>
|
|
83
133
|
<div className='flex items-center justify-between'>
|
|
84
134
|
<Component.Button variant='text' className='bg-transparent!' icon={NavigateBeforeOutlinedIcon} color={TextColorTypes.sub} onClick={decreaseMonth} disabled={prevMonthButtonDisabled}/>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.jsx","sourceRoot":"","sources":["../../../../../../src/ui/composite/input/datePicker/index.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.jsx","sourceRoot":"","sources":["../../../../../../src/ui/composite/input/datePicker/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { useState } from 'react';
|
|
3
|
+
import { useMounted } from '../../../../hooks/mounted';
|
|
3
4
|
import { DatePicker } from '../datePicker';
|
|
4
5
|
import { TimePicker } from '../timePicker';
|
|
5
6
|
// TimePicker consumes a fixed 24h `HH:MM` string (it parses via split(':').map(Number) and builds its
|
|
@@ -7,6 +8,7 @@ import { TimePicker } from '../timePicker';
|
|
|
7
8
|
// so format the picker's time from the fixed 24h getHours()/getMinutes(), independent of locale.
|
|
8
9
|
const toTimeValue = (date) => `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`;
|
|
9
10
|
export const DateTimePicker = ({ name, defaultValue, value, min, max, onChange, disabled, required, error, stepMinutes, timeSelectRef, }) => {
|
|
11
|
+
const mounted = useMounted();
|
|
10
12
|
const [dateTime, setDateTime] = useState(() => {
|
|
11
13
|
const dateToUse = value ?? defaultValue;
|
|
12
14
|
if (dateToUse === undefined) {
|
|
@@ -24,7 +26,11 @@ export const DateTimePicker = ({ name, defaultValue, value, min, max, onChange,
|
|
|
24
26
|
return ret;
|
|
25
27
|
});
|
|
26
28
|
return (<>
|
|
27
|
-
<input className='absolute size-0 opacity-0' name={name}
|
|
29
|
+
<input className='absolute size-0 opacity-0' name={name}
|
|
30
|
+
// `dateTime` is step-rounded via local getMinutes/setMinutes, so for a fractional-hour browser
|
|
31
|
+
// offset (e.g. +5:30 / +5:45) its instant can differ from the server's — gate the emitted value on
|
|
32
|
+
// mount so the first client render matches the server (empty) rather than a diverging ISO string.
|
|
33
|
+
value={mounted && dateTime ? dateTime.toISOString() : ''} onChange={() => { }} required={required}/>
|
|
28
34
|
<div className='flex w-full items-center gap-control-padding-base'>
|
|
29
35
|
<div className='flex-3'>
|
|
30
36
|
<DatePicker name='' key={`date-${dateTime?.toISOString()}`} value={dateTime} min={min} max={max} onChange={(e) => {
|
|
@@ -47,7 +53,11 @@ export const DateTimePicker = ({ name, defaultValue, value, min, max, onChange,
|
|
|
47
53
|
}} disabled={disabled} required={required} error={error}/>
|
|
48
54
|
</div>
|
|
49
55
|
<div className='flex-2'>
|
|
50
|
-
<TimePicker name='' key={`time-${dateTime?.toISOString()}`} value={dateTime ? toTimeValue(dateTime) : undefined} min={
|
|
56
|
+
<TimePicker name='' key={`time-${mounted}-${dateTime?.toISOString()}`} value={mounted && dateTime ? toTimeValue(dateTime) : undefined} min={mounted && min && dateTime && min.toDateString() === dateTime.toDateString()
|
|
57
|
+
? toTimeValue(min)
|
|
58
|
+
: undefined} max={mounted && max && dateTime && max.toDateString() === dateTime.toDateString()
|
|
59
|
+
? toTimeValue(max)
|
|
60
|
+
: undefined} onChange={(e) => {
|
|
51
61
|
if (!e) {
|
|
52
62
|
setDateTime(undefined);
|
|
53
63
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.jsx","sourceRoot":"","sources":["../../../../../../src/ui/composite/input/dateTimePicker/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAGhC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,sGAAsG;AACtG,sGAAsG;AACtG,iGAAiG;AACjG,MAAM,WAAW,GAAG,CAAC,IAAU,EAAE,EAAE,CACjC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;AAEnG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,GAAG,EACH,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,WAAW,EACX,aAAa,GAad,EAAE,EAAE;IACH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE;QAC5C,MAAM,SAAS,GAAG,KAAK,IAAI,YAAY,CAAA;QACvC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAA;QAC/B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACjB,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QACtB,MAAM,IAAI,GAAG,WAAW,IAAI,EAAE,CAAA;QAC9B,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;YAC3C,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QACzB,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,CAAC,CAAA;IACF,OAAO,CACL,EACE;MAAA,CAAC,KAAK,CACJ,SAAS,CAAC,2BAA2B,CACrC,IAAI,CAAC,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.jsx","sourceRoot":"","sources":["../../../../../../src/ui/composite/input/dateTimePicker/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Rounded } from '../../../theme';
|
|
2
|
+
type FileUpload = {
|
|
3
|
+
key: string;
|
|
4
|
+
name: string;
|
|
5
|
+
mimeType: string;
|
|
6
|
+
size: number;
|
|
7
|
+
};
|
|
8
|
+
export declare const File: ({ name, accept, multiple, rounded, disabled, required, onChange, upload, className, }: {
|
|
9
|
+
name: string;
|
|
10
|
+
accept?: string;
|
|
11
|
+
multiple?: boolean;
|
|
12
|
+
rounded?: Rounded;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
required?: boolean;
|
|
15
|
+
onChange?: (value?: FileUpload | FileUpload[]) => void;
|
|
16
|
+
upload?: () => Promise<{
|
|
17
|
+
token: string;
|
|
18
|
+
url: string;
|
|
19
|
+
}>;
|
|
20
|
+
className?: string;
|
|
21
|
+
}) => import("react").JSX.Element;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import CheckCircleIcon from '@mui/icons-material/CheckCircle';
|
|
3
|
+
import ClearIcon from '@mui/icons-material/Clear';
|
|
4
|
+
import CloudUploadOutlinedIcon from '@mui/icons-material/CloudUploadOutlined';
|
|
5
|
+
import ErrorOutlinedIcon from '@mui/icons-material/ErrorOutlined';
|
|
6
|
+
import classNames from 'classnames';
|
|
7
|
+
import { useEffect, useRef, useState } from 'react';
|
|
8
|
+
import { logger } from '../../../../logger';
|
|
9
|
+
import { Component } from '../../../component';
|
|
10
|
+
import { BackgroundColorTypes, BorderColorTypes, BorderWidth, ColorTypes, getBackgroundColorTypeClassName, getBorderColorTypeClassName, getColorTypeClassName, getRoundedClassName, getTextColorTypeClassName, Rounded, TextColorTypes, } from '../../../theme';
|
|
11
|
+
export const File = ({ name, accept, multiple = false, rounded = Rounded.m, disabled, required, onChange, upload, className, }) => {
|
|
12
|
+
const pickerRef = useRef(null);
|
|
13
|
+
const [committed, setCommitted] = useState([]);
|
|
14
|
+
const [batch, setBatch] = useState([]);
|
|
15
|
+
const [open, setOpen] = useState(false);
|
|
16
|
+
const [dragging, setDragging] = useState(false);
|
|
17
|
+
const xhrsRef = useRef(new Map());
|
|
18
|
+
const removedRef = useRef(new Set());
|
|
19
|
+
const committedRef = useRef([]);
|
|
20
|
+
const idSeq = useRef(0);
|
|
21
|
+
const uploading = batch.some((it) => it.status === 'uploading');
|
|
22
|
+
useEffect(() => () => {
|
|
23
|
+
xhrsRef.current.forEach((x) => x.abort());
|
|
24
|
+
xhrsRef.current.clear();
|
|
25
|
+
}, []);
|
|
26
|
+
// onChange fires here, not inside a setCommitted updater — React Strict Mode runs updaters twice and
|
|
27
|
+
// would double-fire it. committedRef mirrors the state so handlers append to / filter the latest list
|
|
28
|
+
// instead of a stale closure `prev`.
|
|
29
|
+
const commit = (next) => {
|
|
30
|
+
committedRef.current = next;
|
|
31
|
+
setCommitted(next);
|
|
32
|
+
onChange?.(next.length === 0 ? undefined : multiple ? next : next[0]);
|
|
33
|
+
};
|
|
34
|
+
const patchBatch = (id, next) => setBatch((prev) => prev.map((it) => (it.id === id ? { ...it, ...next } : it)));
|
|
35
|
+
const addFiles = (selected) => {
|
|
36
|
+
if (!selected || selected.length === 0) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
setOpen(true);
|
|
40
|
+
const picked = multiple ? Array.from(selected) : Array.from(selected).slice(0, 1);
|
|
41
|
+
const created = picked.map((f) => ({
|
|
42
|
+
id: `u${idSeq.current++}`,
|
|
43
|
+
name: f.name,
|
|
44
|
+
size: f.size,
|
|
45
|
+
progress: 0,
|
|
46
|
+
status: 'uploading',
|
|
47
|
+
}));
|
|
48
|
+
if (multiple) {
|
|
49
|
+
setBatch((prev) => [...prev, ...created]);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// single-file: a new selection replaces the previous one. Abort any prior XHR that exists (its onload
|
|
53
|
+
// won't fire); an item still awaiting `upload()` (no XHR yet) is marked removed so its pre-send bail
|
|
54
|
+
// drops it before POSTing the superseded file. Only pre-XHR items need the marker, keeping removedRef
|
|
55
|
+
// bounded.
|
|
56
|
+
batch.forEach((it) => {
|
|
57
|
+
const xhr = xhrsRef.current.get(it.id);
|
|
58
|
+
if (xhr) {
|
|
59
|
+
xhr.abort();
|
|
60
|
+
}
|
|
61
|
+
else if (it.status === 'uploading') {
|
|
62
|
+
removedRef.current.add(it.id);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
xhrsRef.current.clear();
|
|
66
|
+
setBatch(created);
|
|
67
|
+
}
|
|
68
|
+
picked.forEach(async (f, i) => {
|
|
69
|
+
const id = created[i].id;
|
|
70
|
+
const fail = (error) => {
|
|
71
|
+
xhrsRef.current.delete(id);
|
|
72
|
+
logger.error('upload', { name, error });
|
|
73
|
+
patchBatch(id, { status: 'error' });
|
|
74
|
+
};
|
|
75
|
+
if (!upload) {
|
|
76
|
+
fail(new Error('upload action not configured'));
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const { token, url } = await upload();
|
|
81
|
+
// The item may have been removed (single-file re-select / removeItem) while `upload()` was in flight,
|
|
82
|
+
// before any XHR existed to abort. Bail before sending so its bytes are never POSTed (no wasted
|
|
83
|
+
// quota, no orphan object); the onload guard below only stops the stale ref from committing.
|
|
84
|
+
if (removedRef.current.has(id)) {
|
|
85
|
+
removedRef.current.delete(id);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const xhr = new XMLHttpRequest();
|
|
89
|
+
xhrsRef.current.set(id, xhr);
|
|
90
|
+
// Send the one-time token and the original filename as request headers, not query params: a URL's
|
|
91
|
+
// query string is captured verbatim by proxy / CDN / access logs, leaking the replayable token and a
|
|
92
|
+
// filename that can be a direct identifier; header values are not written to those request-line logs.
|
|
93
|
+
xhr.open('POST', url);
|
|
94
|
+
xhr.setRequestHeader('authorization', `Bearer ${token}`);
|
|
95
|
+
xhr.setRequestHeader('x-upload-filename', encodeURIComponent(f.name));
|
|
96
|
+
xhr.setRequestHeader('content-type', f.type || 'application/octet-stream');
|
|
97
|
+
xhr.upload.onprogress = (e) => {
|
|
98
|
+
if (e.lengthComputable) {
|
|
99
|
+
patchBatch(id, { progress: e.total > 0 ? Math.round((e.loaded / e.total) * 100) : 100 });
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
xhr.onload = () => {
|
|
103
|
+
xhrsRef.current.delete(id);
|
|
104
|
+
if (removedRef.current.has(id)) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (xhr.status < 200 || xhr.status >= 300) {
|
|
108
|
+
fail(new Error(`upload failed (${xhr.status})`));
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
let ref;
|
|
112
|
+
try {
|
|
113
|
+
ref = JSON.parse(xhr.responseText);
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
fail(err);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
patchBatch(id, { progress: 100, status: 'done', ref });
|
|
120
|
+
commit(multiple ? [...committedRef.current, ref] : [ref]);
|
|
121
|
+
};
|
|
122
|
+
xhr.onerror = () => fail(new Error('upload failed'));
|
|
123
|
+
xhr.send(f);
|
|
124
|
+
}
|
|
125
|
+
catch (e) {
|
|
126
|
+
fail(e);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
if (pickerRef.current) {
|
|
130
|
+
pickerRef.current.value = '';
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
const removeItem = (item) => {
|
|
134
|
+
const xhr = xhrsRef.current.get(item.id);
|
|
135
|
+
if (xhr) {
|
|
136
|
+
xhr.abort();
|
|
137
|
+
xhrsRef.current.delete(item.id);
|
|
138
|
+
}
|
|
139
|
+
else if (item.status === 'uploading') {
|
|
140
|
+
removedRef.current.add(item.id);
|
|
141
|
+
}
|
|
142
|
+
setBatch((prev) => prev.filter((it) => it.id !== item.id));
|
|
143
|
+
if (item.ref) {
|
|
144
|
+
commit(committedRef.current.filter((c) => c.key !== item.ref?.key));
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
const removeCommitted = (key) => {
|
|
148
|
+
setBatch((prev) => prev.filter((it) => it.ref?.key !== key));
|
|
149
|
+
commit(committedRef.current.filter((c) => c.key !== key));
|
|
150
|
+
};
|
|
151
|
+
return (<div className={classNames('flex w-full flex-col gap-control-padding-md', className)}>
|
|
152
|
+
<input className='absolute size-0 opacity-0' name={name} value={committed.length === 0 ? '' : JSON.stringify(multiple ? committed : committed[0])} onChange={() => { }} required={required}/>
|
|
153
|
+
<input ref={pickerRef} type='file' accept={accept} multiple={multiple} disabled={disabled} className='hidden' onChange={(e) => addFiles(e.target.files)}/>
|
|
154
|
+
<div onClick={() => {
|
|
155
|
+
if (!disabled) {
|
|
156
|
+
pickerRef.current?.click();
|
|
157
|
+
}
|
|
158
|
+
}} onDragOver={(e) => {
|
|
159
|
+
if (disabled) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
e.preventDefault();
|
|
163
|
+
setDragging(true);
|
|
164
|
+
}} onDragLeave={() => setDragging(false)} onDrop={(e) => {
|
|
165
|
+
if (disabled) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
e.preventDefault();
|
|
169
|
+
setDragging(false);
|
|
170
|
+
addFiles(e.dataTransfer.files);
|
|
171
|
+
}} className={classNames('flex w-full flex-col items-center justify-center gap-control-padding-sm px-2xl py-3xl text-center outline-dashed', disabled ? 'clickable-disabled' : 'clickable-enabled', getRoundedClassName(rounded), getBackgroundColorTypeClassName(dragging ? BackgroundColorTypes.container : BackgroundColorTypes.default), getBorderColorTypeClassName({
|
|
172
|
+
color: dragging ? BorderColorTypes.primary : BorderColorTypes.default,
|
|
173
|
+
container: true,
|
|
174
|
+
width: BorderWidth.lg,
|
|
175
|
+
type: 'outline',
|
|
176
|
+
}))}>
|
|
177
|
+
<CloudUploadOutlinedIcon className='size-control-3xl! opacity-60'/>
|
|
178
|
+
<Component.Typography.P color={TextColorTypes.sub}>Drag & drop to upload</Component.Typography.P>
|
|
179
|
+
<Component.Typography.P color={TextColorTypes.primary}>or browse</Component.Typography.P>
|
|
180
|
+
</div>
|
|
181
|
+
{committed.length > 0 && (<div className='flex w-full flex-wrap items-center gap-control-padding-base'>
|
|
182
|
+
{committed.map((c) => (<div key={c.key} className={classNames('flex items-center gap-control-padding-sm px-control-padding-base py-control-padding-md', getBackgroundColorTypeClassName(BackgroundColorTypes.default), getRoundedClassName(rounded), getBorderColorTypeClassName({
|
|
183
|
+
color: BorderColorTypes.default,
|
|
184
|
+
container: true,
|
|
185
|
+
width: BorderWidth.base,
|
|
186
|
+
type: 'outline',
|
|
187
|
+
}))}>
|
|
188
|
+
<span className='truncate text-sm'>{c.name}</span>
|
|
189
|
+
{!disabled && (<ClearIcon className='size-control-sm! shrink-0 cursor-pointer! bg-transparent!' onClick={() => removeCommitted(c.key)}/>)}
|
|
190
|
+
</div>))}
|
|
191
|
+
</div>)}
|
|
192
|
+
{open && (<div className={classNames('fixed inset-0 z-popup flex items-center justify-center', getBackgroundColorTypeClassName(BackgroundColorTypes.overlay))} onClick={(e) => {
|
|
193
|
+
if (e.target === e.currentTarget && !uploading) {
|
|
194
|
+
setOpen(false);
|
|
195
|
+
}
|
|
196
|
+
}}>
|
|
197
|
+
<Component.ModalCard showCloseButton={false}>
|
|
198
|
+
<Component.Typography.H4 className='font-bold' container>
|
|
199
|
+
Upload
|
|
200
|
+
</Component.Typography.H4>
|
|
201
|
+
{batch.length > 0 && (<div className='flex flex-col gap-control-padding-md'>
|
|
202
|
+
{batch.map((it) => (<div key={it.id} className='flex items-center gap-base'>
|
|
203
|
+
<div className='flex min-w-0 flex-1 flex-col gap-control-padding-sm'>
|
|
204
|
+
<div className='flex items-center justify-between gap-base'>
|
|
205
|
+
<span className='truncate text-sm'>{it.name}</span>
|
|
206
|
+
<Component.Typography.Label color={TextColorTypes.sub} className='text-xs' container>
|
|
207
|
+
{`${Math.ceil(it.size / 1024)} KB`}
|
|
208
|
+
</Component.Typography.Label>
|
|
209
|
+
</div>
|
|
210
|
+
{it.status === 'uploading' && (<div className={classNames('h-control-xs w-full overflow-hidden', getRoundedClassName(Rounded.s), getBackgroundColorTypeClassName(BackgroundColorTypes.container))}>
|
|
211
|
+
<div className={classNames('h-full transition-all duration-300 ease-out', getColorTypeClassName(ColorTypes.primary, false))} style={{ width: `${it.progress}%` }}/>
|
|
212
|
+
</div>)}
|
|
213
|
+
</div>
|
|
214
|
+
{it.status === 'uploading' ? (<Component.Typography.Label color={TextColorTypes.sub} className='w-control-2xl shrink-0 text-right text-xs' container>
|
|
215
|
+
{it.progress}%
|
|
216
|
+
</Component.Typography.Label>) : it.status === 'done' ? (<CheckCircleIcon className={classNames('size-control-base! shrink-0', getTextColorTypeClassName(TextColorTypes.success, true))}/>) : (<ErrorOutlinedIcon className={classNames('size-control-base! shrink-0', getTextColorTypeClassName(TextColorTypes.error, true))}/>)}
|
|
217
|
+
<ClearIcon className='size-control-sm! shrink-0 cursor-pointer! bg-transparent!' onClick={() => removeItem(it)}/>
|
|
218
|
+
</div>))}
|
|
219
|
+
</div>)}
|
|
220
|
+
<Component.Button type='button' variant='colored' color={ColorTypes.primary} rounded={rounded} className='w-full' label='Done' disabled={uploading} onClick={() => setOpen(false)}/>
|
|
221
|
+
</Component.ModalCard>
|
|
222
|
+
</div>)}
|
|
223
|
+
</div>);
|
|
224
|
+
};
|
|
225
|
+
//# sourceMappingURL=index.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.jsx","sourceRoot":"","sources":["../../../../../../src/ui/composite/input/file/index.tsx"],"names":[],"mappings":"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"}
|