@multiplatform.one/forms 7.7.4 → 7.8.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/dist/cjs/Button/index.cjs +3 -36
- package/dist/cjs/Button/index.native.js +3 -36
- package/dist/cjs/Button/index.native.js.map +1 -1
- package/dist/cjs/Chip/index.cjs +1 -1
- package/dist/cjs/Chip/index.native.js +1 -1
- package/dist/cjs/Chip/index.native.js.map +1 -1
- package/dist/cjs/ContextualSaveBar/index.cjs +17 -10
- package/dist/cjs/ContextualSaveBar/index.native.js +18 -10
- package/dist/cjs/ContextualSaveBar/index.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/index.cjs +59 -14
- package/dist/cjs/FloatingPanel/index.native.js +16 -7
- package/dist/cjs/FloatingPanel/index.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/nestedAction.cjs +37 -0
- package/dist/cjs/FloatingPanel/nestedAction.native.js +42 -0
- package/dist/cjs/FloatingPanel/nestedAction.native.js.map +1 -0
- package/dist/cjs/InputParts/index.cjs +11 -7
- package/dist/cjs/InputParts/index.native.js +12 -10
- package/dist/cjs/InputParts/index.native.js.map +1 -1
- package/dist/cjs/Wheel/index.cjs +3 -3
- package/dist/cjs/Wheel/index.native.js +3 -3
- package/dist/cjs/Wheel/index.native.js.map +1 -1
- package/dist/cjs/fieldLayout.cjs +3 -3
- package/dist/cjs/fieldLayout.native.js +3 -3
- package/dist/cjs/fieldLayout.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.cjs +9 -2
- package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js +10 -1
- package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
- package/dist/cjs/fields/Combobox/index.cjs +74 -76
- package/dist/cjs/fields/Combobox/index.native.js +78 -86
- package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/Calendar.cjs +6 -1
- package/dist/cjs/fields/DatePicker/Calendar.native.js +6 -1
- package/dist/cjs/fields/DatePicker/Calendar.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/DateRangePicker.cjs +2 -2
- package/dist/cjs/fields/DatePicker/DateRangePicker.native.js +2 -2
- package/dist/cjs/fields/DatePicker/DateRangePicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.cjs +15 -12
- package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js +16 -12
- package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/DatetimePicker.native.js +39 -14
- package/dist/cjs/fields/DatePicker/DatetimePicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/MonthPicker.cjs +10 -3
- package/dist/cjs/fields/DatePicker/MonthPicker.native.js +10 -3
- package/dist/cjs/fields/DatePicker/MonthPicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/MultiDatePicker.cjs +2 -2
- package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js +2 -2
- package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/index.native.js +3 -0
- package/dist/cjs/fields/DatePicker/index.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/parts.cjs +26 -14
- package/dist/cjs/fields/DatePicker/parts.native.js +28 -14
- package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/GeolocationMap.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/geocoder.cjs +63 -0
- package/dist/cjs/fields/Geolocation/geocoder.native.js +68 -0
- package/dist/cjs/fields/Geolocation/geocoder.native.js.map +1 -0
- package/dist/cjs/fields/Geolocation/index.cjs +801 -152
- package/dist/cjs/fields/Geolocation/index.native.js +856 -167
- package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/nativeSearchFocus.cjs +44 -0
- package/dist/cjs/fields/Geolocation/nativeSearchFocus.native.js +47 -0
- package/dist/cjs/fields/Geolocation/nativeSearchFocus.native.js.map +1 -0
- package/dist/cjs/fields/Icon/drawnSet.cjs +14 -3
- package/dist/cjs/fields/Icon/drawnSet.native.js +18 -3
- package/dist/cjs/fields/Icon/drawnSet.native.js.map +1 -1
- package/dist/cjs/fields/Icon/index.cjs +102 -27
- package/dist/cjs/fields/Icon/index.native.js +115 -31
- package/dist/cjs/fields/Icon/index.native.js.map +1 -1
- package/dist/cjs/fields/Input/index.cjs +5 -12
- package/dist/cjs/fields/Input/index.native.js +5 -13
- package/dist/cjs/fields/Input/index.native.js.map +1 -1
- package/dist/cjs/fields/PhoneInput/index.cjs +2 -2
- package/dist/cjs/fields/PhoneInput/index.native.js +2 -2
- package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/cjs/fields/SearchInput/index.cjs +8 -9
- package/dist/cjs/fields/SearchInput/index.native.js +8 -9
- package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
- package/dist/cjs/fields/Select/index.cjs +53 -18
- package/dist/cjs/fields/Select/index.native.js +63 -37
- package/dist/cjs/fields/Select/index.native.js.map +1 -1
- package/dist/cjs/fields/Stepper/index.cjs +144 -31
- package/dist/cjs/fields/Stepper/index.native.js +151 -31
- package/dist/cjs/fields/Stepper/index.native.js.map +1 -1
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/index.native.js +2 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/shared/focusManagement.cjs +24 -11
- package/dist/cjs/shared/focusManagement.native.js +24 -11
- package/dist/cjs/shared/focusManagement.native.js.map +1 -1
- package/dist/cjs/shared/pickerTriggerContract.cjs +38 -0
- package/dist/cjs/shared/pickerTriggerContract.native.js +41 -0
- package/dist/cjs/shared/pickerTriggerContract.native.js.map +1 -0
- package/dist/cjs/shared/pressSlopProps.cjs +68 -0
- package/dist/cjs/shared/pressSlopProps.native.js +72 -0
- package/dist/cjs/shared/pressSlopProps.native.js.map +1 -0
- package/dist/esm/AdaptivePopup/index.native.js.map +1 -1
- package/dist/esm/Button/index.mjs +1 -34
- package/dist/esm/Button/index.mjs.map +1 -1
- package/dist/esm/Button/index.native.js +1 -34
- package/dist/esm/Button/index.native.js.map +1 -1
- package/dist/esm/Chip/index.mjs +1 -1
- package/dist/esm/Chip/index.mjs.map +1 -1
- package/dist/esm/Chip/index.native.js +1 -1
- package/dist/esm/Chip/index.native.js.map +1 -1
- package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
- package/dist/esm/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
- package/dist/esm/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
- package/dist/esm/ContextualSaveBar/index.mjs +17 -10
- package/dist/esm/ContextualSaveBar/index.mjs.map +1 -1
- package/dist/esm/ContextualSaveBar/index.native.js +18 -10
- package/dist/esm/ContextualSaveBar/index.native.js.map +1 -1
- package/dist/esm/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
- package/dist/esm/ControlGroup/index.native.js.map +1 -1
- package/dist/esm/DescriptionList/index.native.js.map +1 -1
- package/dist/esm/ErrorSummary.native.js.map +1 -1
- package/dist/esm/FieldDisplay/editMode.native.js.map +1 -1
- package/dist/esm/FieldDisplay/formatters.native.js.map +1 -1
- package/dist/esm/FieldDisplay/index.native.js.map +1 -1
- package/dist/esm/FieldGroup.native.js.map +1 -1
- package/dist/esm/FloatingPanel/index.mjs +58 -15
- package/dist/esm/FloatingPanel/index.mjs.map +1 -1
- package/dist/esm/FloatingPanel/index.native.js +15 -8
- package/dist/esm/FloatingPanel/index.native.js.map +1 -1
- package/dist/esm/FloatingPanel/nestedAction.mjs +11 -0
- package/dist/esm/FloatingPanel/nestedAction.mjs.map +1 -0
- package/dist/esm/FloatingPanel/nestedAction.native.js +13 -0
- package/dist/esm/FloatingPanel/nestedAction.native.js.map +1 -0
- package/dist/esm/FloatingPanel/useFloatingPanel.native.js.map +1 -1
- package/dist/esm/Form/index.native.js.map +1 -1
- package/dist/esm/Form/validateOn.native.js.map +1 -1
- package/dist/esm/FormGrid.native.js.map +1 -1
- package/dist/esm/FormSection.native.js.map +1 -1
- package/dist/esm/InputParts/index.mjs +12 -8
- package/dist/esm/InputParts/index.mjs.map +1 -1
- package/dist/esm/InputParts/index.native.js +13 -11
- package/dist/esm/InputParts/index.native.js.map +1 -1
- package/dist/esm/Label/index.native.js.map +1 -1
- package/dist/esm/Skeleton/index.native.js.map +1 -1
- package/dist/esm/Spinner/SpinnerGlyph.native.js.map +1 -1
- package/dist/esm/Spinner/spinnerSize.native.js.map +1 -1
- package/dist/esm/Table/index.native.js.map +1 -1
- package/dist/esm/Wheel/haptic.native.js.map +1 -1
- package/dist/esm/Wheel/index.mjs +3 -3
- package/dist/esm/Wheel/index.mjs.map +1 -1
- package/dist/esm/Wheel/index.native.js +3 -3
- package/dist/esm/Wheel/index.native.js.map +1 -1
- package/dist/esm/actionLabel.native.js.map +1 -1
- package/dist/esm/fieldDefaults.native.js.map +1 -1
- package/dist/esm/fieldLayout.mjs +3 -3
- package/dist/esm/fieldLayout.mjs.map +1 -1
- package/dist/esm/fieldLayout.native.js +3 -3
- package/dist/esm/fieldLayout.native.js.map +1 -1
- package/dist/esm/fields/Barcode/BarcodePreview.native.js.map +1 -1
- package/dist/esm/fields/Barcode/code128.native.js.map +1 -1
- package/dist/esm/fields/Barcode/index.native.js.map +1 -1
- package/dist/esm/fields/Barcode/qr.native.js.map +1 -1
- package/dist/esm/fields/Barcode/scannerTypes.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/Checkbox.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxBox.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxCard.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxFieldFrame.mjs +8 -1
- package/dist/esm/fields/Checkbox/CheckboxFieldFrame.mjs.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxFieldFrame.native.js +10 -1
- package/dist/esm/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/checkboxGroupContext.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/index.native.js.map +1 -1
- package/dist/esm/fields/ColorPicker/index.native.js.map +1 -1
- package/dist/esm/fields/ColorPicker/parts.native.js.map +1 -1
- package/dist/esm/fields/Combobox/authorOptions.native.js.map +1 -1
- package/dist/esm/fields/Combobox/index.mjs +74 -76
- package/dist/esm/fields/Combobox/index.mjs.map +1 -1
- package/dist/esm/fields/Combobox/index.native.js +78 -86
- package/dist/esm/fields/Combobox/index.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/Calendar.mjs +6 -1
- package/dist/esm/fields/DatePicker/Calendar.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/Calendar.native.js +6 -1
- package/dist/esm/fields/DatePicker/Calendar.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/DateRangePicker.mjs +2 -2
- package/dist/esm/fields/DatePicker/DateRangePicker.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/DateRangePicker.native.js +2 -2
- package/dist/esm/fields/DatePicker/DateRangePicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/DatetimePicker.catalog.mjs +15 -12
- package/dist/esm/fields/DatePicker/DatetimePicker.catalog.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js +16 -12
- package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/DatetimePicker.native.js +39 -14
- package/dist/esm/fields/DatePicker/DatetimePicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/MonthPicker.mjs +10 -3
- package/dist/esm/fields/DatePicker/MonthPicker.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/MonthPicker.native.js +10 -3
- package/dist/esm/fields/DatePicker/MonthPicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/MultiDatePicker.mjs +2 -2
- package/dist/esm/fields/DatePicker/MultiDatePicker.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/MultiDatePicker.native.js +2 -2
- package/dist/esm/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/catalog.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/fieldValueSync.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/index.native.js +3 -0
- package/dist/esm/fields/DatePicker/index.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/parts.mjs +28 -16
- package/dist/esm/fields/DatePicker/parts.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/parts.native.js +30 -16
- package/dist/esm/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/utils.native.js.map +1 -1
- package/dist/esm/fields/Duration/durationMath.native.js.map +1 -1
- package/dist/esm/fields/Duration/index.native.js.map +1 -1
- package/dist/esm/fields/FileUpload/filePickerTypes.native.js.map +1 -1
- package/dist/esm/fields/FileUpload/index.native.js.map +1 -1
- package/dist/esm/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/GeolocationMap.mjs.map +1 -1
- package/dist/esm/fields/Geolocation/GeolocationMap.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/geoValue.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/geocoder.mjs +33 -0
- package/dist/esm/fields/Geolocation/geocoder.mjs.map +1 -0
- package/dist/esm/fields/Geolocation/geocoder.native.js +35 -0
- package/dist/esm/fields/Geolocation/geocoder.native.js.map +1 -0
- package/dist/esm/fields/Geolocation/index.mjs +792 -149
- package/dist/esm/fields/Geolocation/index.mjs.map +1 -1
- package/dist/esm/fields/Geolocation/index.native.js +847 -164
- package/dist/esm/fields/Geolocation/index.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/mapMath.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/mapTypes.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/nativeSearchFocus.mjs +19 -0
- package/dist/esm/fields/Geolocation/nativeSearchFocus.mjs.map +1 -0
- package/dist/esm/fields/Geolocation/nativeSearchFocus.native.js +19 -0
- package/dist/esm/fields/Geolocation/nativeSearchFocus.native.js.map +1 -0
- package/dist/esm/fields/Icon/drawnSet.mjs +14 -3
- package/dist/esm/fields/Icon/drawnSet.mjs.map +1 -1
- package/dist/esm/fields/Icon/drawnSet.native.js +18 -3
- package/dist/esm/fields/Icon/drawnSet.native.js.map +1 -1
- package/dist/esm/fields/Icon/index.mjs +93 -18
- package/dist/esm/fields/Icon/index.mjs.map +1 -1
- package/dist/esm/fields/Icon/index.native.js +106 -22
- package/dist/esm/fields/Icon/index.native.js.map +1 -1
- package/dist/esm/fields/ImageField/index.native.js.map +1 -1
- package/dist/esm/fields/Input/index.mjs +5 -12
- package/dist/esm/fields/Input/index.mjs.map +1 -1
- package/dist/esm/fields/Input/index.native.js +5 -13
- package/dist/esm/fields/Input/index.native.js.map +1 -1
- package/dist/esm/fields/MentionInput/index.native.js.map +1 -1
- package/dist/esm/fields/OTPInput/index.native.js.map +1 -1
- package/dist/esm/fields/OTPInput/otpCellCss.native.js.map +1 -1
- package/dist/esm/fields/PhoneInput/dialCodes.native.js.map +1 -1
- package/dist/esm/fields/PhoneInput/index.mjs +2 -2
- package/dist/esm/fields/PhoneInput/index.mjs.map +1 -1
- package/dist/esm/fields/PhoneInput/index.native.js +2 -2
- package/dist/esm/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/esm/fields/PhoneInput/phone.native.js.map +1 -1
- package/dist/esm/fields/Progress/index.native.js.map +1 -1
- package/dist/esm/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/esm/fields/Rating/index.native.js.map +1 -1
- package/dist/esm/fields/Rating/ratingMath.native.js.map +1 -1
- package/dist/esm/fields/Rating/types.native.js.map +1 -1
- package/dist/esm/fields/SearchInput/index.mjs +9 -10
- package/dist/esm/fields/SearchInput/index.mjs.map +1 -1
- package/dist/esm/fields/SearchInput/index.native.js +9 -10
- package/dist/esm/fields/SearchInput/index.native.js.map +1 -1
- package/dist/esm/fields/Select/index.mjs +54 -19
- package/dist/esm/fields/Select/index.mjs.map +1 -1
- package/dist/esm/fields/Select/index.native.js +64 -38
- package/dist/esm/fields/Select/index.native.js.map +1 -1
- package/dist/esm/fields/Signature/index.native.js.map +1 -1
- package/dist/esm/fields/Slider/index.native.js.map +1 -1
- package/dist/esm/fields/Slider/jumpMotion.native.js.map +1 -1
- package/dist/esm/fields/Stepper/index.mjs +145 -32
- package/dist/esm/fields/Stepper/index.mjs.map +1 -1
- package/dist/esm/fields/Stepper/index.native.js +152 -32
- package/dist/esm/fields/Stepper/index.native.js.map +1 -1
- package/dist/esm/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
- package/dist/esm/fields/Switch/index.native.js.map +1 -1
- package/dist/esm/fields/TextArea/index.native.js.map +1 -1
- package/dist/esm/fields/TimePicker/catalog.native.js.map +1 -1
- package/dist/esm/fields/TimePicker/parts.native.js.map +1 -1
- package/dist/esm/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
- package/dist/esm/fields/TimeRangeScrubber/index.native.js.map +1 -1
- package/dist/esm/fields/ToggleGroup/index.native.js.map +1 -1
- package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
- package/dist/esm/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -1
- package/dist/esm/fields/nativeSelect.native.js.map +1 -1
- package/dist/esm/fields/selectedOrder.native.js.map +1 -1
- package/dist/esm/formSpacing.native.js.map +1 -1
- package/dist/esm/hooks/useFocusManagement.native.js.map +1 -1
- package/dist/esm/index.mjs +2 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/requiredMarking.native.js.map +1 -1
- package/dist/esm/shared/TimeColumn.native.js.map +1 -1
- package/dist/esm/shared/capabilityPreflight.native.js.map +1 -1
- package/dist/esm/shared/colorRamps.native.js.map +1 -1
- package/dist/esm/shared/devWarn.native.js.map +1 -1
- package/dist/esm/shared/floatingList.native.js.map +1 -1
- package/dist/esm/shared/focusManagement.mjs +24 -11
- package/dist/esm/shared/focusManagement.mjs.map +1 -1
- package/dist/esm/shared/focusManagement.native.js +24 -11
- package/dist/esm/shared/focusManagement.native.js.map +1 -1
- package/dist/esm/shared/groupContext.native.js.map +1 -1
- package/dist/esm/shared/i18n.native.js.map +1 -1
- package/dist/esm/shared/pickerTriggerContract.mjs +13 -0
- package/dist/esm/shared/pickerTriggerContract.mjs.map +1 -0
- package/dist/esm/shared/pickerTriggerContract.native.js +13 -0
- package/dist/esm/shared/pickerTriggerContract.native.js.map +1 -0
- package/dist/esm/shared/pressSlopProps.mjs +43 -0
- package/dist/esm/shared/pressSlopProps.mjs.map +1 -0
- package/dist/esm/shared/pressSlopProps.native.js +44 -0
- package/dist/esm/shared/pressSlopProps.native.js.map +1 -0
- package/dist/esm/shared/t.native.js.map +1 -1
- package/dist/esm/shared/tableCellContext.native.js.map +1 -1
- package/dist/esm/shared/useDragScroll.native.js.map +1 -1
- package/dist/esm/shared/useKeyboardInset.native.js.map +1 -1
- package/dist/esm/shared/useSheetEscapeDismiss.native.js.map +1 -1
- package/dist/esm/shared/useWheelIncrement.native.js.map +1 -1
- package/dist/esm/shared/utils.native.js.map +1 -1
- package/dist/esm/shared/zIndex.native.js.map +1 -1
- package/dist/esm/themedPrimitives.native.js.map +1 -1
- package/dist/esm/types.native.js.map +1 -1
- package/dist/esm/utils/LinkCell.native.js.map +1 -1
- package/dist/jsx/Button/index.mjs +1 -34
- package/dist/jsx/Button/index.mjs.map +1 -1
- package/dist/jsx/Button/index.native.js +3 -36
- package/dist/jsx/Button/index.native.js.map +1 -1
- package/dist/jsx/Chip/index.mjs +1 -1
- package/dist/jsx/Chip/index.mjs.map +1 -1
- package/dist/jsx/Chip/index.native.js +1 -1
- package/dist/jsx/Chip/index.native.js.map +1 -1
- package/dist/jsx/ContextualSaveBar/index.mjs +17 -10
- package/dist/jsx/ContextualSaveBar/index.mjs.map +1 -1
- package/dist/jsx/ContextualSaveBar/index.native.js +18 -10
- package/dist/jsx/ContextualSaveBar/index.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/index.mjs +58 -15
- package/dist/jsx/FloatingPanel/index.mjs.map +1 -1
- package/dist/jsx/FloatingPanel/index.native.js +16 -7
- package/dist/jsx/FloatingPanel/index.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/nestedAction.mjs +11 -0
- package/dist/jsx/FloatingPanel/nestedAction.mjs.map +1 -0
- package/dist/jsx/FloatingPanel/nestedAction.native.js +42 -0
- package/dist/jsx/FloatingPanel/nestedAction.native.js.map +1 -0
- package/dist/jsx/InputParts/index.mjs +12 -8
- package/dist/jsx/InputParts/index.mjs.map +1 -1
- package/dist/jsx/InputParts/index.native.js +12 -10
- package/dist/jsx/InputParts/index.native.js.map +1 -1
- package/dist/jsx/Wheel/index.mjs +3 -3
- package/dist/jsx/Wheel/index.mjs.map +1 -1
- package/dist/jsx/Wheel/index.native.js +3 -3
- package/dist/jsx/Wheel/index.native.js.map +1 -1
- package/dist/jsx/fieldLayout.mjs +3 -3
- package/dist/jsx/fieldLayout.mjs.map +1 -1
- package/dist/jsx/fieldLayout.native.js +3 -3
- package/dist/jsx/fieldLayout.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.mjs +8 -1
- package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.mjs.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.native.js +10 -1
- package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
- package/dist/jsx/fields/Combobox/index.mjs +74 -76
- package/dist/jsx/fields/Combobox/index.mjs.map +1 -1
- package/dist/jsx/fields/Combobox/index.native.js +78 -86
- package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/Calendar.mjs +6 -1
- package/dist/jsx/fields/DatePicker/Calendar.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/Calendar.native.js +6 -1
- package/dist/jsx/fields/DatePicker/Calendar.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/DateRangePicker.mjs +2 -2
- package/dist/jsx/fields/DatePicker/DateRangePicker.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/DateRangePicker.native.js +2 -2
- package/dist/jsx/fields/DatePicker/DateRangePicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.mjs +15 -12
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js +16 -12
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/DatetimePicker.native.js +39 -14
- package/dist/jsx/fields/DatePicker/DatetimePicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/MonthPicker.mjs +10 -3
- package/dist/jsx/fields/DatePicker/MonthPicker.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/MonthPicker.native.js +10 -3
- package/dist/jsx/fields/DatePicker/MonthPicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/MultiDatePicker.mjs +2 -2
- package/dist/jsx/fields/DatePicker/MultiDatePicker.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js +2 -2
- package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/index.native.js +3 -0
- package/dist/jsx/fields/DatePicker/index.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/parts.mjs +28 -16
- package/dist/jsx/fields/DatePicker/parts.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/parts.native.js +28 -14
- package/dist/jsx/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/GeolocationMap.mjs.map +1 -1
- package/dist/jsx/fields/Geolocation/GeolocationMap.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/geocoder.mjs +33 -0
- package/dist/jsx/fields/Geolocation/geocoder.mjs.map +1 -0
- package/dist/jsx/fields/Geolocation/geocoder.native.js +68 -0
- package/dist/jsx/fields/Geolocation/geocoder.native.js.map +1 -0
- package/dist/jsx/fields/Geolocation/index.mjs +792 -149
- package/dist/jsx/fields/Geolocation/index.mjs.map +1 -1
- package/dist/jsx/fields/Geolocation/index.native.js +856 -167
- package/dist/jsx/fields/Geolocation/index.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/nativeSearchFocus.mjs +19 -0
- package/dist/jsx/fields/Geolocation/nativeSearchFocus.mjs.map +1 -0
- package/dist/jsx/fields/Geolocation/nativeSearchFocus.native.js +47 -0
- package/dist/jsx/fields/Geolocation/nativeSearchFocus.native.js.map +1 -0
- package/dist/jsx/fields/Icon/drawnSet.mjs +14 -3
- package/dist/jsx/fields/Icon/drawnSet.mjs.map +1 -1
- package/dist/jsx/fields/Icon/drawnSet.native.js +18 -3
- package/dist/jsx/fields/Icon/drawnSet.native.js.map +1 -1
- package/dist/jsx/fields/Icon/index.mjs +93 -18
- package/dist/jsx/fields/Icon/index.mjs.map +1 -1
- package/dist/jsx/fields/Icon/index.native.js +115 -31
- package/dist/jsx/fields/Icon/index.native.js.map +1 -1
- package/dist/jsx/fields/Input/index.mjs +5 -12
- package/dist/jsx/fields/Input/index.mjs.map +1 -1
- package/dist/jsx/fields/Input/index.native.js +5 -13
- package/dist/jsx/fields/Input/index.native.js.map +1 -1
- package/dist/jsx/fields/PhoneInput/index.mjs +2 -2
- package/dist/jsx/fields/PhoneInput/index.mjs.map +1 -1
- package/dist/jsx/fields/PhoneInput/index.native.js +2 -2
- package/dist/jsx/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/jsx/fields/SearchInput/index.mjs +9 -10
- package/dist/jsx/fields/SearchInput/index.mjs.map +1 -1
- package/dist/jsx/fields/SearchInput/index.native.js +8 -9
- package/dist/jsx/fields/SearchInput/index.native.js.map +1 -1
- package/dist/jsx/fields/Select/index.mjs +54 -19
- package/dist/jsx/fields/Select/index.mjs.map +1 -1
- package/dist/jsx/fields/Select/index.native.js +63 -37
- package/dist/jsx/fields/Select/index.native.js.map +1 -1
- package/dist/jsx/fields/Stepper/index.mjs +145 -32
- package/dist/jsx/fields/Stepper/index.mjs.map +1 -1
- package/dist/jsx/fields/Stepper/index.native.js +151 -31
- package/dist/jsx/fields/Stepper/index.native.js.map +1 -1
- package/dist/jsx/index.js +2 -1
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +2 -1
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +2 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/shared/focusManagement.mjs +24 -11
- package/dist/jsx/shared/focusManagement.mjs.map +1 -1
- package/dist/jsx/shared/focusManagement.native.js +24 -11
- package/dist/jsx/shared/focusManagement.native.js.map +1 -1
- package/dist/jsx/shared/pickerTriggerContract.mjs +13 -0
- package/dist/jsx/shared/pickerTriggerContract.mjs.map +1 -0
- package/dist/jsx/shared/pickerTriggerContract.native.js +41 -0
- package/dist/jsx/shared/pickerTriggerContract.native.js.map +1 -0
- package/dist/jsx/shared/pressSlopProps.mjs +43 -0
- package/dist/jsx/shared/pressSlopProps.mjs.map +1 -0
- package/dist/jsx/shared/pressSlopProps.native.js +72 -0
- package/dist/jsx/shared/pressSlopProps.native.js.map +1 -0
- package/package.json +8 -7
- package/src/Button/Button.labelInk.spec.tsx +21 -18
- package/src/Button/Button.outlinedChannel.spec.tsx +46 -0
- package/src/Button/Button.sizeLadder.spec.tsx +4 -3
- package/src/Button/Button.stories.tsx +20 -0
- package/src/Button/index.tsx +26 -39
- package/src/Chip/Chip.spec.tsx +3 -1
- package/src/Chip/index.tsx +1 -5
- package/src/ContextualSaveBar/ContextualSaveBar.spec.tsx +33 -0
- package/src/ContextualSaveBar/ContextualSaveBar.stories.tsx +19 -0
- package/src/ContextualSaveBar/index.tsx +12 -8
- package/src/ContextualSaveBar/nativeFlow.spec.tsx +20 -0
- package/src/FieldLayout.stories.tsx +41 -0
- package/src/FloatingPanel/FloatingPanel.native.spec.tsx +54 -0
- package/src/FloatingPanel/FloatingPanel.spec.tsx +109 -0
- package/src/FloatingPanel/index.native.tsx +24 -7
- package/src/FloatingPanel/index.tsx +80 -13
- package/src/FloatingPanel/nestedAction.spec.ts +36 -0
- package/src/FloatingPanel/nestedAction.ts +15 -0
- package/src/FloatingPanel/panelWidthContract.spec.ts +12 -15
- package/src/FormsIntegration.stories.tsx +2 -6
- package/src/InputParts/index.tsx +20 -6
- package/src/InputParts/layoutGap.spec.tsx +43 -0
- package/src/Wheel/Wheel.spec.tsx +16 -0
- package/src/Wheel/index.tsx +3 -3
- package/src/fieldLayout.spec.tsx +42 -1
- package/src/fieldLayout.tsx +9 -9
- package/src/fields/Checkbox/CheckboxFieldFrame.spec.tsx +18 -0
- package/src/fields/Checkbox/CheckboxFieldFrame.tsx +6 -1
- package/src/fields/Combobox/Combobox.spec.tsx +48 -1
- package/src/fields/Combobox/index.tsx +90 -80
- package/src/fields/DatePicker/Calendar.tsx +4 -1
- package/src/fields/DatePicker/DatePicker.stories.tsx +22 -1
- package/src/fields/DatePicker/DateRangePicker.tsx +4 -2
- package/src/fields/DatePicker/DatetimePicker.catalog.tsx +21 -19
- package/src/fields/DatePicker/DatetimePicker.native.spec.tsx +144 -0
- package/src/fields/DatePicker/DatetimePicker.native.tsx +57 -32
- package/src/fields/DatePicker/DatetimePicker.stories.tsx +22 -0
- package/src/fields/DatePicker/MonthPicker.tsx +8 -3
- package/src/fields/DatePicker/MultiDatePicker.tsx +4 -2
- package/src/fields/DatePicker/index.native.tsx +1 -0
- package/src/fields/DatePicker/parts.spec.tsx +56 -0
- package/src/fields/DatePicker/parts.tsx +33 -12
- package/src/fields/Geolocation/Geolocation.spec.tsx +287 -35
- package/src/fields/Geolocation/Geolocation.stories.tsx +141 -7
- package/src/fields/Geolocation/GeolocationMap.native.tsx +3 -0
- package/src/fields/Geolocation/GeolocationMap.tsx +4 -0
- package/src/fields/Geolocation/geocoder.spec.ts +59 -0
- package/src/fields/Geolocation/geocoder.ts +84 -0
- package/src/fields/Geolocation/geocoderSeam.spec.tsx +203 -0
- package/src/fields/Geolocation/index.tsx +912 -180
- package/src/fields/Geolocation/nativeSearchFocus.spec.ts +34 -0
- package/src/fields/Geolocation/nativeSearchFocus.ts +19 -0
- package/src/fields/Geolocation/salvage.spec.tsx +398 -0
- package/src/fields/Geolocation/storyProviders.spec.tsx +44 -0
- package/src/fields/Icon/Icon.spec.tsx +215 -1
- package/src/fields/Icon/Icon.stories.tsx +9 -1
- package/src/fields/Icon/drawnSet.tsx +39 -4
- package/src/fields/Icon/index.tsx +118 -18
- package/src/fields/Input/Input.copy.spec.tsx +1 -0
- package/src/fields/Input/Input.spec.tsx +50 -0
- package/src/fields/Input/Input.stories.tsx +1 -1
- package/src/fields/Input/index.tsx +7 -13
- package/src/fields/PhoneInput/index.tsx +2 -2
- package/src/fields/SearchInput/SearchInput.spec.tsx +14 -0
- package/src/fields/SearchInput/index.tsx +5 -6
- package/src/fields/Select/Select.spec.tsx +54 -0
- package/src/fields/Select/index.tsx +63 -33
- package/src/fields/Stepper/Stepper.spec.tsx +34 -1
- package/src/fields/Stepper/index.tsx +193 -33
- package/src/fields/pickerActivation.spec.tsx +105 -0
- package/src/fields/pickerDensity.spec.tsx +86 -0
- package/src/fields/pickerRows.spec.tsx +66 -0
- package/src/index.ts +9 -0
- package/src/shared/focusManagement.spec.tsx +68 -0
- package/src/shared/focusManagement.ts +20 -10
- package/src/shared/pickerTriggerContract.ts +13 -0
- package/src/shared/pressSlopProps.spec.ts +39 -0
- package/src/shared/pressSlopProps.ts +52 -0
- package/types/Button/index.d.ts +22 -3
- package/types/Button/index.d.ts.map +1 -1
- package/types/Chip/index.d.ts.map +1 -1
- package/types/ContextualSaveBar/index.d.ts +1 -1
- package/types/ContextualSaveBar/index.d.ts.map +1 -1
- package/types/FloatingPanel/index.d.ts +11 -1
- package/types/FloatingPanel/index.d.ts.map +1 -1
- package/types/FloatingPanel/index.native.d.ts +2 -1
- package/types/FloatingPanel/index.native.d.ts.map +1 -1
- package/types/FloatingPanel/nestedAction.d.ts +13 -0
- package/types/FloatingPanel/nestedAction.d.ts.map +1 -0
- package/types/InputParts/index.d.ts.map +1 -1
- package/types/fields/Checkbox/CheckboxFieldFrame.d.ts +46 -2
- package/types/fields/Checkbox/CheckboxFieldFrame.d.ts.map +1 -1
- package/types/fields/Checkbox/index.d.ts +3 -3
- package/types/fields/Combobox/index.d.ts +3 -1
- package/types/fields/Combobox/index.d.ts.map +1 -1
- package/types/fields/DatePicker/Calendar.d.ts.map +1 -1
- package/types/fields/DatePicker/DateRangePicker.d.ts.map +1 -1
- package/types/fields/DatePicker/DatetimePicker.catalog.d.ts.map +1 -1
- package/types/fields/DatePicker/DatetimePicker.native.d.ts.map +1 -1
- package/types/fields/DatePicker/MonthPicker.d.ts.map +1 -1
- package/types/fields/DatePicker/MultiDatePicker.d.ts.map +1 -1
- package/types/fields/DatePicker/index.native.d.ts.map +1 -1
- package/types/fields/DatePicker/parts.d.ts.map +1 -1
- package/types/fields/Geolocation/GeolocationMap.d.ts +4 -0
- package/types/fields/Geolocation/GeolocationMap.d.ts.map +1 -1
- package/types/fields/Geolocation/GeolocationMap.native.d.ts +3 -0
- package/types/fields/Geolocation/GeolocationMap.native.d.ts.map +1 -1
- package/types/fields/Geolocation/geocoder.d.ts +53 -0
- package/types/fields/Geolocation/geocoder.d.ts.map +1 -0
- package/types/fields/Geolocation/index.d.ts +18 -2
- package/types/fields/Geolocation/index.d.ts.map +1 -1
- package/types/fields/Geolocation/nativeSearchFocus.d.ts +8 -0
- package/types/fields/Geolocation/nativeSearchFocus.d.ts.map +1 -0
- package/types/fields/Icon/drawnSet.d.ts.map +1 -1
- package/types/fields/Icon/index.d.ts.map +1 -1
- package/types/fields/Input/index.d.ts.map +1 -1
- package/types/fields/PhoneInput/index.d.ts.map +1 -1
- package/types/fields/RadioGroup/index.d.ts +2 -2
- package/types/fields/SearchInput/index.d.ts.map +1 -1
- package/types/fields/Select/index.d.ts.map +1 -1
- package/types/fields/Stepper/index.d.ts.map +1 -1
- package/types/fields/ToggleGroup/index.d.ts +1 -1
- package/types/index.d.ts +2 -0
- package/types/index.d.ts.map +1 -1
- package/types/shared/focusManagement.d.ts +2 -2
- package/types/shared/focusManagement.d.ts.map +1 -1
- package/types/shared/pickerTriggerContract.d.ts +18 -0
- package/types/shared/pickerTriggerContract.d.ts.map +1 -0
- package/types/shared/pressSlopProps.d.ts +8 -0
- package/types/shared/pressSlopProps.d.ts.map +1 -0
- package/src/router.d.ts +0 -16
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { act, fireEvent } from "@testing-library/react";
|
|
2
|
-
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
3
3
|
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
4
4
|
import { Form } from "../../Form";
|
|
5
5
|
import { Combobox } from "./index";
|
|
@@ -11,6 +11,53 @@ const options = [
|
|
|
11
11
|
];
|
|
12
12
|
|
|
13
13
|
describe("Combobox", () => {
|
|
14
|
+
describe("custom sheet trigger", () => {
|
|
15
|
+
const initialWidth = window.innerWidth;
|
|
16
|
+
afterEach(() => {
|
|
17
|
+
window.innerWidth = initialWidth;
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it("keeps the same name and keyboard opener on narrow and wide screens", async () => {
|
|
21
|
+
for (const width of [500, 1200]) {
|
|
22
|
+
window.innerWidth = width;
|
|
23
|
+
const result = renderWithProviders(
|
|
24
|
+
<Combobox
|
|
25
|
+
options={options}
|
|
26
|
+
aria-label="Country code"
|
|
27
|
+
trigger={() => <span>Country</span>}
|
|
28
|
+
/>,
|
|
29
|
+
);
|
|
30
|
+
const trigger = result.container.querySelector('[role="combobox"]');
|
|
31
|
+
expect(trigger?.getAttribute("aria-label")).toBe("Country code");
|
|
32
|
+
expect(trigger?.getAttribute("tabindex")).toBe("0");
|
|
33
|
+
expect(trigger?.getAttribute("aria-expanded")).toBe("false");
|
|
34
|
+
await act(async () => fireEvent.keyDown(trigger!, { key: "Enter" }));
|
|
35
|
+
expect(trigger?.getAttribute("aria-expanded")).toBe("true");
|
|
36
|
+
result.unmount();
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it("lets a custom adornment hug its content while ordinary triggers keep stretching", () => {
|
|
41
|
+
for (const width of [500, 1200]) {
|
|
42
|
+
window.innerWidth = width;
|
|
43
|
+
for (const triggerSizing of [undefined, "content"] as const) {
|
|
44
|
+
const result = renderWithProviders(
|
|
45
|
+
<Combobox
|
|
46
|
+
options={options}
|
|
47
|
+
triggerSizing={triggerSizing}
|
|
48
|
+
trigger={() => <span>Country</span>}
|
|
49
|
+
/>,
|
|
50
|
+
);
|
|
51
|
+
const trigger = result.container.querySelector<HTMLElement>(
|
|
52
|
+
'[data-testid="combobox-trigger"]',
|
|
53
|
+
);
|
|
54
|
+
expect(trigger?.style.width).toBe(triggerSizing === "content" ? "auto" : "100%");
|
|
55
|
+
result.unmount();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
|
|
14
61
|
describe("without form context", () => {
|
|
15
62
|
it("renders with label", () => {
|
|
16
63
|
const result = renderWithProviders(<Combobox label="Fruit" name="fruit" options={options} />);
|
|
@@ -37,7 +37,9 @@ import {
|
|
|
37
37
|
import type { LabelProps, SizeTokens } from "tamagui";
|
|
38
38
|
import { Pressable as RNPressable } from "react-native";
|
|
39
39
|
import { Input as TInput, Text, View, XStack, YStack, isWeb, styled, useTheme } from "tamagui";
|
|
40
|
+
import { Button } from "../../Button";
|
|
40
41
|
import { Chip, type ChipProps } from "../../Chip";
|
|
42
|
+
import { pickerTriggerContract } from "../../shared/pickerTriggerContract";
|
|
41
43
|
import { Skeleton } from "../../Skeleton";
|
|
42
44
|
import { Field, FieldLayout, useFieldA11y, useFieldDescribedBy } from "../../fieldLayout";
|
|
43
45
|
import { Input as InputParts } from "../../InputParts";
|
|
@@ -189,6 +191,8 @@ export interface ComboboxProps {
|
|
|
189
191
|
/** Whether more pages are available. Shows a spinner at the bottom when loading more. */
|
|
190
192
|
hasMore?: boolean;
|
|
191
193
|
trigger?: (selected: ComboboxOption | ComboboxOption[] | undefined, open: boolean) => ReactNode;
|
|
194
|
+
/** Custom triggers stretch by default; content hugs a composite-field adornment. */
|
|
195
|
+
triggerSizing?: "stretch" | "content";
|
|
192
196
|
name?: string;
|
|
193
197
|
form?: AnyFormApi;
|
|
194
198
|
validators?: Record<string, unknown>;
|
|
@@ -367,7 +371,7 @@ const ComboboxItem = memo(function ComboboxItem({
|
|
|
367
371
|
active={isActive}
|
|
368
372
|
aria-selected={isSelected}
|
|
369
373
|
data-state={isSelected ? "active" : "inactive"}
|
|
370
|
-
|
|
374
|
+
height={ctx.knobProps.control.height}
|
|
371
375
|
{...listItemRingProps(Boolean(keyboardRing))}
|
|
372
376
|
{...(suppressHover
|
|
373
377
|
? {
|
|
@@ -456,6 +460,7 @@ interface FloatingComboboxCoreProps {
|
|
|
456
460
|
tabIndexOverride?: number;
|
|
457
461
|
popoverWidth?: number;
|
|
458
462
|
trigger?: (selected: ComboboxOption | ComboboxOption[] | undefined, open: boolean) => ReactNode;
|
|
463
|
+
triggerSizing?: "stretch" | "content";
|
|
459
464
|
knobProps: KnobProps;
|
|
460
465
|
multiple?: boolean;
|
|
461
466
|
selectedOrder?: SelectedOrder;
|
|
@@ -491,6 +496,7 @@ function FloatingComboboxCore({
|
|
|
491
496
|
tabIndexOverride,
|
|
492
497
|
popoverWidth,
|
|
493
498
|
trigger: triggerRender,
|
|
499
|
+
triggerSizing = "stretch",
|
|
494
500
|
knobProps,
|
|
495
501
|
multiple,
|
|
496
502
|
selectedOrder,
|
|
@@ -1349,12 +1355,16 @@ function FloatingComboboxCore({
|
|
|
1349
1355
|
<View
|
|
1350
1356
|
{...boxEventProps}
|
|
1351
1357
|
data-testid="combobox-trigger"
|
|
1352
|
-
width="100%"
|
|
1358
|
+
width={triggerSizing === "content" ? "auto" : "100%"}
|
|
1353
1359
|
alignSelf="stretch"
|
|
1354
1360
|
flexShrink={0}
|
|
1355
1361
|
outlineWidth={0}
|
|
1356
1362
|
focusVisibleStyle={ensureFocusVisibleRing({ outlineOffset: -2 })}
|
|
1357
|
-
style={{
|
|
1363
|
+
style={{
|
|
1364
|
+
display: "flex",
|
|
1365
|
+
alignItems: "stretch",
|
|
1366
|
+
width: triggerSizing === "content" ? "auto" : "100%",
|
|
1367
|
+
}}
|
|
1358
1368
|
>
|
|
1359
1369
|
{triggerRender(multiple ? selectedOptions : selectedOption, open)}
|
|
1360
1370
|
</View>
|
|
@@ -1373,17 +1383,13 @@ function FloatingComboboxCore({
|
|
|
1373
1383
|
// attaches below instead (MPO-38), leaving the trigger on screen and
|
|
1374
1384
|
// focusable, so it keeps its ring.
|
|
1375
1385
|
suppressFocusRing={open && !multiple}
|
|
1386
|
+
{...pickerTriggerContract(knobProps.control.height)}
|
|
1376
1387
|
{...(inTableCell
|
|
1377
|
-
? // Chromeless in cells
|
|
1378
|
-
{
|
|
1388
|
+
? // Chromeless in cells.
|
|
1389
|
+
{}
|
|
1379
1390
|
: {
|
|
1380
1391
|
borderRadius: knobProps.borderRadius.borderRadius,
|
|
1381
1392
|
borderWidth: knobProps.borderRadius.borderWidth,
|
|
1382
|
-
// LC-54 PRESS-FLOOR: compact/small size tokens render a sub-44
|
|
1383
|
-
// trigger (the 36px "Allocated To" quick filter breaking the
|
|
1384
|
-
// list's 44px control row) — same floor the house Select holds
|
|
1385
|
-
// on both its trigger variants.
|
|
1386
|
-
minHeight: 44,
|
|
1387
1393
|
})}
|
|
1388
1394
|
>
|
|
1389
1395
|
<SyncFocusToOpen open={open} />
|
|
@@ -1420,6 +1426,7 @@ function FloatingComboboxCore({
|
|
|
1420
1426
|
</View>
|
|
1421
1427
|
) : (
|
|
1422
1428
|
<Text
|
|
1429
|
+
{...knobProps.controlType}
|
|
1423
1430
|
fontFamily={knobProps.body.fontFamily}
|
|
1424
1431
|
fontWeight={knobProps.body.fontWeight}
|
|
1425
1432
|
color={
|
|
@@ -1435,11 +1442,13 @@ function FloatingComboboxCore({
|
|
|
1435
1442
|
)}
|
|
1436
1443
|
</View>
|
|
1437
1444
|
{clearable && !multiple && !disabled && typeof value === "string" && value !== "" && (
|
|
1438
|
-
<
|
|
1439
|
-
|
|
1445
|
+
<Button
|
|
1446
|
+
size={knobProps.control.height}
|
|
1447
|
+
chromeless
|
|
1448
|
+
{...pickerTriggerContract(knobProps.control.height)}
|
|
1449
|
+
icon={<XIcon size={14} />}
|
|
1440
1450
|
alignSelf="center"
|
|
1441
1451
|
cursor="pointer"
|
|
1442
|
-
role="button"
|
|
1443
1452
|
tabIndex={-1}
|
|
1444
1453
|
aria-label={t("Clear")}
|
|
1445
1454
|
opacity={0.6}
|
|
@@ -1454,9 +1463,7 @@ function FloatingComboboxCore({
|
|
|
1454
1463
|
e.stopPropagation?.();
|
|
1455
1464
|
onValueChange?.("");
|
|
1456
1465
|
}}
|
|
1457
|
-
|
|
1458
|
-
<XIcon size={14} />
|
|
1459
|
-
</View>
|
|
1466
|
+
/>
|
|
1460
1467
|
)}
|
|
1461
1468
|
<View paddingInlineEnd="$2" alignSelf="center">
|
|
1462
1469
|
<CaretDownIcon size={16} color={glyphColor} />
|
|
@@ -1607,7 +1614,7 @@ function FloatingComboboxCore({
|
|
|
1607
1614
|
id={comboboxOptionId(id, createOptionIndex)}
|
|
1608
1615
|
selected={false}
|
|
1609
1616
|
active={createOptionIndex === activeIndex}
|
|
1610
|
-
|
|
1617
|
+
height={knobProps.control.height}
|
|
1611
1618
|
data-combobox-index={createOptionIndex}
|
|
1612
1619
|
data-active={createOptionIndex === activeIndex}
|
|
1613
1620
|
{...listItemRingProps(createOptionIndex === activeIndex && listKeyboardRing)}
|
|
@@ -1649,7 +1656,7 @@ function FloatingComboboxCore({
|
|
|
1649
1656
|
id={comboboxOptionId(id, createOptionIndex)}
|
|
1650
1657
|
selected={false}
|
|
1651
1658
|
active={createOptionIndex === activeIndex}
|
|
1652
|
-
|
|
1659
|
+
height={knobProps.control.height}
|
|
1653
1660
|
data-combobox-index={createOptionIndex}
|
|
1654
1661
|
data-active={createOptionIndex === activeIndex}
|
|
1655
1662
|
{...listItemRingProps(createOptionIndex === activeIndex && listKeyboardRing)}
|
|
@@ -1736,7 +1743,7 @@ const comboboxSearchHeader = (
|
|
|
1736
1743
|
alignItems="center"
|
|
1737
1744
|
gap="$2"
|
|
1738
1745
|
paddingHorizontal="$3"
|
|
1739
|
-
height={knobProps.
|
|
1746
|
+
height={knobProps.control.height}
|
|
1740
1747
|
borderBottomWidth={1}
|
|
1741
1748
|
borderBottomColor={formCommonColors.divider}
|
|
1742
1749
|
>
|
|
@@ -1786,6 +1793,7 @@ function NativeComboboxCore({
|
|
|
1786
1793
|
"aria-label": ariaLabel,
|
|
1787
1794
|
hasLabel,
|
|
1788
1795
|
trigger: triggerRender,
|
|
1796
|
+
triggerSizing = "stretch",
|
|
1789
1797
|
knobProps,
|
|
1790
1798
|
multiple,
|
|
1791
1799
|
selectedOrder,
|
|
@@ -2169,8 +2177,8 @@ function NativeComboboxCore({
|
|
|
2169
2177
|
data-active={active}
|
|
2170
2178
|
{...listItemRingProps(active && listKeyboardRing)}
|
|
2171
2179
|
{...(option.description
|
|
2172
|
-
? { minHeight: knobProps.
|
|
2173
|
-
: { height: knobProps.
|
|
2180
|
+
? { minHeight: knobProps.control.height, paddingVertical: "$2" }
|
|
2181
|
+
: { height: knobProps.control.height })}
|
|
2174
2182
|
onPress={isWeb ? () => handleSelect(option) : undefined}
|
|
2175
2183
|
onMouseEnter={() => {
|
|
2176
2184
|
setKeyboardNav(false);
|
|
@@ -2262,7 +2270,7 @@ function NativeComboboxCore({
|
|
|
2262
2270
|
alignItems="center"
|
|
2263
2271
|
gap="$2"
|
|
2264
2272
|
paddingHorizontal="$3"
|
|
2265
|
-
height={knobProps.
|
|
2273
|
+
height={knobProps.control.height}
|
|
2266
2274
|
role="option"
|
|
2267
2275
|
id={comboboxOptionId(id, createOptionIndex)}
|
|
2268
2276
|
data-combobox-index={createOptionIndex}
|
|
@@ -2307,7 +2315,7 @@ function NativeComboboxCore({
|
|
|
2307
2315
|
alignItems="center"
|
|
2308
2316
|
gap="$2"
|
|
2309
2317
|
paddingHorizontal="$3"
|
|
2310
|
-
height={knobProps.
|
|
2318
|
+
height={knobProps.control.height}
|
|
2311
2319
|
role="option"
|
|
2312
2320
|
id={comboboxOptionId(id, createOptionIndex)}
|
|
2313
2321
|
data-combobox-index={createOptionIndex}
|
|
@@ -2370,15 +2378,51 @@ function NativeComboboxCore({
|
|
|
2370
2378
|
</View>
|
|
2371
2379
|
);
|
|
2372
2380
|
|
|
2381
|
+
// Both trigger shapes share one accessible control. The sheet wrapper's
|
|
2382
|
+
// capture handler also opens it, so pointer activation is idempotent.
|
|
2383
|
+
const triggerProps = {
|
|
2384
|
+
id,
|
|
2385
|
+
...(isWeb
|
|
2386
|
+
? {
|
|
2387
|
+
role: "combobox" as const,
|
|
2388
|
+
"aria-haspopup": "listbox" as const,
|
|
2389
|
+
"aria-expanded": open,
|
|
2390
|
+
"aria-controls": listboxId,
|
|
2391
|
+
"aria-activedescendant": hideSearch ? activeDescendant : undefined,
|
|
2392
|
+
"aria-autocomplete": hideSearch ? ("list" as const) : undefined,
|
|
2393
|
+
"aria-label": ariaLabel ?? (!hasLabel ? placeholder : undefined),
|
|
2394
|
+
"aria-describedby": describedBy,
|
|
2395
|
+
tabIndex: disabled ? -1 : 0,
|
|
2396
|
+
}
|
|
2397
|
+
: { importantForAccessibility: "no" as const }),
|
|
2398
|
+
onPress: isWeb && !disabled ? () => handleOpenChange(true) : undefined,
|
|
2399
|
+
onKeyDown: (event: React.KeyboardEvent) => {
|
|
2400
|
+
if (disabled) return;
|
|
2401
|
+
if (
|
|
2402
|
+
["Enter", " ", "ArrowDown", "ArrowUp", "j", "k"].includes(event.key) ||
|
|
2403
|
+
event.code === "Space"
|
|
2404
|
+
) {
|
|
2405
|
+
event.preventDefault();
|
|
2406
|
+
setKeyboardNav(true);
|
|
2407
|
+
if (!open) handleOpenChange(true);
|
|
2408
|
+
}
|
|
2409
|
+
},
|
|
2410
|
+
};
|
|
2411
|
+
|
|
2373
2412
|
const triggerContent = triggerRender ? (
|
|
2374
2413
|
<View
|
|
2375
2414
|
data-testid="combobox-trigger"
|
|
2376
|
-
width="100%"
|
|
2415
|
+
width={triggerSizing === "content" ? "auto" : "100%"}
|
|
2377
2416
|
alignSelf="stretch"
|
|
2378
2417
|
flexShrink={0}
|
|
2379
2418
|
outlineWidth={0}
|
|
2380
2419
|
focusVisibleStyle={ensureFocusVisibleRing({ outlineOffset: -2 })}
|
|
2381
|
-
style={{
|
|
2420
|
+
style={{
|
|
2421
|
+
display: "flex",
|
|
2422
|
+
alignItems: "stretch",
|
|
2423
|
+
width: triggerSizing === "content" ? "auto" : "100%",
|
|
2424
|
+
}}
|
|
2425
|
+
{...triggerProps}
|
|
2382
2426
|
>
|
|
2383
2427
|
{triggerRender(multiple ? selectedOptions : selectedOption, open)}
|
|
2384
2428
|
</View>
|
|
@@ -2395,48 +2439,15 @@ function NativeComboboxCore({
|
|
|
2395
2439
|
// paint — it would ghost around the panel's corners. A multi-select
|
|
2396
2440
|
// panel attaches below instead (MPO-38), so it keeps its ring.
|
|
2397
2441
|
suppressFocusRing={open && !multiple}
|
|
2442
|
+
{...pickerTriggerContract(knobProps.control.height)}
|
|
2398
2443
|
{...(inTableCell
|
|
2399
|
-
? // Chromeless in cells
|
|
2400
|
-
{
|
|
2444
|
+
? // Chromeless in cells.
|
|
2445
|
+
{}
|
|
2401
2446
|
: {
|
|
2402
2447
|
borderRadius: knobProps.borderRadius.borderRadius,
|
|
2403
2448
|
borderWidth: knobProps.borderRadius.borderWidth,
|
|
2404
2449
|
})}
|
|
2405
|
-
|
|
2406
|
-
// Web: the box is the combobox control (ARIA + keyboard). Native:
|
|
2407
|
-
// FloatingPanel's trigger Pressable (triggerA11y) is the single
|
|
2408
|
-
// accessible node — role/aria props here surface the box as a
|
|
2409
|
-
// duplicate TalkBack stop on Android, so exclude it from the tree
|
|
2410
|
-
// (descendants stay reachable; "no", not "no-hide-descendants").
|
|
2411
|
-
{...(isWeb
|
|
2412
|
-
? {
|
|
2413
|
-
role: "combobox" as const,
|
|
2414
|
-
"aria-haspopup": "listbox",
|
|
2415
|
-
"aria-expanded": open,
|
|
2416
|
-
"aria-controls": listboxId,
|
|
2417
|
-
"aria-activedescendant": hideSearch ? activeDescendant : undefined,
|
|
2418
|
-
"aria-autocomplete": hideSearch ? ("list" as const) : undefined,
|
|
2419
|
-
// Standalone (no label): fall back to placeholder for the name.
|
|
2420
|
-
// Labelled: the sibling Label wires `aria-labelledby` onto this id
|
|
2421
|
-
// itself — naming it here too doubles the spoken name.
|
|
2422
|
-
"aria-label": ariaLabel ?? (!hasLabel ? placeholder : undefined),
|
|
2423
|
-
"aria-describedby": describedBy,
|
|
2424
|
-
tabIndex: disabled ? -1 : 0,
|
|
2425
|
-
}
|
|
2426
|
-
: { importantForAccessibility: "no" as const })}
|
|
2427
|
-
// Web: trigger owns toggle. Native: FloatingPanel.native owns open
|
|
2428
|
-
// (avoid double-toggle that batches open then immediately closed).
|
|
2429
|
-
onPress={isWeb && !disabled ? () => handleOpenChange(!open) : undefined}
|
|
2430
|
-
onKeyDown={(e: React.KeyboardEvent) => {
|
|
2431
|
-
if (
|
|
2432
|
-
["Enter", " ", "ArrowDown", "ArrowUp", "j", "k"].includes(e.key) ||
|
|
2433
|
-
e.code === "Space"
|
|
2434
|
-
) {
|
|
2435
|
-
e.preventDefault();
|
|
2436
|
-
setKeyboardNav(true);
|
|
2437
|
-
if (!open) handleOpenChange(true);
|
|
2438
|
-
}
|
|
2439
|
-
}}
|
|
2450
|
+
{...triggerProps}
|
|
2440
2451
|
>
|
|
2441
2452
|
<View
|
|
2442
2453
|
flex={1}
|
|
@@ -2471,6 +2482,7 @@ function NativeComboboxCore({
|
|
|
2471
2482
|
</View>
|
|
2472
2483
|
) : (
|
|
2473
2484
|
<Text
|
|
2485
|
+
{...knobProps.controlType}
|
|
2474
2486
|
fontFamily={knobProps.body.fontFamily}
|
|
2475
2487
|
fontWeight={knobProps.body.fontWeight}
|
|
2476
2488
|
color={
|
|
@@ -2484,24 +2496,6 @@ function NativeComboboxCore({
|
|
|
2484
2496
|
</Text>
|
|
2485
2497
|
)}
|
|
2486
2498
|
</View>
|
|
2487
|
-
{clearable && !multiple && !disabled && typeof value === "string" && value !== "" && (
|
|
2488
|
-
<View
|
|
2489
|
-
paddingInlineEnd="$1"
|
|
2490
|
-
alignSelf="center"
|
|
2491
|
-
cursor="pointer"
|
|
2492
|
-
role="button"
|
|
2493
|
-
tabIndex={-1}
|
|
2494
|
-
aria-label={t("Clear")}
|
|
2495
|
-
opacity={0.6}
|
|
2496
|
-
hoverStyle={{ opacity: 1 }}
|
|
2497
|
-
onPress={(e: any) => {
|
|
2498
|
-
e.stopPropagation?.();
|
|
2499
|
-
onValueChange?.("");
|
|
2500
|
-
}}
|
|
2501
|
-
>
|
|
2502
|
-
<XIcon size={14} />
|
|
2503
|
-
</View>
|
|
2504
|
-
)}
|
|
2505
2499
|
<View paddingInlineEnd="$2" alignSelf="center">
|
|
2506
2500
|
<CaretDownIcon size={16} color={glyphColor} />
|
|
2507
2501
|
</View>
|
|
@@ -2523,6 +2517,20 @@ function NativeComboboxCore({
|
|
|
2523
2517
|
// the user types, so a content-fit sheet would open as a sliver.
|
|
2524
2518
|
sheetFill={Boolean(onSearch)}
|
|
2525
2519
|
trigger={triggerContent}
|
|
2520
|
+
triggerSizing={triggerSizing}
|
|
2521
|
+
triggerEnd={
|
|
2522
|
+
clearable && !multiple && !disabled && typeof value === "string" && value !== "" ? (
|
|
2523
|
+
<Button
|
|
2524
|
+
size={knobProps.sizeToken}
|
|
2525
|
+
chromeless
|
|
2526
|
+
minWidth={44}
|
|
2527
|
+
minHeight={44}
|
|
2528
|
+
aria-label={t("Clear")}
|
|
2529
|
+
icon={<XIcon size={14} />}
|
|
2530
|
+
onPress={() => onValueChange?.("")}
|
|
2531
|
+
/>
|
|
2532
|
+
) : undefined
|
|
2533
|
+
}
|
|
2526
2534
|
triggerA11y={{
|
|
2527
2535
|
label: ariaLabel ?? fieldA11y?.label,
|
|
2528
2536
|
value: triggerValueText,
|
|
@@ -2568,6 +2576,7 @@ export function Combobox({
|
|
|
2568
2576
|
onLoadMore,
|
|
2569
2577
|
hasMore,
|
|
2570
2578
|
trigger,
|
|
2579
|
+
triggerSizing,
|
|
2571
2580
|
name,
|
|
2572
2581
|
form: formProp,
|
|
2573
2582
|
validators,
|
|
@@ -2700,6 +2709,7 @@ export function Combobox({
|
|
|
2700
2709
|
tabIndexOverride={tabIndexProp}
|
|
2701
2710
|
popoverWidth={popoverWidth}
|
|
2702
2711
|
trigger={trigger}
|
|
2712
|
+
triggerSizing={triggerSizing}
|
|
2703
2713
|
knobProps={knobProps}
|
|
2704
2714
|
multiple={multiple}
|
|
2705
2715
|
selectedOrder={selectedOrder}
|
|
@@ -80,6 +80,7 @@ function CalendarDayGrid({
|
|
|
80
80
|
maxDate,
|
|
81
81
|
selectionCapped,
|
|
82
82
|
}: CalendarDayGridProps) {
|
|
83
|
+
const { knobProps } = useCalendarKnobs();
|
|
83
84
|
return (
|
|
84
85
|
<CalendarDays
|
|
85
86
|
calendarData={calendarData}
|
|
@@ -110,7 +111,7 @@ function CalendarDayGrid({
|
|
|
110
111
|
}
|
|
111
112
|
return (
|
|
112
113
|
<View
|
|
113
|
-
transition=
|
|
114
|
+
transition={knobProps.transition}
|
|
114
115
|
position="absolute"
|
|
115
116
|
height="100%"
|
|
116
117
|
zIndex={0}
|
|
@@ -297,6 +298,7 @@ export function Calendar({
|
|
|
297
298
|
const handleSetDisplayForPrev = useCallback(
|
|
298
299
|
(date: Date) => {
|
|
299
300
|
const next = new Date(date);
|
|
301
|
+
next.setDate(1);
|
|
300
302
|
next.setMonth(next.getMonth() + 1);
|
|
301
303
|
setDisplayDate(next);
|
|
302
304
|
},
|
|
@@ -305,6 +307,7 @@ export function Calendar({
|
|
|
305
307
|
|
|
306
308
|
const prevMonthDate = useMemo(() => {
|
|
307
309
|
const date = new Date(displayDate);
|
|
310
|
+
date.setDate(1);
|
|
308
311
|
date.setMonth(date.getMonth() - 1);
|
|
309
312
|
return date;
|
|
310
313
|
}, [displayDate]);
|
|
@@ -4,7 +4,7 @@ import type { Meta, StoryObj } from "@storybook/react-native-web-vite";
|
|
|
4
4
|
import { useForm } from "@tanstack/react-form";
|
|
5
5
|
import type { ComponentProps } from "react";
|
|
6
6
|
import { useState } from "react";
|
|
7
|
-
import { YStack } from "tamagui";
|
|
7
|
+
import { Text, YStack } from "tamagui";
|
|
8
8
|
import { Button } from "../../Button";
|
|
9
9
|
import { Form } from "../../Form";
|
|
10
10
|
import { Calendar } from "./Calendar";
|
|
@@ -103,6 +103,27 @@ export const Standalone: Story = {
|
|
|
103
103
|
render: (args) => <DatePicker {...args} />,
|
|
104
104
|
};
|
|
105
105
|
|
|
106
|
+
export const StateContract: Story = {
|
|
107
|
+
render: () => {
|
|
108
|
+
const [value, setValue] = useState<string | null>(null);
|
|
109
|
+
const [edits, setEdits] = useState(0);
|
|
110
|
+
return (
|
|
111
|
+
<YStack gap="$4" maxWidth={400}>
|
|
112
|
+
<DatePicker label="Saved date" defaultValue="1990-01-01" />
|
|
113
|
+
<DatePicker
|
|
114
|
+
label="Programmatic date"
|
|
115
|
+
value={value}
|
|
116
|
+
onChange={() => setEdits((count) => count + 1)}
|
|
117
|
+
/>
|
|
118
|
+
<Button onPress={() => setValue("2026-03-05")}>Load date</Button>
|
|
119
|
+
<Text>{`User edits: ${edits}`}</Text>
|
|
120
|
+
<DatePicker label="Read-only date" value="1990-01-01" readOnly />
|
|
121
|
+
<DatePicker label="Disabled date" value="1990-01-01" disabled />
|
|
122
|
+
</YStack>
|
|
123
|
+
);
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
|
|
106
127
|
export const Basic: Story = {
|
|
107
128
|
render: (args) => <DatePicker {...args} />,
|
|
108
129
|
args: {
|
|
@@ -261,6 +261,7 @@ function DualCalendarBody({
|
|
|
261
261
|
|
|
262
262
|
const prevMonthDate = useMemo(() => {
|
|
263
263
|
const date = new Date(displayDate);
|
|
264
|
+
date.setDate(1);
|
|
264
265
|
date.setMonth(date.getMonth() - 1);
|
|
265
266
|
return date;
|
|
266
267
|
}, [displayDate]);
|
|
@@ -273,6 +274,7 @@ function DualCalendarBody({
|
|
|
273
274
|
const handleSetDisplayForPrev = useCallback(
|
|
274
275
|
(date: Date) => {
|
|
275
276
|
const next = new Date(date);
|
|
277
|
+
next.setDate(1);
|
|
276
278
|
next.setMonth(next.getMonth() + 1);
|
|
277
279
|
setDisplayDate(next);
|
|
278
280
|
},
|
|
@@ -281,7 +283,7 @@ function DualCalendarBody({
|
|
|
281
283
|
|
|
282
284
|
if (!fullWidthMode) {
|
|
283
285
|
return (
|
|
284
|
-
<View
|
|
286
|
+
<View>
|
|
285
287
|
<SingleCalendar
|
|
286
288
|
displayDate={displayDate}
|
|
287
289
|
rangeStart={rangeStart}
|
|
@@ -297,7 +299,7 @@ function DualCalendarBody({
|
|
|
297
299
|
}
|
|
298
300
|
|
|
299
301
|
return (
|
|
300
|
-
<View flexDirection="row" {...knobProps.gap}
|
|
302
|
+
<View flexDirection="row" {...knobProps.gap}>
|
|
301
303
|
<SingleCalendar
|
|
302
304
|
displayDate={prevMonthDate}
|
|
303
305
|
rangeStart={rangeStart}
|
|
@@ -246,15 +246,14 @@ function DatetimePickerBody({
|
|
|
246
246
|
);
|
|
247
247
|
|
|
248
248
|
return (
|
|
249
|
-
<View
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
<View flexDirection="row" width="100%">
|
|
249
|
+
<View flexDirection="column" alignItems="center" minWidth={px * 7} alignSelf="stretch">
|
|
250
|
+
<View
|
|
251
|
+
flexDirection="row"
|
|
252
|
+
width="100%"
|
|
253
|
+
{...knobProps.panelPadding}
|
|
254
|
+
// The active content frame owns the space below this strip.
|
|
255
|
+
paddingBottom={0}
|
|
256
|
+
>
|
|
258
257
|
{(["date", "time"] as const).map((tab) => {
|
|
259
258
|
const active = activeTab === tab;
|
|
260
259
|
const tabDisabled = tab === "time" && !selectedDatetime;
|
|
@@ -319,15 +318,17 @@ function DatetimePickerBody({
|
|
|
319
318
|
</CalendarViewSwitcher>
|
|
320
319
|
) : (
|
|
321
320
|
selectedDatetime && (
|
|
322
|
-
<
|
|
323
|
-
<
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
321
|
+
<CalendarPanelFrame>
|
|
322
|
+
<View width={px * 7}>
|
|
323
|
+
<TimeSection
|
|
324
|
+
selectedDate={selectedDatetime}
|
|
325
|
+
onTimeChange={handleTimeChange}
|
|
326
|
+
timeFormat={timeFormat}
|
|
327
|
+
minuteStep={minuteStep}
|
|
328
|
+
showSeconds={showSeconds}
|
|
329
|
+
/>
|
|
330
|
+
</View>
|
|
331
|
+
</CalendarPanelFrame>
|
|
331
332
|
)
|
|
332
333
|
)}
|
|
333
334
|
</View>
|
|
@@ -505,7 +506,8 @@ export function DatetimePicker<
|
|
|
505
506
|
}
|
|
506
507
|
disabled={disabled}
|
|
507
508
|
sizing="grow"
|
|
508
|
-
|
|
509
|
+
contentPadding="none"
|
|
510
|
+
widthMode="fit-content"
|
|
509
511
|
>
|
|
510
512
|
{pickerContent(fieldChange)}
|
|
511
513
|
</FloatingPanel>
|