@multiplatform.one/forms 8.2.2 → 8.4.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/AdaptivePopup/index.native.js +2 -2
- package/dist/cjs/AdaptivePopup/index.native.js.map +1 -1
- package/dist/cjs/Button/index.native.js +2 -2
- package/dist/cjs/Button/index.native.js.map +1 -1
- package/dist/cjs/Composer/index.native.js +1 -1
- package/dist/cjs/Composer/index.native.js.map +1 -1
- package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js +1 -1
- package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
- package/dist/cjs/ContextualSaveBar/index.native.js +3 -3
- package/dist/cjs/ContextualSaveBar/index.native.js.map +1 -1
- package/dist/cjs/ControlGroup/index.cjs +2 -1
- package/dist/cjs/ControlGroup/index.native.js +3 -2
- package/dist/cjs/ControlGroup/index.native.js.map +1 -1
- package/dist/cjs/DescriptionList/index.native.js +2 -2
- package/dist/cjs/DescriptionList/index.native.js.map +1 -1
- package/dist/cjs/FieldDisplay/index.native.js +1 -1
- package/dist/cjs/FieldDisplay/index.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/index.native.js +20 -2
- package/dist/cjs/FloatingPanel/index.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/trailingAction.native.js +1 -1
- package/dist/cjs/FloatingPanel/trailingAction.native.js.map +1 -1
- package/dist/cjs/Form/index.native.js +1 -1
- package/dist/cjs/Form/index.native.js.map +1 -1
- package/dist/cjs/InputParts/index.cjs +1 -0
- package/dist/cjs/InputParts/index.native.js +1 -0
- package/dist/cjs/InputParts/index.native.js.map +1 -1
- package/dist/cjs/Wheel/index.cjs +22 -6
- package/dist/cjs/Wheel/index.native.js +26 -8
- package/dist/cjs/Wheel/index.native.js.map +1 -1
- package/dist/cjs/fieldLayout.native.js +1 -1
- package/dist/cjs/fieldLayout.native.js.map +1 -1
- package/dist/cjs/fields/Barcode/BarcodeScanner.native.js +1 -1
- package/dist/cjs/fields/Barcode/index.native.js +2 -2
- package/dist/cjs/fields/Barcode/index.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/Checkbox.native.js +1 -1
- package/dist/cjs/fields/Checkbox/Checkbox.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js +1 -1
- package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
- package/dist/cjs/fields/ColorPicker/index.native.js +2 -2
- package/dist/cjs/fields/ColorPicker/index.native.js.map +1 -1
- package/dist/cjs/fields/ColorPicker/parts.native.js +2 -2
- package/dist/cjs/fields/ColorPicker/parts.native.js.map +1 -1
- package/dist/cjs/fields/Combobox/index.native.js +5 -5
- package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
- 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.native.js +3 -3
- package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/DatetimePicker.native.js +2 -2
- package/dist/cjs/fields/DatePicker/MonthPicker.native.js +2 -2
- package/dist/cjs/fields/DatePicker/MonthPicker.native.js.map +1 -1
- 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/catalog.native.js +2 -2
- package/dist/cjs/fields/DatePicker/catalog.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/index.native.js +2 -2
- package/dist/cjs/fields/DatePicker/parts.cjs +33 -30
- package/dist/cjs/fields/DatePicker/parts.native.js +36 -32
- package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/cjs/fields/Duration/DurationWheel.native.js +1 -1
- package/dist/cjs/fields/Duration/index.native.js +3 -3
- package/dist/cjs/fields/Duration/index.native.js.map +1 -1
- package/dist/cjs/fields/FileUpload/index.cjs +32 -15
- package/dist/cjs/fields/FileUpload/index.native.js +42 -21
- package/dist/cjs/fields/FileUpload/index.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/index.native.js +5 -5
- package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
- package/dist/cjs/fields/Icon/index.native.js +3 -3
- package/dist/cjs/fields/Icon/index.native.js.map +1 -1
- package/dist/cjs/fields/ImageField/index.cjs +35 -20
- package/dist/cjs/fields/ImageField/index.native.js +39 -22
- package/dist/cjs/fields/ImageField/index.native.js.map +1 -1
- package/dist/cjs/fields/Input/index.native.js +3 -3
- package/dist/cjs/fields/Input/index.native.js.map +1 -1
- package/dist/cjs/fields/MentionInput/index.native.js +3 -3
- package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
- package/dist/cjs/fields/OTPInput/index.native.js +3 -3
- package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
- package/dist/cjs/fields/PhoneInput/index.native.js +3 -3
- package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/cjs/fields/Progress/index.cjs +5 -0
- package/dist/cjs/fields/Progress/index.native.js +6 -1
- package/dist/cjs/fields/Progress/index.native.js.map +1 -1
- package/dist/cjs/fields/RadioGroup/index.native.js +1 -1
- package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/cjs/fields/Rating/index.native.js +1 -1
- package/dist/cjs/fields/Rating/index.native.js.map +1 -1
- package/dist/cjs/fields/SearchInput/index.native.js +2 -2
- package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
- package/dist/cjs/fields/Select/index.native.js +4 -4
- package/dist/cjs/fields/Select/index.native.js.map +1 -1
- package/dist/cjs/fields/Signature/index.native.js +2 -2
- package/dist/cjs/fields/Signature/index.native.js.map +1 -1
- package/dist/cjs/fields/Slider/index.cjs +38 -12
- package/dist/cjs/fields/Slider/index.native.js +40 -12
- package/dist/cjs/fields/Slider/index.native.js.map +1 -1
- package/dist/cjs/fields/Stepper/index.native.js +2 -2
- package/dist/cjs/fields/Stepper/index.native.js.map +1 -1
- package/dist/cjs/fields/Switch/index.cjs +10 -6
- package/dist/cjs/fields/Switch/index.native.js +12 -8
- package/dist/cjs/fields/Switch/index.native.js.map +1 -1
- package/dist/cjs/fields/TextArea/index.native.js +2 -2
- package/dist/cjs/fields/TextArea/index.native.js.map +1 -1
- package/dist/cjs/fields/TimePicker/catalog.native.js +3 -3
- package/dist/cjs/fields/TimePicker/catalog.native.js.map +1 -1
- package/dist/cjs/fields/TimePicker/index.native.js +2 -2
- package/dist/cjs/fields/TimePicker/parts.cjs +9 -10
- package/dist/cjs/fields/TimePicker/parts.native.js +10 -11
- package/dist/cjs/fields/TimePicker/parts.native.js.map +1 -1
- package/dist/cjs/fields/TimeRangeScrubber/index.native.js +2 -2
- package/dist/cjs/fields/TimeRangeScrubber/index.native.js.map +1 -1
- package/dist/cjs/fields/ToggleGroup/index.cjs +1 -0
- package/dist/cjs/fields/ToggleGroup/index.native.js +2 -1
- package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
- package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js +1 -1
- package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
- package/dist/cjs/fields/pickerHandle.cjs +18 -0
- package/dist/cjs/fields/pickerHandle.native.js +21 -0
- package/dist/cjs/fields/pickerHandle.native.js.map +1 -0
- package/dist/cjs/hooks/useHoldCue.cjs +54 -0
- package/dist/cjs/hooks/useHoldCue.native.js +62 -0
- package/dist/cjs/hooks/useHoldCue.native.js.map +1 -0
- package/dist/cjs/index.cjs +4 -0
- package/dist/cjs/index.gnome.cjs +4 -0
- package/dist/cjs/index.gnome.native.js +41 -37
- package/dist/cjs/index.gnome.native.js.map +1 -1
- package/dist/cjs/index.native.js +50 -46
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/keyboard/KeyboardDoneBar.native.js +1 -1
- package/dist/cjs/shared/TimeColumn.native.js +1 -1
- package/dist/cjs/shared/TimeColumn.native.js.map +1 -1
- package/dist/cjs/shared/colorRamps.cjs +9 -7
- package/dist/cjs/shared/colorRamps.native.js +9 -7
- package/dist/cjs/shared/colorRamps.native.js.map +1 -1
- package/dist/cjs/shared/controlTrack.cjs +32 -0
- package/dist/cjs/shared/controlTrack.native.js +35 -0
- package/dist/cjs/shared/controlTrack.native.js.map +1 -0
- package/dist/cjs/shared/floatingList.native.js +1 -1
- package/dist/cjs/shared/floatingList.native.js.map +1 -1
- package/dist/cjs/shared/utils.native.js +1 -1
- package/dist/cjs/shared/utils.native.js.map +1 -1
- package/dist/esm/ControlGroup/index.mjs +2 -1
- package/dist/esm/ControlGroup/index.mjs.map +1 -1
- package/dist/esm/ControlGroup/index.native.js +2 -1
- package/dist/esm/ControlGroup/index.native.js.map +1 -1
- package/dist/esm/FloatingPanel/index.native.js +20 -2
- package/dist/esm/FloatingPanel/index.native.js.map +1 -1
- package/dist/esm/InputParts/index.mjs +1 -0
- package/dist/esm/InputParts/index.mjs.map +1 -1
- package/dist/esm/InputParts/index.native.js +1 -0
- package/dist/esm/InputParts/index.native.js.map +1 -1
- package/dist/esm/Wheel/index.mjs +23 -7
- package/dist/esm/Wheel/index.mjs.map +1 -1
- package/dist/esm/Wheel/index.native.js +27 -9
- package/dist/esm/Wheel/index.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/parts.mjs +35 -32
- package/dist/esm/fields/DatePicker/parts.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/parts.native.js +36 -32
- package/dist/esm/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/esm/fields/FileUpload/index.mjs +33 -16
- package/dist/esm/fields/FileUpload/index.mjs.map +1 -1
- package/dist/esm/fields/FileUpload/index.native.js +41 -20
- package/dist/esm/fields/FileUpload/index.native.js.map +1 -1
- package/dist/esm/fields/ImageField/index.mjs +36 -21
- package/dist/esm/fields/ImageField/index.mjs.map +1 -1
- package/dist/esm/fields/ImageField/index.native.js +38 -21
- package/dist/esm/fields/ImageField/index.native.js.map +1 -1
- package/dist/esm/fields/Progress/index.mjs +5 -0
- package/dist/esm/fields/Progress/index.mjs.map +1 -1
- package/dist/esm/fields/Progress/index.native.js +5 -0
- package/dist/esm/fields/Progress/index.native.js.map +1 -1
- package/dist/esm/fields/Slider/index.mjs +38 -12
- package/dist/esm/fields/Slider/index.mjs.map +1 -1
- package/dist/esm/fields/Slider/index.native.js +39 -11
- package/dist/esm/fields/Slider/index.native.js.map +1 -1
- package/dist/esm/fields/Switch/index.mjs +10 -6
- package/dist/esm/fields/Switch/index.mjs.map +1 -1
- package/dist/esm/fields/Switch/index.native.js +10 -6
- package/dist/esm/fields/Switch/index.native.js.map +1 -1
- package/dist/esm/fields/TimePicker/parts.mjs +9 -10
- package/dist/esm/fields/TimePicker/parts.mjs.map +1 -1
- package/dist/esm/fields/TimePicker/parts.native.js +9 -10
- package/dist/esm/fields/TimePicker/parts.native.js.map +1 -1
- package/dist/esm/fields/ToggleGroup/index.mjs +2 -1
- package/dist/esm/fields/ToggleGroup/index.mjs.map +1 -1
- package/dist/esm/fields/ToggleGroup/index.native.js +2 -1
- package/dist/esm/fields/ToggleGroup/index.native.js.map +1 -1
- package/dist/esm/fields/pickerHandle.mjs +2 -0
- package/dist/esm/fields/pickerHandle.mjs.map +1 -0
- package/dist/esm/fields/pickerHandle.native.js +2 -0
- package/dist/esm/fields/pickerHandle.native.js.map +1 -0
- package/dist/esm/hooks/useHoldCue.mjs +27 -0
- package/dist/esm/hooks/useHoldCue.mjs.map +1 -0
- package/dist/esm/hooks/useHoldCue.native.js +32 -0
- package/dist/esm/hooks/useHoldCue.native.js.map +1 -0
- package/dist/esm/index.gnome.mjs +2 -1
- package/dist/esm/index.gnome.mjs.map +1 -1
- package/dist/esm/index.gnome.native.js +2 -1
- package/dist/esm/index.gnome.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/shared/colorRamps.mjs +9 -7
- package/dist/esm/shared/colorRamps.mjs.map +1 -1
- package/dist/esm/shared/colorRamps.native.js +9 -7
- package/dist/esm/shared/colorRamps.native.js.map +1 -1
- package/dist/esm/shared/controlTrack.mjs +7 -0
- package/dist/esm/shared/controlTrack.mjs.map +1 -0
- package/dist/esm/shared/controlTrack.native.js +7 -0
- package/dist/esm/shared/controlTrack.native.js.map +1 -0
- package/dist/esm/shared/nativeOverlayWindow.mjs.map +1 -1
- package/dist/esm/shared/systemControls.mjs.map +1 -1
- package/dist/esm/shared/systemControls.native.js.map +1 -1
- package/dist/jsx/AdaptivePopup/index.native.js +2 -2
- package/dist/jsx/AdaptivePopup/index.native.js.map +1 -1
- package/dist/jsx/Button/IconButtonGroup.native.js.map +1 -1
- package/dist/jsx/Button/circleGlyph.native.js.map +1 -1
- package/dist/jsx/Button/iconButtonGroupContext.native.js.map +1 -1
- package/dist/jsx/Button/index.native.js +2 -2
- package/dist/jsx/Button/index.native.js.map +1 -1
- package/dist/jsx/Button/webGlass.native.js.map +1 -1
- package/dist/jsx/Chip/index.native.js.map +1 -1
- package/dist/jsx/Composer/index.native.js +1 -1
- package/dist/jsx/Composer/index.native.js.map +1 -1
- package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.native.js +1 -1
- package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
- package/dist/jsx/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
- package/dist/jsx/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
- package/dist/jsx/ContextualSaveBar/index.native.js +3 -3
- package/dist/jsx/ContextualSaveBar/index.native.js.map +1 -1
- package/dist/jsx/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
- package/dist/jsx/ControlGroup/index.mjs +2 -1
- package/dist/jsx/ControlGroup/index.mjs.map +1 -1
- package/dist/jsx/ControlGroup/index.native.js +3 -2
- package/dist/jsx/ControlGroup/index.native.js.map +1 -1
- package/dist/jsx/DescriptionList/index.native.js +2 -2
- package/dist/jsx/DescriptionList/index.native.js.map +1 -1
- package/dist/jsx/ErrorSummary.native.js.map +1 -1
- package/dist/jsx/FieldDisplay/editMode.native.js.map +1 -1
- package/dist/jsx/FieldDisplay/formatters.native.js.map +1 -1
- package/dist/jsx/FieldDisplay/index.native.js +1 -1
- package/dist/jsx/FieldDisplay/index.native.js.map +1 -1
- package/dist/jsx/FieldGroup.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/PanelHeader.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/RegularPanel.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/compactFace.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/containingBlock.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/coverRect.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/echoContext.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/index.native.js +20 -2
- package/dist/jsx/FloatingPanel/index.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/nestedAction.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/paintedBox.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/panelWidth.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/pointAnchor.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/regularPlacement.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/trailingAction.native.js +1 -1
- package/dist/jsx/FloatingPanel/trailingAction.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/useFloatingPanel.native.js.map +1 -1
- package/dist/jsx/Form/index.native.js +1 -1
- package/dist/jsx/Form/index.native.js.map +1 -1
- package/dist/jsx/Form/submissionController.native.js.map +1 -1
- package/dist/jsx/Form/validateOn.native.js.map +1 -1
- package/dist/jsx/FormGrid.native.js.map +1 -1
- package/dist/jsx/FormSection.native.js.map +1 -1
- package/dist/jsx/InputParts/PasswordReveal.native.js.map +1 -1
- package/dist/jsx/InputParts/index.mjs +1 -0
- package/dist/jsx/InputParts/index.mjs.map +1 -1
- package/dist/jsx/InputParts/index.native.js +1 -0
- package/dist/jsx/InputParts/index.native.js.map +1 -1
- package/dist/jsx/InputParts/keyboardAppearance.native.js.map +1 -1
- package/dist/jsx/Label/index.native.js.map +1 -1
- package/dist/jsx/MediaPicker/base64.native.js.map +1 -1
- package/dist/jsx/MediaPicker/payload.native.js.map +1 -1
- package/dist/jsx/MediaPicker/types.native.js.map +1 -1
- package/dist/jsx/MediaPicker/useMediaPicker.native.js.map +1 -1
- package/dist/jsx/Skeleton/index.native.js.map +1 -1
- package/dist/jsx/Spinner/SpinnerGlyph.native.js.map +1 -1
- package/dist/jsx/Spinner/spinnerSize.native.js.map +1 -1
- package/dist/jsx/Table/index.native.js.map +1 -1
- package/dist/jsx/Wheel/haptic.native.js.map +1 -1
- package/dist/jsx/Wheel/index.mjs +23 -7
- package/dist/jsx/Wheel/index.mjs.map +1 -1
- package/dist/jsx/Wheel/index.native.js +26 -8
- package/dist/jsx/Wheel/index.native.js.map +1 -1
- package/dist/jsx/Wheel/wheelShared.native.js.map +1 -1
- package/dist/jsx/actionLabel.native.js.map +1 -1
- package/dist/jsx/fieldDefaults.native.js.map +1 -1
- package/dist/jsx/fieldLayout.native.js +1 -1
- package/dist/jsx/fieldLayout.native.js.map +1 -1
- package/dist/jsx/fields/Barcode/BarcodePreview.native.js.map +1 -1
- package/dist/jsx/fields/Barcode/BarcodeScanner.native.js +1 -1
- package/dist/jsx/fields/Barcode/code128.native.js.map +1 -1
- package/dist/jsx/fields/Barcode/index.native.js +2 -2
- package/dist/jsx/fields/Barcode/index.native.js.map +1 -1
- package/dist/jsx/fields/Barcode/qr.native.js.map +1 -1
- package/dist/jsx/fields/Barcode/scannerTypes.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/Checkbox.native.js +1 -1
- package/dist/jsx/fields/Checkbox/Checkbox.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxBox.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxCard.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxGroup.native.js +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/checkboxGroupContext.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/index.native.js.map +1 -1
- package/dist/jsx/fields/ColorPicker/SystemColorField.native.js.map +1 -1
- package/dist/jsx/fields/ColorPicker/index.native.js +2 -2
- package/dist/jsx/fields/ColorPicker/index.native.js.map +1 -1
- package/dist/jsx/fields/ColorPicker/parts.native.js +2 -2
- package/dist/jsx/fields/ColorPicker/parts.native.js.map +1 -1
- package/dist/jsx/fields/ColorPicker/systemColorWell.gnome.native.js.map +1 -1
- package/dist/jsx/fields/Combobox/authorOptions.native.js.map +1 -1
- package/dist/jsx/fields/Combobox/index.native.js +5 -5
- package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/Calendar.native.js.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.native.js +3 -3
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/DatetimePicker.native.js +2 -2
- package/dist/jsx/fields/DatePicker/MonthPicker.native.js +2 -2
- package/dist/jsx/fields/DatePicker/MonthPicker.native.js.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/catalog.native.js +2 -2
- package/dist/jsx/fields/DatePicker/catalog.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/fieldValueSync.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/index.native.js +2 -2
- package/dist/jsx/fields/DatePicker/parts.mjs +35 -32
- package/dist/jsx/fields/DatePicker/parts.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/parts.native.js +36 -32
- package/dist/jsx/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/utils.native.js.map +1 -1
- package/dist/jsx/fields/Duration/DurationWheel.native.js +1 -1
- package/dist/jsx/fields/Duration/durationMath.native.js.map +1 -1
- package/dist/jsx/fields/Duration/durationWheelTypes.native.js.map +1 -1
- package/dist/jsx/fields/Duration/index.native.js +3 -3
- package/dist/jsx/fields/Duration/index.native.js.map +1 -1
- package/dist/jsx/fields/FileUpload/filePickerTypes.native.js.map +1 -1
- package/dist/jsx/fields/FileUpload/index.mjs +33 -16
- package/dist/jsx/fields/FileUpload/index.mjs.map +1 -1
- package/dist/jsx/fields/FileUpload/index.native.js +42 -21
- package/dist/jsx/fields/FileUpload/index.native.js.map +1 -1
- package/dist/jsx/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/geoValue.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/geocoder.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/geocoderContext.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/index.native.js +5 -5
- package/dist/jsx/fields/Geolocation/index.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/mapMath.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/mapTypes.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/nativeSearchFocus.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/photonGeocoder.native.js.map +1 -1
- package/dist/jsx/fields/Icon/drawnSet.native.js.map +1 -1
- package/dist/jsx/fields/Icon/index.native.js +3 -3
- package/dist/jsx/fields/Icon/index.native.js.map +1 -1
- package/dist/jsx/fields/ImageField/index.mjs +36 -21
- package/dist/jsx/fields/ImageField/index.mjs.map +1 -1
- package/dist/jsx/fields/ImageField/index.native.js +39 -22
- package/dist/jsx/fields/ImageField/index.native.js.map +1 -1
- package/dist/jsx/fields/Input/index.native.js +3 -3
- package/dist/jsx/fields/Input/index.native.js.map +1 -1
- package/dist/jsx/fields/MentionInput/index.native.js +3 -3
- package/dist/jsx/fields/MentionInput/index.native.js.map +1 -1
- package/dist/jsx/fields/OTPInput/index.native.js +3 -3
- package/dist/jsx/fields/OTPInput/index.native.js.map +1 -1
- package/dist/jsx/fields/OTPInput/otpCellCss.native.js.map +1 -1
- package/dist/jsx/fields/OTPInput/otpCellEdge.native.js.map +1 -1
- package/dist/jsx/fields/PhoneInput/dialCodes.native.js.map +1 -1
- package/dist/jsx/fields/PhoneInput/index.native.js +3 -3
- package/dist/jsx/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/jsx/fields/PhoneInput/phone.native.js.map +1 -1
- package/dist/jsx/fields/PhoneInput/regionNames.native.js.map +1 -1
- package/dist/jsx/fields/Progress/index.mjs +5 -0
- package/dist/jsx/fields/Progress/index.mjs.map +1 -1
- package/dist/jsx/fields/Progress/index.native.js +6 -1
- package/dist/jsx/fields/Progress/index.native.js.map +1 -1
- package/dist/jsx/fields/RadioGroup/index.native.js +1 -1
- package/dist/jsx/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/jsx/fields/Rating/index.native.js +1 -1
- package/dist/jsx/fields/Rating/index.native.js.map +1 -1
- package/dist/jsx/fields/Rating/ratingMath.native.js.map +1 -1
- package/dist/jsx/fields/Rating/types.native.js.map +1 -1
- package/dist/jsx/fields/SearchInput/index.native.js +2 -2
- package/dist/jsx/fields/SearchInput/index.native.js.map +1 -1
- package/dist/jsx/fields/Select/InlineChoices.native.js.map +1 -1
- package/dist/jsx/fields/Select/SheetPickerRow.native.js.map +1 -1
- package/dist/jsx/fields/Select/index.native.js +4 -4
- package/dist/jsx/fields/Select/index.native.js.map +1 -1
- package/dist/jsx/fields/Select/shouldInlineChoices.native.js.map +1 -1
- package/dist/jsx/fields/Signature/index.native.js +2 -2
- package/dist/jsx/fields/Signature/index.native.js.map +1 -1
- package/dist/jsx/fields/Slider/index.mjs +38 -12
- package/dist/jsx/fields/Slider/index.mjs.map +1 -1
- package/dist/jsx/fields/Slider/index.native.js +40 -12
- package/dist/jsx/fields/Slider/index.native.js.map +1 -1
- package/dist/jsx/fields/Slider/jumpMotion.native.js.map +1 -1
- package/dist/jsx/fields/Stepper/index.native.js +2 -2
- package/dist/jsx/fields/Stepper/index.native.js.map +1 -1
- package/dist/jsx/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
- package/dist/jsx/fields/Switch/footprint.native.js.map +1 -1
- package/dist/jsx/fields/Switch/index.mjs +10 -6
- package/dist/jsx/fields/Switch/index.mjs.map +1 -1
- package/dist/jsx/fields/Switch/index.native.js +12 -8
- package/dist/jsx/fields/Switch/index.native.js.map +1 -1
- package/dist/jsx/fields/TextArea/index.native.js +2 -2
- package/dist/jsx/fields/TextArea/index.native.js.map +1 -1
- package/dist/jsx/fields/TimePicker/catalog.native.js +3 -3
- package/dist/jsx/fields/TimePicker/catalog.native.js.map +1 -1
- package/dist/jsx/fields/TimePicker/index.native.js +2 -2
- package/dist/jsx/fields/TimePicker/parts.mjs +9 -10
- package/dist/jsx/fields/TimePicker/parts.mjs.map +1 -1
- package/dist/jsx/fields/TimePicker/parts.native.js +10 -11
- package/dist/jsx/fields/TimePicker/parts.native.js.map +1 -1
- package/dist/jsx/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
- package/dist/jsx/fields/TimeRangeScrubber/index.native.js +2 -2
- package/dist/jsx/fields/TimeRangeScrubber/index.native.js.map +1 -1
- package/dist/jsx/fields/ToggleGroup/index.mjs +2 -1
- package/dist/jsx/fields/ToggleGroup/index.mjs.map +1 -1
- package/dist/jsx/fields/ToggleGroup/index.native.js +2 -1
- package/dist/jsx/fields/ToggleGroup/index.native.js.map +1 -1
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js +1 -1
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
- package/dist/jsx/fields/nativeDateTime/dateTimePickerLoader.native.js.map +1 -1
- package/dist/jsx/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -1
- package/dist/jsx/fields/nativeDateTime/sheetKeyboard.native.js.map +1 -1
- package/dist/jsx/fields/nativeSelect.native.js.map +1 -1
- package/dist/jsx/fields/pickerHandle.mjs +2 -0
- package/dist/jsx/fields/pickerHandle.mjs.map +1 -0
- package/dist/jsx/fields/pickerHandle.native.js +21 -0
- package/dist/jsx/fields/pickerHandle.native.js.map +1 -0
- package/dist/jsx/fields/selectedOrder.native.js.map +1 -1
- package/dist/jsx/formSpacing.native.js.map +1 -1
- package/dist/jsx/hooks/useFocusManagement.native.js.map +1 -1
- package/dist/jsx/hooks/useHoldCue.mjs +27 -0
- package/dist/jsx/hooks/useHoldCue.mjs.map +1 -0
- package/dist/jsx/hooks/useHoldCue.native.js +62 -0
- package/dist/jsx/hooks/useHoldCue.native.js.map +1 -0
- package/dist/jsx/index.gnome.mjs +2 -1
- package/dist/jsx/index.gnome.mjs.map +1 -1
- package/dist/jsx/index.gnome.native.js +41 -37
- package/dist/jsx/index.gnome.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 +50 -46
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/keyboard/KeyboardDoneBar.native.js +1 -1
- package/dist/jsx/keyboard/chain.native.js.map +1 -1
- package/dist/jsx/keyboard/index.native.js.map +1 -1
- package/dist/jsx/keyboard/types.native.js.map +1 -1
- package/dist/jsx/nativeTwins.native.js.map +1 -1
- package/dist/jsx/requiredMarking.native.js.map +1 -1
- package/dist/jsx/shared/CheckGlyph.native.js.map +1 -1
- package/dist/jsx/shared/TimeColumn.native.js +1 -1
- package/dist/jsx/shared/TimeColumn.native.js.map +1 -1
- package/dist/jsx/shared/capabilityPreflight.native.js.map +1 -1
- package/dist/jsx/shared/checkedOnField.native.js.map +1 -1
- package/dist/jsx/shared/choiceRowPress.native.js.map +1 -1
- package/dist/jsx/shared/colorRamps.mjs +9 -7
- package/dist/jsx/shared/colorRamps.mjs.map +1 -1
- package/dist/jsx/shared/colorRamps.native.js +9 -7
- package/dist/jsx/shared/colorRamps.native.js.map +1 -1
- package/dist/jsx/shared/controlTrack.mjs +7 -0
- package/dist/jsx/shared/controlTrack.mjs.map +1 -0
- package/dist/jsx/shared/controlTrack.native.js +35 -0
- package/dist/jsx/shared/controlTrack.native.js.map +1 -0
- package/dist/jsx/shared/devWarn.native.js.map +1 -1
- package/dist/jsx/shared/fieldRowContext.native.js.map +1 -1
- package/dist/jsx/shared/floatingList.native.js +1 -1
- package/dist/jsx/shared/floatingList.native.js.map +1 -1
- package/dist/jsx/shared/focusManagement.native.js.map +1 -1
- package/dist/jsx/shared/groupContext.native.js.map +1 -1
- package/dist/jsx/shared/i18n.native.js.map +1 -1
- package/dist/jsx/shared/instantMotion.native.js.map +1 -1
- package/dist/jsx/shared/nativeA11y.native.js.map +1 -1
- package/dist/jsx/shared/nativeAutoFocus.native.js.map +1 -1
- package/dist/jsx/shared/nativeOverlayWindow.mjs.map +1 -1
- package/dist/jsx/shared/nativeOverlayWindow.native.js.map +1 -1
- package/dist/jsx/shared/overlaySizeClass.native.js.map +1 -1
- package/dist/jsx/shared/overlayStack.native.js.map +1 -1
- package/dist/jsx/shared/panelPortal.native.js.map +1 -1
- package/dist/jsx/shared/pickerTriggerContract.native.js.map +1 -1
- package/dist/jsx/shared/pressSlopProps.native.js.map +1 -1
- package/dist/jsx/shared/restoreRetries.native.js.map +1 -1
- package/dist/jsx/shared/sheetNavigation.native.js.map +1 -1
- package/dist/jsx/shared/systemControlModules.gnome.native.js.map +1 -1
- package/dist/jsx/shared/systemControls.mjs.map +1 -1
- package/dist/jsx/shared/systemControls.native.js.map +1 -1
- package/dist/jsx/shared/t.native.js.map +1 -1
- package/dist/jsx/shared/tableCellContext.native.js.map +1 -1
- package/dist/jsx/shared/useDragScroll.native.js.map +1 -1
- package/dist/jsx/shared/useKeyboardInset.native.js.map +1 -1
- package/dist/jsx/shared/useSheetEscapeDismiss.native.js.map +1 -1
- package/dist/jsx/shared/useWheelIncrement.native.js.map +1 -1
- package/dist/jsx/shared/utils.native.js +1 -1
- package/dist/jsx/shared/utils.native.js.map +1 -1
- package/dist/jsx/shared/zIndex.native.js.map +1 -1
- package/dist/jsx/standardActions.native.js.map +1 -1
- package/dist/jsx/themedPrimitives.native.js.map +1 -1
- package/dist/jsx/types.native.js.map +1 -1
- package/dist/jsx/utils/LinkCell.native.js.map +1 -1
- package/package.json +11 -10
- package/src/Button/Button.controlTiers.spec.tsx +2 -2
- package/src/ControlGroup/index.tsx +2 -1
- package/src/FloatingPanel/FloatingPanel.holdCue.native.spec.tsx +72 -0
- package/src/FloatingPanel/index.native.tsx +9 -1
- package/src/InputParts/index.tsx +1 -0
- package/src/Wheel/Wheel.edgeFade.spec.tsx +74 -0
- package/src/Wheel/index.tsx +25 -11
- package/src/fields/DatePicker/dateFieldMarks.spec.tsx +154 -0
- package/src/fields/DatePicker/parts.tsx +33 -30
- package/src/fields/FileUpload/index.tsx +45 -16
- package/src/fields/ImageField/index.tsx +42 -19
- package/src/fields/Progress/index.tsx +3 -0
- package/src/fields/Slider/Slider.system.native.spec.tsx +44 -0
- package/src/fields/Slider/index.tsx +40 -12
- package/src/fields/Stepper/Stepper.stories.tsx +42 -0
- package/src/fields/Switch/Switch.spec.tsx +14 -10
- package/src/fields/Switch/index.tsx +11 -7
- package/src/fields/TimePicker/parts.tsx +8 -8
- package/src/fields/ToggleGroup/index.tsx +7 -1
- package/src/fields/fieldTriggerSlot.spec.tsx +89 -0
- package/src/fields/pickerHandle.ts +13 -0
- package/src/hooks/useHoldCue.ts +26 -0
- package/src/index.gnome.ts +1 -0
- package/src/index.ts +2 -0
- package/src/overlayGround.spec.ts +5 -3
- package/src/shared/OverlayWindow.tsx +2 -2
- package/src/shared/colorRamps.ts +9 -6
- package/src/shared/controlTrack.ts +7 -0
- package/src/shared/nativeOverlayWindow.tsx +1 -1
- package/src/shared/systemControls.ts +10 -2
- package/types/ControlGroup/index.d.ts.map +1 -1
- package/types/FloatingPanel/index.native.d.ts.map +1 -1
- package/types/InputParts/index.d.ts +4 -4
- package/types/InputParts/index.d.ts.map +1 -1
- package/types/Wheel/index.d.ts.map +1 -1
- package/types/fields/DatePicker/parts.d.ts +4 -3
- package/types/fields/DatePicker/parts.d.ts.map +1 -1
- package/types/fields/FileUpload/index.d.ts +6 -1
- package/types/fields/FileUpload/index.d.ts.map +1 -1
- package/types/fields/ImageField/index.d.ts +7 -2
- package/types/fields/ImageField/index.d.ts.map +1 -1
- package/types/fields/Progress/index.d.ts.map +1 -1
- package/types/fields/Slider/index.d.ts.map +1 -1
- package/types/fields/Switch/index.d.ts.map +1 -1
- package/types/fields/ToggleGroup/index.d.ts.map +1 -1
- package/types/fields/pickerHandle.d.ts +12 -0
- package/types/fields/pickerHandle.d.ts.map +1 -0
- package/types/hooks/useHoldCue.d.ts +10 -0
- package/types/hooks/useHoldCue.d.ts.map +1 -0
- package/types/index.d.ts +2 -0
- package/types/index.d.ts.map +1 -1
- package/types/index.gnome.d.ts +1 -0
- package/types/index.gnome.d.ts.map +1 -1
- package/types/shared/OverlayWindow.d.ts +2 -2
- package/types/shared/OverlayWindow.d.ts.map +1 -1
- package/types/shared/colorRamps.d.ts +8 -6
- package/types/shared/colorRamps.d.ts.map +1 -1
- package/types/shared/controlTrack.d.ts +3 -0
- package/types/shared/controlTrack.d.ts.map +1 -0
- package/types/shared/nativeOverlayWindow.d.ts +1 -1
- package/types/shared/nativeOverlayWindow.d.ts.map +1 -1
- package/types/shared/systemControls.d.ts +2 -1
- package/types/shared/systemControls.d.ts.map +1 -1
|
@@ -34,6 +34,7 @@ import {
|
|
|
34
34
|
import { Skeleton } from "../../Skeleton";
|
|
35
35
|
import { Field, FieldLayout, useFieldA11y, useFieldDescribedBy } from "../../fieldLayout";
|
|
36
36
|
import { formCommonColors, formControlColors, formSelectedColors } from "../../shared/colorRamps";
|
|
37
|
+
import { useControlTrackFill } from "../../shared/controlTrack";
|
|
37
38
|
import { loadSystemSlider } from "../../shared/systemControlModules";
|
|
38
39
|
import {
|
|
39
40
|
type SystemPlatform,
|
|
@@ -74,12 +75,16 @@ function radiusStopFromToken(token: number | string): BorderRadius {
|
|
|
74
75
|
}
|
|
75
76
|
|
|
76
77
|
// Track styling helper - returns props to pass to TamaguiSlider.Track
|
|
77
|
-
const getTrackProps = (
|
|
78
|
+
const getTrackProps = (
|
|
79
|
+
outlined: boolean | undefined,
|
|
80
|
+
borderRadius: number,
|
|
81
|
+
trackFill: string = formControlColors.background,
|
|
82
|
+
) => ({
|
|
78
83
|
unstyled: false,
|
|
79
84
|
height: TRACK_HEIGHT,
|
|
80
85
|
width: "100%",
|
|
81
86
|
alignSelf: "center" as const,
|
|
82
|
-
backgroundColor: outlined ? "transparent" :
|
|
87
|
+
backgroundColor: outlined ? "transparent" : trackFill,
|
|
83
88
|
borderWidth: outlined ? 1 : 0,
|
|
84
89
|
borderColor: outlined ? formControlColors.border : undefined,
|
|
85
90
|
borderRadius,
|
|
@@ -270,9 +275,26 @@ function SystemSliderControl({
|
|
|
270
275
|
onBlur?: (...args: any[]) => void;
|
|
271
276
|
}) {
|
|
272
277
|
const literal = useThemeLiteral();
|
|
278
|
+
const trackFill = useControlTrackFill();
|
|
273
279
|
const [displayValue, setDisplayValue] = useState(value);
|
|
274
280
|
useEffect(() => setDisplayValue(value), [value]);
|
|
275
281
|
const fill = literal(hasError ? formCommonColors.error : formSelectedColors.mark);
|
|
282
|
+
// A Fabric view is an accessibility element only when `accessible` says so:
|
|
283
|
+
// without it UIKit drops the UISlider from the tree (FZ-8905). It takes the
|
|
284
|
+
// MPO thumb's VoiceOver contract: adjustable, named by its field, valued,
|
|
285
|
+
// and one step per swipe.
|
|
286
|
+
const fieldA11y = useFieldA11y();
|
|
287
|
+
const move = (next: number) => {
|
|
288
|
+
setDisplayValue(next);
|
|
289
|
+
if (disabled || readOnly) return;
|
|
290
|
+
onChangeValue(next);
|
|
291
|
+
};
|
|
292
|
+
const adjust = (direction: 1 | -1) => {
|
|
293
|
+
if (disabled || readOnly) return;
|
|
294
|
+
const next = snapSliderValue(displayValue + direction * step, min, max, step);
|
|
295
|
+
if (next !== displayValue) move(next);
|
|
296
|
+
};
|
|
297
|
+
const readout = formatSliderOutput([displayValue], step);
|
|
276
298
|
return (
|
|
277
299
|
<XStack height={height} alignItems="center" width="100%" gap="$3">
|
|
278
300
|
<View
|
|
@@ -291,15 +313,20 @@ function SystemSliderControl({
|
|
|
291
313
|
step={step}
|
|
292
314
|
disabled={disabled}
|
|
293
315
|
minimumTrackTintColor={fill}
|
|
294
|
-
maximumTrackTintColor={literal(
|
|
316
|
+
maximumTrackTintColor={literal(trackFill)}
|
|
295
317
|
{...(platform === "android" && { thumbTintColor: fill })}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
318
|
+
accessible
|
|
319
|
+
accessibilityRole="adjustable"
|
|
320
|
+
accessibilityLabel={accessibilityLabel ?? fieldA11y?.label ?? t("Slider")}
|
|
321
|
+
accessibilityHint={accessibilityHint ?? fieldA11y?.description}
|
|
322
|
+
accessibilityValue={{ min, max, now: displayValue, text: readout }}
|
|
323
|
+
accessibilityState={{ disabled: Boolean(disabled) }}
|
|
324
|
+
accessibilityActions={A11Y_ADJUSTABLE_ACTIONS}
|
|
325
|
+
onAccessibilityAction={(event: { nativeEvent: { actionName: string } }) => {
|
|
326
|
+
if (event.nativeEvent.actionName === "increment") adjust(1);
|
|
327
|
+
else if (event.nativeEvent.actionName === "decrement") adjust(-1);
|
|
302
328
|
}}
|
|
329
|
+
onValueChange={move}
|
|
303
330
|
onSlidingComplete={() => onBlur?.()}
|
|
304
331
|
/>
|
|
305
332
|
</View>
|
|
@@ -310,7 +337,7 @@ function SystemSliderControl({
|
|
|
310
337
|
textAlign="right"
|
|
311
338
|
aria-hidden
|
|
312
339
|
>
|
|
313
|
-
{
|
|
340
|
+
{readout}
|
|
314
341
|
</Paragraph>
|
|
315
342
|
</XStack>
|
|
316
343
|
);
|
|
@@ -383,6 +410,7 @@ function SliderControl({
|
|
|
383
410
|
// with their thumbs (RULINGS-2026-08-28 §R2).
|
|
384
411
|
const radiusStop = radiusStopFromToken(borderRadius);
|
|
385
412
|
const railRadius = resolveRadiusClass("BINARY", radiusStop, { heightPx: TRACK_HEIGHT });
|
|
413
|
+
const trackFill = useControlTrackFill();
|
|
386
414
|
|
|
387
415
|
// Native jump tween rides transform (FLIP) — the RN driver cannot animate
|
|
388
416
|
// the thumb's `left` percent (see ./jumpMotion.ts). Web keeps the css
|
|
@@ -634,12 +662,12 @@ function SliderControl({
|
|
|
634
662
|
height={TRACK_HEIGHT}
|
|
635
663
|
borderRadius={railRadius}
|
|
636
664
|
>
|
|
637
|
-
<TamaguiSlider.Track {...getTrackProps(outlined, railRadius)}>
|
|
665
|
+
<TamaguiSlider.Track {...getTrackProps(outlined, railRadius, trackFill)}>
|
|
638
666
|
{trackActive}
|
|
639
667
|
</TamaguiSlider.Track>
|
|
640
668
|
</View>
|
|
641
669
|
) : (
|
|
642
|
-
<TamaguiSlider.Track {...getTrackProps(outlined, railRadius)}>
|
|
670
|
+
<TamaguiSlider.Track {...getTrackProps(outlined, railRadius, trackFill)}>
|
|
643
671
|
{trackActive}
|
|
644
672
|
</TamaguiSlider.Track>
|
|
645
673
|
)}
|
|
@@ -188,3 +188,45 @@ export const InTable: Story = {
|
|
|
188
188
|
);
|
|
189
189
|
},
|
|
190
190
|
};
|
|
191
|
+
|
|
192
|
+
/** LC-114: a buttonless Stepper with `hug` is the number field. It is as wide as its value plus the currency glyph or unit, and a long signed value with decimals still fits (FZ-7598). */
|
|
193
|
+
export const HuggingCurrency: Story = {
|
|
194
|
+
render: () => (
|
|
195
|
+
<YStack gap="$4" width="100%">
|
|
196
|
+
<Stepper
|
|
197
|
+
label="Daily loss cap"
|
|
198
|
+
aria-label="Daily loss cap"
|
|
199
|
+
currency="USD"
|
|
200
|
+
hug
|
|
201
|
+
showButtons={false}
|
|
202
|
+
min={0}
|
|
203
|
+
max={50000}
|
|
204
|
+
precision={2}
|
|
205
|
+
defaultValue={2500}
|
|
206
|
+
/>
|
|
207
|
+
<Stepper
|
|
208
|
+
label="Position limit"
|
|
209
|
+
aria-label="Position limit"
|
|
210
|
+
unit="%"
|
|
211
|
+
hug
|
|
212
|
+
showButtons={false}
|
|
213
|
+
min={0}
|
|
214
|
+
max={100}
|
|
215
|
+
precision={1}
|
|
216
|
+
defaultValue={12.5}
|
|
217
|
+
/>
|
|
218
|
+
<Stepper
|
|
219
|
+
label="Adjustment"
|
|
220
|
+
aria-label="Adjustment"
|
|
221
|
+
currency="USD"
|
|
222
|
+
hug
|
|
223
|
+
showButtons={false}
|
|
224
|
+
min={-9999999}
|
|
225
|
+
max={9999999}
|
|
226
|
+
precision={2}
|
|
227
|
+
defaultValue={-1234567.89}
|
|
228
|
+
/>
|
|
229
|
+
<Stepper label="Contracts" aria-label="Contracts" hug min={1} max={500} defaultValue={12} />
|
|
230
|
+
</YStack>
|
|
231
|
+
),
|
|
232
|
+
};
|
|
@@ -499,16 +499,20 @@ describe("Switch thumb and pointer paint", () => {
|
|
|
499
499
|
expect(paint(track, "_bg-")).toBe("var(--switchTrackOff)");
|
|
500
500
|
});
|
|
501
501
|
|
|
502
|
-
it.each([false, true])(
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
502
|
+
it.each([false, true])(
|
|
503
|
+
"grown=%s keeps the outlined ring on its 3:1 edge and washes the track on hover (LC-299)",
|
|
504
|
+
(grown) => {
|
|
505
|
+
const { frame, track } = mount({ grown, outlined: true });
|
|
506
|
+
expect(track.className).toContain("_bg-transparent");
|
|
507
|
+
expect(paint(track, "_btc-")).toBe("var(--switchTrackOffBorder)");
|
|
508
|
+
fireEvent.mouseEnter(frame);
|
|
509
|
+
expect(paint(track, "_bg-")).toBe("var(--switchTrackOffHover)");
|
|
510
|
+
expect(paint(track, "_btc-")).toBe("var(--switchTrackOffBorder)");
|
|
511
|
+
fireEvent.mouseLeave(frame);
|
|
512
|
+
expect(track.className).toContain("_bg-transparent");
|
|
513
|
+
expect(paint(track, "_btc-")).toBe("var(--switchTrackOffBorder)");
|
|
514
|
+
},
|
|
515
|
+
);
|
|
512
516
|
|
|
513
517
|
it("composes the caller's mouse handlers once", () => {
|
|
514
518
|
const onMouseEnter = vi.fn();
|
|
@@ -198,7 +198,7 @@ const SwitchFrameStyled = styled(View, {
|
|
|
198
198
|
borderRadius: 1000,
|
|
199
199
|
backgroundColor: formSwitchColors.track.off,
|
|
200
200
|
borderWidth: 0,
|
|
201
|
-
borderColor: formSwitchColors.track.
|
|
201
|
+
borderColor: formSwitchColors.track.offBorder,
|
|
202
202
|
outlineWidth: 0,
|
|
203
203
|
focusStyle: { outlineWidth: 0 },
|
|
204
204
|
// LC-71: ring is painted from keyboard modality on the track, never
|
|
@@ -214,7 +214,7 @@ const SwitchFrameStyled = styled(View, {
|
|
|
214
214
|
},
|
|
215
215
|
false: {
|
|
216
216
|
backgroundColor: formSwitchColors.track.off,
|
|
217
|
-
borderColor: formSwitchColors.track.
|
|
217
|
+
borderColor: formSwitchColors.track.offBorder,
|
|
218
218
|
},
|
|
219
219
|
},
|
|
220
220
|
|
|
@@ -406,6 +406,8 @@ function SwitchControl({
|
|
|
406
406
|
: hovered
|
|
407
407
|
? formSwitchColors.track.offHover
|
|
408
408
|
: formSwitchColors.track.off;
|
|
409
|
+
const offFill = outlined && !hovered && !pressed ? "transparent" : offPaint;
|
|
410
|
+
const offRing = outlined ? undefined : knobProps.trackRing;
|
|
409
411
|
const { thumbInset, thumbSize, travel: dragDistance } = footprint;
|
|
410
412
|
const motion = resolveSwitchMotion(transition);
|
|
411
413
|
const [dragX, setDragX] = useState<number | null>(null);
|
|
@@ -562,8 +564,9 @@ function SwitchControl({
|
|
|
562
564
|
borderColor: formSwitchColors.track.on,
|
|
563
565
|
}
|
|
564
566
|
: {
|
|
565
|
-
backgroundColor:
|
|
566
|
-
borderColor:
|
|
567
|
+
backgroundColor: offFill,
|
|
568
|
+
borderColor: formSwitchColors.track.offBorder,
|
|
569
|
+
...offRing,
|
|
567
570
|
})}
|
|
568
571
|
{...(kbFocus ? { "data-kb-focus": "true" } : undefined)}
|
|
569
572
|
{...(frameClassName ? { className: frameClassName } : undefined)}
|
|
@@ -653,10 +656,11 @@ function SwitchControl({
|
|
|
653
656
|
borderRadius={cellTrack.borderRadius}
|
|
654
657
|
{...radiusResolution}
|
|
655
658
|
borderWidth={cellTrack.borderWidth}
|
|
656
|
-
borderColor={
|
|
657
|
-
|
|
658
|
-
displayChecked ? formSwitchColors.track.on : outlined ? "transparent" : offPaint
|
|
659
|
+
borderColor={
|
|
660
|
+
displayChecked ? formSwitchColors.track.on : formSwitchColors.track.offBorder
|
|
659
661
|
}
|
|
662
|
+
backgroundColor={displayChecked ? formSwitchColors.track.on : offFill}
|
|
663
|
+
{...(displayChecked ? undefined : offRing)}
|
|
660
664
|
{...transitionProps({ ...knobProps.motion.control, transition: motion }, ["borderWidth"])}
|
|
661
665
|
pointerEvents="none"
|
|
662
666
|
className={kbFocus ? SWITCH_KB_RING_CLASS : undefined}
|
|
@@ -160,11 +160,6 @@ export function TimePickerInputTrigger({
|
|
|
160
160
|
onPress={isWeb && interactive ? onOpen : undefined}
|
|
161
161
|
{...(disabled ? { opacity: 0.5, pointerEvents: "none" as const } : undefined)}
|
|
162
162
|
>
|
|
163
|
-
<InputParts.Section data-testid="time-picker-glyph">
|
|
164
|
-
<InputParts.Icon adornment="leading" color={formCommonColors.muted}>
|
|
165
|
-
{clockIcon ?? <ClockIcon />}
|
|
166
|
-
</InputParts.Icon>
|
|
167
|
-
</InputParts.Section>
|
|
168
163
|
<InputParts.Section>
|
|
169
164
|
<InputParts.Area
|
|
170
165
|
readOnly
|
|
@@ -174,7 +169,6 @@ export function TimePickerInputTrigger({
|
|
|
174
169
|
placeholder={placeholder}
|
|
175
170
|
disabled={disabled}
|
|
176
171
|
color={formCommonColors.text}
|
|
177
|
-
placeholderTextColor={formCommonColors.muted}
|
|
178
172
|
aria-label={ariaLabel}
|
|
179
173
|
aria-required={ariaRequired}
|
|
180
174
|
aria-invalid={ariaInvalid}
|
|
@@ -196,11 +190,17 @@ export function TimePickerInputTrigger({
|
|
|
196
190
|
}
|
|
197
191
|
/>
|
|
198
192
|
</InputParts.Section>
|
|
199
|
-
{value && isWeb && !readOnly ? (
|
|
193
|
+
{value && isWeb && !readOnly && !disabled ? (
|
|
200
194
|
<InputParts.Section>
|
|
201
195
|
<TimePickerClearButton onClear={onClear} disabled={disabled} />
|
|
202
196
|
</InputParts.Section>
|
|
203
|
-
) :
|
|
197
|
+
) : (
|
|
198
|
+
<InputParts.Section data-testid="time-picker-glyph">
|
|
199
|
+
<InputParts.Icon adornment="trailing" color={formCommonColors.muted}>
|
|
200
|
+
{clockIcon ?? <ClockIcon />}
|
|
201
|
+
</InputParts.Icon>
|
|
202
|
+
</InputParts.Section>
|
|
203
|
+
)}
|
|
204
204
|
</InputParts.Box>
|
|
205
205
|
</View>
|
|
206
206
|
);
|
|
@@ -25,7 +25,12 @@ import {
|
|
|
25
25
|
} from "tamagui";
|
|
26
26
|
import { Skeleton } from "../../Skeleton";
|
|
27
27
|
import { Field, FieldLayout } from "../../fieldLayout";
|
|
28
|
-
import {
|
|
28
|
+
import {
|
|
29
|
+
formButtonColors,
|
|
30
|
+
formCommonColors,
|
|
31
|
+
formControlColors,
|
|
32
|
+
formInputColors,
|
|
33
|
+
} from "../../shared/colorRamps";
|
|
29
34
|
import { warnBareDisabled } from "../../shared/devWarn";
|
|
30
35
|
import { choiceItemA11y, composeA11yName } from "../../shared/nativeA11y";
|
|
31
36
|
import { loadSystemSegmentedControl } from "../../shared/systemControlModules";
|
|
@@ -693,6 +698,7 @@ export function ToggleGroup({
|
|
|
693
698
|
{...toggleProps}
|
|
694
699
|
{...knobProps.borderRadius}
|
|
695
700
|
{...knobProps.inputSurface}
|
|
701
|
+
borderColor={formControlColors.edge}
|
|
696
702
|
overflow="hidden"
|
|
697
703
|
backgroundColor={knobProps.outlined ? "transparent" : formInputColors.background.base}
|
|
698
704
|
{...(isWeb
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
2
|
+
import { act, cleanup, fireEvent } from "@testing-library/react";
|
|
3
|
+
import { createRef } from "react";
|
|
4
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
5
|
+
import { Button } from "../Button";
|
|
6
|
+
import { FileUpload } from "./FileUpload";
|
|
7
|
+
import { ImageField } from "./ImageField";
|
|
8
|
+
import type { FieldPickerHandle } from "./pickerHandle";
|
|
9
|
+
|
|
10
|
+
afterEach(() => {
|
|
11
|
+
cleanup();
|
|
12
|
+
vi.restoreAllMocks();
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
function fileInput(container: HTMLElement) {
|
|
16
|
+
return container.querySelector("input[type='file']") as HTMLInputElement;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function pick(input: HTMLInputElement, file: File) {
|
|
20
|
+
fireEvent.change(input, { target: { files: [file] } });
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
describe("LC-290 FIELD-TRIGGER-SLOT", () => {
|
|
24
|
+
it("FileUpload opens its picker from an imperative open()", () => {
|
|
25
|
+
const click = vi.spyOn(HTMLInputElement.prototype, "click").mockImplementation(() => {});
|
|
26
|
+
const handle = createRef<FieldPickerHandle>();
|
|
27
|
+
renderWithProviders(<FileUpload ref={handle} />);
|
|
28
|
+
act(() => handle.current?.open());
|
|
29
|
+
expect(click).toHaveBeenCalledTimes(1);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("FileUpload draws a consumer trigger instead of its dropzone, and a pick from it reaches onChange", () => {
|
|
33
|
+
const click = vi.spyOn(HTMLInputElement.prototype, "click").mockImplementation(() => {});
|
|
34
|
+
const onChange = vi.fn();
|
|
35
|
+
const { container, getByRole } = renderWithProviders(
|
|
36
|
+
<FileUpload
|
|
37
|
+
onChange={onChange}
|
|
38
|
+
trigger={(open) => (
|
|
39
|
+
<Button onPress={open} aria-label="Choose from library">
|
|
40
|
+
Library
|
|
41
|
+
</Button>
|
|
42
|
+
)}
|
|
43
|
+
/>,
|
|
44
|
+
);
|
|
45
|
+
expect(container.querySelector("[data-file-upload='trigger']")).toBeTruthy();
|
|
46
|
+
expect(container.textContent).not.toContain("Choose File");
|
|
47
|
+
fireEvent.click(getByRole("button", { name: "Choose from library" }));
|
|
48
|
+
expect(click).toHaveBeenCalledTimes(1);
|
|
49
|
+
pick(fileInput(container), new File(["x"], "receipt.pdf", { type: "application/pdf" }));
|
|
50
|
+
expect(onChange).toHaveBeenCalledTimes(1);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it("FileUpload's open() does nothing while disabled", () => {
|
|
54
|
+
const click = vi.spyOn(HTMLInputElement.prototype, "click").mockImplementation(() => {});
|
|
55
|
+
const handle = createRef<FieldPickerHandle>();
|
|
56
|
+
renderWithProviders(<FileUpload ref={handle} disabled />);
|
|
57
|
+
act(() => handle.current?.open());
|
|
58
|
+
expect(click).not.toHaveBeenCalled();
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it("ImageField opens its picker from an imperative open()", () => {
|
|
62
|
+
const click = vi.spyOn(HTMLInputElement.prototype, "click").mockImplementation(() => {});
|
|
63
|
+
const handle = createRef<FieldPickerHandle>();
|
|
64
|
+
renderWithProviders(<ImageField ref={handle} label="Avatar" />);
|
|
65
|
+
act(() => handle.current?.open());
|
|
66
|
+
expect(click).toHaveBeenCalledTimes(1);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it("ImageField draws a consumer trigger instead of its frame, and a pick from it reaches onChange", () => {
|
|
70
|
+
const click = vi.spyOn(HTMLInputElement.prototype, "click").mockImplementation(() => {});
|
|
71
|
+
const onChange = vi.fn();
|
|
72
|
+
const { container, getByRole } = renderWithProviders(
|
|
73
|
+
<ImageField
|
|
74
|
+
label="Receipt"
|
|
75
|
+
onChange={onChange}
|
|
76
|
+
trigger={(open) => (
|
|
77
|
+
<Button onPress={open} aria-label="Photo library">
|
|
78
|
+
Library
|
|
79
|
+
</Button>
|
|
80
|
+
)}
|
|
81
|
+
/>,
|
|
82
|
+
);
|
|
83
|
+
expect(container.querySelector("[data-media-tile]")).toBeNull();
|
|
84
|
+
fireEvent.click(getByRole("button", { name: "Photo library" }));
|
|
85
|
+
expect(click).toHaveBeenCalledTimes(1);
|
|
86
|
+
pick(fileInput(container), new File(["x"], "receipt.png", { type: "image/png" }));
|
|
87
|
+
expect(onChange).toHaveBeenCalledTimes(1);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* LC-290 FIELD-TRIGGER-SLOT: a picking field (FileUpload, ImageField) opens
|
|
5
|
+
* from the app's own control. `ref` takes this handle; `open()` runs the same
|
|
6
|
+
* press the field's own surface runs, through the same validation.
|
|
7
|
+
*/
|
|
8
|
+
export interface FieldPickerHandle {
|
|
9
|
+
open: () => void;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/** Draws the app's own control in place of the field's surface; call `open` from its press. */
|
|
13
|
+
export type FieldPickerTrigger = (open: () => void) => ReactNode;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
|
|
3
|
+
/** LC-197 HOLD-CUE: how far into a hold the press cue starts. */
|
|
4
|
+
export const holdCueStartMs = 150;
|
|
5
|
+
|
|
6
|
+
/** LC-197: how far a held control shrinks while its long press builds. */
|
|
7
|
+
export const holdCueScale = 0.97;
|
|
8
|
+
|
|
9
|
+
export function useHoldCue(cueStartMs: number = holdCueStartMs) {
|
|
10
|
+
const [holding, setHolding] = useState(false);
|
|
11
|
+
const timer = useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
12
|
+
const clear = () => {
|
|
13
|
+
if (timer.current) clearTimeout(timer.current);
|
|
14
|
+
timer.current = null;
|
|
15
|
+
};
|
|
16
|
+
const stop = useCallback(() => {
|
|
17
|
+
clear();
|
|
18
|
+
setHolding(false);
|
|
19
|
+
}, []);
|
|
20
|
+
const start = useCallback(() => {
|
|
21
|
+
clear();
|
|
22
|
+
timer.current = setTimeout(() => setHolding(true), cueStartMs);
|
|
23
|
+
}, [cueStartMs]);
|
|
24
|
+
useEffect(() => clear, []);
|
|
25
|
+
return { holding, start, stop };
|
|
26
|
+
}
|
package/src/index.gnome.ts
CHANGED
|
@@ -101,6 +101,7 @@ export {
|
|
|
101
101
|
} from "./shared/utils";
|
|
102
102
|
export { TableCellContext, useIsInTableCell, useTableCellContext } from "./shared/tableCellContext";
|
|
103
103
|
export { useControlGrouped } from "./shared/groupContext";
|
|
104
|
+
export { holdCueScale, holdCueStartMs, useHoldCue } from "./hooks/useHoldCue";
|
|
104
105
|
export { formFieldGap, formReadableMaxWidth, formSectionGap } from "./formSpacing";
|
|
105
106
|
export type {
|
|
106
107
|
AnyFormApi,
|
package/src/index.ts
CHANGED
|
@@ -264,6 +264,7 @@ export type { PhotonGeocoderOptions } from "./fields/Geolocation/photonGeocoder"
|
|
|
264
264
|
|
|
265
265
|
export { ImageField } from "./fields/ImageField";
|
|
266
266
|
export type { ImageFieldProps } from "./fields/ImageField";
|
|
267
|
+
export type { FieldPickerHandle, FieldPickerTrigger } from "./fields/pickerHandle";
|
|
267
268
|
|
|
268
269
|
export {
|
|
269
270
|
Icon,
|
|
@@ -386,6 +387,7 @@ export {
|
|
|
386
387
|
focusFieldTarget,
|
|
387
388
|
} from "./hooks/useFocusManagement";
|
|
388
389
|
export type { FocusManagementOptions, FocusManagementReturn } from "./hooks/useFocusManagement";
|
|
390
|
+
export { holdCueScale, holdCueStartMs, useHoldCue } from "./hooks/useHoldCue";
|
|
389
391
|
|
|
390
392
|
// ── Shared Utilities ──────────────────────────────────────────
|
|
391
393
|
export {
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import * as themePackage from "@multiplatform.one/theme";
|
|
11
11
|
import {
|
|
12
12
|
controlTierPaint,
|
|
13
|
+
controlTrackFill,
|
|
13
14
|
createDefaultThemeConfig,
|
|
14
15
|
holdInkFloor,
|
|
15
16
|
measureContrast,
|
|
@@ -21,7 +22,7 @@ import { readFileSync } from "node:fs";
|
|
|
21
22
|
import { dirname, join } from "node:path";
|
|
22
23
|
import { fileURLToPath } from "node:url";
|
|
23
24
|
import { describe, expect, it } from "vitest";
|
|
24
|
-
import {
|
|
25
|
+
import { formSelectedColors, formSwitchColors } from "./shared/colorRamps";
|
|
25
26
|
|
|
26
27
|
/** The card's floor: the console's "a plain Button on an overlay's ground" asks the same. */
|
|
27
28
|
const plateFloor = 1.1;
|
|
@@ -141,7 +142,8 @@ describe("FZ-7944: a control on an overlay has a plate distinct from the overlay
|
|
|
141
142
|
|
|
142
143
|
it("Slider and Progress tracks read on the ground", () => {
|
|
143
144
|
for (const component of ["Slider", "Progress"]) {
|
|
144
|
-
|
|
145
|
+
// On an overlay the track takes the elevated fill (FZ-8400).
|
|
146
|
+
const track = resolve(c.scope, controlTrackFill(true, true), component);
|
|
145
147
|
expect(
|
|
146
148
|
ratio(track, ground),
|
|
147
149
|
`${component} track ${track} on ${ground}`,
|
|
@@ -170,7 +172,7 @@ describe("FZ-7944: a control on an overlay has a plate distinct from the overlay
|
|
|
170
172
|
const knobs = themePackage.defaultPreset.knobs;
|
|
171
173
|
const ground = (scheme: "light" | "dark") =>
|
|
172
174
|
resolveKnobs(knobs, undefined, scheme).knobProps.elevatedSurface.backgroundColor;
|
|
173
|
-
expect(ground("dark")).toBe("$
|
|
175
|
+
expect(ground("dark")).toBe("$color5");
|
|
174
176
|
expect(ground("light")).toBe("$background");
|
|
175
177
|
expect(controlTierPaint("tinted", false, true)).toEqual(controlTierPaint("tinted", false));
|
|
176
178
|
});
|
|
@@ -3,8 +3,8 @@ import { OverlayStackProvider } from "./overlayStack";
|
|
|
3
3
|
|
|
4
4
|
export interface OverlayWindowProps {
|
|
5
5
|
/** The z the window's own overlay binds; nested overlays stack above it. */
|
|
6
|
-
zIndex: number;
|
|
7
|
-
children?: ReactNode;
|
|
6
|
+
readonly zIndex: number;
|
|
7
|
+
readonly children?: ReactNode;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
/**
|
package/src/shared/colorRamps.ts
CHANGED
|
@@ -30,9 +30,9 @@ export const formInputColors = {
|
|
|
30
30
|
focus: "$color4",
|
|
31
31
|
},
|
|
32
32
|
border: {
|
|
33
|
-
base: "$
|
|
34
|
-
hover: "$
|
|
35
|
-
focus: "$
|
|
33
|
+
base: "$borderColorField",
|
|
34
|
+
hover: "$borderColorFieldHover",
|
|
35
|
+
focus: "$borderColorField",
|
|
36
36
|
},
|
|
37
37
|
} as const;
|
|
38
38
|
|
|
@@ -41,6 +41,7 @@ export const formControlColors = {
|
|
|
41
41
|
border: "$borderColor",
|
|
42
42
|
/** DF-06 / WCAG 1.4.11: the build holds ≥3:1 on page, surface1 and control well. */
|
|
43
43
|
boundary: "$boundaryColor",
|
|
44
|
+
edge: "$borderColorControl",
|
|
44
45
|
thumb: {
|
|
45
46
|
base: "$color10",
|
|
46
47
|
hover: "$color9",
|
|
@@ -49,10 +50,11 @@ export const formControlColors = {
|
|
|
49
50
|
} as const;
|
|
50
51
|
|
|
51
52
|
// LC-05: the neutral selection tier, shared with componentColors.selection.
|
|
53
|
+
// Theme keys, so a row on a dark card steps off the card's fill (FZ-8400).
|
|
52
54
|
export const formSelectionColors = {
|
|
53
|
-
background: "$
|
|
54
|
-
hover: "$
|
|
55
|
-
press: "$
|
|
55
|
+
background: "$selectFill",
|
|
56
|
+
hover: "$selectPress",
|
|
57
|
+
press: "$selectPress",
|
|
56
58
|
ink: "$color12",
|
|
57
59
|
ring: "$color8",
|
|
58
60
|
} as const;
|
|
@@ -81,6 +83,7 @@ export const formSwitchColors = {
|
|
|
81
83
|
off: "$switchTrackOff",
|
|
82
84
|
offHover: "$switchTrackOffHover",
|
|
83
85
|
offPress: "$switchTrackOffPress",
|
|
86
|
+
offBorder: "$switchTrackOffBorder",
|
|
84
87
|
},
|
|
85
88
|
thumb: "$switchThumb",
|
|
86
89
|
} as const;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { controlTrackFill, isDarkThemeName, useElevatedSurface } from "@multiplatform.one/theme";
|
|
2
|
+
import { useThemeName } from "tamagui";
|
|
3
|
+
|
|
4
|
+
/** The track fill for this control's ground: a step above an elevated dark overlay. */
|
|
5
|
+
export function useControlTrackFill(): string {
|
|
6
|
+
return controlTrackFill(isDarkThemeName(useThemeName()), useElevatedSurface());
|
|
7
|
+
}
|
|
@@ -16,7 +16,7 @@ export type { OverlayWindowProps } from "./OverlayWindow";
|
|
|
16
16
|
* content, and those overlays open inside it. A PortalItem in here aimed at
|
|
17
17
|
* any other app-level host finds no host, since this provider owns none.
|
|
18
18
|
*/
|
|
19
|
-
export function OverlayWindow({ zIndex, children }: OverlayWindowProps) {
|
|
19
|
+
export function OverlayWindow({ zIndex, children }: Readonly<OverlayWindowProps>) {
|
|
20
20
|
return (
|
|
21
21
|
<PortalProvider shouldAddRootHost={false}>
|
|
22
22
|
<OverlayStackProvider zIndex={zIndex}>{children}</OverlayStackProvider>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ComponentType } from "react";
|
|
2
|
-
import { Platform } from "react-native";
|
|
2
|
+
import { Platform, type AccessibilityProps } from "react-native";
|
|
3
3
|
import { isDarkThemeName } from "@multiplatform.one/theme";
|
|
4
4
|
import { useTheme, useThemeName } from "tamagui";
|
|
5
5
|
|
|
@@ -30,7 +30,15 @@ export function useSystemControlScheme(): "light" | "dark" {
|
|
|
30
30
|
return isDarkThemeName(useThemeName()) ? "dark" : "light";
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
export interface SystemSliderProps
|
|
33
|
+
export interface SystemSliderProps extends Pick<
|
|
34
|
+
AccessibilityProps,
|
|
35
|
+
| "accessible"
|
|
36
|
+
| "accessibilityRole"
|
|
37
|
+
| "accessibilityState"
|
|
38
|
+
| "accessibilityValue"
|
|
39
|
+
| "accessibilityActions"
|
|
40
|
+
| "onAccessibilityAction"
|
|
41
|
+
> {
|
|
34
42
|
id?: string;
|
|
35
43
|
value?: number;
|
|
36
44
|
minimumValue?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ControlGroup/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAe,IAAI,EAAiB,MAAM,SAAS,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAmBxC,QAAA,MAAM,iBAAiB;;;6CAsBrB,CAAC;AAgCH,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,GAAG;IAC3D,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,iBAAS,qBAAqB,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,sBAAsB,2CAgC5E;AAED,eAAO,MAAM,iBAAiB;;CAE5B,CAAC;AAMH,MAAM,WAAW,iBAAkB,SAAQ,QAAQ,CAAC,OAAO,iBAAiB,CAAC;IAC3E,QAAQ,EAAE,SAAS,CAAC;IACpB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;CACzC;AAED,iBAAS,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAA0B,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ControlGroup/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAe,IAAI,EAAiB,MAAM,SAAS,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAmBxC,QAAA,MAAM,iBAAiB;;;6CAsBrB,CAAC;AAgCH,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,GAAG;IAC3D,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,iBAAS,qBAAqB,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,sBAAsB,2CAgC5E;AAED,eAAO,MAAM,iBAAiB;;CAE5B,CAAC;AAMH,MAAM,WAAW,iBAAkB,SAAQ,QAAQ,CAAC,OAAO,iBAAiB,CAAC;IAC3E,QAAQ,EAAE,SAAS,CAAC;IACpB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;CACzC;AAED,iBAAS,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAA0B,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,2CA8K9F;AAED,eAAO,MAAM,YAAY;;;;CAEvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../src/FloatingPanel/index.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;
|
|
1
|
+
{"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../src/FloatingPanel/index.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AAyDH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAyBlD,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE/E,uFAAuF;AACvF,wBAAgB,eAAe,YAE9B;AAiBD,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,UAAU,EACV,aAAyB,EACzB,QAAQ,EAAE,aAAa,EACvB,UAAU,EACV,QAAQ,EACR,cAA0B,EAC1B,MAAM,EACN,eAAe,EACf,WAAW,EACX,SAAS,EACT,MAAgB,EAChB,WAAW,EACX,UAAU,EACV,WAAkB,EAClB,UAAoB,EACpB,SAAiB,EACjB,KAAK,EACL,UAAU,EACV,UAAsB,EACtB,KAAK,EACL,SAAS,GACV,EAAE,kBAAkB,2CAuoBpB;AAuaD,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,IAAI,CAEvE;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,OAAO,EACtB,SAAS,EAAE,OAAO,EAClB,QAAQ,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/B,IAAI,CAAG"}
|
|
@@ -24,7 +24,7 @@ export declare const inputPartsRingCss: string;
|
|
|
24
24
|
export declare function ensureInputPartsFocusRing(): void;
|
|
25
25
|
export declare const defaultInputGroupStyles: {
|
|
26
26
|
readonly hoverStyle: {
|
|
27
|
-
readonly borderColor: "$
|
|
27
|
+
readonly borderColor: "$borderColorFieldHover";
|
|
28
28
|
};
|
|
29
29
|
readonly focusStyle: {
|
|
30
30
|
borderColor: string;
|
|
@@ -41,7 +41,7 @@ export declare const defaultInputGroupStyles: {
|
|
|
41
41
|
readonly outlineWidth: number;
|
|
42
42
|
readonly outlineStyle: "solid";
|
|
43
43
|
readonly outlineColor: string;
|
|
44
|
-
readonly borderColor: "$
|
|
44
|
+
readonly borderColor: "$borderColorField";
|
|
45
45
|
readonly backgroundColor: "$background";
|
|
46
46
|
readonly minWidth: 0;
|
|
47
47
|
readonly tabIndex: number;
|
|
@@ -51,7 +51,7 @@ export declare const defaultInputGroupStyles: {
|
|
|
51
51
|
readonly color: "$color";
|
|
52
52
|
} | {
|
|
53
53
|
readonly hoverStyle: {
|
|
54
|
-
readonly borderColor: "$
|
|
54
|
+
readonly borderColor: "$borderColorFieldHover";
|
|
55
55
|
};
|
|
56
56
|
readonly focusStyle: {
|
|
57
57
|
borderColor: string;
|
|
@@ -68,7 +68,7 @@ export declare const defaultInputGroupStyles: {
|
|
|
68
68
|
readonly outlineWidth: number;
|
|
69
69
|
readonly outlineStyle: "solid";
|
|
70
70
|
readonly outlineColor: string;
|
|
71
|
-
readonly borderColor: "$
|
|
71
|
+
readonly borderColor: "$borderColorField";
|
|
72
72
|
readonly backgroundColor: "$background";
|
|
73
73
|
readonly minWidth: 0;
|
|
74
74
|
readonly focusable: boolean;
|