@optimum-intelligence/opti-ui 0.0.0-stage → 0.2.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.
- package/LICENSE +23 -0
- package/README.md +161 -2
- package/dist/components/accordion/Accordion.d.ts +17 -0
- package/dist/components/accordion/Accordion.js +204 -0
- package/dist/components/accordion/Accordion.js.map +1 -0
- package/dist/components/alert/Alert.d.ts +18 -0
- package/dist/components/alert/Alert.js +164 -0
- package/dist/components/alert/Alert.js.map +1 -0
- package/dist/components/app-shell/AppShell.d.ts +97 -0
- package/dist/components/app-shell/AppShell.js +689 -0
- package/dist/components/app-shell/AppShell.js.map +1 -0
- package/dist/components/avatar/Avatar.d.ts +21 -0
- package/dist/components/avatar/Avatar.js +190 -0
- package/dist/components/avatar/Avatar.js.map +1 -0
- package/dist/components/badge/Badge.d.ts +16 -0
- package/dist/components/badge/Badge.js +94 -0
- package/dist/components/badge/Badge.js.map +1 -0
- package/dist/components/breadcrumbs/Breadcrumbs.d.ts +18 -0
- package/dist/components/breadcrumbs/Breadcrumbs.js +154 -0
- package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -0
- package/dist/components/button/Button.d.ts +23 -0
- package/dist/components/button/Button.js +159 -0
- package/dist/components/button/Button.js.map +1 -0
- package/dist/components/calendar/Calendar.d.ts +59 -0
- package/dist/components/calendar/Calendar.js +709 -0
- package/dist/components/calendar/Calendar.js.map +1 -0
- package/dist/components/calendar/date-utils.d.ts +32 -0
- package/dist/components/calendar/date-utils.js +112 -0
- package/dist/components/calendar/date-utils.js.map +1 -0
- package/dist/components/card/Card.d.ts +42 -0
- package/dist/components/card/Card.js +82 -0
- package/dist/components/card/Card.js.map +1 -0
- package/dist/components/choice/Choice.d.ts +32 -0
- package/dist/components/choice/Choice.js +371 -0
- package/dist/components/choice/Choice.js.map +1 -0
- package/dist/components/collapsible/Collapsible.d.ts +15 -0
- package/dist/components/collapsible/Collapsible.js +155 -0
- package/dist/components/collapsible/Collapsible.js.map +1 -0
- package/dist/components/combobox/Combobox.d.ts +68 -0
- package/dist/components/combobox/Combobox.js +752 -0
- package/dist/components/combobox/Combobox.js.map +1 -0
- package/dist/components/command-palette/CommandPalette.d.ts +52 -0
- package/dist/components/command-palette/CommandPalette.js +328 -0
- package/dist/components/command-palette/CommandPalette.js.map +1 -0
- package/dist/components/data-table/DataTable.d.ts +111 -0
- package/dist/components/data-table/DataTable.js +444 -0
- package/dist/components/data-table/DataTable.js.map +1 -0
- package/dist/components/date-picker/DatePicker.d.ts +50 -0
- package/dist/components/date-picker/DatePicker.js +485 -0
- package/dist/components/date-picker/DatePicker.js.map +1 -0
- package/dist/components/date-picker/DateRangePicker.d.ts +39 -0
- package/dist/components/date-picker/DateRangePicker.js +339 -0
- package/dist/components/date-picker/DateRangePicker.js.map +1 -0
- package/dist/components/date-picker/PickerField.d.ts +38 -0
- package/dist/components/date-picker/PickerField.js +238 -0
- package/dist/components/date-picker/PickerField.js.map +1 -0
- package/dist/components/dialog/Dialog.d.ts +70 -0
- package/dist/components/dialog/Dialog.js +354 -0
- package/dist/components/dialog/Dialog.js.map +1 -0
- package/dist/components/drawer/Drawer.d.ts +39 -0
- package/dist/components/drawer/Drawer.js +225 -0
- package/dist/components/drawer/Drawer.js.map +1 -0
- package/dist/components/empty-state/EmptyState.d.ts +12 -0
- package/dist/components/empty-state/EmptyState.js +116 -0
- package/dist/components/empty-state/EmptyState.js.map +1 -0
- package/dist/components/field/Field.d.ts +36 -0
- package/dist/components/field/Field.js +337 -0
- package/dist/components/field/Field.js.map +1 -0
- package/dist/components/file-upload/FileUpload.d.ts +91 -0
- package/dist/components/file-upload/FileUpload.js +714 -0
- package/dist/components/file-upload/FileUpload.js.map +1 -0
- package/dist/components/input/Input.d.ts +49 -0
- package/dist/components/input/Input.js +538 -0
- package/dist/components/input/Input.js.map +1 -0
- package/dist/components/link/Link.d.ts +17 -0
- package/dist/components/link/Link.js +91 -0
- package/dist/components/link/Link.js.map +1 -0
- package/dist/components/menu/Menu.d.ts +79 -0
- package/dist/components/menu/Menu.js +615 -0
- package/dist/components/menu/Menu.js.map +1 -0
- package/dist/components/number-field/NumberField.d.ts +16 -0
- package/dist/components/number-field/NumberField.js +188 -0
- package/dist/components/number-field/NumberField.js.map +1 -0
- package/dist/components/pagination/Pagination.d.ts +34 -0
- package/dist/components/pagination/Pagination.js +244 -0
- package/dist/components/pagination/Pagination.js.map +1 -0
- package/dist/components/popover/Popover.d.ts +22 -0
- package/dist/components/popover/Popover.js +186 -0
- package/dist/components/popover/Popover.js.map +1 -0
- package/dist/components/preview-card/PreviewCard.d.ts +20 -0
- package/dist/components/preview-card/PreviewCard.js +114 -0
- package/dist/components/preview-card/PreviewCard.js.map +1 -0
- package/dist/components/progress/Progress.d.ts +20 -0
- package/dist/components/progress/Progress.js +169 -0
- package/dist/components/progress/Progress.js.map +1 -0
- package/dist/components/scroll-area/ScrollArea.d.ts +8 -0
- package/dist/components/scroll-area/ScrollArea.js +112 -0
- package/dist/components/scroll-area/ScrollArea.js.map +1 -0
- package/dist/components/search-input/SearchInput.d.ts +14 -0
- package/dist/components/search-input/SearchInput.js +114 -0
- package/dist/components/search-input/SearchInput.js.map +1 -0
- package/dist/components/select/Select.d.ts +66 -0
- package/dist/components/select/Select.js +601 -0
- package/dist/components/select/Select.js.map +1 -0
- package/dist/components/separator/Separator.d.ts +4 -0
- package/dist/components/separator/Separator.js +46 -0
- package/dist/components/separator/Separator.js.map +1 -0
- package/dist/components/skeleton/Skeleton.d.ts +16 -0
- package/dist/components/skeleton/Skeleton.js +135 -0
- package/dist/components/skeleton/Skeleton.js.map +1 -0
- package/dist/components/slider/Slider.d.ts +11 -0
- package/dist/components/slider/Slider.js +107 -0
- package/dist/components/slider/Slider.js.map +1 -0
- package/dist/components/spinner/Spinner.d.ts +9 -0
- package/dist/components/spinner/Spinner.js +78 -0
- package/dist/components/spinner/Spinner.js.map +1 -0
- package/dist/components/stack/Stack.d.ts +23 -0
- package/dist/components/stack/Stack.js +79 -0
- package/dist/components/stack/Stack.js.map +1 -0
- package/dist/components/stat-card/StatCard.d.ts +22 -0
- package/dist/components/stat-card/StatCard.js +153 -0
- package/dist/components/stat-card/StatCard.js.map +1 -0
- package/dist/components/stepper/Stepper.d.ts +30 -0
- package/dist/components/stepper/Stepper.js +131 -0
- package/dist/components/stepper/Stepper.js.map +1 -0
- package/dist/components/table/Table.d.ts +53 -0
- package/dist/components/table/Table.js +221 -0
- package/dist/components/table/Table.js.map +1 -0
- package/dist/components/tabs/Tabs.d.ts +19 -0
- package/dist/components/tabs/Tabs.js +183 -0
- package/dist/components/tabs/Tabs.js.map +1 -0
- package/dist/components/tag/Tag.d.ts +22 -0
- package/dist/components/tag/Tag.js +121 -0
- package/dist/components/tag/Tag.js.map +1 -0
- package/dist/components/toast/Toast.d.ts +34 -0
- package/dist/components/toast/Toast.js +187 -0
- package/dist/components/toast/Toast.js.map +1 -0
- package/dist/components/toggle/Toggle.d.ts +31 -0
- package/dist/components/toggle/Toggle.js +197 -0
- package/dist/components/toggle/Toggle.js.map +1 -0
- package/dist/components/toolbar/Toolbar.d.ts +21 -0
- package/dist/components/toolbar/Toolbar.js +239 -0
- package/dist/components/toolbar/Toolbar.js.map +1 -0
- package/dist/components/tooltip/Tooltip.d.ts +33 -0
- package/dist/components/tooltip/Tooltip.js +182 -0
- package/dist/components/tooltip/Tooltip.js.map +1 -0
- package/dist/components/typography/Typography.d.ts +32 -0
- package/dist/components/typography/Typography.js +183 -0
- package/dist/components/typography/Typography.js.map +1 -0
- package/dist/fonts.css +3 -0
- package/dist/icons/index.d.ts +125 -0
- package/dist/icons/index.js +174 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.js +56 -0
- package/dist/opti-ui.css +5365 -0
- package/dist/theme/ThemeProvider.d.ts +22 -0
- package/dist/theme/ThemeProvider.js +115 -0
- package/dist/theme/ThemeProvider.js.map +1 -0
- package/dist/theme/index.d.ts +2 -0
- package/dist/utils/cx.d.ts +10 -0
- package/dist/utils/cx.js +18 -0
- package/dist/utils/cx.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/portal.d.ts +8 -0
- package/dist/utils/portal.js +16 -0
- package/dist/utils/portal.js.map +1 -0
- package/dist/utils/primitive.d.ts +13 -0
- package/dist/utils/primitive.js +61 -0
- package/dist/utils/primitive.js.map +1 -0
- package/dist/utils/search.d.ts +4 -0
- package/dist/utils/search.js +15 -0
- package/dist/utils/search.js.map +1 -0
- package/package.json +71 -4
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Button } from "../button/Button.js";
|
|
3
|
+
import { datePart, formatDate, pad, timePart, todayIso } from "../calendar/date-utils.js";
|
|
4
|
+
import { Calendar } from "../calendar/Calendar.js";
|
|
5
|
+
import { PickerField, useOpenState } from "./PickerField.js";
|
|
6
|
+
import { c } from "react/compiler-runtime";
|
|
7
|
+
import * as React from "react";
|
|
8
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
//#region src/components/date-picker/DatePicker.tsx
|
|
10
|
+
var defaultLabels = {
|
|
11
|
+
today: "Today",
|
|
12
|
+
clear: "Clear",
|
|
13
|
+
done: "Done",
|
|
14
|
+
time: "Time",
|
|
15
|
+
hours: "Hours",
|
|
16
|
+
minutes: "Minutes",
|
|
17
|
+
seconds: "Seconds"
|
|
18
|
+
};
|
|
19
|
+
function withinBounds(value, min, max) {
|
|
20
|
+
if (min && value < min) return min;
|
|
21
|
+
if (max && value > max) return max;
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
/** 0, `step`, 2 × `step`… below `limit`, plus `current` when it falls between steps. */
|
|
25
|
+
function timeOptions(limit, step, current) {
|
|
26
|
+
const options = Array.from({ length: Math.ceil(limit / step) }, (_, index) => index * step);
|
|
27
|
+
return options.includes(current) ? options : [...options, current].sort((a, b) => a - b);
|
|
28
|
+
}
|
|
29
|
+
/** Hour, minute and (below one-minute steps) second lists: unlike a native time input, always 24-hour. */
|
|
30
|
+
function TimeField(t0) {
|
|
31
|
+
const $ = c(24);
|
|
32
|
+
const { value, step, labels, onChange } = t0;
|
|
33
|
+
let t1;
|
|
34
|
+
let t2;
|
|
35
|
+
let t3;
|
|
36
|
+
let t4;
|
|
37
|
+
let t5;
|
|
38
|
+
let t6;
|
|
39
|
+
if ($[0] !== labels.hours || $[1] !== labels.minutes || $[2] !== labels.seconds || $[3] !== labels.time || $[4] !== onChange || $[5] !== step || $[6] !== value) {
|
|
40
|
+
const [t7, t8, t9] = value.split(":").map(_temp);
|
|
41
|
+
const hours = t7 === void 0 ? 0 : t7;
|
|
42
|
+
const minutes = t8 === void 0 ? 0 : t8;
|
|
43
|
+
const seconds = t9 === void 0 ? 0 : t9;
|
|
44
|
+
const withSeconds = step % 60 !== 0 || value.length > 5;
|
|
45
|
+
const parts = [
|
|
46
|
+
{
|
|
47
|
+
label: labels.hours,
|
|
48
|
+
value: hours,
|
|
49
|
+
options: timeOptions(24, step % 3600 === 0 ? Math.min(step / 3600, 24) : 1, hours)
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
label: labels.minutes,
|
|
53
|
+
value: minutes,
|
|
54
|
+
options: timeOptions(60, step % 60 === 0 && step < 3600 ? step / 60 : 1, minutes)
|
|
55
|
+
},
|
|
56
|
+
...withSeconds ? [{
|
|
57
|
+
label: labels.seconds,
|
|
58
|
+
value: seconds,
|
|
59
|
+
options: timeOptions(60, step < 60 ? step : 1, seconds)
|
|
60
|
+
}] : []
|
|
61
|
+
];
|
|
62
|
+
t3 = "group";
|
|
63
|
+
t4 = labels.time;
|
|
64
|
+
t5 = "oui-date-picker__time";
|
|
65
|
+
if ($[13] !== labels.time) {
|
|
66
|
+
t6 = /* @__PURE__ */ jsx("span", { children: labels.time });
|
|
67
|
+
$[13] = labels.time;
|
|
68
|
+
$[14] = t6;
|
|
69
|
+
} else t6 = $[14];
|
|
70
|
+
t1 = "oui-date-picker__time-parts";
|
|
71
|
+
t2 = parts.map((part_0, index) => /* @__PURE__ */ jsxs(React.Fragment, { children: [index > 0 && /* @__PURE__ */ jsx("span", {
|
|
72
|
+
"aria-hidden": "true",
|
|
73
|
+
children: ":"
|
|
74
|
+
}), /* @__PURE__ */ jsx("select", {
|
|
75
|
+
className: "oui-input",
|
|
76
|
+
"data-size": "sm",
|
|
77
|
+
"aria-label": part_0.label,
|
|
78
|
+
value: part_0.value,
|
|
79
|
+
onChange: (event) => {
|
|
80
|
+
const next = parts.map((item, position) => pad(position === index ? Number(event.target.value) : item.value));
|
|
81
|
+
onChange(next.join(":"));
|
|
82
|
+
},
|
|
83
|
+
children: part_0.options.map(_temp2)
|
|
84
|
+
})] }, part_0.label));
|
|
85
|
+
$[0] = labels.hours;
|
|
86
|
+
$[1] = labels.minutes;
|
|
87
|
+
$[2] = labels.seconds;
|
|
88
|
+
$[3] = labels.time;
|
|
89
|
+
$[4] = onChange;
|
|
90
|
+
$[5] = step;
|
|
91
|
+
$[6] = value;
|
|
92
|
+
$[7] = t1;
|
|
93
|
+
$[8] = t2;
|
|
94
|
+
$[9] = t3;
|
|
95
|
+
$[10] = t4;
|
|
96
|
+
$[11] = t5;
|
|
97
|
+
$[12] = t6;
|
|
98
|
+
} else {
|
|
99
|
+
t1 = $[7];
|
|
100
|
+
t2 = $[8];
|
|
101
|
+
t3 = $[9];
|
|
102
|
+
t4 = $[10];
|
|
103
|
+
t5 = $[11];
|
|
104
|
+
t6 = $[12];
|
|
105
|
+
}
|
|
106
|
+
let t7;
|
|
107
|
+
if ($[15] !== t1 || $[16] !== t2) {
|
|
108
|
+
t7 = /* @__PURE__ */ jsx("div", {
|
|
109
|
+
className: t1,
|
|
110
|
+
children: t2
|
|
111
|
+
});
|
|
112
|
+
$[15] = t1;
|
|
113
|
+
$[16] = t2;
|
|
114
|
+
$[17] = t7;
|
|
115
|
+
} else t7 = $[17];
|
|
116
|
+
let t8;
|
|
117
|
+
if ($[18] !== t3 || $[19] !== t4 || $[20] !== t5 || $[21] !== t6 || $[22] !== t7) {
|
|
118
|
+
t8 = /* @__PURE__ */ jsxs("div", {
|
|
119
|
+
role: t3,
|
|
120
|
+
"aria-label": t4,
|
|
121
|
+
className: t5,
|
|
122
|
+
children: [t6, t7]
|
|
123
|
+
});
|
|
124
|
+
$[18] = t3;
|
|
125
|
+
$[19] = t4;
|
|
126
|
+
$[20] = t5;
|
|
127
|
+
$[21] = t6;
|
|
128
|
+
$[22] = t7;
|
|
129
|
+
$[23] = t8;
|
|
130
|
+
} else t8 = $[23];
|
|
131
|
+
return t8;
|
|
132
|
+
}
|
|
133
|
+
function _temp2(option) {
|
|
134
|
+
return /* @__PURE__ */ jsx("option", {
|
|
135
|
+
value: option,
|
|
136
|
+
children: pad(option)
|
|
137
|
+
}, option);
|
|
138
|
+
}
|
|
139
|
+
function _temp(part) {
|
|
140
|
+
return Math.floor(Number(part)) || 0;
|
|
141
|
+
}
|
|
142
|
+
function Picker(t0) {
|
|
143
|
+
const $ = c(102);
|
|
144
|
+
let clearable;
|
|
145
|
+
let defaultMonth;
|
|
146
|
+
let field;
|
|
147
|
+
let formatValue;
|
|
148
|
+
let isDateDisabled;
|
|
149
|
+
let labels;
|
|
150
|
+
let locale;
|
|
151
|
+
let max;
|
|
152
|
+
let min;
|
|
153
|
+
let mode;
|
|
154
|
+
let name;
|
|
155
|
+
let onValueChange;
|
|
156
|
+
let placeholder;
|
|
157
|
+
let step;
|
|
158
|
+
let t1;
|
|
159
|
+
let t2;
|
|
160
|
+
let value;
|
|
161
|
+
let weekStartsOn;
|
|
162
|
+
if ($[0] !== t0) {
|
|
163
|
+
({mode, step, defaultTime: t1, value, defaultValue: t2, onValueChange, min, max, isDateDisabled, defaultMonth, locale, weekStartsOn, name, placeholder, clearable, formatValue, labels, ...field} = t0);
|
|
164
|
+
$[0] = t0;
|
|
165
|
+
$[1] = clearable;
|
|
166
|
+
$[2] = defaultMonth;
|
|
167
|
+
$[3] = field;
|
|
168
|
+
$[4] = formatValue;
|
|
169
|
+
$[5] = isDateDisabled;
|
|
170
|
+
$[6] = labels;
|
|
171
|
+
$[7] = locale;
|
|
172
|
+
$[8] = max;
|
|
173
|
+
$[9] = min;
|
|
174
|
+
$[10] = mode;
|
|
175
|
+
$[11] = name;
|
|
176
|
+
$[12] = onValueChange;
|
|
177
|
+
$[13] = placeholder;
|
|
178
|
+
$[14] = step;
|
|
179
|
+
$[15] = t1;
|
|
180
|
+
$[16] = t2;
|
|
181
|
+
$[17] = value;
|
|
182
|
+
$[18] = weekStartsOn;
|
|
183
|
+
} else {
|
|
184
|
+
clearable = $[1];
|
|
185
|
+
defaultMonth = $[2];
|
|
186
|
+
field = $[3];
|
|
187
|
+
formatValue = $[4];
|
|
188
|
+
isDateDisabled = $[5];
|
|
189
|
+
labels = $[6];
|
|
190
|
+
locale = $[7];
|
|
191
|
+
max = $[8];
|
|
192
|
+
min = $[9];
|
|
193
|
+
mode = $[10];
|
|
194
|
+
name = $[11];
|
|
195
|
+
onValueChange = $[12];
|
|
196
|
+
placeholder = $[13];
|
|
197
|
+
step = $[14];
|
|
198
|
+
t1 = $[15];
|
|
199
|
+
t2 = $[16];
|
|
200
|
+
value = $[17];
|
|
201
|
+
weekStartsOn = $[18];
|
|
202
|
+
}
|
|
203
|
+
const defaultTime = t1 === void 0 ? "00:00" : t1;
|
|
204
|
+
const defaultValue = t2 === void 0 ? null : t2;
|
|
205
|
+
let t3;
|
|
206
|
+
if ($[19] !== labels) {
|
|
207
|
+
t3 = {
|
|
208
|
+
...defaultLabels,
|
|
209
|
+
...labels
|
|
210
|
+
};
|
|
211
|
+
$[19] = labels;
|
|
212
|
+
$[20] = t3;
|
|
213
|
+
} else t3 = $[20];
|
|
214
|
+
const text = t3;
|
|
215
|
+
const withTime = mode === "datetime";
|
|
216
|
+
const [inner, setInner] = React.useState(defaultValue);
|
|
217
|
+
const current = (value === void 0 ? inner : value) || null;
|
|
218
|
+
let t4;
|
|
219
|
+
if ($[21] !== current) {
|
|
220
|
+
t4 = datePart(current);
|
|
221
|
+
$[21] = current;
|
|
222
|
+
$[22] = t4;
|
|
223
|
+
} else t4 = $[22];
|
|
224
|
+
const date = t4;
|
|
225
|
+
let t5;
|
|
226
|
+
if ($[23] !== current || $[24] !== defaultTime || $[25] !== withTime) {
|
|
227
|
+
t5 = withTime ? timePart(current) ?? defaultTime : null;
|
|
228
|
+
$[23] = current;
|
|
229
|
+
$[24] = defaultTime;
|
|
230
|
+
$[25] = withTime;
|
|
231
|
+
$[26] = t5;
|
|
232
|
+
} else t5 = $[26];
|
|
233
|
+
const time = t5;
|
|
234
|
+
const [open, setOpen] = useOpenState(field);
|
|
235
|
+
let t6;
|
|
236
|
+
if ($[27] !== max || $[28] !== min || $[29] !== onValueChange) {
|
|
237
|
+
t6 = (next) => {
|
|
238
|
+
const bounded = next === null ? null : withinBounds(next, min, max);
|
|
239
|
+
setInner(bounded);
|
|
240
|
+
onValueChange?.(bounded);
|
|
241
|
+
};
|
|
242
|
+
$[27] = max;
|
|
243
|
+
$[28] = min;
|
|
244
|
+
$[29] = onValueChange;
|
|
245
|
+
$[30] = t6;
|
|
246
|
+
} else t6 = $[30];
|
|
247
|
+
const commit = t6;
|
|
248
|
+
const t7 = placeholder ?? (withTime ? "Select date and time" : "Select date");
|
|
249
|
+
let t8;
|
|
250
|
+
if ($[31] !== current || $[32] !== date || $[33] !== formatValue || $[34] !== withTime) {
|
|
251
|
+
t8 = date && current ? formatValue?.(current) ?? formatDate(withTime ? current : date) : null;
|
|
252
|
+
$[31] = current;
|
|
253
|
+
$[32] = date;
|
|
254
|
+
$[33] = formatValue;
|
|
255
|
+
$[34] = withTime;
|
|
256
|
+
$[35] = t8;
|
|
257
|
+
} else t8 = $[35];
|
|
258
|
+
let t9;
|
|
259
|
+
if ($[36] !== current || $[37] !== name) {
|
|
260
|
+
t9 = name && /* @__PURE__ */ jsx("input", {
|
|
261
|
+
type: "hidden",
|
|
262
|
+
name,
|
|
263
|
+
value: current ?? ""
|
|
264
|
+
});
|
|
265
|
+
$[36] = current;
|
|
266
|
+
$[37] = name;
|
|
267
|
+
$[38] = t9;
|
|
268
|
+
} else t9 = $[38];
|
|
269
|
+
let t10;
|
|
270
|
+
if ($[39] !== commit || $[40] !== setOpen || $[41] !== time || $[42] !== withTime) {
|
|
271
|
+
t10 = (next_0) => {
|
|
272
|
+
commit(withTime ? `${next_0}T${time}` : next_0);
|
|
273
|
+
if (!withTime) setOpen(false);
|
|
274
|
+
};
|
|
275
|
+
$[39] = commit;
|
|
276
|
+
$[40] = setOpen;
|
|
277
|
+
$[41] = time;
|
|
278
|
+
$[42] = withTime;
|
|
279
|
+
$[43] = t10;
|
|
280
|
+
} else t10 = $[43];
|
|
281
|
+
let t11;
|
|
282
|
+
if ($[44] !== min) {
|
|
283
|
+
t11 = datePart(min) ?? void 0;
|
|
284
|
+
$[44] = min;
|
|
285
|
+
$[45] = t11;
|
|
286
|
+
} else t11 = $[45];
|
|
287
|
+
let t12;
|
|
288
|
+
if ($[46] !== max) {
|
|
289
|
+
t12 = datePart(max) ?? void 0;
|
|
290
|
+
$[46] = max;
|
|
291
|
+
$[47] = t12;
|
|
292
|
+
} else t12 = $[47];
|
|
293
|
+
let t13;
|
|
294
|
+
if ($[48] !== date || $[49] !== defaultMonth || $[50] !== isDateDisabled || $[51] !== labels || $[52] !== locale || $[53] !== t10 || $[54] !== t11 || $[55] !== t12 || $[56] !== weekStartsOn) {
|
|
295
|
+
t13 = /* @__PURE__ */ jsx(Calendar, {
|
|
296
|
+
value: date,
|
|
297
|
+
onValueChange: t10,
|
|
298
|
+
min: t11,
|
|
299
|
+
max: t12,
|
|
300
|
+
isDateDisabled,
|
|
301
|
+
defaultMonth,
|
|
302
|
+
locale,
|
|
303
|
+
weekStartsOn,
|
|
304
|
+
labels
|
|
305
|
+
});
|
|
306
|
+
$[48] = date;
|
|
307
|
+
$[49] = defaultMonth;
|
|
308
|
+
$[50] = isDateDisabled;
|
|
309
|
+
$[51] = labels;
|
|
310
|
+
$[52] = locale;
|
|
311
|
+
$[53] = t10;
|
|
312
|
+
$[54] = t11;
|
|
313
|
+
$[55] = t12;
|
|
314
|
+
$[56] = weekStartsOn;
|
|
315
|
+
$[57] = t13;
|
|
316
|
+
} else t13 = $[57];
|
|
317
|
+
let t14;
|
|
318
|
+
if ($[58] !== commit || $[59] !== date || $[60] !== max || $[61] !== min || $[62] !== step || $[63] !== text || $[64] !== time) {
|
|
319
|
+
t14 = time !== null && /* @__PURE__ */ jsx(TimeField, {
|
|
320
|
+
value: time,
|
|
321
|
+
step: step && step > 0 ? Math.floor(step) || 1 : 60,
|
|
322
|
+
labels: text,
|
|
323
|
+
onChange: (next_1) => commit(`${date ?? withinBounds(todayIso(), datePart(min) ?? void 0, datePart(max) ?? void 0)}T${next_1}`)
|
|
324
|
+
});
|
|
325
|
+
$[58] = commit;
|
|
326
|
+
$[59] = date;
|
|
327
|
+
$[60] = max;
|
|
328
|
+
$[61] = min;
|
|
329
|
+
$[62] = step;
|
|
330
|
+
$[63] = text;
|
|
331
|
+
$[64] = time;
|
|
332
|
+
$[65] = t14;
|
|
333
|
+
} else t14 = $[65];
|
|
334
|
+
let t15;
|
|
335
|
+
if ($[66] !== isDateDisabled) {
|
|
336
|
+
t15 = isDateDisabled?.(todayIso());
|
|
337
|
+
$[66] = isDateDisabled;
|
|
338
|
+
$[67] = t15;
|
|
339
|
+
} else t15 = $[67];
|
|
340
|
+
const t16 = Boolean(t15);
|
|
341
|
+
let t17;
|
|
342
|
+
if ($[68] !== commit || $[69] !== setOpen || $[70] !== time || $[71] !== withTime) {
|
|
343
|
+
t17 = () => {
|
|
344
|
+
const today = todayIso();
|
|
345
|
+
commit(withTime ? `${today}T${time}` : today);
|
|
346
|
+
if (!withTime) setOpen(false);
|
|
347
|
+
};
|
|
348
|
+
$[68] = commit;
|
|
349
|
+
$[69] = setOpen;
|
|
350
|
+
$[70] = time;
|
|
351
|
+
$[71] = withTime;
|
|
352
|
+
$[72] = t17;
|
|
353
|
+
} else t17 = $[72];
|
|
354
|
+
let t18;
|
|
355
|
+
if ($[73] !== t16 || $[74] !== t17 || $[75] !== text.today) {
|
|
356
|
+
t18 = /* @__PURE__ */ jsx(Button, {
|
|
357
|
+
size: "sm",
|
|
358
|
+
variant: "ghost",
|
|
359
|
+
shape: "rounded",
|
|
360
|
+
disabled: t16,
|
|
361
|
+
onClick: t17,
|
|
362
|
+
children: text.today
|
|
363
|
+
});
|
|
364
|
+
$[73] = t16;
|
|
365
|
+
$[74] = t17;
|
|
366
|
+
$[75] = text.today;
|
|
367
|
+
$[76] = t18;
|
|
368
|
+
} else t18 = $[76];
|
|
369
|
+
let t19;
|
|
370
|
+
if ($[77] !== clearable || $[78] !== commit || $[79] !== current || $[80] !== field || $[81] !== setOpen || $[82] !== text.clear) {
|
|
371
|
+
t19 = (clearable ?? !field.required) && /* @__PURE__ */ jsx(Button, {
|
|
372
|
+
size: "sm",
|
|
373
|
+
variant: "ghost",
|
|
374
|
+
shape: "rounded",
|
|
375
|
+
disabled: !current,
|
|
376
|
+
onClick: () => {
|
|
377
|
+
commit(null);
|
|
378
|
+
setOpen(false);
|
|
379
|
+
},
|
|
380
|
+
children: text.clear
|
|
381
|
+
});
|
|
382
|
+
$[77] = clearable;
|
|
383
|
+
$[78] = commit;
|
|
384
|
+
$[79] = current;
|
|
385
|
+
$[80] = field;
|
|
386
|
+
$[81] = setOpen;
|
|
387
|
+
$[82] = text.clear;
|
|
388
|
+
$[83] = t19;
|
|
389
|
+
} else t19 = $[83];
|
|
390
|
+
let t20;
|
|
391
|
+
if ($[84] !== setOpen || $[85] !== text.done || $[86] !== withTime) {
|
|
392
|
+
t20 = withTime && /* @__PURE__ */ jsx(Button, {
|
|
393
|
+
size: "sm",
|
|
394
|
+
shape: "rounded",
|
|
395
|
+
className: "oui-date-picker__done",
|
|
396
|
+
onClick: () => setOpen(false),
|
|
397
|
+
children: text.done
|
|
398
|
+
});
|
|
399
|
+
$[84] = setOpen;
|
|
400
|
+
$[85] = text.done;
|
|
401
|
+
$[86] = withTime;
|
|
402
|
+
$[87] = t20;
|
|
403
|
+
} else t20 = $[87];
|
|
404
|
+
let t21;
|
|
405
|
+
if ($[88] !== t18 || $[89] !== t19 || $[90] !== t20) {
|
|
406
|
+
t21 = /* @__PURE__ */ jsxs("div", {
|
|
407
|
+
className: "oui-date-picker__footer",
|
|
408
|
+
children: [
|
|
409
|
+
t18,
|
|
410
|
+
t19,
|
|
411
|
+
t20
|
|
412
|
+
]
|
|
413
|
+
});
|
|
414
|
+
$[88] = t18;
|
|
415
|
+
$[89] = t19;
|
|
416
|
+
$[90] = t20;
|
|
417
|
+
$[91] = t21;
|
|
418
|
+
} else t21 = $[91];
|
|
419
|
+
let t22;
|
|
420
|
+
if ($[92] !== field || $[93] !== open || $[94] !== setOpen || $[95] !== t13 || $[96] !== t14 || $[97] !== t21 || $[98] !== t7 || $[99] !== t8 || $[100] !== t9) {
|
|
421
|
+
t22 = /* @__PURE__ */ jsxs(PickerField, {
|
|
422
|
+
...field,
|
|
423
|
+
open,
|
|
424
|
+
onOpenChange: setOpen,
|
|
425
|
+
placeholder: t7,
|
|
426
|
+
display: t8,
|
|
427
|
+
inputs: t9,
|
|
428
|
+
children: [
|
|
429
|
+
t13,
|
|
430
|
+
t14,
|
|
431
|
+
t21
|
|
432
|
+
]
|
|
433
|
+
});
|
|
434
|
+
$[92] = field;
|
|
435
|
+
$[93] = open;
|
|
436
|
+
$[94] = setOpen;
|
|
437
|
+
$[95] = t13;
|
|
438
|
+
$[96] = t14;
|
|
439
|
+
$[97] = t21;
|
|
440
|
+
$[98] = t7;
|
|
441
|
+
$[99] = t8;
|
|
442
|
+
$[100] = t9;
|
|
443
|
+
$[101] = t22;
|
|
444
|
+
} else t22 = $[101];
|
|
445
|
+
return t22;
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Date field with a calendar popover. Values are ISO dates (`"2026-03-09"`),
|
|
449
|
+
* the same format as `<input type="date">`, and are shown the same way.
|
|
450
|
+
*/
|
|
451
|
+
function DatePicker(props) {
|
|
452
|
+
const $ = c(2);
|
|
453
|
+
let t0;
|
|
454
|
+
if ($[0] !== props) {
|
|
455
|
+
t0 = /* @__PURE__ */ jsx(Picker, {
|
|
456
|
+
mode: "date",
|
|
457
|
+
...props
|
|
458
|
+
});
|
|
459
|
+
$[0] = props;
|
|
460
|
+
$[1] = t0;
|
|
461
|
+
} else t0 = $[1];
|
|
462
|
+
return t0;
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Date and time field. Values are local ISO date-times (`"2026-03-09T14:30"`),
|
|
466
|
+
* the same format as `<input type="datetime-local">`, shown as `2026-03-09 14:30:00`
|
|
467
|
+
* on a 24-hour clock whatever the locale.
|
|
468
|
+
*/
|
|
469
|
+
function DateTimePicker(props) {
|
|
470
|
+
const $ = c(2);
|
|
471
|
+
let t0;
|
|
472
|
+
if ($[0] !== props) {
|
|
473
|
+
t0 = /* @__PURE__ */ jsx(Picker, {
|
|
474
|
+
mode: "datetime",
|
|
475
|
+
...props
|
|
476
|
+
});
|
|
477
|
+
$[0] = props;
|
|
478
|
+
$[1] = t0;
|
|
479
|
+
} else t0 = $[1];
|
|
480
|
+
return t0;
|
|
481
|
+
}
|
|
482
|
+
//#endregion
|
|
483
|
+
export { DatePicker, DateTimePicker };
|
|
484
|
+
|
|
485
|
+
//# sourceMappingURL=DatePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.js","names":["React","Button","Calendar","CalendarLabels","CalendarProps","datePart","formatDate","pad","timePart","todayIso","PickerField","useOpenState","PickerFieldProps","DatePickerLabels","today","clear","done","time","hours","minutes","seconds","defaultLabels","Omit","PickerProps","Pick","value","defaultValue","onValueChange","min","max","name","clearable","formatValue","ReactNode","labels","Partial","withinBounds","timeOptions","limit","step","current","options","Array","from","length","Math","ceil","_","index","includes","sort","a","b","TimeFieldProps","onChange","TimeField","t0","$","_c","t1","t2","t3","t4","t5","t6","t7","t8","t9","split","map","_temp","undefined","withSeconds","parts","label","part_0","part","event","next","item","position","Number","target","join","_temp2","option","floor","Picker","defaultMonth","field","isDateDisabled","locale","mode","placeholder","weekStartsOn","defaultTime","text","withTime","inner","setInner","useState","date","open","setOpen","bounded","commit","t10","next_0","t11","t12","t13","t14","next_1","t15","t16","Boolean","t17","t18","t19","required","t20","t21","t22","DatePickerProps","DatePicker","props","DateTimePickerProps","DateTimePicker","_c"],"sources":["../../../src/components/date-picker/DatePicker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Button } from '../button/Button';\nimport { Calendar, type CalendarLabels, type CalendarProps } from '../calendar/Calendar';\nimport { datePart, formatDate, pad, timePart, todayIso } from '../calendar/date-utils';\nimport { PickerField, useOpenState, type PickerFieldProps } from './PickerField';\n\nexport interface DatePickerLabels extends CalendarLabels {\n today: string;\n clear: string;\n done: string;\n time: string;\n hours: string;\n minutes: string;\n seconds: string;\n}\n\nconst defaultLabels: Omit<DatePickerLabels, keyof CalendarLabels> = {\n today: 'Today',\n clear: 'Clear',\n done: 'Done',\n time: 'Time',\n hours: 'Hours',\n minutes: 'Minutes',\n seconds: 'Seconds',\n};\n\ninterface PickerProps\n extends PickerFieldProps,\n Pick<CalendarProps, 'isDateDisabled' | 'defaultMonth' | 'locale' | 'weekStartsOn'> {\n value?: string | null;\n defaultValue?: string | null;\n /** Called with the new value, or `null` when cleared. */\n onValueChange?: (value: string | null) => void;\n /** Earliest allowed value. */\n min?: string;\n /** Latest allowed value. */\n max?: string;\n /** Submits the value with a form under this name. */\n name?: string;\n /** Show the Clear action. Defaults to `true` unless `required`. */\n clearable?: boolean;\n /** Custom display text for the selected value. */\n formatValue?: (value: string) => React.ReactNode;\n /** Override texts for localisation. */\n labels?: Partial<DatePickerLabels>;\n}\n\nfunction withinBounds(value: string, min?: string, max?: string): string {\n if (min && value < min) return min;\n if (max && value > max) return max;\n return value;\n}\n\n/** 0, `step`, 2 × `step`… below `limit`, plus `current` when it falls between steps. */\nfunction timeOptions(limit: number, step: number, current: number): number[] {\n const options = Array.from({ length: Math.ceil(limit / step) }, (_, index) => index * step);\n return options.includes(current) ? options : [...options, current].sort((a, b) => a - b);\n}\n\ninterface TimeFieldProps {\n /** `\"14:30\"` or `\"14:30:05\"`. */\n value: string;\n /** Granularity in seconds. */\n step: number;\n labels: Pick<DatePickerLabels, 'time' | 'hours' | 'minutes' | 'seconds'>;\n onChange: (value: string) => void;\n}\n\n/** Hour, minute and (below one-minute steps) second lists: unlike a native time input, always 24-hour. */\nfunction TimeField({ value, step, labels, onChange }: TimeFieldProps) {\n const [hours = 0, minutes = 0, seconds = 0] = value.split(':').map((part) => Math.floor(Number(part)) || 0);\n const withSeconds = step % 60 !== 0 || value.length > 5;\n const parts = [\n { label: labels.hours, value: hours, options: timeOptions(24, step % 3600 === 0 ? Math.min(step / 3600, 24) : 1, hours) },\n { label: labels.minutes, value: minutes, options: timeOptions(60, step % 60 === 0 && step < 3600 ? step / 60 : 1, minutes) },\n ...(withSeconds ? [{ label: labels.seconds, value: seconds, options: timeOptions(60, step < 60 ? step : 1, seconds) }] : []),\n ];\n return (\n <div role=\"group\" aria-label={labels.time} className=\"oui-date-picker__time\">\n <span>{labels.time}</span>\n <div className=\"oui-date-picker__time-parts\">\n {parts.map((part, index) => (\n <React.Fragment key={part.label}>\n {index > 0 && <span aria-hidden=\"true\">:</span>}\n <select\n className=\"oui-input\"\n data-size=\"sm\"\n aria-label={part.label}\n value={part.value}\n onChange={(event) => {\n const next = parts.map((item, position) => pad(position === index ? Number(event.target.value) : item.value));\n onChange(next.join(':'));\n }}\n >\n {part.options.map((option) => (\n <option key={option} value={option}>\n {pad(option)}\n </option>\n ))}\n </select>\n </React.Fragment>\n ))}\n </div>\n </div>\n );\n}\n\nfunction Picker({\n mode,\n step,\n defaultTime = '00:00',\n value,\n defaultValue = null,\n onValueChange,\n min,\n max,\n isDateDisabled,\n defaultMonth,\n locale,\n weekStartsOn,\n name,\n placeholder,\n clearable,\n formatValue,\n labels,\n ...field\n}: PickerProps & { mode: 'date' | 'datetime'; step?: number; defaultTime?: string }) {\n const text = { ...defaultLabels, ...labels };\n const withTime = mode === 'datetime';\n const [inner, setInner] = React.useState(defaultValue);\n const current = (value === undefined ? inner : value) || null;\n const date = datePart(current);\n const time = withTime ? (timePart(current) ?? defaultTime) : null;\n const [open, setOpen] = useOpenState(field);\n\n const commit = (next: string | null) => {\n const bounded = next === null ? null : withinBounds(next, min, max);\n setInner(bounded);\n onValueChange?.(bounded);\n };\n\n return (\n <PickerField\n {...field}\n open={open}\n onOpenChange={setOpen}\n placeholder={placeholder ?? (withTime ? 'Select date and time' : 'Select date')}\n display={date && current ? (formatValue?.(current) ?? formatDate(withTime ? current : date)) : null}\n inputs={name && <input type=\"hidden\" name={name} value={current ?? ''} />}\n >\n <Calendar\n value={date}\n onValueChange={(next) => {\n commit(withTime ? `${next}T${time}` : next);\n if (!withTime) setOpen(false);\n }}\n min={datePart(min) ?? undefined}\n max={datePart(max) ?? undefined}\n isDateDisabled={isDateDisabled}\n defaultMonth={defaultMonth}\n locale={locale}\n weekStartsOn={weekStartsOn}\n labels={labels}\n />\n {time !== null && (\n <TimeField\n value={time}\n step={step && step > 0 ? Math.floor(step) || 1 : 60}\n labels={text}\n onChange={(next) =>\n commit(`${date ?? withinBounds(todayIso(), datePart(min) ?? undefined, datePart(max) ?? undefined)}T${next}`)\n }\n />\n )}\n <div className=\"oui-date-picker__footer\">\n <Button\n size=\"sm\"\n variant=\"ghost\"\n shape=\"rounded\"\n disabled={Boolean(isDateDisabled?.(todayIso()))}\n onClick={() => {\n const today = todayIso();\n commit(withTime ? `${today}T${time}` : today);\n if (!withTime) setOpen(false);\n }}\n >\n {text.today}\n </Button>\n {(clearable ?? !field.required) && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n shape=\"rounded\"\n disabled={!current}\n onClick={() => {\n commit(null);\n setOpen(false);\n }}\n >\n {text.clear}\n </Button>\n )}\n {withTime && (\n <Button size=\"sm\" shape=\"rounded\" className=\"oui-date-picker__done\" onClick={() => setOpen(false)}>\n {text.done}\n </Button>\n )}\n </div>\n </PickerField>\n );\n}\n\nexport interface DatePickerProps extends PickerProps {}\n\n/**\n * Date field with a calendar popover. Values are ISO dates (`\"2026-03-09\"`),\n * the same format as `<input type=\"date\">`, and are shown the same way.\n */\nexport function DatePicker(props: DatePickerProps) {\n return <Picker mode=\"date\" {...props} />;\n}\n\nexport interface DateTimePickerProps extends PickerProps {\n /** Granularity of the time input in seconds (60 = minutes, 1 = seconds). */\n step?: number;\n /** Time used when a day is picked before any time is set. */\n defaultTime?: string;\n}\n\n/**\n * Date and time field. Values are local ISO date-times (`\"2026-03-09T14:30\"`),\n * the same format as `<input type=\"datetime-local\">`, shown as `2026-03-09 14:30:00`\n * on a 24-hour clock whatever the locale.\n */\nexport function DateTimePicker(props: DateTimePickerProps) {\n return <Picker mode=\"datetime\" {...props} />;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type CalendarLabels, type DateRange, type RangeCalendarProps } from '../calendar/Calendar';
|
|
3
|
+
import { type PickerFieldProps } from './PickerField';
|
|
4
|
+
export interface DateRangePickerLabels extends CalendarLabels {
|
|
5
|
+
clear: string;
|
|
6
|
+
presets: string;
|
|
7
|
+
}
|
|
8
|
+
export interface DateRangePreset {
|
|
9
|
+
label: React.ReactNode;
|
|
10
|
+
value: DateRange;
|
|
11
|
+
}
|
|
12
|
+
export interface DateRangePickerProps extends PickerFieldProps, Pick<RangeCalendarProps, 'isDateDisabled' | 'defaultMonth' | 'locale' | 'weekStartsOn' | 'numberOfMonths'> {
|
|
13
|
+
/** Selected days as ISO dates; both ends are inclusive. */
|
|
14
|
+
value?: DateRange | null;
|
|
15
|
+
defaultValue?: DateRange | null;
|
|
16
|
+
/** Called with the new range, or `null` when cleared. */
|
|
17
|
+
onValueChange?: (value: DateRange | null) => void;
|
|
18
|
+
/** Earliest allowed day. */
|
|
19
|
+
min?: string;
|
|
20
|
+
/** Latest allowed day. */
|
|
21
|
+
max?: string;
|
|
22
|
+
/** Shortcuts listed beside the calendar ("Last 7 days", "This month"…). */
|
|
23
|
+
presets?: DateRangePreset[];
|
|
24
|
+
/** Submits the first day with a form under this name. */
|
|
25
|
+
startName?: string;
|
|
26
|
+
/** Submits the last day with a form under this name. */
|
|
27
|
+
endName?: string;
|
|
28
|
+
/** Show the Clear action. Defaults to `true` unless `required`. */
|
|
29
|
+
clearable?: boolean;
|
|
30
|
+
/** Custom display text for the selected range. */
|
|
31
|
+
formatValue?: (value: DateRange) => React.ReactNode;
|
|
32
|
+
/** Override texts for localisation. */
|
|
33
|
+
labels?: Partial<DateRangePickerLabels>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Date range field with a calendar popover and optional presets. Values are
|
|
37
|
+
* `{ start, end }` ISO dates (`"2026-03-09"`), both inclusive.
|
|
38
|
+
*/
|
|
39
|
+
export declare function DateRangePicker({ value, defaultValue, onValueChange, min, max, isDateDisabled, defaultMonth, locale, weekStartsOn, numberOfMonths, presets, startName, endName, placeholder, clearable, formatValue, labels, contentProps, ...field }: DateRangePickerProps): React.JSX.Element;
|