@open-mercato/ui 0.6.6-develop.6519.1.bdc91fb755 → 0.6.6-develop.6520.1.55df6df792
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/dist/backend/CrudForm.js +7 -1
- package/dist/backend/CrudForm.js.map +2 -2
- package/dist/backend/custom-fields/FieldDefinitionsEditor.js +110 -91
- package/dist/backend/custom-fields/FieldDefinitionsEditor.js.map +2 -2
- package/dist/primitives/date-picker.js +13 -6
- package/dist/primitives/date-picker.js.map +2 -2
- package/package.json +3 -3
- package/src/backend/CrudForm.tsx +17 -1
- package/src/backend/custom-fields/FieldDefinitionsEditor.tsx +122 -96
- package/src/primitives/date-picker.tsx +18 -6
|
@@ -21,6 +21,11 @@ export type DatePickerProps = {
|
|
|
21
21
|
size?: 'sm' | 'default'
|
|
22
22
|
disabled?: boolean
|
|
23
23
|
readOnly?: boolean
|
|
24
|
+
/** Controlled open state of the popover. Omit for the default uncontrolled
|
|
25
|
+
* behavior. Pair with `onOpenChange` to drive it externally (e.g. closing the
|
|
26
|
+
* picker when a surrounding dialog scrolls). */
|
|
27
|
+
open?: boolean
|
|
28
|
+
onOpenChange?: (open: boolean) => void
|
|
24
29
|
/**
|
|
25
30
|
* Footer mode in the popover.
|
|
26
31
|
* - `'apply-cancel'` (default, Figma-aligned): selecting a day stages a draft;
|
|
@@ -88,6 +93,8 @@ export function DatePicker({
|
|
|
88
93
|
size = 'default',
|
|
89
94
|
disabled = false,
|
|
90
95
|
readOnly = false,
|
|
96
|
+
open: controlledOpen,
|
|
97
|
+
onOpenChange,
|
|
91
98
|
footer = 'apply-cancel',
|
|
92
99
|
closeOnSelect,
|
|
93
100
|
showTodayButton = true,
|
|
@@ -109,7 +116,12 @@ export function DatePicker({
|
|
|
109
116
|
}: DatePickerProps) {
|
|
110
117
|
const resolvedCloseOnSelect = closeOnSelect ?? footer === 'today-clear'
|
|
111
118
|
const t = useT()
|
|
112
|
-
const [
|
|
119
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false)
|
|
120
|
+
const open = controlledOpen ?? uncontrolledOpen
|
|
121
|
+
const setOpen = React.useCallback((next: boolean) => {
|
|
122
|
+
if (controlledOpen === undefined) setUncontrolledOpen(next)
|
|
123
|
+
onOpenChange?.(next)
|
|
124
|
+
}, [controlledOpen, onOpenChange])
|
|
113
125
|
const [draft, setDraft] = React.useState<Date | null>(value ?? null)
|
|
114
126
|
|
|
115
127
|
const isInteractive = !disabled && !readOnly
|
|
@@ -147,7 +159,7 @@ export function DatePicker({
|
|
|
147
159
|
if (footer === 'none' || resolvedCloseOnSelect) setOpen(false)
|
|
148
160
|
}
|
|
149
161
|
},
|
|
150
|
-
[isInteractive, withTime, useDraft, draft, value, footer, resolvedCloseOnSelect, onChange],
|
|
162
|
+
[isInteractive, withTime, useDraft, draft, value, footer, resolvedCloseOnSelect, onChange, setOpen],
|
|
151
163
|
)
|
|
152
164
|
|
|
153
165
|
const handleTimeChange = React.useCallback(
|
|
@@ -164,23 +176,23 @@ export function DatePicker({
|
|
|
164
176
|
const handleApply = React.useCallback(() => {
|
|
165
177
|
onChange(draft)
|
|
166
178
|
setOpen(false)
|
|
167
|
-
}, [draft, onChange])
|
|
179
|
+
}, [draft, onChange, setOpen])
|
|
168
180
|
|
|
169
181
|
const handleCancel = React.useCallback(() => {
|
|
170
182
|
setDraft(value ?? null)
|
|
171
183
|
setOpen(false)
|
|
172
|
-
}, [value])
|
|
184
|
+
}, [value, setOpen])
|
|
173
185
|
|
|
174
186
|
const handleToday = React.useCallback(() => {
|
|
175
187
|
const today = withTime ? new Date() : startOfDay(new Date())
|
|
176
188
|
onChange(today)
|
|
177
189
|
setOpen(false)
|
|
178
|
-
}, [withTime, onChange])
|
|
190
|
+
}, [withTime, onChange, setOpen])
|
|
179
191
|
|
|
180
192
|
const handleClear = React.useCallback(() => {
|
|
181
193
|
onChange(null)
|
|
182
194
|
setOpen(false)
|
|
183
|
-
}, [onChange])
|
|
195
|
+
}, [onChange, setOpen])
|
|
184
196
|
|
|
185
197
|
const disabledMatcher = React.useMemo(() => {
|
|
186
198
|
if (!minDate && !maxDate) return undefined
|