@uxf/ui 11.111.0-canary.1 → 11.111.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/date-picker/date-picker.spec.js +1 -1
- package/date-picker/date-picker.stories.d.ts +1 -42
- package/date-picker/date-picker.stories.js +49 -205
- package/date-range-picker/date-range-picker.spec.js +1 -1
- package/date-range-picker/date-range-picker.stories.d.ts +1 -57
- package/date-range-picker/date-range-picker.stories.js +26 -223
- package/menu/components/menu-item.js +8 -1
- package/menu/menu.stories.js +5 -0
- package/package.json +3 -3
- package/text-input/text-input.stories.js +2 -0
|
@@ -6,4 +6,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const react_1 = __importDefault(require("react"));
|
|
7
7
|
const snap_test_1 = require("../utils/snap-test");
|
|
8
8
|
const date_picker_stories_1 = require("./date-picker.stories");
|
|
9
|
-
(0, snap_test_1.snapTest)("render stories", react_1.default.createElement(date_picker_stories_1.
|
|
9
|
+
(0, snap_test_1.snapTest)("render stories", react_1.default.createElement(date_picker_stories_1.Default, null));
|
|
@@ -1,43 +1,2 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
|
|
3
|
-
export declare function Basic(): React.JSX.Element;
|
|
4
|
-
/** Opens with today pre-selected so the user can see the highlighted state immediately. */
|
|
5
|
-
export declare function PreSelected(): React.JSX.Element;
|
|
6
|
-
/**
|
|
7
|
-
* Only dates within the selectable range are available.
|
|
8
|
-
* Dates outside appear dimmed and cannot be chosen.
|
|
9
|
-
*/
|
|
10
|
-
export declare function MinMaxDates(): React.JSX.Element;
|
|
11
|
-
/**
|
|
12
|
-
* Today and a cluster of dates next week are marked as unavailable.
|
|
13
|
-
* They appear crossed-out and cannot be selected even though they are within min/max.
|
|
14
|
-
*/
|
|
15
|
-
export declare function UnavailableDates(): React.JSX.Element;
|
|
16
|
-
/**
|
|
17
|
-
* datesConfig lets you attach custom CSS flags to date cells and disable whole groups.
|
|
18
|
-
*
|
|
19
|
-
* - flag-1 (selectable): +1 / +2
|
|
20
|
-
* - flag-2 (disabled): +4 / +5
|
|
21
|
-
* - no flag (disabled): +8
|
|
22
|
-
*/
|
|
23
|
-
export declare function DatesConfigFlags(): React.JSX.Element;
|
|
24
|
-
/**
|
|
25
|
-
* Combines a tight date window with several unavailable dates inside that window.
|
|
26
|
-
* Useful for availability calendars where only a handful of slots remain.
|
|
27
|
-
*/
|
|
28
|
-
export declare function MinMaxWithUnavailable(): React.JSX.Element;
|
|
29
|
-
/**
|
|
30
|
-
* The `bottomContent` prop renders arbitrary JSX below the calendar grid.
|
|
31
|
-
* Useful for legends, CTAs, or pricing summaries.
|
|
32
|
-
*/
|
|
33
|
-
export declare function WithBottomContent(): React.JSX.Element;
|
|
34
|
-
/**
|
|
35
|
-
* `onMonthChange` fires whenever the user navigates to a different month.
|
|
36
|
-
* The currently visible month is displayed below the description.
|
|
37
|
-
*/
|
|
38
|
-
export declare function OnMonthChange(): React.JSX.Element;
|
|
39
|
-
/**
|
|
40
|
-
* Kitchen-sink story combining min/max, unavailable dates, datesConfig flags,
|
|
41
|
-
* bottom content, and onMonthChange — useful for regression testing the full API.
|
|
42
|
-
*/
|
|
43
|
-
export declare function AllFeatures(): React.JSX.Element;
|
|
2
|
+
export declare function Default(): React.JSX.Element;
|
|
@@ -33,213 +33,57 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.
|
|
37
|
-
|
|
38
|
-
exports.MinMaxDates = MinMaxDates;
|
|
39
|
-
exports.UnavailableDates = UnavailableDates;
|
|
40
|
-
exports.DatesConfigFlags = DatesConfigFlags;
|
|
41
|
-
exports.MinMaxWithUnavailable = MinMaxWithUnavailable;
|
|
42
|
-
exports.WithBottomContent = WithBottomContent;
|
|
43
|
-
exports.OnMonthChange = OnMonthChange;
|
|
44
|
-
exports.AllFeatures = AllFeatures;
|
|
45
|
-
const date_string_1 = require("@uxf/datepicker/utils/date-string");
|
|
36
|
+
exports.Default = Default;
|
|
37
|
+
const date_1 = require("@uxf/localize/src/date");
|
|
46
38
|
const react_1 = __importStar(require("react"));
|
|
47
39
|
const action_1 = require("../utils/action");
|
|
48
40
|
const date_picker_1 = require("./date-picker");
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
41
|
+
const today = (0, date_1.dayjsTz)().startOf("day");
|
|
42
|
+
const minDate = today.subtract(10, "day").toDate();
|
|
43
|
+
const maxDate = today.add(20, "days").toDate();
|
|
44
|
+
const unavailableDates = [
|
|
45
|
+
today.toDate(),
|
|
46
|
+
today.add(5, "days").toDate(),
|
|
47
|
+
today.add(6, "days").toDate(),
|
|
48
|
+
today.add(7, "days").toDate(),
|
|
49
|
+
today.add(11, "days").toDate(),
|
|
50
|
+
today.add(12, "days").toDate(),
|
|
51
|
+
];
|
|
52
|
+
const datesConfig = [
|
|
53
|
+
{
|
|
54
|
+
flag: "flag-1",
|
|
55
|
+
dates: [today.add(5, "days").toDate(), today.add(6, "days").toDate()],
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
flag: "flag-2",
|
|
59
|
+
dates: [today.add(3, "days").toDate(), today.add(4, "days").toDate()],
|
|
60
|
+
isDisabled: true,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
dates: [today.add(8, "days").toDate()],
|
|
64
|
+
isDisabled: true,
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
function Default() {
|
|
56
68
|
const [value, setValue] = (0, react_1.useState)(null);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
"
|
|
69
|
-
react_1.default.createElement(date_picker_1.DatePicker, {
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const [value, setValue] = (0, react_1.useState)(null);
|
|
78
|
-
return (react_1.default.createElement("div", { className: "space-y-2 p-8" },
|
|
79
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" },
|
|
80
|
-
"Selectable range: ",
|
|
81
|
-
s(-2),
|
|
82
|
-
" \u2192 ",
|
|
83
|
-
s(28),
|
|
84
|
-
". Dates outside are dimmed."),
|
|
85
|
-
react_1.default.createElement(date_picker_1.DatePicker, { maxDate: d(28), minDate: d(-2), onChange: (0, action_1.action)("onChange", setValue), selectedDate: value })));
|
|
86
|
-
}
|
|
87
|
-
// ─── Unavailable (blocked) dates ───────────────────────────────────────────────
|
|
88
|
-
/**
|
|
89
|
-
* Today and a cluster of dates next week are marked as unavailable.
|
|
90
|
-
* They appear crossed-out and cannot be selected even though they are within min/max.
|
|
91
|
-
*/
|
|
92
|
-
function UnavailableDates() {
|
|
93
|
-
const [value, setValue] = (0, react_1.useState)(null);
|
|
94
|
-
const unavailableDates = [d(0), d(5), d(6), d(7), d(11), d(12)];
|
|
95
|
-
return (react_1.default.createElement("div", { className: "space-y-2 p-8" },
|
|
96
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" },
|
|
97
|
-
"Blocked dates: ",
|
|
98
|
-
s(0),
|
|
99
|
-
", ",
|
|
100
|
-
s(5),
|
|
101
|
-
", ",
|
|
102
|
-
s(6),
|
|
103
|
-
", ",
|
|
104
|
-
s(7),
|
|
105
|
-
", ",
|
|
106
|
-
s(11),
|
|
107
|
-
", ",
|
|
108
|
-
s(12),
|
|
109
|
-
"."),
|
|
110
|
-
react_1.default.createElement(date_picker_1.DatePicker, { onChange: (0, action_1.action)("onChange", setValue), selectedDate: value, unavailableDates: unavailableDates })));
|
|
111
|
-
}
|
|
112
|
-
// ─── DatesConfig — custom flags and disabled groups ───────────────────────────
|
|
113
|
-
/**
|
|
114
|
-
* datesConfig lets you attach custom CSS flags to date cells and disable whole groups.
|
|
115
|
-
*
|
|
116
|
-
* - flag-1 (selectable): +1 / +2
|
|
117
|
-
* - flag-2 (disabled): +4 / +5
|
|
118
|
-
* - no flag (disabled): +8
|
|
119
|
-
*/
|
|
120
|
-
function DatesConfigFlags() {
|
|
121
|
-
const [value, setValue] = (0, react_1.useState)(null);
|
|
122
|
-
const datesConfig = [
|
|
123
|
-
{
|
|
124
|
-
flag: "flag-1",
|
|
125
|
-
dates: [d(1), d(2)],
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
flag: "flag-2",
|
|
129
|
-
dates: [d(4), d(5)],
|
|
130
|
-
isDisabled: true,
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
dates: [d(8)],
|
|
134
|
-
isDisabled: true,
|
|
135
|
-
},
|
|
136
|
-
];
|
|
137
|
-
return (react_1.default.createElement("div", { className: "space-y-2 p-8" },
|
|
138
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" },
|
|
139
|
-
react_1.default.createElement("code", null, "flag-1"),
|
|
140
|
-
" (selectable): ",
|
|
141
|
-
s(1),
|
|
142
|
-
", ",
|
|
143
|
-
s(2),
|
|
144
|
-
" \u00B7 ",
|
|
145
|
-
react_1.default.createElement("code", null, "flag-2"),
|
|
146
|
-
" (disabled): ",
|
|
147
|
-
s(4),
|
|
148
|
-
", ",
|
|
149
|
-
s(5),
|
|
150
|
-
" \u00B7",
|
|
151
|
-
" ",
|
|
152
|
-
"disabled (no flag): ",
|
|
153
|
-
s(8)),
|
|
154
|
-
react_1.default.createElement(date_picker_1.DatePicker, { datesConfig: datesConfig, onChange: (0, action_1.action)("onChange", setValue), selectedDate: value })));
|
|
155
|
-
}
|
|
156
|
-
// ─── Min / max + unavailable combined ─────────────────────────────────────────
|
|
157
|
-
/**
|
|
158
|
-
* Combines a tight date window with several unavailable dates inside that window.
|
|
159
|
-
* Useful for availability calendars where only a handful of slots remain.
|
|
160
|
-
*/
|
|
161
|
-
function MinMaxWithUnavailable() {
|
|
162
|
-
const [value, setValue] = (0, react_1.useState)(null);
|
|
163
|
-
return (react_1.default.createElement("div", { className: "space-y-2 p-8" },
|
|
164
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" },
|
|
165
|
-
"Window: ",
|
|
166
|
-
s(-5),
|
|
167
|
-
" \u2192 ",
|
|
168
|
-
s(20),
|
|
169
|
-
". Additionally blocked: ",
|
|
170
|
-
s(0),
|
|
171
|
-
", ",
|
|
172
|
-
s(3),
|
|
173
|
-
", ",
|
|
174
|
-
s(9),
|
|
175
|
-
", ",
|
|
176
|
-
s(15),
|
|
177
|
-
"."),
|
|
178
|
-
react_1.default.createElement(date_picker_1.DatePicker, { maxDate: d(20), minDate: d(-5), onChange: (0, action_1.action)("onChange", setValue), selectedDate: value, unavailableDates: [d(0), d(3), d(9), d(15)] })));
|
|
179
|
-
}
|
|
180
|
-
// ─── Bottom content slot ───────────────────────────────────────────────────────
|
|
181
|
-
/**
|
|
182
|
-
* The `bottomContent` prop renders arbitrary JSX below the calendar grid.
|
|
183
|
-
* Useful for legends, CTAs, or pricing summaries.
|
|
184
|
-
*/
|
|
185
|
-
function WithBottomContent() {
|
|
186
|
-
const [value, setValue] = (0, react_1.useState)(null);
|
|
187
|
-
return (react_1.default.createElement("div", { className: "space-y-2 p-8" },
|
|
188
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" }, "Custom content rendered below the calendar grid."),
|
|
189
|
-
react_1.default.createElement(date_picker_1.DatePicker, { bottomContent: react_1.default.createElement("div", { className: "border-t pt-2 text-sm text-gray-600" },
|
|
190
|
-
react_1.default.createElement("p", null, "Legend: highlighted = special offer")), onChange: (0, action_1.action)("onChange", setValue), selectedDate: value })));
|
|
191
|
-
}
|
|
192
|
-
// ─── onMonthChange callback ────────────────────────────────────────────────────
|
|
193
|
-
/**
|
|
194
|
-
* `onMonthChange` fires whenever the user navigates to a different month.
|
|
195
|
-
* The currently visible month is displayed below the description.
|
|
196
|
-
*/
|
|
197
|
-
function OnMonthChange() {
|
|
198
|
-
const [value, setValue] = (0, react_1.useState)(null);
|
|
199
|
-
const [lastMonth, setLastMonth] = (0, react_1.useState)("—");
|
|
200
|
-
return (react_1.default.createElement("div", { className: "space-y-2 p-8" },
|
|
201
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" },
|
|
202
|
-
"Navigate with the arrows. Last reported month: ",
|
|
203
|
-
react_1.default.createElement("strong", null, lastMonth)),
|
|
204
|
-
react_1.default.createElement(date_picker_1.DatePicker, { onChange: (0, action_1.action)("onChange", setValue), onMonthChange: (months) => {
|
|
205
|
-
const m = months.at(0);
|
|
206
|
-
setLastMonth(m ? `${m.year}-${String(m.month + 1).padStart(2, "0")}` : "—");
|
|
207
|
-
}, selectedDate: value })));
|
|
208
|
-
}
|
|
209
|
-
// ─── All features together ─────────────────────────────────────────────────────
|
|
210
|
-
/**
|
|
211
|
-
* Kitchen-sink story combining min/max, unavailable dates, datesConfig flags,
|
|
212
|
-
* bottom content, and onMonthChange — useful for regression testing the full API.
|
|
213
|
-
*/
|
|
214
|
-
function AllFeatures() {
|
|
215
|
-
const [value, setValue] = (0, react_1.useState)(null);
|
|
216
|
-
const datesConfig = [
|
|
217
|
-
{ flag: "flag-1", dates: [d(3), d(4)] },
|
|
218
|
-
{ flag: "flag-2", dates: [d(6), d(7)], isDisabled: true },
|
|
219
|
-
];
|
|
220
|
-
return (react_1.default.createElement("div", { className: "space-y-2 p-8" },
|
|
221
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" },
|
|
222
|
-
"Window: ",
|
|
223
|
-
s(-3),
|
|
224
|
-
" \u2192 ",
|
|
225
|
-
s(25),
|
|
226
|
-
". Blocked: ",
|
|
227
|
-
s(0),
|
|
228
|
-
", ",
|
|
229
|
-
s(10),
|
|
230
|
-
". ",
|
|
231
|
-
react_1.default.createElement("code", null, "flag-1"),
|
|
232
|
-
": ",
|
|
233
|
-
s(3),
|
|
234
|
-
", ",
|
|
235
|
-
s(4),
|
|
236
|
-
".",
|
|
237
|
-
" ",
|
|
238
|
-
react_1.default.createElement("code", null, "flag-2"),
|
|
239
|
-
" (disabled): ",
|
|
240
|
-
s(6),
|
|
241
|
-
", ",
|
|
242
|
-
s(7),
|
|
243
|
-
"."),
|
|
244
|
-
react_1.default.createElement(date_picker_1.DatePicker, { bottomContent: react_1.default.createElement("div", { className: "border-t pt-2 text-xs text-gray-500" }, "flag-1 = highlighted \u00B7 flag-2 = disabled highlight"), datesConfig: datesConfig, maxDate: d(25), minDate: d(-3), onChange: (0, action_1.action)("onChange", setValue), onMonthChange: (months) => { var _a; return console.log("month changed", (_a = months.at(0)) === null || _a === void 0 ? void 0 : _a.month); }, selectedDate: value, unavailableDates: [d(0), d(10)] })));
|
|
69
|
+
const onChange = (0, action_1.action)("onChange", setValue);
|
|
70
|
+
const onClose = () => null;
|
|
71
|
+
const testDatePickers = (react_1.default.createElement("div", { className: "flex flex-col space-y-5 dark:text-white" },
|
|
72
|
+
react_1.default.createElement("p", { className: "text-lg" }, "Date picker"),
|
|
73
|
+
react_1.default.createElement(date_picker_1.DatePicker, { closePopoverHandler: onClose, onChange: onChange, selectedDate: value }),
|
|
74
|
+
react_1.default.createElement("p", { className: "text-lg" }, "Date picker with unavailable dates and min max dates"),
|
|
75
|
+
react_1.default.createElement(date_picker_1.DatePicker, { maxDate: maxDate, minDate: minDate, onChange: onChange, selectedDate: value, unavailableDates: unavailableDates }),
|
|
76
|
+
react_1.default.createElement("p", { className: "text-lg" }, "Date picker with dates config"),
|
|
77
|
+
react_1.default.createElement("ul", null,
|
|
78
|
+
react_1.default.createElement("li", null, "now + 5 days & now + 6 days -> flag-1 className, not disabled"),
|
|
79
|
+
react_1.default.createElement("li", null, "now + 3 days & now + 4 days -> flag-2 className, disabled"),
|
|
80
|
+
react_1.default.createElement("li", null, "now + 8 days -> no custom className, disabled")),
|
|
81
|
+
react_1.default.createElement(date_picker_1.DatePicker, { datesConfig: datesConfig, onChange: onChange, selectedDate: value }),
|
|
82
|
+
react_1.default.createElement("p", { className: "text-lg" }, "Date picker with bottom content"),
|
|
83
|
+
react_1.default.createElement(date_picker_1.DatePicker, { bottomContent: react_1.default.createElement("div", null,
|
|
84
|
+
"Bottom content",
|
|
85
|
+
react_1.default.createElement("p", null, "Here can goes anything")), onChange: onChange, selectedDate: value }),
|
|
86
|
+
react_1.default.createElement("p", { className: "text-lg" }, "Date picker with onMonthChange callback"),
|
|
87
|
+
react_1.default.createElement(date_picker_1.DatePicker, { onChange: onChange, onMonthChange: (months) => { var _a, _b; return alert((_b = (_a = months.at(0)) === null || _a === void 0 ? void 0 : _a.month) !== null && _b !== void 0 ? _b : "No month"); }, selectedDate: value })));
|
|
88
|
+
return react_1.default.createElement("div", { className: "max-w-screen-sm space-y-4 rounded p-8" }, testDatePickers);
|
|
245
89
|
}
|
|
@@ -6,4 +6,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const react_1 = __importDefault(require("react"));
|
|
7
7
|
const snap_test_1 = require("../utils/snap-test");
|
|
8
8
|
const date_range_picker_stories_1 = require("./date-range-picker.stories");
|
|
9
|
-
(0, snap_test_1.snapTest)("render stories", react_1.default.createElement(date_range_picker_stories_1.
|
|
9
|
+
(0, snap_test_1.snapTest)("render stories", react_1.default.createElement(date_range_picker_stories_1.Default, null));
|
|
@@ -1,58 +1,2 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
|
|
3
|
-
export declare function Basic(): React.JSX.Element;
|
|
4
|
-
/** Opens with a range already selected. Shows the highlighted band immediately. */
|
|
5
|
-
export declare function PreSelected(): React.JSX.Element;
|
|
6
|
-
/**
|
|
7
|
-
* Only dates within a fixed window are selectable.
|
|
8
|
-
* Useful for short-stay booking forms with a specific availability window.
|
|
9
|
-
*/
|
|
10
|
-
export declare function MinMaxDates(): React.JSX.Element;
|
|
11
|
-
/**
|
|
12
|
-
* A cluster of dates is marked unavailable.
|
|
13
|
-
* The user cannot start or end a range on those dates.
|
|
14
|
-
*/
|
|
15
|
-
export declare function UnavailableDates(): React.JSX.Element;
|
|
16
|
-
/**
|
|
17
|
-
* `minSelectedDays` enforces a minimum stay of 3 days.
|
|
18
|
-
* The end date cannot be selected closer than 3 days after the start date.
|
|
19
|
-
*/
|
|
20
|
-
export declare function MinStayDays(): React.JSX.Element;
|
|
21
|
-
/**
|
|
22
|
-
* `exactSelectedDays` pins the stay to exactly 5 days.
|
|
23
|
-
* Selecting a start date automatically highlights the fixed-length range.
|
|
24
|
-
*/
|
|
25
|
-
export declare function ExactStayDays(): React.JSX.Element;
|
|
26
|
-
/**
|
|
27
|
-
* `numberOfMonths={2}` shows the current and next month side-by-side.
|
|
28
|
-
* Handy when users typically book multi-week stays spanning a month boundary.
|
|
29
|
-
*/
|
|
30
|
-
export declare function TwoMonthView(): React.JSX.Element;
|
|
31
|
-
/**
|
|
32
|
-
* `datesConfig` lets you style and disable arbitrary date groups independently of
|
|
33
|
-
* the global `unavailableDates` list.
|
|
34
|
-
*/
|
|
35
|
-
export declare function DatesConfigFlags(): React.JSX.Element;
|
|
36
|
-
/**
|
|
37
|
-
* `bottomContent` renders arbitrary JSX below the calendar.
|
|
38
|
-
* Typical uses: price summary, legend, or action buttons.
|
|
39
|
-
*/
|
|
40
|
-
export declare function WithBottomContent(): React.JSX.Element;
|
|
41
|
-
/**
|
|
42
|
-
* Regression story for the DST off-by-one bug.
|
|
43
|
-
*
|
|
44
|
-
* In Europe, clocks go back on the night of 2026-10-25 → 2026-10-26 (CEST → CET).
|
|
45
|
-
* Before the fix, `toDateString()` would misread a UTC-midnight Date in a UTC+ timezone
|
|
46
|
-
* and shift it one day back, making Oct 26 appear as Oct 25 in the calendar.
|
|
47
|
-
*
|
|
48
|
-
* This story opens on October 2026 with minSelectedDays=2 so you can verify that:
|
|
49
|
-
* - Oct 25 and Oct 26 are both visible as distinct, correct cells
|
|
50
|
-
* - Selecting Oct 25 as start date allows Oct 26 as the earliest valid end date
|
|
51
|
-
* - The highlighted range 2026-10-25 → 2026-10-26 renders without off-by-one shift
|
|
52
|
-
*/
|
|
53
|
-
export declare function DstBoundaryOct2026(): React.JSX.Element;
|
|
54
|
-
/**
|
|
55
|
-
* Kitchen-sink story: two months, min/max window, blocked dates, datesConfig flags,
|
|
56
|
-
* minimum 2-day stay, and a bottom content footer. Good for regression testing.
|
|
57
|
-
*/
|
|
58
|
-
export declare function AllFeatures(): React.JSX.Element;
|
|
2
|
+
export declare function Default(): React.JSX.Element;
|
|
@@ -33,232 +33,35 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.
|
|
37
|
-
exports.PreSelected = PreSelected;
|
|
38
|
-
exports.MinMaxDates = MinMaxDates;
|
|
39
|
-
exports.UnavailableDates = UnavailableDates;
|
|
40
|
-
exports.MinStayDays = MinStayDays;
|
|
41
|
-
exports.ExactStayDays = ExactStayDays;
|
|
42
|
-
exports.TwoMonthView = TwoMonthView;
|
|
43
|
-
exports.DatesConfigFlags = DatesConfigFlags;
|
|
44
|
-
exports.WithBottomContent = WithBottomContent;
|
|
45
|
-
exports.DstBoundaryOct2026 = DstBoundaryOct2026;
|
|
46
|
-
exports.AllFeatures = AllFeatures;
|
|
36
|
+
exports.Default = Default;
|
|
47
37
|
const noop_1 = require("@uxf/core/utils/noop");
|
|
48
|
-
const
|
|
38
|
+
const date_1 = require("@uxf/localize/src/date");
|
|
49
39
|
const react_1 = __importStar(require("react"));
|
|
50
40
|
const action_1 = require("../utils/action");
|
|
51
41
|
const date_range_picker_1 = require("./date-range-picker");
|
|
52
|
-
|
|
53
|
-
const
|
|
54
|
-
const
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
42
|
+
const today = (0, date_1.dayjsTz)();
|
|
43
|
+
const minDate = today.subtract(10, "day").toDate();
|
|
44
|
+
const maxDate = today.add(20, "days").toDate();
|
|
45
|
+
const unavailableDates = [
|
|
46
|
+
today.toDate(),
|
|
47
|
+
today.add(5, "days").toDate(),
|
|
48
|
+
today.add(6, "days").toDate(),
|
|
49
|
+
today.add(7, "days").toDate(),
|
|
50
|
+
today.add(11, "days").toDate(),
|
|
51
|
+
today.add(12, "days").toDate(),
|
|
52
|
+
];
|
|
53
|
+
function Default() {
|
|
59
54
|
const [value, setValue] = (0, react_1.useState)(null);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
react_1.default.createElement(
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" },
|
|
73
|
-
"Pre-selected range: ",
|
|
74
|
-
s(0),
|
|
75
|
-
" \u2192 ",
|
|
76
|
-
s(7),
|
|
77
|
-
"."),
|
|
78
|
-
react_1.default.createElement(date_range_picker_1.DateRangePicker, { onChange: (0, action_1.action)("onChange", setValue), onClosePopover: noop_1.noop, selectedDates: value })));
|
|
79
|
-
}
|
|
80
|
-
// ─── Min / max date constraints ────────────────────────────────────────────────
|
|
81
|
-
/**
|
|
82
|
-
* Only dates within a fixed window are selectable.
|
|
83
|
-
* Useful for short-stay booking forms with a specific availability window.
|
|
84
|
-
*/
|
|
85
|
-
function MinMaxDates() {
|
|
86
|
-
const [value, setValue] = (0, react_1.useState)(null);
|
|
87
|
-
return (react_1.default.createElement("div", { className: "space-y-2 p-8" },
|
|
88
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" },
|
|
89
|
-
"Bookable window: ",
|
|
90
|
-
s(2),
|
|
91
|
-
" \u2192 ",
|
|
92
|
-
s(16),
|
|
93
|
-
". Dates outside are dimmed."),
|
|
94
|
-
react_1.default.createElement(date_range_picker_1.DateRangePicker, { maxDate: d(16), minDate: d(2), onChange: (0, action_1.action)("onChange", setValue), onClosePopover: noop_1.noop, selectedDates: value })));
|
|
95
|
-
}
|
|
96
|
-
// ─── Unavailable dates ─────────────────────────────────────────────────────────
|
|
97
|
-
/**
|
|
98
|
-
* A cluster of dates is marked unavailable.
|
|
99
|
-
* The user cannot start or end a range on those dates.
|
|
100
|
-
*/
|
|
101
|
-
function UnavailableDates() {
|
|
102
|
-
const [value, setValue] = (0, react_1.useState)(null);
|
|
103
|
-
const unavailableDates = [d(0), d(5), d(6), d(7), d(11), d(12)];
|
|
104
|
-
return (react_1.default.createElement("div", { className: "space-y-2 p-8" },
|
|
105
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" },
|
|
106
|
-
"Blocked dates: ",
|
|
107
|
-
s(0),
|
|
108
|
-
", ",
|
|
109
|
-
s(5),
|
|
110
|
-
", ",
|
|
111
|
-
s(6),
|
|
112
|
-
", ",
|
|
113
|
-
s(7),
|
|
114
|
-
", ",
|
|
115
|
-
s(11),
|
|
116
|
-
", ",
|
|
117
|
-
s(12),
|
|
118
|
-
". A range cannot cross them."),
|
|
119
|
-
react_1.default.createElement(date_range_picker_1.DateRangePicker, { onChange: (0, action_1.action)("onChange", setValue), onClosePopover: noop_1.noop, selectedDates: value, unavailableDates: unavailableDates })));
|
|
120
|
-
}
|
|
121
|
-
// ─── Minimum stay length ───────────────────────────────────────────────────────
|
|
122
|
-
/**
|
|
123
|
-
* `minSelectedDays` enforces a minimum stay of 3 days.
|
|
124
|
-
* The end date cannot be selected closer than 3 days after the start date.
|
|
125
|
-
*/
|
|
126
|
-
function MinStayDays() {
|
|
127
|
-
const [value, setValue] = (0, react_1.useState)(null);
|
|
128
|
-
return (react_1.default.createElement("div", { className: "space-y-2 p-8" },
|
|
129
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" },
|
|
130
|
-
"Minimum 3 days \u2014 if start is ",
|
|
131
|
-
s(0),
|
|
132
|
-
", earliest end is ",
|
|
133
|
-
s(2),
|
|
134
|
-
"."),
|
|
135
|
-
react_1.default.createElement(date_range_picker_1.DateRangePicker, { minSelectedDays: 3, onChange: (0, action_1.action)("onChange", setValue), onClosePopover: noop_1.noop, selectedDates: value })));
|
|
136
|
-
}
|
|
137
|
-
// ─── Exact stay length ─────────────────────────────────────────────────────────
|
|
138
|
-
/**
|
|
139
|
-
* `exactSelectedDays` pins the stay to exactly 5 days.
|
|
140
|
-
* Selecting a start date automatically highlights the fixed-length range.
|
|
141
|
-
*/
|
|
142
|
-
function ExactStayDays() {
|
|
143
|
-
const [value, setValue] = (0, react_1.useState)(null);
|
|
144
|
-
return (react_1.default.createElement("div", { className: "space-y-2 p-8" },
|
|
145
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" },
|
|
146
|
-
"Exactly 5 days \u2014 if start is ",
|
|
147
|
-
s(0),
|
|
148
|
-
", end is locked to ",
|
|
149
|
-
s(4),
|
|
150
|
-
"."),
|
|
151
|
-
react_1.default.createElement(date_range_picker_1.DateRangePicker, { exactSelectedDays: 5, onChange: (0, action_1.action)("onChange", setValue), onClosePopover: noop_1.noop, selectedDates: value })));
|
|
152
|
-
}
|
|
153
|
-
// ─── Two-month view ────────────────────────────────────────────────────────────
|
|
154
|
-
/**
|
|
155
|
-
* `numberOfMonths={2}` shows the current and next month side-by-side.
|
|
156
|
-
* Handy when users typically book multi-week stays spanning a month boundary.
|
|
157
|
-
*/
|
|
158
|
-
function TwoMonthView() {
|
|
159
|
-
const [value, setValue] = (0, react_1.useState)(null);
|
|
160
|
-
return (react_1.default.createElement("div", { className: "space-y-2 p-8" },
|
|
161
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" }, "Two months displayed side-by-side for easier range selection."),
|
|
162
|
-
react_1.default.createElement(date_range_picker_1.DateRangePicker, { numberOfMonths: 2, onChange: (0, action_1.action)("onChange", setValue), onClosePopover: noop_1.noop, selectedDates: value })));
|
|
163
|
-
}
|
|
164
|
-
// ─── DatesConfig — flags and disabled groups ───────────────────────────────────
|
|
165
|
-
/**
|
|
166
|
-
* `datesConfig` lets you style and disable arbitrary date groups independently of
|
|
167
|
-
* the global `unavailableDates` list.
|
|
168
|
-
*/
|
|
169
|
-
function DatesConfigFlags() {
|
|
170
|
-
const [value, setValue] = (0, react_1.useState)(null);
|
|
171
|
-
const datesConfig = [
|
|
172
|
-
{ flag: "flag-promo", dates: [d(2), d(3)] },
|
|
173
|
-
{ flag: "flag-sold-out", dates: [d(6), d(7)], isDisabled: true },
|
|
174
|
-
];
|
|
175
|
-
return (react_1.default.createElement("div", { className: "space-y-2 p-8" },
|
|
176
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" },
|
|
177
|
-
react_1.default.createElement("code", null, "flag-promo"),
|
|
178
|
-
" (selectable): ",
|
|
179
|
-
s(2),
|
|
180
|
-
", ",
|
|
181
|
-
s(3),
|
|
182
|
-
" \u00B7 ",
|
|
183
|
-
react_1.default.createElement("code", null, "flag-sold-out"),
|
|
184
|
-
" (disabled): ",
|
|
185
|
-
s(6),
|
|
186
|
-
",",
|
|
187
|
-
" ",
|
|
188
|
-
s(7),
|
|
189
|
-
"."),
|
|
190
|
-
react_1.default.createElement(date_range_picker_1.DateRangePicker, { datesConfig: datesConfig, onChange: (0, action_1.action)("onChange", setValue), onClosePopover: noop_1.noop, selectedDates: value })));
|
|
191
|
-
}
|
|
192
|
-
// ─── Bottom content slot ───────────────────────────────────────────────────────
|
|
193
|
-
/**
|
|
194
|
-
* `bottomContent` renders arbitrary JSX below the calendar.
|
|
195
|
-
* Typical uses: price summary, legend, or action buttons.
|
|
196
|
-
*/
|
|
197
|
-
function WithBottomContent() {
|
|
198
|
-
const [value, setValue] = (0, react_1.useState)(null);
|
|
199
|
-
return (react_1.default.createElement("div", { className: "space-y-2 p-8" },
|
|
200
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" }, "Custom footer rendered below the calendar grid."),
|
|
201
|
-
react_1.default.createElement(date_range_picker_1.DateRangePicker, { bottomContent: react_1.default.createElement("div", { className: "border-t pt-2 text-sm text-gray-600" },
|
|
202
|
-
react_1.default.createElement("p", null,
|
|
203
|
-
"Average nightly rate: ",
|
|
204
|
-
react_1.default.createElement("strong", null, "\u20AC120"))), onChange: (0, action_1.action)("onChange", setValue), onClosePopover: noop_1.noop, selectedDates: value })));
|
|
205
|
-
}
|
|
206
|
-
// ─── DST boundary — Oct 25/26 2026 ────────────────────────────────────────────
|
|
207
|
-
/**
|
|
208
|
-
* Regression story for the DST off-by-one bug.
|
|
209
|
-
*
|
|
210
|
-
* In Europe, clocks go back on the night of 2026-10-25 → 2026-10-26 (CEST → CET).
|
|
211
|
-
* Before the fix, `toDateString()` would misread a UTC-midnight Date in a UTC+ timezone
|
|
212
|
-
* and shift it one day back, making Oct 26 appear as Oct 25 in the calendar.
|
|
213
|
-
*
|
|
214
|
-
* This story opens on October 2026 with minSelectedDays=2 so you can verify that:
|
|
215
|
-
* - Oct 25 and Oct 26 are both visible as distinct, correct cells
|
|
216
|
-
* - Selecting Oct 25 as start date allows Oct 26 as the earliest valid end date
|
|
217
|
-
* - The highlighted range 2026-10-25 → 2026-10-26 renders without off-by-one shift
|
|
218
|
-
*/
|
|
219
|
-
function DstBoundaryOct2026() {
|
|
220
|
-
const [value, setValue] = (0, react_1.useState)({
|
|
221
|
-
from: (0, date_string_1.fromDateString)("2026-10-25"),
|
|
222
|
-
to: null,
|
|
223
|
-
});
|
|
224
|
-
return (react_1.default.createElement("div", { className: "space-y-2 p-8" },
|
|
225
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" }, "DST regression: Europe clocks go back on 2026-10-25 \u2192 2026-10-26. Start is pre-set to 2026-10-25; select 2026-10-26 as end (minSelectedDays=2). Both cells must appear on the correct day without any off-by-one shift."),
|
|
226
|
-
react_1.default.createElement(date_range_picker_1.DateRangePicker, { maxDate: (0, date_string_1.fromDateString)("2026-11-05"), minDate: (0, date_string_1.fromDateString)("2026-10-20"), minSelectedDays: 2, onChange: (0, action_1.action)("onChange", setValue), onClosePopover: noop_1.noop, selectedDates: value })));
|
|
227
|
-
}
|
|
228
|
-
// ─── All features together ─────────────────────────────────────────────────────
|
|
229
|
-
/**
|
|
230
|
-
* Kitchen-sink story: two months, min/max window, blocked dates, datesConfig flags,
|
|
231
|
-
* minimum 2-day stay, and a bottom content footer. Good for regression testing.
|
|
232
|
-
*/
|
|
233
|
-
function AllFeatures() {
|
|
234
|
-
const [value, setValue] = (0, react_1.useState)(null);
|
|
235
|
-
const datesConfig = [
|
|
236
|
-
{ flag: "flag-promo", dates: [d(3), d(4)] },
|
|
237
|
-
{ flag: "flag-sold-out", dates: [d(9), d(10)], isDisabled: true },
|
|
238
|
-
];
|
|
239
|
-
return (react_1.default.createElement("div", { className: "space-y-2 p-8" },
|
|
240
|
-
react_1.default.createElement("p", { className: "text-sm text-gray-500" },
|
|
241
|
-
"2 months \u00B7 window ",
|
|
242
|
-
s(-1),
|
|
243
|
-
" \u2192 ",
|
|
244
|
-
s(30),
|
|
245
|
-
" \u00B7 blocked: ",
|
|
246
|
-
s(0),
|
|
247
|
-
", ",
|
|
248
|
-
s(15),
|
|
249
|
-
" \u00B7 ",
|
|
250
|
-
react_1.default.createElement("code", null, "flag-promo"),
|
|
251
|
-
": ",
|
|
252
|
-
s(3),
|
|
253
|
-
", ",
|
|
254
|
-
s(4),
|
|
255
|
-
" ",
|
|
256
|
-
"\u00B7 ",
|
|
257
|
-
react_1.default.createElement("code", null, "flag-sold-out"),
|
|
258
|
-
": ",
|
|
259
|
-
s(9),
|
|
260
|
-
", ",
|
|
261
|
-
s(10),
|
|
262
|
-
" \u00B7 min 2 days."),
|
|
263
|
-
react_1.default.createElement(date_range_picker_1.DateRangePicker, { bottomContent: react_1.default.createElement("div", { className: "border-t pt-2 text-xs text-gray-500" }, "Promo = discounted rate \u00B7 Sold-out = unavailable"), datesConfig: datesConfig, maxDate: d(30), minDate: d(-1), minSelectedDays: 2, numberOfMonths: 2, onChange: (0, action_1.action)("onChange", setValue), onClosePopover: noop_1.noop, selectedDates: value, unavailableDates: [d(0), d(15)] })));
|
|
55
|
+
const onChange = (0, action_1.action)("onChange", setValue);
|
|
56
|
+
return (react_1.default.createElement("div", { className: "max-w-screen-sm space-y-4 rounded p-8 dark:text-white" },
|
|
57
|
+
react_1.default.createElement("p", { className: "text-lg" }, "Date range picker raw"),
|
|
58
|
+
react_1.default.createElement(date_range_picker_1.DateRangePicker, { onChange: onChange, onClosePopover: noop_1.noop, selectedDates: value }),
|
|
59
|
+
react_1.default.createElement("p", { className: "text-lg" }, "Date range picker 2.4.2026 - 12.4.2026"),
|
|
60
|
+
react_1.default.createElement(date_range_picker_1.DateRangePicker, { maxDate: new Date("2026-04-12"), minDate: new Date("2026-04-02"), minSelectedDays: 2, onChange: onChange, onClosePopover: noop_1.noop, selectedDates: value }),
|
|
61
|
+
react_1.default.createElement("p", { className: "text-lg" }, "Date range picker with min max and unavailable dates"),
|
|
62
|
+
react_1.default.createElement(date_range_picker_1.DateRangePicker, { maxDate: maxDate, minDate: minDate, onChange: onChange, onClosePopover: noop_1.noop, selectedDates: value, unavailableDates: unavailableDates }),
|
|
63
|
+
react_1.default.createElement("p", { className: "text-lg" }, "Date range picker with min selected days"),
|
|
64
|
+
react_1.default.createElement(date_range_picker_1.DateRangePicker, { minSelectedDays: 6, onChange: onChange, onClosePopover: noop_1.noop, selectedDates: value }),
|
|
65
|
+
react_1.default.createElement("p", { className: "text-lg" }, "Date range picker with exact selected days"),
|
|
66
|
+
react_1.default.createElement(date_range_picker_1.DateRangePicker, { exactSelectedDays: 4, onChange: onChange, onClosePopover: noop_1.noop, selectedDates: value })));
|
|
264
67
|
}
|
|
@@ -45,7 +45,14 @@ const menu_item_button_1 = require("./menu-item-button");
|
|
|
45
45
|
function MenuItem(props) {
|
|
46
46
|
var _a, _b;
|
|
47
47
|
const [isOpen, setIsOpen] = (0, react_1.useState)(props.activeTree.isActive);
|
|
48
|
-
const button = (react_1.default.createElement(menu_item_button_1.MenuItemButton, { LinkComponent: (_b = (_a = props.item.as) !== null && _a !== void 0 ? _a : props.LinkComponent) !== null && _b !== void 0 ? _b : "a", badge: props.item.badge, hasChildren: (0, is_not_nil_1.isNotNil)(props.item.children) && (0, is_not_empty_1.isNotEmpty)(props.item.children), href: props.item.href, icon: props.item.icon, isActive: props.activeTree.isActive, isOpen: isOpen, label: props.item.label, level: props.level, onClick: () =>
|
|
48
|
+
const button = (react_1.default.createElement(menu_item_button_1.MenuItemButton, { LinkComponent: (_b = (_a = props.item.as) !== null && _a !== void 0 ? _a : props.LinkComponent) !== null && _b !== void 0 ? _b : "a", badge: props.item.badge, hasChildren: (0, is_not_nil_1.isNotNil)(props.item.children) && (0, is_not_empty_1.isNotEmpty)(props.item.children), href: props.item.href, icon: props.item.icon, isActive: props.activeTree.isActive, isOpen: isOpen, label: props.item.label, level: props.level, onClick: () => {
|
|
49
|
+
if ((0, is_not_nil_1.isNotNil)(props.item.onClick)) {
|
|
50
|
+
props.item.onClick();
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
setIsOpen((prev) => !prev);
|
|
54
|
+
}
|
|
55
|
+
} }));
|
|
49
56
|
if ((0, is_nil_1.isNil)(props.item.children) || (0, is_empty_1.isEmpty)(props.item.children)) {
|
|
50
57
|
return button;
|
|
51
58
|
}
|
package/menu/menu.stories.js
CHANGED
|
@@ -34,6 +34,11 @@ const CONFIGURATION = [
|
|
|
34
34
|
icon: "file",
|
|
35
35
|
badge: react_1.default.createElement(badge_1.Badge, null, "5"),
|
|
36
36
|
},
|
|
37
|
+
{
|
|
38
|
+
label: "Link with onClick",
|
|
39
|
+
icon: "file",
|
|
40
|
+
onClick: () => alert("clicked"),
|
|
41
|
+
},
|
|
37
42
|
];
|
|
38
43
|
function Default() {
|
|
39
44
|
return (react_1.default.createElement("div", { className: "fixed inset-y-0 left-0 w-60 bg-white p-1" },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uxf/ui",
|
|
3
|
-
"version": "11.111.0
|
|
3
|
+
"version": "11.111.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"@headlessui/react": "1.7.19",
|
|
26
26
|
"@uxf/core": "11.110.0",
|
|
27
27
|
"@uxf/core-react": "11.110.0",
|
|
28
|
-
"@uxf/datepicker": "11.
|
|
28
|
+
"@uxf/datepicker": "11.110.1",
|
|
29
29
|
"@uxf/localize": "11.110.0",
|
|
30
30
|
"@uxf/styles": "11.110.0",
|
|
31
31
|
"dayjs": "^1.11.19",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"@types/react-dom": "18.3.7",
|
|
42
42
|
"@uxf/core": "11.110.0",
|
|
43
43
|
"@uxf/core-react": "11.110.0",
|
|
44
|
-
"@uxf/datepicker": "11.
|
|
44
|
+
"@uxf/datepicker": "11.110.1",
|
|
45
45
|
"@uxf/localize": "11.110.0",
|
|
46
46
|
"@uxf/styles": "11.110.0",
|
|
47
47
|
"dayjs": "^1.11.19",
|
|
@@ -49,6 +49,7 @@ const action_1 = require("../utils/action");
|
|
|
49
49
|
function Default() {
|
|
50
50
|
const [value, setValue] = (0, react_1.useState)("");
|
|
51
51
|
const [timeValue, setTimeValue] = (0, react_1.useState)("");
|
|
52
|
+
const [prefillValue, setPrefillValue] = (0, react_1.useState)("Prefilled text value");
|
|
52
53
|
const onChange = (0, action_1.action)("onChange", setValue);
|
|
53
54
|
const onTimeChange = (0, action_1.action)("onTimeChange", setTimeValue);
|
|
54
55
|
const onCopy = (0, action_1.action)("onCopy", async () => {
|
|
@@ -64,6 +65,7 @@ function Default() {
|
|
|
64
65
|
react_1.default.createElement(text_input_1.TextInput, { helperText: "Error helper text", isReadOnly: true, label: "Read only input", leftAddon: "https://", leftElement: "\uD83C\uDF37", name: "readOnly", onChange: onChange, placeholder: "Some beautiful placeholder...", rightAddon: ".cz", rightElement: "\uD83D\uDD14", value: value }),
|
|
65
66
|
react_1.default.createElement(text_input_1.TextInput, { helperText: "Error helper text", isDisabled: true, label: "Disabled input", leftAddon: "https://", leftElement: "\uD83C\uDF37", name: "disabled", onChange: onChange, placeholder: "Some beautiful placeholder...", rightAddon: ".cz", rightElement: "\uD83D\uDD14", value: value }),
|
|
66
67
|
react_1.default.createElement(text_input_1.TextInput, { label: "Default html time input", name: "defaultHtmlTime", onChange: onTimeChange, placeholder: "Some beautiful placeholder...", type: "time", value: timeValue }),
|
|
68
|
+
react_1.default.createElement(text_input_1.TextInput, { label: "Input with prefilled value", name: "withValue", onChange: setPrefillValue, value: prefillValue }),
|
|
67
69
|
react_1.default.createElement(text_input_1.TextInput, { label: "Copy to clipboard input", leftAddon: "I can be copied!", name: "copyToClipboard", onChange: onChange, placeholder: "Some beautiful placeholder...", rightAddon: react_1.default.createElement(button_1.Button, { className: "size-full rounded-l-none border-none", isDisabled: value === "", onClick: onCopy, variant: "secondary" },
|
|
68
70
|
react_1.default.createElement(icon_1.Icon, { className: "w-4", name: "copy" })), value: value })));
|
|
69
71
|
}
|