frey-ui 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/Calendar/calendar.css +216 -0
- package/dist/cjs/Calendar/calendar.module.css.cjs +10 -0
- package/dist/cjs/Calendar/calendar.module.css.cjs.map +1 -0
- package/dist/cjs/Calendar/calendarInteractions.cjs +34 -0
- package/dist/cjs/Calendar/calendarInteractions.cjs.map +1 -0
- package/dist/cjs/Calendar/calendarModel.cjs +232 -0
- package/dist/cjs/Calendar/calendarModel.cjs.map +1 -0
- package/dist/cjs/Calendar/index.cjs +204 -0
- package/dist/cjs/Calendar/index.cjs.map +1 -0
- package/dist/cjs/DateField/DateFieldSegments.cjs +71 -0
- package/dist/cjs/DateField/DateFieldSegments.cjs.map +1 -0
- package/dist/cjs/DateField/DateSegmentInput.cjs +17 -0
- package/dist/cjs/DateField/DateSegmentInput.cjs.map +1 -0
- package/dist/cjs/DateField/dateFieldInteractions.cjs +205 -0
- package/dist/cjs/DateField/dateFieldInteractions.cjs.map +1 -0
- package/dist/cjs/DateField/dateFieldState.cjs +127 -0
- package/dist/cjs/DateField/dateFieldState.cjs.map +1 -0
- package/dist/cjs/DateField/datefield.css +134 -0
- package/dist/cjs/DateField/datefield.module.css.cjs +10 -0
- package/dist/cjs/DateField/datefield.module.css.cjs.map +1 -0
- package/dist/cjs/DateField/index.cjs +203 -0
- package/dist/cjs/DateField/index.cjs.map +1 -0
- package/dist/cjs/DatePicker/datepicker.css +24 -0
- package/dist/cjs/DatePicker/datepicker.module.css.cjs +10 -0
- package/dist/cjs/DatePicker/datepicker.module.css.cjs.map +1 -0
- package/dist/cjs/DatePicker/index.cjs +98 -0
- package/dist/cjs/DatePicker/index.cjs.map +1 -0
- package/dist/cjs/DropdownMenu/index.cjs +28 -55
- package/dist/cjs/DropdownMenu/index.cjs.map +1 -1
- package/dist/cjs/Icons/CalendarIcon.cjs +12 -0
- package/dist/cjs/Icons/CalendarIcon.cjs.map +1 -0
- package/dist/cjs/Popover/index.cjs +29 -52
- package/dist/cjs/Popover/index.cjs.map +1 -1
- package/dist/cjs/Tooltip/index.cjs +29 -34
- package/dist/cjs/Tooltip/index.cjs.map +1 -1
- package/dist/cjs/date/dateEngine.cjs +591 -0
- package/dist/cjs/date/dateEngine.cjs.map +1 -0
- package/dist/cjs/date/dateLocale.cjs +239 -0
- package/dist/cjs/date/dateLocale.cjs.map +1 -0
- package/dist/cjs/date/japaneseEraData.cjs +252 -0
- package/dist/cjs/date/japaneseEraData.cjs.map +1 -0
- package/dist/cjs/date/useDateLocale.cjs +24 -0
- package/dist/cjs/date/useDateLocale.cjs.map +1 -0
- package/dist/cjs/floating/FocusScope.cjs +195 -0
- package/dist/cjs/floating/FocusScope.cjs.map +1 -0
- package/dist/cjs/floating/autoUpdate.cjs +205 -0
- package/dist/cjs/floating/autoUpdate.cjs.map +1 -0
- package/dist/cjs/floating/dismissibleLayer.cjs +116 -0
- package/dist/cjs/floating/dismissibleLayer.cjs.map +1 -0
- package/dist/cjs/floating/geometry.cjs +160 -0
- package/dist/cjs/floating/geometry.cjs.map +1 -0
- package/dist/cjs/floating/platform.cjs +15 -0
- package/dist/cjs/floating/platform.cjs.map +1 -0
- package/dist/cjs/floating/pointerEvent.cjs +92 -0
- package/dist/cjs/floating/pointerEvent.cjs.map +1 -0
- package/dist/cjs/floating/tabbable.cjs +101 -0
- package/dist/cjs/floating/tabbable.cjs.map +1 -0
- package/dist/cjs/floating/useFloatingPosition.cjs +119 -0
- package/dist/cjs/floating/useFloatingPosition.cjs.map +1 -0
- package/dist/cjs/floating/useTooltipInteractions.cjs +136 -0
- package/dist/cjs/floating/useTooltipInteractions.cjs.map +1 -0
- package/dist/cjs/index.cjs +68 -60
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/theme.css +14 -0
- package/dist/esm/Calendar/calendar.css +216 -0
- package/dist/esm/Calendar/calendar.module.css.mjs +6 -0
- package/dist/esm/Calendar/calendar.module.css.mjs.map +1 -0
- package/dist/esm/Calendar/calendarInteractions.mjs +32 -0
- package/dist/esm/Calendar/calendarInteractions.mjs.map +1 -0
- package/dist/esm/Calendar/calendarModel.mjs +224 -0
- package/dist/esm/Calendar/calendarModel.mjs.map +1 -0
- package/dist/esm/Calendar/index.mjs +200 -0
- package/dist/esm/Calendar/index.mjs.map +1 -0
- package/dist/esm/DateField/DateFieldSegments.mjs +69 -0
- package/dist/esm/DateField/DateFieldSegments.mjs.map +1 -0
- package/dist/esm/DateField/DateSegmentInput.mjs +15 -0
- package/dist/esm/DateField/DateSegmentInput.mjs.map +1 -0
- package/dist/esm/DateField/dateFieldInteractions.mjs +198 -0
- package/dist/esm/DateField/dateFieldInteractions.mjs.map +1 -0
- package/dist/esm/DateField/dateFieldState.mjs +119 -0
- package/dist/esm/DateField/dateFieldState.mjs.map +1 -0
- package/dist/esm/DateField/datefield.css +134 -0
- package/dist/esm/DateField/datefield.module.css.mjs +6 -0
- package/dist/esm/DateField/datefield.module.css.mjs.map +1 -0
- package/dist/esm/DateField/index.mjs +198 -0
- package/dist/esm/DateField/index.mjs.map +1 -0
- package/dist/esm/DatePicker/datepicker.css +24 -0
- package/dist/esm/DatePicker/datepicker.module.css.mjs +6 -0
- package/dist/esm/DatePicker/datepicker.module.css.mjs.map +1 -0
- package/dist/esm/DatePicker/index.mjs +94 -0
- package/dist/esm/DatePicker/index.mjs.map +1 -0
- package/dist/esm/DropdownMenu/index.mjs +29 -56
- package/dist/esm/DropdownMenu/index.mjs.map +1 -1
- package/dist/esm/Icons/CalendarIcon.mjs +10 -0
- package/dist/esm/Icons/CalendarIcon.mjs.map +1 -0
- package/dist/esm/Popover/index.mjs +30 -53
- package/dist/esm/Popover/index.mjs.map +1 -1
- package/dist/esm/Tooltip/index.mjs +29 -34
- package/dist/esm/Tooltip/index.mjs.map +1 -1
- package/dist/esm/date/dateEngine.mjs +573 -0
- package/dist/esm/date/dateEngine.mjs.map +1 -0
- package/dist/esm/date/dateLocale.mjs +226 -0
- package/dist/esm/date/dateLocale.mjs.map +1 -0
- package/dist/esm/date/japaneseEraData.mjs +250 -0
- package/dist/esm/date/japaneseEraData.mjs.map +1 -0
- package/dist/esm/date/useDateLocale.mjs +22 -0
- package/dist/esm/date/useDateLocale.mjs.map +1 -0
- package/dist/esm/floating/FocusScope.mjs +193 -0
- package/dist/esm/floating/FocusScope.mjs.map +1 -0
- package/dist/esm/floating/autoUpdate.mjs +202 -0
- package/dist/esm/floating/autoUpdate.mjs.map +1 -0
- package/dist/esm/floating/dismissibleLayer.mjs +114 -0
- package/dist/esm/floating/dismissibleLayer.mjs.map +1 -0
- package/dist/esm/floating/geometry.mjs +158 -0
- package/dist/esm/floating/geometry.mjs.map +1 -0
- package/dist/esm/floating/platform.mjs +12 -0
- package/dist/esm/floating/platform.mjs.map +1 -0
- package/dist/esm/floating/pointerEvent.mjs +89 -0
- package/dist/esm/floating/pointerEvent.mjs.map +1 -0
- package/dist/esm/floating/tabbable.mjs +99 -0
- package/dist/esm/floating/tabbable.mjs.map +1 -0
- package/dist/esm/floating/useFloatingPosition.mjs +117 -0
- package/dist/esm/floating/useFloatingPosition.mjs.map +1 -0
- package/dist/esm/floating/useTooltipInteractions.mjs +134 -0
- package/dist/esm/floating/useTooltipInteractions.mjs.map +1 -0
- package/dist/esm/index.mjs +4 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/theme.css +14 -0
- package/dist/index.d.ts +80 -3
- package/dist/types/src/Calendar/calendarInteractions.d.ts +9 -0
- package/dist/types/src/Calendar/calendarInteractions.d.ts.map +1 -0
- package/dist/types/src/Calendar/calendarModel.d.ts +81 -0
- package/dist/types/src/Calendar/calendarModel.d.ts.map +1 -0
- package/dist/types/src/Calendar/index.d.ts +26 -0
- package/dist/types/src/Calendar/index.d.ts.map +1 -0
- package/dist/types/src/DateField/DateFieldSegments.d.ts +28 -0
- package/dist/types/src/DateField/DateFieldSegments.d.ts.map +1 -0
- package/dist/types/src/DateField/DateSegmentInput.d.ts +23 -0
- package/dist/types/src/DateField/DateSegmentInput.d.ts.map +1 -0
- package/dist/types/src/DateField/dateFieldInteractions.d.ts +66 -0
- package/dist/types/src/DateField/dateFieldInteractions.d.ts.map +1 -0
- package/dist/types/src/DateField/dateFieldState.d.ts +32 -0
- package/dist/types/src/DateField/dateFieldState.d.ts.map +1 -0
- package/dist/types/src/DateField/index.d.ts +42 -0
- package/dist/types/src/DateField/index.d.ts.map +1 -0
- package/dist/types/src/DatePicker/index.d.ts +19 -0
- package/dist/types/src/DatePicker/index.d.ts.map +1 -0
- package/dist/types/src/DropdownMenu/index.d.ts.map +1 -1
- package/dist/types/src/Icons/CalendarIcon.d.ts +4 -0
- package/dist/types/src/Icons/CalendarIcon.d.ts.map +1 -0
- package/dist/types/src/Icons/index.d.ts +1 -0
- package/dist/types/src/Icons/index.d.ts.map +1 -1
- package/dist/types/src/Popover/index.d.ts +3 -1
- package/dist/types/src/Popover/index.d.ts.map +1 -1
- package/dist/types/src/Tooltip/index.d.ts.map +1 -1
- package/dist/types/src/date/dateEngine.d.ts +22 -0
- package/dist/types/src/date/dateEngine.d.ts.map +1 -0
- package/dist/types/src/date/dateLocale.d.ts +30 -0
- package/dist/types/src/date/dateLocale.d.ts.map +1 -0
- package/dist/types/src/date/japaneseEraData.d.ts +7 -0
- package/dist/types/src/date/japaneseEraData.d.ts.map +1 -0
- package/dist/types/src/date/types.d.ts +23 -0
- package/dist/types/src/date/types.d.ts.map +1 -0
- package/dist/types/src/date/useDateLocale.d.ts +2 -0
- package/dist/types/src/date/useDateLocale.d.ts.map +1 -0
- package/dist/types/src/floating/FocusScope.d.ts +11 -0
- package/dist/types/src/floating/FocusScope.d.ts.map +1 -0
- package/dist/types/src/floating/autoUpdate.d.ts +5 -0
- package/dist/types/src/floating/autoUpdate.d.ts.map +1 -0
- package/dist/types/src/floating/dismissibleLayer.d.ts +12 -0
- package/dist/types/src/floating/dismissibleLayer.d.ts.map +1 -0
- package/dist/types/src/floating/geometry.d.ts +27 -0
- package/dist/types/src/floating/geometry.d.ts.map +1 -0
- package/dist/types/src/floating/platform.d.ts +3 -0
- package/dist/types/src/floating/platform.d.ts.map +1 -0
- package/dist/types/src/floating/pointerEvent.d.ts +3 -0
- package/dist/types/src/floating/pointerEvent.d.ts.map +1 -0
- package/dist/types/src/floating/tabbable.d.ts +2 -0
- package/dist/types/src/floating/tabbable.d.ts.map +1 -0
- package/dist/types/src/floating/useFloatingPosition.d.ts +18 -0
- package/dist/types/src/floating/useFloatingPosition.d.ts.map +1 -0
- package/dist/types/src/floating/useTooltipInteractions.d.ts +9 -0
- package/dist/types/src/floating/useTooltipInteractions.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +8 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/package.json +1 -2
- package/dist/cjs/hooks/floatingConfig.cjs +0 -24
- package/dist/cjs/hooks/floatingConfig.cjs.map +0 -1
- package/dist/esm/hooks/floatingConfig.mjs +0 -20
- package/dist/esm/hooks/floatingConfig.mjs.map +0 -1
- package/dist/types/src/hooks/floatingConfig.d.ts +0 -6
- package/dist/types/src/hooks/floatingConfig.d.ts.map +0 -1
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
import clsx from 'clsx';
|
|
4
|
+
import React, { useMemo, useReducer, useRef, useEffect } from 'react';
|
|
5
|
+
import Field from '../Field/index.mjs';
|
|
6
|
+
import { CloseIcon } from '../Icons/CloseIcon.mjs';
|
|
7
|
+
import { validateDateCalendar, validateDateConstraints, parseDateValue, getCalendarDate, isDateWithinConstraints } from '../date/dateEngine.mjs';
|
|
8
|
+
import { getDateSegmentLayout, getCalendarEraOptions, getLocaleDirection } from '../date/dateLocale.mjs';
|
|
9
|
+
import { useDateLocale } from '../date/useDateLocale.mjs';
|
|
10
|
+
import { useControllableValue } from '../hooks/useControllableState.mjs';
|
|
11
|
+
import { DateFieldSegments } from './DateFieldSegments.mjs';
|
|
12
|
+
import { normalizeDateFieldValue, resolveDateDraftValue, parseDateFieldPaste, resolveDateFieldKeyCommand, createDateDraftEdit, stepDateDraft } from './dateFieldInteractions.mjs';
|
|
13
|
+
import { draftReducer, createDraft, areValuesEqual, getDraftValue, TEMPLATE_VALUE, getSourceKey } from './dateFieldState.mjs';
|
|
14
|
+
import styles from './datefield.module.css.mjs';
|
|
15
|
+
|
|
16
|
+
function isCommittedDateSelectable(value, minDate, maxDate, isDateUnavailable) {
|
|
17
|
+
if (value === null)
|
|
18
|
+
return true;
|
|
19
|
+
return (isDateWithinConstraints(parseDateValue(value), minDate, maxDate) &&
|
|
20
|
+
!isDateUnavailable?.(value));
|
|
21
|
+
}
|
|
22
|
+
function hasDateFieldInternalError(committedValue, required, draftChanged, draftValue, draftSelectable, committedSelectable) {
|
|
23
|
+
return ((!committedValue && required && !draftChanged) ||
|
|
24
|
+
!committedSelectable ||
|
|
25
|
+
(draftChanged && draftValue !== null && !draftSelectable));
|
|
26
|
+
}
|
|
27
|
+
function shouldShowClearButton(requested, required, disabled, readOnly, committedValue) {
|
|
28
|
+
return (requested && !required && !disabled && !readOnly && committedValue !== null);
|
|
29
|
+
}
|
|
30
|
+
const DateFieldControl = React.forwardRef(function DateFieldControl({ value, defaultValue = null, onValueChange, minValue, maxValue, isDateUnavailable, locale, calendar: calendarProp = 'gregory', segmentLabels, showClearButton = true, clearButtonLabel = 'Clear date', disabled = false, readOnly = false, required = false, name, controlClassName, controlStyle, inputId, labelId, describedBy, hasConsumerError, endAdornment, onSegmentKeyDown, }, ref) {
|
|
31
|
+
const calendar = validateDateCalendar(calendarProp);
|
|
32
|
+
const resolvedLocale = useDateLocale(locale);
|
|
33
|
+
const layout = useMemo(() => getDateSegmentLayout(TEMPLATE_VALUE, resolvedLocale, calendar), [calendar, resolvedLocale]);
|
|
34
|
+
const eraOptions = useMemo(() => getCalendarEraOptions(resolvedLocale, calendar), [calendar, resolvedLocale]);
|
|
35
|
+
const parsedDefaultValue = normalizeDateFieldValue(defaultValue, 'defaultValue');
|
|
36
|
+
const parsedControlledValue = normalizeDateFieldValue(value, 'value');
|
|
37
|
+
const { minDate, maxDate } = validateDateConstraints(minValue, maxValue);
|
|
38
|
+
const [committedValue, setCommittedValue] = useControllableValue(parsedControlledValue, parsedDefaultValue, onValueChange);
|
|
39
|
+
const sourceKey = getSourceKey(committedValue, calendar, resolvedLocale);
|
|
40
|
+
const [storedDraft, dispatch] = useReducer(draftReducer, committedValue, (initialValue) => createDraft(initialValue, calendar, resolvedLocale, layout, eraOptions));
|
|
41
|
+
const baselineDraft = useMemo(() => createDraft(committedValue, calendar, resolvedLocale, layout, eraOptions), [calendar, committedValue, eraOptions, layout, resolvedLocale]);
|
|
42
|
+
const draft = storedDraft.sourceKey === sourceKey ? storedDraft : baselineDraft;
|
|
43
|
+
const draftChanged = !areValuesEqual(draft.values, baselineDraft.values);
|
|
44
|
+
const draftValue = getDraftValue(draft, resolvedLocale, calendar);
|
|
45
|
+
const resolvedDraftValue = resolveDateDraftValue({
|
|
46
|
+
draft,
|
|
47
|
+
locale: resolvedLocale,
|
|
48
|
+
calendar,
|
|
49
|
+
minDate,
|
|
50
|
+
maxDate,
|
|
51
|
+
isDateUnavailable,
|
|
52
|
+
});
|
|
53
|
+
const draftIsoDate = typeof draftValue === 'string' ? parseDateValue(draftValue) : undefined;
|
|
54
|
+
const draftSelectable = typeof resolvedDraftValue === 'string';
|
|
55
|
+
const committedDate = committedValue
|
|
56
|
+
? parseDateValue(committedValue)
|
|
57
|
+
: undefined;
|
|
58
|
+
const committedSelectable = isCommittedDateSelectable(committedValue, minDate, maxDate, isDateUnavailable);
|
|
59
|
+
const referenceCalendarDate = getCalendarDate(draftIsoDate ?? committedDate ?? parseDateValue(TEMPLATE_VALUE), calendar);
|
|
60
|
+
const hasInternalError = hasDateFieldInternalError(committedValue, required, draftChanged, draftValue, draftSelectable, committedSelectable);
|
|
61
|
+
const invalid = hasConsumerError || hasInternalError;
|
|
62
|
+
const firstInputRef = useRef(null);
|
|
63
|
+
const segmentInputRefs = useRef({});
|
|
64
|
+
const direction = getLocaleDirection(resolvedLocale);
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
firstInputRef.current?.setCustomValidity(hasInternalError ? 'Enter a complete, valid, available date.' : '');
|
|
67
|
+
}, [hasInternalError]);
|
|
68
|
+
const visibleSegments = layout
|
|
69
|
+
.filter((part) => part.kind === 'segment')
|
|
70
|
+
.map((part) => part.type);
|
|
71
|
+
const firstVisibleSegment = visibleSegments[0];
|
|
72
|
+
function replaceWithCommitted(nextValue, activeSegment = draft.activeSegment) {
|
|
73
|
+
const replacement = createDraft(nextValue, calendar, resolvedLocale, layout, eraOptions);
|
|
74
|
+
dispatch({
|
|
75
|
+
type: 'replace',
|
|
76
|
+
draft: { ...replacement, activeSegment },
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
function handleSegmentChange(segment, nextValue) {
|
|
80
|
+
if (disabled || readOnly)
|
|
81
|
+
return;
|
|
82
|
+
const edit = createDateDraftEdit({
|
|
83
|
+
draft,
|
|
84
|
+
segment,
|
|
85
|
+
nextValue,
|
|
86
|
+
locale: resolvedLocale,
|
|
87
|
+
eraOptions,
|
|
88
|
+
});
|
|
89
|
+
if (edit.shouldApply)
|
|
90
|
+
applyDraft(edit.draft);
|
|
91
|
+
else
|
|
92
|
+
dispatch({ type: 'replace', draft: edit.draft });
|
|
93
|
+
}
|
|
94
|
+
function applyDraft(nextDraft) {
|
|
95
|
+
const nextValue = resolveDateDraftValue({
|
|
96
|
+
draft: nextDraft,
|
|
97
|
+
locale: resolvedLocale,
|
|
98
|
+
calendar,
|
|
99
|
+
minDate,
|
|
100
|
+
maxDate,
|
|
101
|
+
isDateUnavailable,
|
|
102
|
+
});
|
|
103
|
+
if (nextValue === undefined) {
|
|
104
|
+
dispatch({ type: 'replace', draft: nextDraft });
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
setCommittedValue(nextValue);
|
|
108
|
+
replaceWithCommitted(nextValue);
|
|
109
|
+
}
|
|
110
|
+
function executeKeyCommand(command, currentSegment) {
|
|
111
|
+
switch (command.type) {
|
|
112
|
+
case 'move':
|
|
113
|
+
if (command.target === currentSegment)
|
|
114
|
+
return;
|
|
115
|
+
dispatch({ type: 'set-active', segment: command.target });
|
|
116
|
+
segmentInputRefs.current[command.target]?.focus();
|
|
117
|
+
return;
|
|
118
|
+
case 'restore':
|
|
119
|
+
dispatch({ type: 'replace', draft: baselineDraft });
|
|
120
|
+
return;
|
|
121
|
+
case 'clear':
|
|
122
|
+
handleSegmentChange(currentSegment, '');
|
|
123
|
+
return;
|
|
124
|
+
case 'step': {
|
|
125
|
+
const nextDraft = stepDateDraft({
|
|
126
|
+
draft,
|
|
127
|
+
segment: command.segment,
|
|
128
|
+
amount: command.amount,
|
|
129
|
+
calendar,
|
|
130
|
+
locale: resolvedLocale,
|
|
131
|
+
layout,
|
|
132
|
+
eraOptions,
|
|
133
|
+
});
|
|
134
|
+
if (nextDraft)
|
|
135
|
+
applyDraft(nextDraft);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function handleSegmentKeyDown(segment, event) {
|
|
140
|
+
onSegmentKeyDown?.(segment, event);
|
|
141
|
+
if (event.defaultPrevented)
|
|
142
|
+
return;
|
|
143
|
+
const command = resolveDateFieldKeyCommand({
|
|
144
|
+
key: event.key,
|
|
145
|
+
segment,
|
|
146
|
+
direction,
|
|
147
|
+
visibleSegments,
|
|
148
|
+
editable: !disabled && !readOnly,
|
|
149
|
+
});
|
|
150
|
+
if (!command)
|
|
151
|
+
return;
|
|
152
|
+
event.preventDefault();
|
|
153
|
+
executeKeyCommand(command, segment);
|
|
154
|
+
}
|
|
155
|
+
function handleSegmentPaste(_segment, event) {
|
|
156
|
+
if (disabled || readOnly)
|
|
157
|
+
return;
|
|
158
|
+
const text = event.clipboardData.getData('text');
|
|
159
|
+
const nextDraft = parseDateFieldPaste({
|
|
160
|
+
text,
|
|
161
|
+
draft,
|
|
162
|
+
calendar,
|
|
163
|
+
locale: resolvedLocale,
|
|
164
|
+
layout,
|
|
165
|
+
eraOptions,
|
|
166
|
+
});
|
|
167
|
+
if (!nextDraft)
|
|
168
|
+
return;
|
|
169
|
+
event.preventDefault();
|
|
170
|
+
applyDraft(nextDraft);
|
|
171
|
+
}
|
|
172
|
+
function handleClear() {
|
|
173
|
+
setCommittedValue(null);
|
|
174
|
+
replaceWithCommitted(null, firstVisibleSegment);
|
|
175
|
+
firstInputRef.current?.focus();
|
|
176
|
+
}
|
|
177
|
+
function handleInputRef(segment, node) {
|
|
178
|
+
if (node)
|
|
179
|
+
segmentInputRefs.current[segment] = node;
|
|
180
|
+
if (segment === firstVisibleSegment)
|
|
181
|
+
firstInputRef.current = node;
|
|
182
|
+
}
|
|
183
|
+
const formValue = draftChanged && !draftSelectable ? '' : (committedValue ?? '');
|
|
184
|
+
const showClear = shouldShowClearButton(showClearButton, required, disabled, readOnly, committedValue);
|
|
185
|
+
return (jsx("div", { ref: ref, id: inputId, dir: direction, className: clsx(styles.control, {
|
|
186
|
+
[styles.control_invalid]: invalid,
|
|
187
|
+
[styles.control_disabled]: disabled,
|
|
188
|
+
[styles.control_readonly]: readOnly,
|
|
189
|
+
}, controlClassName), style: controlStyle, children: jsxs("fieldset", { className: styles.group, "aria-labelledby": labelId, "aria-describedby": describedBy, "aria-invalid": invalid || undefined, children: [jsx(DateFieldSegments, { layout: layout, draft: draft, segmentLabels: segmentLabels, locale: resolvedLocale, calendarDate: referenceCalendarDate, eraOptions: eraOptions, firstVisibleSegment: firstVisibleSegment, disabled: disabled, readOnly: readOnly, required: required, invalid: invalid, onInputRef: handleInputRef, onFocus: (segment) => dispatch({ type: 'set-active', segment }), onChange: handleSegmentChange, onKeyDown: handleSegmentKeyDown, onPaste: handleSegmentPaste }), showClear && (jsx("button", { type: 'button', className: styles.clear_button, "aria-label": clearButtonLabel, onClick: handleClear, children: jsx(CloseIcon, { size: 'sm', "aria-hidden": 'true' }) })), endAdornment, name && (jsx("input", { type: 'hidden', name: name, value: formValue, disabled: disabled }))] }) }));
|
|
190
|
+
});
|
|
191
|
+
DateFieldControl.displayName = 'DateFieldControl';
|
|
192
|
+
const DateField = React.forwardRef(function DateField({ label, hideLabel = false, helperText, error, disabled = false, required = false, id, className, style, ...controlProps }, ref) {
|
|
193
|
+
return (jsx(Field, { label: label, labelElement: 'span', hideLabel: hideLabel, helperText: helperText, error: error, disabled: disabled, required: required, id: id, className: className, style: style, children: ({ inputId, labelId, describedBy, hasError }) => (jsx(DateFieldControl, { ...controlProps, ref: ref, inputId: inputId, labelId: labelId, describedBy: describedBy, hasConsumerError: hasError, disabled: disabled, required: required })) }));
|
|
194
|
+
});
|
|
195
|
+
DateField.displayName = 'DateField';
|
|
196
|
+
|
|
197
|
+
export { DateFieldControl, DateField as default };
|
|
198
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/DateField/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
.calendar_trigger_9268b87b {
|
|
2
|
+
flex: 0 0 auto;
|
|
3
|
+
inline-size: 2rem;
|
|
4
|
+
block-size: 2rem;
|
|
5
|
+
min-inline-size: 2rem;
|
|
6
|
+
padding: 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.popover_content_637b8e1f {
|
|
10
|
+
padding: 0;
|
|
11
|
+
overflow: auto;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.calendar_dfe57519 {
|
|
15
|
+
border: 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@media (pointer: coarse) {
|
|
19
|
+
.calendar_trigger_9268b87b {
|
|
20
|
+
inline-size: 3rem;
|
|
21
|
+
block-size: 3rem;
|
|
22
|
+
min-inline-size: 3rem;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import './datepicker.css';
|
|
3
|
+
var styles = {"calendar_trigger":"calendar_trigger_9268b87b","popover_content":"popover_content_637b8e1f","calendar":"calendar_dfe57519"};
|
|
4
|
+
|
|
5
|
+
export { styles as default };
|
|
6
|
+
//# sourceMappingURL=datepicker.module.css.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datepicker.module.css.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import Button from '../Button/index.mjs';
|
|
5
|
+
import Calendar from '../Calendar/index.mjs';
|
|
6
|
+
import { DateFieldControl } from '../DateField/index.mjs';
|
|
7
|
+
import Field from '../Field/index.mjs';
|
|
8
|
+
import { CalendarIcon } from '../Icons/CalendarIcon.mjs';
|
|
9
|
+
import { Popover } from '../Popover/index.mjs';
|
|
10
|
+
import { validateDateCalendar, serializeDateValue, parseDateValue, validateDateConstraints } from '../date/dateEngine.mjs';
|
|
11
|
+
import { formatDateValue } from '../date/dateLocale.mjs';
|
|
12
|
+
import { useDateLocale } from '../date/useDateLocale.mjs';
|
|
13
|
+
import { useControllableValue } from '../hooks/useControllableState.mjs';
|
|
14
|
+
import styles from './datepicker.module.css.mjs';
|
|
15
|
+
|
|
16
|
+
const DatePicker = React.forwardRef(function DatePicker({ label, value, defaultValue = null, onValueChange, minValue, maxValue, isDateUnavailable, locale, calendar: calendarProp = 'gregory', segmentLabels, showClearButton, clearButtonLabel, hideLabel = false, helperText, error, disabled = false, readOnly = false, required = false, name, id, className, style, controlClassName, controlStyle, open, defaultOpen = false, onOpenChange, defaultFocusedValue, today, firstDayOfWeek, calendarLabel, previousMonthLabel, nextMonthLabel, getCalendarButtonLabel, }, ref) {
|
|
17
|
+
const calendar = validateDateCalendar(calendarProp);
|
|
18
|
+
const resolvedLocale = useDateLocale(locale);
|
|
19
|
+
const parsedDefaultValue = defaultValue === null
|
|
20
|
+
? null
|
|
21
|
+
: serializeDateValue(parseDateValue(defaultValue, 'defaultValue'));
|
|
22
|
+
const parsedControlledValue = value === undefined
|
|
23
|
+
? undefined
|
|
24
|
+
: value === null
|
|
25
|
+
? null
|
|
26
|
+
: serializeDateValue(parseDateValue(value, 'value'));
|
|
27
|
+
validateDateConstraints(minValue, maxValue);
|
|
28
|
+
if (defaultFocusedValue !== undefined) {
|
|
29
|
+
parseDateValue(defaultFocusedValue, 'defaultFocusedValue');
|
|
30
|
+
}
|
|
31
|
+
if (today !== undefined)
|
|
32
|
+
parseDateValue(today, 'today');
|
|
33
|
+
const [selectedValue, setSelectedValue] = useControllableValue(parsedControlledValue, parsedDefaultValue, onValueChange);
|
|
34
|
+
const [currentOpen, setCurrentOpen] = useControllableValue(open, defaultOpen, onOpenChange);
|
|
35
|
+
const effectiveOpen = !disabled && currentOpen;
|
|
36
|
+
const calendarTriggerRef = React.useRef(null);
|
|
37
|
+
const wasOpenRef = React.useRef(effectiveOpen);
|
|
38
|
+
React.useEffect(() => {
|
|
39
|
+
const wasOpen = wasOpenRef.current;
|
|
40
|
+
wasOpenRef.current = effectiveOpen;
|
|
41
|
+
if (wasOpen && !effectiveOpen) {
|
|
42
|
+
// Outside dismissal starts on pointer-down; wait through that pointer
|
|
43
|
+
// sequence before restoring focus to the trigger.
|
|
44
|
+
let focusFrame = 0;
|
|
45
|
+
const settleFrame = requestAnimationFrame(() => {
|
|
46
|
+
focusFrame = requestAnimationFrame(() => {
|
|
47
|
+
calendarTriggerRef.current?.focus();
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
return () => {
|
|
51
|
+
cancelAnimationFrame(settleFrame);
|
|
52
|
+
cancelAnimationFrame(focusFrame);
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}, [effectiveOpen]);
|
|
56
|
+
const formattedValue = React.useMemo(() => selectedValue
|
|
57
|
+
? formatDateValue(selectedValue, resolvedLocale, calendar)
|
|
58
|
+
: null, [calendar, resolvedLocale, selectedValue]);
|
|
59
|
+
const triggerLabel = getCalendarButtonLabel
|
|
60
|
+
? getCalendarButtonLabel(formattedValue)
|
|
61
|
+
: formattedValue
|
|
62
|
+
? `Change date, ${formattedValue}`
|
|
63
|
+
: 'Choose date';
|
|
64
|
+
const resolvedCalendarLabel = calendarLabel ?? `${label} calendar`;
|
|
65
|
+
const initialFocusRef = React.useRef(null);
|
|
66
|
+
const setCalendarRootRef = React.useCallback((node) => {
|
|
67
|
+
initialFocusRef.current =
|
|
68
|
+
node?.querySelector('button[data-date-value][tabindex="0"]') ?? null;
|
|
69
|
+
}, []);
|
|
70
|
+
function handleOpenChange(nextOpen) {
|
|
71
|
+
setCurrentOpen(nextOpen);
|
|
72
|
+
}
|
|
73
|
+
function handleSegmentKeyDown(_segment, event) {
|
|
74
|
+
if (!event.altKey)
|
|
75
|
+
return;
|
|
76
|
+
if (event.key === 'ArrowDown') {
|
|
77
|
+
event.preventDefault();
|
|
78
|
+
handleOpenChange(true);
|
|
79
|
+
}
|
|
80
|
+
else if (event.key === 'ArrowUp') {
|
|
81
|
+
event.preventDefault();
|
|
82
|
+
handleOpenChange(false);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function handleCalendarValueChange(nextValue) {
|
|
86
|
+
setSelectedValue(nextValue);
|
|
87
|
+
handleOpenChange(false);
|
|
88
|
+
}
|
|
89
|
+
return (jsx(Field, { label: label, labelElement: 'span', hideLabel: hideLabel, helperText: helperText, error: error, disabled: disabled, required: required, id: id, className: className, style: style, children: ({ inputId, labelId, describedBy, hasError }) => (jsxs(Popover, { open: effectiveOpen, onOpenChange: handleOpenChange, children: [jsx(DateFieldControl, { ref: ref, value: selectedValue, onValueChange: setSelectedValue, minValue: minValue, maxValue: maxValue, isDateUnavailable: isDateUnavailable, locale: resolvedLocale, calendar: calendar, segmentLabels: segmentLabels, showClearButton: showClearButton, clearButtonLabel: clearButtonLabel, disabled: disabled, readOnly: readOnly, required: required, name: name, controlClassName: controlClassName, controlStyle: controlStyle, inputId: inputId, labelId: labelId, describedBy: describedBy, hasConsumerError: hasError, onSegmentKeyDown: handleSegmentKeyDown, endAdornment: jsx(Popover.Trigger, { ref: calendarTriggerRef, asChild: true, children: jsx(Button, { type: 'button', variant: 'ghost', size: 'sm', className: styles.calendar_trigger, "aria-label": triggerLabel, disabled: disabled, children: jsx(CalendarIcon, { size: 'sm' }) }) }) }), jsx(Popover.Content, { role: 'dialog', "aria-modal": 'true', "aria-label": resolvedCalendarLabel, initialFocusRef: initialFocusRef, className: styles.popover_content, children: jsx(Calendar, { ref: setCalendarRootRef, label: resolvedCalendarLabel, value: selectedValue, onValueChange: handleCalendarValueChange, defaultFocusedValue: defaultFocusedValue, today: today, minValue: minValue, maxValue: maxValue, isDateUnavailable: isDateUnavailable, locale: resolvedLocale, calendar: calendar, firstDayOfWeek: firstDayOfWeek, previousMonthLabel: previousMonthLabel, nextMonthLabel: nextMonthLabel, disabled: disabled, readOnly: readOnly, className: styles.calendar }) })] })) }));
|
|
90
|
+
});
|
|
91
|
+
DatePicker.displayName = 'DatePicker';
|
|
92
|
+
|
|
93
|
+
export { DatePicker as default };
|
|
94
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/DatePicker/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { FloatingFocusManager, useFloatingRootContext, useFloating, autoUpdate, useDismiss, useInteractions } from '@floating-ui/react';
|
|
4
3
|
import clsx from 'clsx';
|
|
5
|
-
import React, {
|
|
6
|
-
import {
|
|
4
|
+
import React, { useEffect, useRef, useId } from 'react';
|
|
5
|
+
import { useDismissibleLayer } from '../floating/dismissibleLayer.mjs';
|
|
6
|
+
import { FocusScope } from '../floating/FocusScope.mjs';
|
|
7
|
+
import { useFloatingPosition } from '../floating/useFloatingPosition.mjs';
|
|
7
8
|
import { useControllableValue } from '../hooks/useControllableState.mjs';
|
|
8
9
|
import { useRovingCollection } from '../hooks/useRovingCollection.mjs';
|
|
9
10
|
import { mergeRefs } from '../utils/mergeRefs.mjs';
|
|
@@ -22,75 +23,52 @@ function useDropdownMenuContext() {
|
|
|
22
23
|
const DropdownMenuRoot = function DropdownMenu({ open, defaultOpen = false, onOpenChange, placement = 'bottom', offset = 8, closeOnEscape = true, closeOnOutsideClick = true, children, }) {
|
|
23
24
|
const idPrefix = useId();
|
|
24
25
|
const menuItems = useRovingCollection();
|
|
25
|
-
const triggerRef = useRef(null);
|
|
26
|
-
const [referenceElement, setReferenceElement] = useState(null);
|
|
27
|
-
const [floatingElement, setFloatingElement] = useState(null);
|
|
28
26
|
const [currentOpen, handleOpenChange] = useControllableValue(open, defaultOpen, onOpenChange);
|
|
29
|
-
const
|
|
30
|
-
handleOpenChange(nextOpen);
|
|
31
|
-
if (!nextOpen && reason === 'escape-key') {
|
|
32
|
-
triggerRef.current?.focus();
|
|
33
|
-
}
|
|
34
|
-
}, [handleOpenChange]);
|
|
35
|
-
const floatingRootContext = useFloatingRootContext({
|
|
27
|
+
const { referenceRef: triggerRef, floatingRef, setReference, setFloating, floatingStyles, } = useFloatingPosition({
|
|
36
28
|
open: currentOpen,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
floating: floatingElement,
|
|
41
|
-
},
|
|
42
|
-
});
|
|
43
|
-
const { refs, floatingStyles, context: floatingContext, } = useFloating({
|
|
44
|
-
rootContext: floatingRootContext,
|
|
45
|
-
placement: toFloatingPlacement(placement, 'start'),
|
|
46
|
-
middleware: createFloatingMiddleware(offset),
|
|
47
|
-
strategy: 'fixed',
|
|
48
|
-
transform: false,
|
|
49
|
-
whileElementsMounted: autoUpdate,
|
|
29
|
+
side: placement,
|
|
30
|
+
alignment: 'start',
|
|
31
|
+
offset,
|
|
50
32
|
});
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
33
|
+
const handleDismiss = React.useCallback((reason) => {
|
|
34
|
+
handleOpenChange(false);
|
|
35
|
+
if (reason === 'escape')
|
|
36
|
+
triggerRef.current?.focus();
|
|
37
|
+
}, [handleOpenChange, triggerRef]);
|
|
38
|
+
useDismissibleLayer({
|
|
39
|
+
open: currentOpen,
|
|
40
|
+
referenceRef: triggerRef,
|
|
41
|
+
floatingRef,
|
|
42
|
+
closeOnEscape,
|
|
43
|
+
closeOnOutsidePointerDown: closeOnOutsideClick,
|
|
44
|
+
onDismiss: handleDismiss,
|
|
55
45
|
});
|
|
56
|
-
const { getReferenceProps, getFloatingProps } = useInteractions([dismiss]);
|
|
57
|
-
const setReference = React.useCallback((node) => {
|
|
58
|
-
refs.setReference(node);
|
|
59
|
-
setReferenceElement(node);
|
|
60
|
-
}, [refs]);
|
|
61
|
-
const setFloating = React.useCallback((node) => {
|
|
62
|
-
refs.setFloating(node);
|
|
63
|
-
setFloatingElement(node);
|
|
64
|
-
}, [refs]);
|
|
65
46
|
const contextValue = React.useMemo(() => ({
|
|
66
47
|
open: currentOpen,
|
|
67
48
|
onOpenChange: handleOpenChange,
|
|
68
49
|
idPrefix,
|
|
69
50
|
triggerRef,
|
|
51
|
+
floatingRef,
|
|
70
52
|
setReference,
|
|
71
53
|
setFloating,
|
|
72
54
|
floatingStyles,
|
|
73
|
-
floatingContext,
|
|
74
|
-
getReferenceProps,
|
|
75
|
-
getFloatingProps,
|
|
76
55
|
menuItems,
|
|
77
56
|
}), [
|
|
78
57
|
currentOpen,
|
|
79
58
|
handleOpenChange,
|
|
80
59
|
idPrefix,
|
|
60
|
+
triggerRef,
|
|
61
|
+
floatingRef,
|
|
81
62
|
setReference,
|
|
82
63
|
setFloating,
|
|
83
64
|
floatingStyles,
|
|
84
|
-
floatingContext,
|
|
85
|
-
getReferenceProps,
|
|
86
|
-
getFloatingProps,
|
|
87
65
|
menuItems,
|
|
88
66
|
]);
|
|
89
67
|
return (jsx(DropdownMenuContext.Provider, { value: contextValue, children: children }));
|
|
90
68
|
};
|
|
91
69
|
DropdownMenuRoot.displayName = 'DropdownMenu';
|
|
92
70
|
const DropdownMenuTrigger = React.forwardRef(function DropdownMenuTrigger({ children, asChild = false, onClick, type, ...triggerProps }, ref) {
|
|
93
|
-
const { open, onOpenChange, idPrefix, triggerRef, setReference
|
|
71
|
+
const { open, onOpenChange, idPrefix, triggerRef, setReference } = useDropdownMenuContext();
|
|
94
72
|
const mergedRef = mergeRefs(ref, triggerRef, setReference);
|
|
95
73
|
const handleClick = (event) => {
|
|
96
74
|
onClick?.(event);
|
|
@@ -98,13 +76,13 @@ const DropdownMenuTrigger = React.forwardRef(function DropdownMenuTrigger({ chil
|
|
|
98
76
|
onOpenChange(!open);
|
|
99
77
|
}
|
|
100
78
|
};
|
|
101
|
-
const referenceProps =
|
|
79
|
+
const referenceProps = {
|
|
102
80
|
...triggerProps,
|
|
103
81
|
onClick: handleClick,
|
|
104
82
|
'aria-haspopup': 'menu',
|
|
105
83
|
'aria-expanded': open,
|
|
106
84
|
'aria-controls': `${idPrefix}-menu`,
|
|
107
|
-
}
|
|
85
|
+
};
|
|
108
86
|
if (asChild) {
|
|
109
87
|
if (!React.isValidElement(children)) {
|
|
110
88
|
throw new Error('DropdownMenu.Trigger with asChild expects a single valid React element child.');
|
|
@@ -115,8 +93,7 @@ const DropdownMenuTrigger = React.forwardRef(function DropdownMenuTrigger({ chil
|
|
|
115
93
|
});
|
|
116
94
|
DropdownMenuTrigger.displayName = 'DropdownMenu.Trigger';
|
|
117
95
|
const DropdownMenuContent = React.forwardRef(function DropdownMenuContent({ className, style, children, ...props }, ref) {
|
|
118
|
-
const { open, idPrefix,
|
|
119
|
-
const menuRef = useRef(null);
|
|
96
|
+
const { open, idPrefix, triggerRef, floatingRef, setFloating, floatingStyles, menuItems, } = useDropdownMenuContext();
|
|
120
97
|
useEffect(() => {
|
|
121
98
|
if (!open)
|
|
122
99
|
return;
|
|
@@ -152,16 +129,12 @@ const DropdownMenuContent = React.forwardRef(function DropdownMenuContent({ clas
|
|
|
152
129
|
menuItems.focusLast();
|
|
153
130
|
}
|
|
154
131
|
};
|
|
155
|
-
const floatingProps = getFloatingProps({
|
|
156
|
-
...props,
|
|
157
|
-
onKeyDown: handleKeyDown,
|
|
158
|
-
});
|
|
159
132
|
if (!open)
|
|
160
133
|
return null;
|
|
161
|
-
return (jsx(Portal, { children: jsx(
|
|
134
|
+
return (jsx(Portal, { children: jsx(FocusScope, { contentRef: floatingRef, triggerRef: triggerRef, children: jsx("div", { id: `${idPrefix}-menu`, role: 'menu', "aria-orientation": 'vertical', ref: mergeRefs(ref, setFloating), className: clsx(styles.dropdown_menu, className), style: {
|
|
162
135
|
...floatingStyles,
|
|
163
136
|
...style,
|
|
164
|
-
}, ...
|
|
137
|
+
}, tabIndex: -1, ...props, onKeyDown: handleKeyDown, children: children }) }) }));
|
|
165
138
|
});
|
|
166
139
|
DropdownMenuContent.displayName = 'DropdownMenu.Content';
|
|
167
140
|
const DropdownMenuItem = React.forwardRef(function DropdownMenuItem({ disabled, destructive, onSelect, className, children, ...props }, ref) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/DropdownMenu/index.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/DropdownMenu/index.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { IconSvg } from './IconSvg.mjs';
|
|
4
|
+
|
|
5
|
+
function CalendarIcon({ size = 'md', strokeWidth = 'regular', title, className, style, }) {
|
|
6
|
+
return (jsxs(IconSvg, { size: size, strokeWidth: strokeWidth, title: title, className: className, style: style, children: [jsx("path", { d: 'M7 3V6' }), jsx("path", { d: 'M17 3V6' }), jsx("rect", { x: '3', y: '5', width: '18', height: '16', rx: '2' }), jsx("path", { d: 'M3 10H21' })] }));
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export { CalendarIcon };
|
|
10
|
+
//# sourceMappingURL=CalendarIcon.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CalendarIcon.mjs","sources":["../../../src/Icons/CalendarIcon.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;SAGgB,YAAY,CAAC,EAC3B,IAAI,GAAG,IAAI,EACX,WAAW,GAAG,SAAS,EACvB,KAAK,EACL,SAAS,EACT,KAAK,GACe,EAAA;AACpB,IAAA,QACEA,IAAA,CAAC,OAAO,EAAA,EACN,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EAAA,QAAA,EAAA,CAEZC,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,QAAQ,EAAA,CAAG,EACnBA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,SAAS,EAAA,CAAG,EACpBA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAA,CAAG,EAClDA,GAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,UAAU,EAAA,CAAG,CAAA,EAAA,CACb;AAEd;;;;"}
|