rupoui 1.3.6 → 1.3.8
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/README.md +55 -0
- package/dist/components/datepicker/SegmentedDatePickerInput.d.ts +1 -1
- package/dist/components/daterangepicker/DateRangePicker.d.ts +4 -0
- package/dist/components/daterangepicker/DateRangePickerCalendar.d.ts +12 -0
- package/dist/components/daterangepicker/DateRangePickerDay.d.ts +18 -0
- package/dist/components/daterangepicker/SegmentedDateRangePickerInput.d.ts +15 -0
- package/dist/components/daterangepicker/daterangepicker.controller.d.ts +12 -0
- package/dist/components/daterangepicker/daterangepicker.state.d.ts +4 -0
- package/dist/components/daterangepicker/daterangepicker.types.d.ts +35 -0
- package/dist/components/daterangepicker/index.d.ts +2 -0
- package/dist/index.cjs +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +5945 -5101
- package/dist/provider/types.d.ts +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -248,6 +248,61 @@ import { DatePicker } from "rupoui";
|
|
|
248
248
|
- `size`: `sm`, `md`, `lg`.
|
|
249
249
|
- `radius`: `sm`, `md`, `lg`, `full`.
|
|
250
250
|
|
|
251
|
+
### DateRangePicker
|
|
252
|
+
|
|
253
|
+
A component for selecting a start and end date with calendar range selection, hover preview, and text/segmented input modes.
|
|
254
|
+
|
|
255
|
+
```tsx
|
|
256
|
+
import { DateRangePicker } from "rupoui";
|
|
257
|
+
import { useState } from "react";
|
|
258
|
+
|
|
259
|
+
const Example = () => {
|
|
260
|
+
const [range, setRange] = useState<{ start: Date | null; end: Date | null }>({
|
|
261
|
+
start: null,
|
|
262
|
+
end: null,
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
return (
|
|
266
|
+
<>
|
|
267
|
+
<DateRangePicker
|
|
268
|
+
label="Travel Dates"
|
|
269
|
+
value={range}
|
|
270
|
+
onChange={setRange}
|
|
271
|
+
/>
|
|
272
|
+
|
|
273
|
+
<DateRangePicker
|
|
274
|
+
label="Range (Two Inputs)"
|
|
275
|
+
rangeInput="two"
|
|
276
|
+
value={range}
|
|
277
|
+
onChange={setRange}
|
|
278
|
+
/>
|
|
279
|
+
|
|
280
|
+
<DateRangePicker
|
|
281
|
+
label="Range (Segmented)"
|
|
282
|
+
inputMode="segmented"
|
|
283
|
+
value={range}
|
|
284
|
+
onChange={setRange}
|
|
285
|
+
/>
|
|
286
|
+
</>
|
|
287
|
+
);
|
|
288
|
+
};
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
**Props:**
|
|
292
|
+
|
|
293
|
+
- **Field Props**: `label`, `description`, `errorMessage`, `fullWidth`.
|
|
294
|
+
- **State**: `value`, `defaultValue`, `onChange`.
|
|
295
|
+
- **Validation**: `isInvalid`, `isDisabled`, `isReadOnly`, `minDate`, `maxDate`, `disabledDates`.
|
|
296
|
+
- **Range Input**:
|
|
297
|
+
- `rangeInput`: `single` (default) or `two`.
|
|
298
|
+
- `separator`: separator string between start/end (default: ` – `).
|
|
299
|
+
- `inputMode`: `text` (default) or `segmented`.
|
|
300
|
+
- **Style Variants**:
|
|
301
|
+
- `variant`: `solid` (default), `bordered`, `flat`, `ghost`.
|
|
302
|
+
- `color`: `primary`, `secondary`, `success`, `warning`, `danger`.
|
|
303
|
+
- `size`: `sm`, `md`, `lg`.
|
|
304
|
+
- `radius`: `sm`, `md`, `lg`, `full`.
|
|
305
|
+
|
|
251
306
|
### Calendar
|
|
252
307
|
|
|
253
308
|
A pure renderer component for displaying a calendar grid with full keyboard navigation and accessibility support. It uses an external engine for state management, giving you complete control over the calendar's behavior.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
+
import { FieldProps } from '../field/field.types';
|
|
2
3
|
import { datePicker } from './datepicker.styles';
|
|
3
4
|
import { DatePickerConfig, DatePickerState } from './datepicker.types';
|
|
4
|
-
import { FieldProps } from '../field/field.types';
|
|
5
5
|
|
|
6
6
|
interface SegmentedDatePickerInputProps extends Partial<FieldProps> {
|
|
7
7
|
state: DatePickerState;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { datePicker } from '../datepicker/datepicker.styles';
|
|
3
|
+
import { DateRangePickerConfig, DateRangePickerState } from './daterangepicker.types';
|
|
4
|
+
|
|
5
|
+
interface DateRangePickerCalendarProps {
|
|
6
|
+
state: DateRangePickerState;
|
|
7
|
+
config: DateRangePickerConfig;
|
|
8
|
+
onUpdate: (newState: DateRangePickerState) => void;
|
|
9
|
+
styles: ReturnType<typeof datePicker>;
|
|
10
|
+
}
|
|
11
|
+
export declare const DateRangePickerCalendar: React.FC<DateRangePickerCalendarProps>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { CalendarCell } from '../calendar/calendar.types';
|
|
3
|
+
import { datePicker } from '../datepicker/datepicker.styles';
|
|
4
|
+
import { DateRangePickerConfig, DateRangePickerState } from './daterangepicker.types';
|
|
5
|
+
|
|
6
|
+
interface DateRangePickerDayProps {
|
|
7
|
+
cell: CalendarCell;
|
|
8
|
+
state: DateRangePickerState;
|
|
9
|
+
config: DateRangePickerConfig;
|
|
10
|
+
onUpdate: (newState: DateRangePickerState) => void;
|
|
11
|
+
styles: ReturnType<typeof datePicker>;
|
|
12
|
+
isStart: boolean;
|
|
13
|
+
isEnd: boolean;
|
|
14
|
+
isInRange: boolean;
|
|
15
|
+
isInPreviewRange: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare const DateRangePickerDay: React.FC<DateRangePickerDayProps>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { datePicker } from '../datepicker/datepicker.styles';
|
|
3
|
+
import { DateRangePickerState } from './daterangepicker.types';
|
|
4
|
+
|
|
5
|
+
interface SegmentedDateRangePickerInputProps {
|
|
6
|
+
state: DateRangePickerState;
|
|
7
|
+
onUpdate: (newState: DateRangePickerState) => void;
|
|
8
|
+
styles: ReturnType<typeof datePicker>;
|
|
9
|
+
separator?: string;
|
|
10
|
+
className?: string;
|
|
11
|
+
isDisabled?: boolean;
|
|
12
|
+
isReadOnly?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const SegmentedDateRangePickerInput: React.FC<SegmentedDateRangePickerInputProps>;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DateRangePickerConfig, DateRangePickerState, DateRangeValue } from './daterangepicker.types';
|
|
2
|
+
|
|
3
|
+
export declare function openPicker(state: DateRangePickerState, shouldFocus?: boolean): DateRangePickerState;
|
|
4
|
+
export declare function closePicker(state: DateRangePickerState): DateRangePickerState;
|
|
5
|
+
export declare function togglePicker(state: DateRangePickerState): DateRangePickerState;
|
|
6
|
+
export declare function goToNextMonth(state: DateRangePickerState): DateRangePickerState;
|
|
7
|
+
export declare function goToPreviousMonth(state: DateRangePickerState): DateRangePickerState;
|
|
8
|
+
export declare function goToMonth(state: DateRangePickerState, date: Date): DateRangePickerState;
|
|
9
|
+
export declare function setFocusedDate(state: DateRangePickerState, date: Date): DateRangePickerState;
|
|
10
|
+
export declare function setHoverDate(state: DateRangePickerState, date: Date | null): DateRangePickerState;
|
|
11
|
+
export declare function selectRangeDate(state: DateRangePickerState, date: Date, config?: DateRangePickerConfig): DateRangePickerState;
|
|
12
|
+
export declare function normalizeAndSortRange(range: DateRangeValue): DateRangeValue;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { DateRangePickerConfig, DateRangePickerState, DateRangeValue } from './daterangepicker.types';
|
|
2
|
+
|
|
3
|
+
export declare function createDateRangePickerState(config?: DateRangePickerConfig): DateRangePickerState;
|
|
4
|
+
export declare function normalizeDateRangeValue(range?: DateRangeValue): DateRangeValue;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { FieldProps } from '../field/field.types';
|
|
2
|
+
|
|
3
|
+
export type DateRangeValue = {
|
|
4
|
+
start: Date | null;
|
|
5
|
+
end: Date | null;
|
|
6
|
+
};
|
|
7
|
+
export type DateRangePickerConfig = {
|
|
8
|
+
value?: DateRangeValue;
|
|
9
|
+
defaultValue?: DateRangeValue;
|
|
10
|
+
minDate?: Date;
|
|
11
|
+
maxDate?: Date;
|
|
12
|
+
weekStartsOn?: 0 | 1;
|
|
13
|
+
disabledDates?: Date[] | ((date: Date) => boolean);
|
|
14
|
+
closeOnSelect?: boolean;
|
|
15
|
+
inputMode?: "text" | "segmented";
|
|
16
|
+
};
|
|
17
|
+
export type DateRangePickerState = {
|
|
18
|
+
isOpen: boolean;
|
|
19
|
+
viewDate: Date;
|
|
20
|
+
focusedDate: Date | null;
|
|
21
|
+
autoFocus: boolean;
|
|
22
|
+
range: DateRangeValue;
|
|
23
|
+
hoverDate: Date | null;
|
|
24
|
+
};
|
|
25
|
+
export interface DateRangePickerProps extends FieldProps, Omit<DateRangePickerConfig, "value"> {
|
|
26
|
+
value?: DateRangeValue;
|
|
27
|
+
onChange?: (value: DateRangeValue) => void;
|
|
28
|
+
separator?: string;
|
|
29
|
+
rangeInput?: "single" | "two";
|
|
30
|
+
inputMode?: "text" | "segmented";
|
|
31
|
+
className?: string;
|
|
32
|
+
placeholder?: string;
|
|
33
|
+
startPlaceholder?: string;
|
|
34
|
+
endPlaceholder?: string;
|
|
35
|
+
}
|