@auth0/quantum-product 2.5.8 → 2.5.9
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-classes.d.ts +10 -0
- package/date-picker/date-picker-classes.js +21 -0
- package/date-picker/date-picker-context.d.ts +10 -0
- package/date-picker/date-picker-context.js +36 -0
- package/date-picker/date-picker-popover.d.ts +4 -0
- package/date-picker/date-picker-popover.js +458 -0
- package/date-picker/date-picker-state.d.ts +24 -0
- package/date-picker/date-picker-state.js +95 -0
- package/date-picker/date-picker-types.d.ts +43 -0
- package/date-picker/date-picker-types.js +2 -0
- package/date-picker/date-picker-utils.d.ts +47 -0
- package/date-picker/date-picker-utils.js +165 -0
- package/date-picker/date-picker.d.ts +9 -0
- package/date-picker/date-picker.js +164 -0
- package/date-picker/index.d.ts +11 -0
- package/date-picker/index.js +17 -0
- package/esm/date-picker/date-picker-classes.js +16 -0
- package/esm/date-picker/date-picker-context.js +9 -0
- package/esm/date-picker/date-picker-popover.js +429 -0
- package/esm/date-picker/date-picker-state.js +66 -0
- package/esm/date-picker/date-picker-types.js +1 -0
- package/esm/date-picker/date-picker-utils.js +153 -0
- package/esm/date-picker/date-picker.js +135 -0
- package/esm/date-picker/index.js +5 -0
- package/esm/icon-button/icon-button.js +14 -3
- package/esm/index.js +1 -0
- package/icon-button/icon-button.d.ts +3 -0
- package/icon-button/icon-button.js +14 -3
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const datePickerComponentName: "QuantumDatePicker";
|
|
2
|
+
export declare const datePickerPopoverComponentName: "QuantumDatePickerPopover";
|
|
3
|
+
export declare function getDatePickerUtilityClass(slot: string): string;
|
|
4
|
+
export declare function getDatePickerPopoverUtilityClass(slot: string): string;
|
|
5
|
+
export declare const datePickerClasses: Record<"input" | "root", string>;
|
|
6
|
+
export declare const datePickerPopoverClasses: Record<"content" | "root" | "calendarWrapper" | "buttonContainer", string>;
|
|
7
|
+
export type DatePickerClasses = typeof datePickerClasses;
|
|
8
|
+
export type DatePickerClassKey = keyof DatePickerClasses;
|
|
9
|
+
export type DatePickerPopoverClasses = typeof datePickerPopoverClasses;
|
|
10
|
+
export type DatePickerPopoverClassKey = keyof DatePickerPopoverClasses;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.datePickerPopoverClasses = exports.datePickerClasses = exports.getDatePickerPopoverUtilityClass = exports.getDatePickerUtilityClass = exports.datePickerPopoverComponentName = exports.datePickerComponentName = void 0;
|
|
4
|
+
var classes_1 = require("../styles/classes");
|
|
5
|
+
exports.datePickerComponentName = 'QuantumDatePicker';
|
|
6
|
+
exports.datePickerPopoverComponentName = 'QuantumDatePickerPopover';
|
|
7
|
+
function getDatePickerUtilityClass(slot) {
|
|
8
|
+
return (0, classes_1.generateUtilityClass)(exports.datePickerComponentName, slot);
|
|
9
|
+
}
|
|
10
|
+
exports.getDatePickerUtilityClass = getDatePickerUtilityClass;
|
|
11
|
+
function getDatePickerPopoverUtilityClass(slot) {
|
|
12
|
+
return (0, classes_1.generateUtilityClass)(exports.datePickerPopoverComponentName, slot);
|
|
13
|
+
}
|
|
14
|
+
exports.getDatePickerPopoverUtilityClass = getDatePickerPopoverUtilityClass;
|
|
15
|
+
exports.datePickerClasses = (0, classes_1.generateUtilityClasses)(exports.datePickerComponentName, ['root', 'input']);
|
|
16
|
+
exports.datePickerPopoverClasses = (0, classes_1.generateUtilityClasses)(exports.datePickerPopoverComponentName, [
|
|
17
|
+
'root',
|
|
18
|
+
'content',
|
|
19
|
+
'calendarWrapper',
|
|
20
|
+
'buttonContainer',
|
|
21
|
+
]);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface IDatePickerContextValue {
|
|
3
|
+
dateFormat: string;
|
|
4
|
+
timeFormat?: string;
|
|
5
|
+
onSelectDate(date: string, shouldClose?: boolean): void;
|
|
6
|
+
isRangeSelection?: boolean;
|
|
7
|
+
showTimeInput?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const DatePickerContext: React.Context<IDatePickerContextValue>;
|
|
10
|
+
export declare const useDatePickerContext: () => IDatePickerContextValue;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.useDatePickerContext = exports.DatePickerContext = void 0;
|
|
27
|
+
var React = __importStar(require("react"));
|
|
28
|
+
exports.DatePickerContext = React.createContext({
|
|
29
|
+
dateFormat: 'MM/dd/yyyy',
|
|
30
|
+
timeFormat: 'HH:mm:ss',
|
|
31
|
+
onSelectDate: function () { return undefined; },
|
|
32
|
+
isRangeSelection: false,
|
|
33
|
+
showTimeInput: false,
|
|
34
|
+
});
|
|
35
|
+
var useDatePickerContext = function () { return React.useContext(exports.DatePickerContext); };
|
|
36
|
+
exports.useDatePickerContext = useDatePickerContext;
|
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
37
|
+
var t = {};
|
|
38
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
39
|
+
t[p] = s[p];
|
|
40
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
41
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
42
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
43
|
+
t[p[i]] = s[p[i]];
|
|
44
|
+
}
|
|
45
|
+
return t;
|
|
46
|
+
};
|
|
47
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
48
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
49
|
+
if (!m) return o;
|
|
50
|
+
var i = m.call(o), r, ar = [], e;
|
|
51
|
+
try {
|
|
52
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
53
|
+
}
|
|
54
|
+
catch (error) { e = { error: error }; }
|
|
55
|
+
finally {
|
|
56
|
+
try {
|
|
57
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
58
|
+
}
|
|
59
|
+
finally { if (e) throw e.error; }
|
|
60
|
+
}
|
|
61
|
+
return ar;
|
|
62
|
+
};
|
|
63
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
64
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
65
|
+
};
|
|
66
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
67
|
+
exports.DatePickerPopover = void 0;
|
|
68
|
+
require("react-day-picker/style.css");
|
|
69
|
+
var React = __importStar(require("react"));
|
|
70
|
+
var react_day_picker_1 = require("react-day-picker");
|
|
71
|
+
var box_1 = require("../box");
|
|
72
|
+
var button_1 = require("../button");
|
|
73
|
+
var card_1 = require("../card");
|
|
74
|
+
var dropdown_menu_1 = require("../dropdown-menu");
|
|
75
|
+
var popover_1 = require("../popover");
|
|
76
|
+
var styled_1 = require("../styled");
|
|
77
|
+
var classes_1 = require("../styles/classes");
|
|
78
|
+
var text_field_1 = require("../text-field");
|
|
79
|
+
var clsx_1 = __importDefault(require("../utils/clsx"));
|
|
80
|
+
var date_picker_classes_1 = require("./date-picker-classes");
|
|
81
|
+
var date_picker_utils_1 = require("./date-picker-utils");
|
|
82
|
+
var Root = (0, styled_1.styled)(popover_1.Popover, { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'Root' })(function (_a) {
|
|
83
|
+
var theme = _a.theme;
|
|
84
|
+
return ({
|
|
85
|
+
marginTop: theme.spacing(0.5),
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
var Content = (0, styled_1.styled)(card_1.Card, { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'Content' })(function (_a) {
|
|
89
|
+
var theme = _a.theme, ownerState = _a.ownerState;
|
|
90
|
+
return ({
|
|
91
|
+
maxHeight: 'calc(100% - 96px)',
|
|
92
|
+
minWidth: theme.typography.pxToRem(180),
|
|
93
|
+
width: ownerState.currentView === 'options'
|
|
94
|
+
? ownerState.inputWidth
|
|
95
|
+
? "".concat(ownerState.inputWidth, "px")
|
|
96
|
+
: 'auto'
|
|
97
|
+
: ownerState.showTwoMonths
|
|
98
|
+
? theme.typography.pxToRem(514) // Width for two months calendar view
|
|
99
|
+
: theme.typography.pxToRem(256),
|
|
100
|
+
WebkitOverflowScrolling: 'touch',
|
|
101
|
+
padding: theme.spacing(1),
|
|
102
|
+
border: "1px solid ".concat(theme.tokens.color_border_default),
|
|
103
|
+
borderRadius: 8,
|
|
104
|
+
borderColor: theme.tokens.color_border_default,
|
|
105
|
+
boxShadow: "0px 33px 80px rgba(0, 0, 0, 0.07), 0px 13.7866px 33.4221px rgba(0, 0, 0, 0.0503198), 0px 7.37098px 17.869px rgba(0, 0, 0, 0.0417275), 0px 4.13211px 10.0172px rgba(0, 0, 0, 0.035), 0px 2.19453px 5.32008px rgba(0, 0, 0, 0.0282725), 0px 0.913195px 2.21381px rgba(0, 0, 0, 0.0196802)",
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
var CalendarWrapper = (0, styled_1.styled)('div', { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'CalendarWrapper' })(function (_a) {
|
|
109
|
+
var theme = _a.theme;
|
|
110
|
+
return ({
|
|
111
|
+
padding: theme.spacing(1),
|
|
112
|
+
'.rdp': {
|
|
113
|
+
'--rdp-cell-size': theme.spacing(2),
|
|
114
|
+
'--rdp-accent-color': theme.tokens.color_bg_button_primary,
|
|
115
|
+
'--rdp-background-color': theme.tokens.color_bg_link_primary_hover,
|
|
116
|
+
'--rdp-day-width': theme.spacing(2),
|
|
117
|
+
'--rdp-day-height': theme.spacing(2),
|
|
118
|
+
'--rdp-day_button-width': theme.spacing(2),
|
|
119
|
+
'--rdp-day_button-height': theme.spacing(2),
|
|
120
|
+
margin: 0,
|
|
121
|
+
},
|
|
122
|
+
'.rdp-nav': {
|
|
123
|
+
width: '100%',
|
|
124
|
+
},
|
|
125
|
+
'.rdp-day': {
|
|
126
|
+
color: theme.tokens.color_fg_default,
|
|
127
|
+
fontSize: theme.spacing(1.75),
|
|
128
|
+
width: theme.spacing(4),
|
|
129
|
+
height: theme.spacing(4),
|
|
130
|
+
},
|
|
131
|
+
'.rdp-month_caption': {
|
|
132
|
+
justifyContent: 'center',
|
|
133
|
+
},
|
|
134
|
+
'.rdp-button_previous': {
|
|
135
|
+
'&:focus': {
|
|
136
|
+
outline: "2px solid ".concat(theme.tokens.color_border_focus_bold),
|
|
137
|
+
outlineOffset: 2,
|
|
138
|
+
},
|
|
139
|
+
border: "1px solid ".concat(theme.tokens.color_border_default),
|
|
140
|
+
position: 'absolute',
|
|
141
|
+
left: 0,
|
|
142
|
+
width: theme.spacing(3),
|
|
143
|
+
height: theme.spacing(3),
|
|
144
|
+
borderRadius: theme.spacing(0.5),
|
|
145
|
+
display: 'flex',
|
|
146
|
+
alignItems: 'center',
|
|
147
|
+
justifyContent: 'center',
|
|
148
|
+
},
|
|
149
|
+
'.rdp-button_next': {
|
|
150
|
+
'&:focus': {
|
|
151
|
+
outline: "2px solid ".concat(theme.tokens.color_border_focus_bold),
|
|
152
|
+
outlineOffset: 2,
|
|
153
|
+
},
|
|
154
|
+
border: "1px solid ".concat(theme.tokens.color_border_default),
|
|
155
|
+
position: 'absolute',
|
|
156
|
+
right: 0,
|
|
157
|
+
width: theme.spacing(3),
|
|
158
|
+
height: theme.spacing(3),
|
|
159
|
+
borderRadius: theme.spacing(0.5),
|
|
160
|
+
display: 'flex',
|
|
161
|
+
alignItems: 'center',
|
|
162
|
+
justifyContent: 'center',
|
|
163
|
+
},
|
|
164
|
+
'.rdp-chevron': {
|
|
165
|
+
width: theme.spacing(2),
|
|
166
|
+
height: theme.spacing(2),
|
|
167
|
+
display: 'inline-block',
|
|
168
|
+
margin: 0,
|
|
169
|
+
fill: theme.tokens.color_fg_bold,
|
|
170
|
+
},
|
|
171
|
+
'.rdp-day_button': {
|
|
172
|
+
width: theme.spacing(4),
|
|
173
|
+
height: theme.spacing(4),
|
|
174
|
+
},
|
|
175
|
+
'.rdp-range_start .rdp-day_button': {
|
|
176
|
+
backgroundColor: theme.tokens.color_bg_button_primary,
|
|
177
|
+
border: 'none',
|
|
178
|
+
borderRadius: theme.spacing(0.75),
|
|
179
|
+
},
|
|
180
|
+
'.rdp-range_end .rdp-day_button': {
|
|
181
|
+
backgroundColor: theme.tokens.color_bg_button_primary,
|
|
182
|
+
border: 'none',
|
|
183
|
+
borderRadius: theme.spacing(0.75),
|
|
184
|
+
},
|
|
185
|
+
'.rdp-range_middle': {
|
|
186
|
+
backgroundColor: theme.tokens.color_bg_brand_primary_subtle,
|
|
187
|
+
},
|
|
188
|
+
'.rdp-selected': {
|
|
189
|
+
color: theme.tokens.color_fg_bold,
|
|
190
|
+
fontWeight: 'inherit',
|
|
191
|
+
fontSize: theme.spacing(1.75),
|
|
192
|
+
},
|
|
193
|
+
'.rdp-caption_label': {
|
|
194
|
+
fontSize: 14,
|
|
195
|
+
},
|
|
196
|
+
'.rdp-day_selected': {
|
|
197
|
+
backgroundColor: theme.tokens.color_bg_button_primary,
|
|
198
|
+
color: theme.tokens.color_fg_on_button_primary,
|
|
199
|
+
},
|
|
200
|
+
'.rdp-day_selected:hover': {
|
|
201
|
+
backgroundColor: theme.tokens.color_bg_button_primary_hover,
|
|
202
|
+
},
|
|
203
|
+
'.rdp-day_range_start, .rdp-day_range_end': {
|
|
204
|
+
backgroundColor: theme.tokens.color_bg_button_primary,
|
|
205
|
+
color: theme.tokens.color_fg_on_button_primary,
|
|
206
|
+
},
|
|
207
|
+
'.rdp-day_range_middle': {
|
|
208
|
+
backgroundColor: theme.tokens.color_bg_link_primary_hover,
|
|
209
|
+
},
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
var ButtonContainer = (0, styled_1.styled)(box_1.Box, { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'ButtonContainer' })(function (_a) {
|
|
213
|
+
var theme = _a.theme;
|
|
214
|
+
return ({
|
|
215
|
+
display: 'flex',
|
|
216
|
+
justifyContent: 'flex-end',
|
|
217
|
+
padding: theme.spacing(1),
|
|
218
|
+
borderTop: "1px solid ".concat(theme.tokens.color_border_default),
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
var TimeInputContainer = (0, styled_1.styled)('div', { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'TimeInput' })(function (_a) {
|
|
222
|
+
var theme = _a.theme;
|
|
223
|
+
return ({
|
|
224
|
+
display: 'flex',
|
|
225
|
+
justifyContent: 'flex-start',
|
|
226
|
+
gap: theme.spacing(0.5),
|
|
227
|
+
padding: theme.spacing(1),
|
|
228
|
+
alignItems: 'center',
|
|
229
|
+
borderTop: "1px solid ".concat(theme.tokens.color_border_default),
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
var EndTimeInputContainer = (0, styled_1.styled)('div', { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'EndTimeInput' })(function (_a) {
|
|
233
|
+
var theme = _a.theme;
|
|
234
|
+
return ({
|
|
235
|
+
display: 'flex',
|
|
236
|
+
justifyContent: 'flex-start',
|
|
237
|
+
gap: theme.spacing(0.5),
|
|
238
|
+
alignItems: 'center',
|
|
239
|
+
marginLeft: theme.spacing(2),
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
var TimeInput = (0, styled_1.styled)(text_field_1.TextField, { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'TimeInputField' })({
|
|
243
|
+
width: '3rem',
|
|
244
|
+
});
|
|
245
|
+
var TimeInputLabel = (0, styled_1.styled)('span', { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'TimeInputLabel' })(function (_a) {
|
|
246
|
+
var theme = _a.theme;
|
|
247
|
+
return ({
|
|
248
|
+
color: theme.tokens.color_fg_default,
|
|
249
|
+
fontSize: theme.typography.caption.fontSize,
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
exports.DatePickerPopover = React.forwardRef(function (props, ref) {
|
|
253
|
+
var anchorEl = props.anchorEl, open = props.open, onClose = props.onClose, onDateSelect = props.onDateSelect, options = props.options, value = props.value, _a = props.dateFormat, dateFormat = _a === void 0 ? 'MM/dd/yyyy' : _a, _b = props.timeFormat, timeFormat = _b === void 0 ? 'HH:mm:ss' : _b, PopoverProps = props.PopoverProps, _c = props.showTwoMonths, showTwoMonths = _c === void 0 ? false : _c, _d = props.isRangeSelection, isRangeSelection = _d === void 0 ? false : _d, _e = props.showTimeInput, showTimeInput = _e === void 0 ? false : _e, propClasses = props.classes, rootProps = __rest(props, ["anchorEl", "open", "onClose", "onDateSelect", "options", "value", "dateFormat", "timeFormat", "PopoverProps", "showTwoMonths", "isRangeSelection", "showTimeInput", "classes"]);
|
|
254
|
+
var classes = (0, classes_1.useMergedClasses)(date_picker_classes_1.datePickerPopoverClasses, date_picker_classes_1.getDatePickerPopoverUtilityClass, propClasses);
|
|
255
|
+
// State to track the current view: 'options' or 'calendar'
|
|
256
|
+
var _f = __read(React.useState(options ? 'options' : 'calendar'), 2), currentView = _f[0], setCurrentView = _f[1];
|
|
257
|
+
// State to track the current range selection
|
|
258
|
+
var _g = __read(React.useState({}), 2), rangeSelection = _g[0], setRangeSelection = _g[1];
|
|
259
|
+
// Time state for single date or range start/end
|
|
260
|
+
var _h = __read(React.useState('00'), 2), hours = _h[0], setHours = _h[1];
|
|
261
|
+
var _j = __read(React.useState('00'), 2), minutes = _j[0], setMinutes = _j[1];
|
|
262
|
+
var _k = __read(React.useState('00'), 2), seconds = _k[0], setSeconds = _k[1];
|
|
263
|
+
// For range selection - end time
|
|
264
|
+
var _l = __read(React.useState('00'), 2), endHours = _l[0], setEndHours = _l[1];
|
|
265
|
+
var _m = __read(React.useState('00'), 2), endMinutes = _m[0], setEndMinutes = _m[1];
|
|
266
|
+
var _o = __read(React.useState('00'), 2), endSeconds = _o[0], setEndSeconds = _o[1];
|
|
267
|
+
// Reset selection and view when popover opens/closes
|
|
268
|
+
React.useEffect(function () {
|
|
269
|
+
if (!open) {
|
|
270
|
+
setRangeSelection({});
|
|
271
|
+
// Reset the view to options if there are options available
|
|
272
|
+
if (options) {
|
|
273
|
+
setCurrentView('options');
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
else if (value) {
|
|
277
|
+
if (isRangeSelection && value.includes('-')) {
|
|
278
|
+
// Parse range selection
|
|
279
|
+
var _a = (0, date_picker_utils_1.parseDateRange)(value, dateFormat, showTimeInput ? timeFormat : undefined), from = _a.from, to = _a.to;
|
|
280
|
+
if (from) {
|
|
281
|
+
// Extract time components for range start
|
|
282
|
+
var _b = (0, date_picker_utils_1.extractTimeComponents)(from), h = _b.hours, m = _b.minutes, s = _b.seconds;
|
|
283
|
+
setHours(h);
|
|
284
|
+
setMinutes(m);
|
|
285
|
+
setSeconds(s);
|
|
286
|
+
}
|
|
287
|
+
if (to) {
|
|
288
|
+
// Extract time components for range end
|
|
289
|
+
var _c = (0, date_picker_utils_1.extractTimeComponents)(to), h = _c.hours, m = _c.minutes, s = _c.seconds;
|
|
290
|
+
setEndHours(h);
|
|
291
|
+
setEndMinutes(m);
|
|
292
|
+
setEndSeconds(s);
|
|
293
|
+
}
|
|
294
|
+
if (from && to) {
|
|
295
|
+
setRangeSelection({ from: from, to: to });
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
else if (!isRangeSelection) {
|
|
299
|
+
// For single date, try to parse with time format first if showTimeInput is enabled
|
|
300
|
+
var formatString = showTimeInput ? "".concat(dateFormat, " ").concat(timeFormat) : dateFormat;
|
|
301
|
+
var date = (0, date_picker_utils_1.parseDate)(value, formatString);
|
|
302
|
+
if (date) {
|
|
303
|
+
setRangeSelection({ from: date });
|
|
304
|
+
if (showTimeInput) {
|
|
305
|
+
// Extract time components
|
|
306
|
+
var _d = (0, date_picker_utils_1.extractTimeComponents)(date), h = _d.hours, m = _d.minutes, s = _d.seconds;
|
|
307
|
+
setHours(h);
|
|
308
|
+
setMinutes(m);
|
|
309
|
+
setSeconds(s);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}, [open, value, isRangeSelection, dateFormat, timeFormat, options, showTimeInput]);
|
|
315
|
+
// Handle calendar selections
|
|
316
|
+
var handleCalendarSelect = function (selection) {
|
|
317
|
+
if (!selection)
|
|
318
|
+
return;
|
|
319
|
+
// Keep the time values when date changes
|
|
320
|
+
if (selection.from && !selection.to) {
|
|
321
|
+
// Single date or range start
|
|
322
|
+
if (showTimeInput) {
|
|
323
|
+
var newFrom = (0, date_picker_utils_1.applyTimeToDate)(selection.from, { hours: hours, minutes: minutes, seconds: seconds });
|
|
324
|
+
setRangeSelection({ from: newFrom });
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
setRangeSelection({ from: selection.from });
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
else if (selection.from && selection.to) {
|
|
331
|
+
// Range selection
|
|
332
|
+
if (showTimeInput) {
|
|
333
|
+
var newFrom = (0, date_picker_utils_1.applyTimeToDate)(selection.from, { hours: hours, minutes: minutes, seconds: seconds });
|
|
334
|
+
var newTo = (0, date_picker_utils_1.applyTimeToDate)(selection.to, { hours: endHours, minutes: endMinutes, seconds: endSeconds });
|
|
335
|
+
setRangeSelection({ from: newFrom, to: newTo });
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
setRangeSelection(selection);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
// Only auto-apply selection for non-range selection mode and when not showing time input
|
|
342
|
+
if (!isRangeSelection && !showTimeInput) {
|
|
343
|
+
applySelection(selection.from);
|
|
344
|
+
}
|
|
345
|
+
// For range selection or time input, we'll wait for user to click Apply
|
|
346
|
+
};
|
|
347
|
+
var handleTimeChange = function (value, setter, max) {
|
|
348
|
+
var numValue = value.replace(/\D/g, '');
|
|
349
|
+
var parsed = parseInt(numValue, 10);
|
|
350
|
+
if (!isNaN(parsed) && parsed >= 0 && parsed <= max) {
|
|
351
|
+
setter(parsed.toString().padStart(2, '0'));
|
|
352
|
+
}
|
|
353
|
+
else if (value === '') {
|
|
354
|
+
setter('00');
|
|
355
|
+
}
|
|
356
|
+
updateDateWithTime();
|
|
357
|
+
};
|
|
358
|
+
var updateDateWithTime = function () {
|
|
359
|
+
if (!rangeSelection.from)
|
|
360
|
+
return;
|
|
361
|
+
var newFrom = (0, date_picker_utils_1.applyTimeToDate)(rangeSelection.from, { hours: hours, minutes: minutes, seconds: seconds });
|
|
362
|
+
if (isRangeSelection && rangeSelection.to) {
|
|
363
|
+
var newTo = (0, date_picker_utils_1.applyTimeToDate)(rangeSelection.to, {
|
|
364
|
+
hours: endHours,
|
|
365
|
+
minutes: endMinutes,
|
|
366
|
+
seconds: endSeconds,
|
|
367
|
+
});
|
|
368
|
+
setRangeSelection({ from: newFrom, to: newTo });
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
setRangeSelection({ from: newFrom });
|
|
372
|
+
}
|
|
373
|
+
};
|
|
374
|
+
var applySelection = function (singleDate) {
|
|
375
|
+
if (isRangeSelection) {
|
|
376
|
+
if (rangeSelection.from && rangeSelection.to) {
|
|
377
|
+
var formattedRange = (0, date_picker_utils_1.formatDateRange)(rangeSelection.from, rangeSelection.to, dateFormat, showTimeInput ? timeFormat : undefined);
|
|
378
|
+
onDateSelect(formattedRange, true);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
else if (singleDate || rangeSelection.from) {
|
|
382
|
+
var dateToFormat = singleDate || rangeSelection.from;
|
|
383
|
+
if (dateToFormat) {
|
|
384
|
+
var formatString = showTimeInput ? "".concat(dateFormat, " ").concat(timeFormat) : dateFormat;
|
|
385
|
+
var formattedDate = (0, date_picker_utils_1.formatDate)(dateToFormat, formatString);
|
|
386
|
+
onDateSelect(formattedDate, true);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
};
|
|
390
|
+
var cancelSelection = function () {
|
|
391
|
+
if (options) {
|
|
392
|
+
setCurrentView('options');
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
onClose();
|
|
396
|
+
}
|
|
397
|
+
};
|
|
398
|
+
var handleOptionSelect = function (optionValue) {
|
|
399
|
+
if (optionValue === 'custom') {
|
|
400
|
+
setCurrentView('calendar');
|
|
401
|
+
return;
|
|
402
|
+
}
|
|
403
|
+
onDateSelect(optionValue, true);
|
|
404
|
+
};
|
|
405
|
+
var selectedValue;
|
|
406
|
+
if (rangeSelection.from) {
|
|
407
|
+
selectedValue = { from: rangeSelection.from, to: rangeSelection.to };
|
|
408
|
+
}
|
|
409
|
+
else if (value && !isRangeSelection) {
|
|
410
|
+
var formatString = showTimeInput ? "".concat(dateFormat, " ").concat(timeFormat) : dateFormat;
|
|
411
|
+
var parsedDate = (0, date_picker_utils_1.parseDate)(value, formatString);
|
|
412
|
+
if (parsedDate) {
|
|
413
|
+
selectedValue = parsedDate;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
// Determine if we should show the action buttons - now for both range selection and time input
|
|
417
|
+
var showActionButtons = isRangeSelection || showTimeInput;
|
|
418
|
+
var canApply = isRangeSelection ? rangeSelection.from && rangeSelection.to : !!rangeSelection.from;
|
|
419
|
+
var _p = __read(React.useState(null), 2), inputWidth = _p[0], setInputWidth = _p[1];
|
|
420
|
+
React.useEffect(function () {
|
|
421
|
+
if (open && anchorEl) {
|
|
422
|
+
var width = anchorEl.getBoundingClientRect().width;
|
|
423
|
+
setInputWidth(width);
|
|
424
|
+
}
|
|
425
|
+
}, [open, anchorEl]);
|
|
426
|
+
var ownerState = {
|
|
427
|
+
showTwoMonths: showTwoMonths,
|
|
428
|
+
isRangeSelection: isRangeSelection,
|
|
429
|
+
};
|
|
430
|
+
return (React.createElement(Root, __assign({ open: open, anchorEl: anchorEl, onClose: onClose, className: (0, clsx_1.default)(classes.root), ownerState: ownerState, ref: ref, anchorOrigin: {
|
|
431
|
+
vertical: 'bottom',
|
|
432
|
+
horizontal: 'left',
|
|
433
|
+
}, transformOrigin: {
|
|
434
|
+
vertical: 'top',
|
|
435
|
+
horizontal: 'left',
|
|
436
|
+
}, marginThreshold: 30, style: { marginTop: '-24px' } }, PopoverProps, rootProps),
|
|
437
|
+
React.createElement(Content, { className: classes.content, ownerState: __assign(__assign({}, ownerState), { inputWidth: inputWidth, currentView: currentView }) }, currentView === 'options' && options ? (React.createElement(dropdown_menu_1.DropdownMenuList, null, options.map(function (option, index) { return (React.createElement(dropdown_menu_1.DropdownMenuListItem, { key: index, title: option.text, selected: option.value === value, onClick: function () { return handleOptionSelect(option.value); } })); }))) : (React.createElement(React.Fragment, null,
|
|
438
|
+
React.createElement(CalendarWrapper, { className: classes.calendarWrapper },
|
|
439
|
+
React.createElement(react_day_picker_1.DayPicker, { mode: "range", selected: selectedValue, onSelect: handleCalendarSelect, showOutsideDays: true, numberOfMonths: showTwoMonths ? 2 : 1, pagedNavigation: showTwoMonths })),
|
|
440
|
+
showTimeInput && (React.createElement(React.Fragment, null,
|
|
441
|
+
React.createElement(TimeInputContainer, null,
|
|
442
|
+
React.createElement(TimeInputLabel, null, "Time:"),
|
|
443
|
+
React.createElement(TimeInput, { size: "small", value: hours, onChange: function (e) { return handleTimeChange(e.target.value, setHours, 23); }, placeholder: "HH" }),
|
|
444
|
+
React.createElement("span", null, ":"),
|
|
445
|
+
React.createElement(TimeInput, { size: "small", value: minutes, onChange: function (e) { return handleTimeChange(e.target.value, setMinutes, 59); }, placeholder: "MM" }),
|
|
446
|
+
React.createElement("span", null, ":"),
|
|
447
|
+
React.createElement(TimeInput, { size: "small", value: seconds, onChange: function (e) { return handleTimeChange(e.target.value, setSeconds, 59); }, placeholder: "SS" }),
|
|
448
|
+
isRangeSelection && (React.createElement(EndTimeInputContainer, null,
|
|
449
|
+
React.createElement(TimeInputLabel, null, "End Time:"),
|
|
450
|
+
React.createElement(TimeInput, { size: "small", value: endHours, onChange: function (e) { return handleTimeChange(e.target.value, setEndHours, 23); }, placeholder: "HH" }),
|
|
451
|
+
React.createElement("span", null, ":"),
|
|
452
|
+
React.createElement(TimeInput, { size: "small", value: endMinutes, onChange: function (e) { return handleTimeChange(e.target.value, setEndMinutes, 59); }, placeholder: "MM" }),
|
|
453
|
+
React.createElement("span", null, ":"),
|
|
454
|
+
React.createElement(TimeInput, { size: "small", value: endSeconds, onChange: function (e) { return handleTimeChange(e.target.value, setEndSeconds, 59); }, placeholder: "SS" })))))),
|
|
455
|
+
showActionButtons && (React.createElement(ButtonContainer, { className: classes.buttonContainer },
|
|
456
|
+
React.createElement(button_1.Button, { size: "small", variant: "outlined", onClick: cancelSelection, style: { marginRight: 8 } }, "Cancel"),
|
|
457
|
+
React.createElement(button_1.Button, { size: "small", variant: "contained", color: "primary", onClick: function () { return applySelection(); }, disabled: !canApply }, "Apply"))))))));
|
|
458
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { IDatePickerPopoverProps } from './date-picker-types';
|
|
3
|
+
export interface IDatePickerTriggerProps {
|
|
4
|
+
'aria-controls'?: string;
|
|
5
|
+
'aria-haspopup'?: 'dialog';
|
|
6
|
+
'aria-expanded'?: boolean;
|
|
7
|
+
id?: string;
|
|
8
|
+
onClick(event: React.MouseEvent<HTMLDivElement>): void;
|
|
9
|
+
}
|
|
10
|
+
export interface IDatePickerStateValue {
|
|
11
|
+
triggerProps: IDatePickerTriggerProps;
|
|
12
|
+
popoverProps: Pick<IDatePickerPopoverProps, 'open' | 'anchorEl' | 'onClose'>;
|
|
13
|
+
}
|
|
14
|
+
export interface IDatePickerStateProps {
|
|
15
|
+
baseId?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const useDatePickerState: ({ baseId: propBaseId }?: IDatePickerStateProps) => IDatePickerStateValue;
|
|
18
|
+
interface IDatePickerStateProviderProps extends IDatePickerStateProps {
|
|
19
|
+
children?: React.ReactNode | ((state: IDatePickerStateValue) => React.ReactNode);
|
|
20
|
+
}
|
|
21
|
+
export declare const DatePickerStateContext: React.Context<IDatePickerStateValue>;
|
|
22
|
+
export declare const useDatePickerStateContext: () => IDatePickerStateValue;
|
|
23
|
+
export declare const DatePickerStateProvider: ({ children, ...props }: IDatePickerStateProviderProps) => React.JSX.Element;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
26
|
+
var t = {};
|
|
27
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
28
|
+
t[p] = s[p];
|
|
29
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
30
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
31
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
32
|
+
t[p[i]] = s[p[i]];
|
|
33
|
+
}
|
|
34
|
+
return t;
|
|
35
|
+
};
|
|
36
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
37
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
38
|
+
if (!m) return o;
|
|
39
|
+
var i = m.call(o), r, ar = [], e;
|
|
40
|
+
try {
|
|
41
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
42
|
+
}
|
|
43
|
+
catch (error) { e = { error: error }; }
|
|
44
|
+
finally {
|
|
45
|
+
try {
|
|
46
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
47
|
+
}
|
|
48
|
+
finally { if (e) throw e.error; }
|
|
49
|
+
}
|
|
50
|
+
return ar;
|
|
51
|
+
};
|
|
52
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
+
exports.DatePickerStateProvider = exports.useDatePickerStateContext = exports.DatePickerStateContext = exports.useDatePickerState = void 0;
|
|
54
|
+
var React = __importStar(require("react"));
|
|
55
|
+
var use_id_1 = require("../utils/use-id");
|
|
56
|
+
var useDatePickerState = function (_a) {
|
|
57
|
+
var _b = _a === void 0 ? {} : _a, propBaseId = _b.baseId;
|
|
58
|
+
var baseId = (0, use_id_1.useId)(propBaseId);
|
|
59
|
+
var triggerId = "".concat(baseId, "-trigger");
|
|
60
|
+
var popoverId = "".concat(baseId, "-popover");
|
|
61
|
+
var _c = __read(React.useState(null), 2), anchorEl = _c[0], setAnchorEl = _c[1];
|
|
62
|
+
var handleTriggerClick = function (event) {
|
|
63
|
+
event.preventDefault();
|
|
64
|
+
setAnchorEl(event.currentTarget);
|
|
65
|
+
};
|
|
66
|
+
var handlePopoverClose = function () { return setAnchorEl(null); };
|
|
67
|
+
var isOpen = Boolean(anchorEl);
|
|
68
|
+
return {
|
|
69
|
+
triggerProps: {
|
|
70
|
+
onClick: handleTriggerClick,
|
|
71
|
+
id: triggerId,
|
|
72
|
+
'aria-controls': popoverId,
|
|
73
|
+
'aria-haspopup': 'dialog',
|
|
74
|
+
'aria-expanded': isOpen,
|
|
75
|
+
},
|
|
76
|
+
popoverProps: {
|
|
77
|
+
anchorEl: anchorEl,
|
|
78
|
+
open: isOpen,
|
|
79
|
+
onClose: handlePopoverClose,
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
exports.useDatePickerState = useDatePickerState;
|
|
84
|
+
exports.DatePickerStateContext = React.createContext({
|
|
85
|
+
triggerProps: { onClick: function () { return undefined; } },
|
|
86
|
+
popoverProps: { anchorEl: null, open: false, onClose: function () { return undefined; } },
|
|
87
|
+
});
|
|
88
|
+
var useDatePickerStateContext = function () { return React.useContext(exports.DatePickerStateContext); };
|
|
89
|
+
exports.useDatePickerStateContext = useDatePickerStateContext;
|
|
90
|
+
var DatePickerStateProvider = function (_a) {
|
|
91
|
+
var children = _a.children, props = __rest(_a, ["children"]);
|
|
92
|
+
var state = (0, exports.useDatePickerState)(props);
|
|
93
|
+
return (React.createElement(exports.DatePickerStateContext.Provider, { value: state }, typeof children === 'function' ? children(state) : children));
|
|
94
|
+
};
|
|
95
|
+
exports.DatePickerStateProvider = DatePickerStateProvider;
|