@multiplatform.one/forms 7.11.0 → 7.16.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/README.md +1 -1
- package/dist/cjs/AdaptivePopup/index.cjs +0 -10
- package/dist/cjs/AdaptivePopup/index.native.js +0 -10
- package/dist/cjs/AdaptivePopup/index.native.js.map +1 -1
- package/dist/cjs/Button/index.cjs +11 -4
- package/dist/cjs/Button/index.native.js +11 -4
- package/dist/cjs/Button/index.native.js.map +1 -1
- package/dist/cjs/Chip/index.cjs +5 -2
- package/dist/cjs/Chip/index.native.js +6 -7
- package/dist/cjs/Chip/index.native.js.map +1 -1
- package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.cjs +2 -11
- package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js +2 -11
- package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
- package/dist/cjs/ContextualSaveBar/index.cjs +12 -10
- package/dist/cjs/ContextualSaveBar/index.native.js +12 -19
- package/dist/cjs/ContextualSaveBar/index.native.js.map +1 -1
- package/dist/cjs/FieldDisplay/index.cjs +24 -12
- package/dist/cjs/FieldDisplay/index.native.js +25 -13
- package/dist/cjs/FieldDisplay/index.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/PanelPortal.cjs +145 -0
- package/dist/cjs/FloatingPanel/PanelPortal.native.js +43 -0
- package/dist/cjs/FloatingPanel/PanelPortal.native.js.map +1 -0
- package/dist/cjs/FloatingPanel/index.cjs +117 -67
- package/dist/cjs/FloatingPanel/index.native.js +67 -12
- package/dist/cjs/FloatingPanel/index.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/useFloatingPanel.cjs +16 -5
- package/dist/cjs/FloatingPanel/useFloatingPanel.native.js +16 -5
- package/dist/cjs/FloatingPanel/useFloatingPanel.native.js.map +1 -1
- package/dist/cjs/Form/index.cjs +2 -1
- package/dist/cjs/Form/index.native.js +2 -1
- package/dist/cjs/Form/index.native.js.map +1 -1
- package/dist/cjs/Form/submissionController.cjs +74 -0
- package/dist/cjs/Form/submissionController.native.js +99 -0
- package/dist/cjs/Form/submissionController.native.js.map +1 -0
- package/dist/cjs/InputParts/index.cjs +66 -12
- package/dist/cjs/InputParts/index.native.js +72 -12
- package/dist/cjs/InputParts/index.native.js.map +1 -1
- package/dist/cjs/Skeleton/index.cjs +1 -3
- package/dist/cjs/Skeleton/index.native.js +3 -6
- package/dist/cjs/Skeleton/index.native.js.map +1 -1
- package/dist/cjs/Wheel/index.cjs +0 -2
- package/dist/cjs/Wheel/index.native.js +0 -2
- package/dist/cjs/Wheel/index.native.js.map +1 -1
- package/dist/cjs/fieldLayout.cjs +1 -1
- package/dist/cjs/fieldLayout.native.js +1 -1
- package/dist/cjs/fields/Barcode/BarcodePreview.cjs +18 -15
- package/dist/cjs/fields/Barcode/BarcodePreview.native.js +21 -18
- package/dist/cjs/fields/Barcode/BarcodePreview.native.js.map +1 -1
- package/dist/cjs/fields/Barcode/index.cjs +1 -1
- package/dist/cjs/fields/Barcode/index.native.js +1 -1
- package/dist/cjs/fields/Barcode/qr.native.js +34 -34
- package/dist/cjs/fields/Checkbox/Checkbox.cjs +1 -3
- package/dist/cjs/fields/Checkbox/Checkbox.native.js +1 -3
- package/dist/cjs/fields/Checkbox/Checkbox.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/CheckboxBox.cjs +2 -3
- package/dist/cjs/fields/Checkbox/CheckboxBox.native.js +2 -3
- package/dist/cjs/fields/Checkbox/CheckboxBox.native.js.map +1 -1
- package/dist/cjs/fields/ColorPicker/index.cjs +3 -1
- package/dist/cjs/fields/ColorPicker/index.native.js +3 -1
- package/dist/cjs/fields/ColorPicker/index.native.js.map +1 -1
- package/dist/cjs/fields/ColorPicker/parts.cjs +2 -1
- package/dist/cjs/fields/ColorPicker/parts.native.js +2 -1
- package/dist/cjs/fields/ColorPicker/parts.native.js.map +1 -1
- package/dist/cjs/fields/Combobox/index.cjs +206 -200
- package/dist/cjs/fields/Combobox/index.native.js +214 -208
- package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/DateRangePicker.cjs +7 -7
- package/dist/cjs/fields/DatePicker/DateRangePicker.native.js +7 -7
- package/dist/cjs/fields/DatePicker/DateRangePicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/MultiDatePicker.cjs +6 -4
- package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js +6 -4
- package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/parts.cjs +2 -1
- package/dist/cjs/fields/DatePicker/parts.native.js +2 -1
- package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/cjs/fields/Duration/index.cjs +6 -4
- package/dist/cjs/fields/Duration/index.native.js +6 -4
- package/dist/cjs/fields/Duration/index.native.js.map +1 -1
- package/dist/cjs/fields/FileUpload/index.cjs +10 -8
- package/dist/cjs/fields/FileUpload/index.native.js +10 -8
- package/dist/cjs/fields/FileUpload/index.native.js.map +1 -1
- package/dist/cjs/fields/FileUpload/nativePickerLoader.cjs +7 -2
- package/dist/cjs/fields/FileUpload/nativePickerLoader.native.js +7 -2
- package/dist/cjs/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/GeolocationMap.cjs +3 -0
- package/dist/cjs/fields/Geolocation/geocoderContext.cjs +71 -0
- package/dist/cjs/fields/Geolocation/geocoderContext.native.js +75 -0
- package/dist/cjs/fields/Geolocation/geocoderContext.native.js.map +1 -0
- package/dist/cjs/fields/Geolocation/index.cjs +72 -82
- package/dist/cjs/fields/Geolocation/index.native.js +72 -82
- package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/photonGeocoder.cjs +138 -0
- package/dist/cjs/fields/Geolocation/photonGeocoder.native.js +179 -0
- package/dist/cjs/fields/Geolocation/photonGeocoder.native.js.map +1 -0
- package/dist/cjs/fields/Icon/index.cjs +1 -1
- package/dist/cjs/fields/Icon/index.native.js +1 -1
- package/dist/cjs/fields/Icon/index.native.js.map +1 -1
- package/dist/cjs/fields/Input/index.cjs +8 -6
- package/dist/cjs/fields/Input/index.native.js +8 -6
- package/dist/cjs/fields/Input/index.native.js.map +1 -1
- package/dist/cjs/fields/MentionInput/index.cjs +118 -112
- package/dist/cjs/fields/MentionInput/index.native.js +130 -124
- package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
- package/dist/cjs/fields/OTPInput/index.cjs +11 -8
- package/dist/cjs/fields/OTPInput/index.native.js +11 -8
- package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
- package/dist/cjs/fields/PhoneInput/index.cjs +9 -6
- package/dist/cjs/fields/PhoneInput/index.native.js +9 -6
- package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/cjs/fields/PhoneInput/phone.cjs +6 -5
- package/dist/cjs/fields/PhoneInput/phone.native.js +7 -6
- package/dist/cjs/fields/PhoneInput/phone.native.js.map +1 -1
- package/dist/cjs/fields/PhoneInput/regionNames.cjs +274 -0
- package/dist/cjs/fields/PhoneInput/regionNames.native.js +277 -0
- package/dist/cjs/fields/PhoneInput/regionNames.native.js.map +1 -0
- package/dist/cjs/fields/RadioGroup/index.cjs +2 -6
- package/dist/cjs/fields/RadioGroup/index.native.js +2 -6
- package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/cjs/fields/SearchInput/index.cjs +12 -10
- package/dist/cjs/fields/SearchInput/index.native.js +12 -10
- package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
- package/dist/cjs/fields/Select/index.cjs +20 -17
- package/dist/cjs/fields/Select/index.native.js +20 -17
- package/dist/cjs/fields/Select/index.native.js.map +1 -1
- package/dist/cjs/fields/Signature/index.cjs +10 -9
- package/dist/cjs/fields/Signature/index.native.js +10 -9
- package/dist/cjs/fields/Signature/index.native.js.map +1 -1
- package/dist/cjs/fields/Slider/index.cjs +21 -15
- package/dist/cjs/fields/Slider/index.native.js +21 -17
- package/dist/cjs/fields/Slider/index.native.js.map +1 -1
- package/dist/cjs/fields/Slider/jumpMotion.cjs +2 -2
- package/dist/cjs/fields/Slider/jumpMotion.native.js +2 -1
- package/dist/cjs/fields/Slider/jumpMotion.native.js.map +1 -1
- package/dist/cjs/fields/Stepper/index.cjs +25 -6
- package/dist/cjs/fields/Stepper/index.native.js +25 -6
- package/dist/cjs/fields/Stepper/index.native.js.map +1 -1
- package/dist/cjs/fields/Switch/footprint.cjs +54 -0
- package/dist/cjs/fields/Switch/footprint.native.js +57 -0
- package/dist/cjs/fields/Switch/footprint.native.js.map +1 -0
- package/dist/cjs/fields/Switch/index.cjs +60 -43
- package/dist/cjs/fields/Switch/index.native.js +60 -50
- package/dist/cjs/fields/Switch/index.native.js.map +1 -1
- package/dist/cjs/fields/TextArea/index.cjs +9 -6
- package/dist/cjs/fields/TextArea/index.native.js +9 -6
- package/dist/cjs/fields/TextArea/index.native.js.map +1 -1
- package/dist/cjs/fields/TimePicker/catalog.cjs +1 -0
- package/dist/cjs/fields/TimePicker/catalog.native.js +1 -0
- package/dist/cjs/fields/TimePicker/catalog.native.js.map +1 -1
- package/dist/cjs/fields/TimePicker/parts.cjs +6 -1
- package/dist/cjs/fields/TimePicker/parts.native.js +8 -1
- package/dist/cjs/fields/TimePicker/parts.native.js.map +1 -1
- package/dist/cjs/index.cjs +12 -0
- package/dist/cjs/index.native.js +12 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/shared/panelPortal.cjs +52 -0
- package/dist/cjs/shared/panelPortal.native.js +65 -0
- package/dist/cjs/shared/panelPortal.native.js.map +1 -0
- package/dist/cjs/shared/pressSlopProps.cjs +16 -11
- package/dist/cjs/shared/pressSlopProps.native.js +18 -12
- package/dist/cjs/shared/pressSlopProps.native.js.map +1 -1
- package/dist/cjs/shared/utils.cjs +2 -2
- package/dist/cjs/shared/utils.native.js +3 -2
- package/dist/cjs/shared/utils.native.js.map +1 -1
- package/dist/cjs/themedPrimitives.cjs +15 -2
- package/dist/cjs/themedPrimitives.native.js +16 -3
- package/dist/cjs/themedPrimitives.native.js.map +1 -1
- package/dist/esm/AdaptivePopup/index.mjs +0 -10
- package/dist/esm/AdaptivePopup/index.mjs.map +1 -1
- package/dist/esm/AdaptivePopup/index.native.js +0 -10
- package/dist/esm/AdaptivePopup/index.native.js.map +1 -1
- package/dist/esm/Button/index.mjs +11 -4
- package/dist/esm/Button/index.mjs.map +1 -1
- package/dist/esm/Button/index.native.js +11 -4
- package/dist/esm/Button/index.native.js.map +1 -1
- package/dist/esm/Chip/index.mjs +6 -3
- package/dist/esm/Chip/index.mjs.map +1 -1
- package/dist/esm/Chip/index.native.js +7 -8
- package/dist/esm/Chip/index.native.js.map +1 -1
- package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.mjs +3 -12
- package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.mjs.map +1 -1
- package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.native.js +3 -12
- package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
- package/dist/esm/ContextualSaveBar/index.mjs +13 -11
- package/dist/esm/ContextualSaveBar/index.mjs.map +1 -1
- package/dist/esm/ContextualSaveBar/index.native.js +13 -20
- package/dist/esm/ContextualSaveBar/index.native.js.map +1 -1
- package/dist/esm/FieldDisplay/index.mjs +24 -12
- package/dist/esm/FieldDisplay/index.mjs.map +1 -1
- package/dist/esm/FieldDisplay/index.native.js +25 -13
- package/dist/esm/FieldDisplay/index.native.js.map +1 -1
- package/dist/esm/FloatingPanel/PanelPortal.mjs +119 -0
- package/dist/esm/FloatingPanel/PanelPortal.mjs.map +1 -0
- package/dist/esm/FloatingPanel/PanelPortal.native.js +14 -0
- package/dist/esm/FloatingPanel/PanelPortal.native.js.map +1 -0
- package/dist/esm/FloatingPanel/index.mjs +119 -69
- package/dist/esm/FloatingPanel/index.mjs.map +1 -1
- package/dist/esm/FloatingPanel/index.native.js +68 -13
- package/dist/esm/FloatingPanel/index.native.js.map +1 -1
- package/dist/esm/FloatingPanel/useFloatingPanel.mjs +17 -6
- package/dist/esm/FloatingPanel/useFloatingPanel.mjs.map +1 -1
- package/dist/esm/FloatingPanel/useFloatingPanel.native.js +17 -6
- package/dist/esm/FloatingPanel/useFloatingPanel.native.js.map +1 -1
- package/dist/esm/Form/index.mjs +2 -1
- package/dist/esm/Form/index.mjs.map +1 -1
- package/dist/esm/Form/index.native.js +2 -1
- package/dist/esm/Form/index.native.js.map +1 -1
- package/dist/esm/Form/submissionController.mjs +49 -0
- package/dist/esm/Form/submissionController.mjs.map +1 -0
- package/dist/esm/Form/submissionController.native.js +71 -0
- package/dist/esm/Form/submissionController.native.js.map +1 -0
- package/dist/esm/InputParts/index.mjs +67 -13
- package/dist/esm/InputParts/index.mjs.map +1 -1
- package/dist/esm/InputParts/index.native.js +73 -13
- package/dist/esm/InputParts/index.native.js.map +1 -1
- package/dist/esm/Skeleton/index.mjs +1 -3
- package/dist/esm/Skeleton/index.mjs.map +1 -1
- package/dist/esm/Skeleton/index.native.js +3 -6
- package/dist/esm/Skeleton/index.native.js.map +1 -1
- package/dist/esm/Wheel/index.mjs +0 -2
- package/dist/esm/Wheel/index.mjs.map +1 -1
- package/dist/esm/Wheel/index.native.js +0 -2
- package/dist/esm/Wheel/index.native.js.map +1 -1
- package/dist/esm/fieldLayout.mjs +1 -1
- package/dist/esm/fieldLayout.mjs.map +1 -1
- package/dist/esm/fieldLayout.native.js +1 -1
- package/dist/esm/fieldLayout.native.js.map +1 -1
- package/dist/esm/fields/Barcode/BarcodePreview.mjs +19 -16
- package/dist/esm/fields/Barcode/BarcodePreview.mjs.map +1 -1
- package/dist/esm/fields/Barcode/BarcodePreview.native.js +22 -19
- package/dist/esm/fields/Barcode/BarcodePreview.native.js.map +1 -1
- package/dist/esm/fields/Barcode/index.mjs +1 -1
- package/dist/esm/fields/Barcode/index.mjs.map +1 -1
- package/dist/esm/fields/Barcode/index.native.js +1 -1
- package/dist/esm/fields/Barcode/index.native.js.map +1 -1
- package/dist/esm/fields/Barcode/qr.native.js +34 -34
- package/dist/esm/fields/Checkbox/Checkbox.mjs +2 -4
- package/dist/esm/fields/Checkbox/Checkbox.mjs.map +1 -1
- package/dist/esm/fields/Checkbox/Checkbox.native.js +2 -4
- package/dist/esm/fields/Checkbox/Checkbox.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxBox.mjs +3 -4
- package/dist/esm/fields/Checkbox/CheckboxBox.mjs.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxBox.native.js +3 -4
- package/dist/esm/fields/Checkbox/CheckboxBox.native.js.map +1 -1
- package/dist/esm/fields/ColorPicker/index.mjs +3 -1
- package/dist/esm/fields/ColorPicker/index.mjs.map +1 -1
- package/dist/esm/fields/ColorPicker/index.native.js +3 -1
- package/dist/esm/fields/ColorPicker/index.native.js.map +1 -1
- package/dist/esm/fields/ColorPicker/parts.mjs +2 -1
- package/dist/esm/fields/ColorPicker/parts.mjs.map +1 -1
- package/dist/esm/fields/ColorPicker/parts.native.js +2 -1
- package/dist/esm/fields/ColorPicker/parts.native.js.map +1 -1
- package/dist/esm/fields/Combobox/index.mjs +197 -191
- package/dist/esm/fields/Combobox/index.mjs.map +1 -1
- package/dist/esm/fields/Combobox/index.native.js +205 -199
- package/dist/esm/fields/Combobox/index.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/DateRangePicker.mjs +5 -5
- package/dist/esm/fields/DatePicker/DateRangePicker.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/DateRangePicker.native.js +5 -5
- package/dist/esm/fields/DatePicker/DateRangePicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/MultiDatePicker.mjs +3 -1
- package/dist/esm/fields/DatePicker/MultiDatePicker.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/MultiDatePicker.native.js +3 -1
- package/dist/esm/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/parts.mjs +2 -1
- package/dist/esm/fields/DatePicker/parts.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/parts.native.js +2 -1
- package/dist/esm/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/esm/fields/Duration/index.mjs +4 -2
- package/dist/esm/fields/Duration/index.mjs.map +1 -1
- package/dist/esm/fields/Duration/index.native.js +4 -2
- package/dist/esm/fields/Duration/index.native.js.map +1 -1
- package/dist/esm/fields/FileUpload/index.mjs +5 -3
- package/dist/esm/fields/FileUpload/index.mjs.map +1 -1
- package/dist/esm/fields/FileUpload/index.native.js +5 -3
- package/dist/esm/fields/FileUpload/index.native.js.map +1 -1
- package/dist/esm/fields/FileUpload/nativePickerLoader.mjs +7 -3
- package/dist/esm/fields/FileUpload/nativePickerLoader.mjs.map +1 -1
- package/dist/esm/fields/FileUpload/nativePickerLoader.native.js +7 -3
- package/dist/esm/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/GeolocationMap.mjs +3 -0
- package/dist/esm/fields/Geolocation/GeolocationMap.mjs.map +1 -1
- package/dist/esm/fields/Geolocation/geocoderContext.mjs +44 -0
- package/dist/esm/fields/Geolocation/geocoderContext.mjs.map +1 -0
- package/dist/esm/fields/Geolocation/geocoderContext.native.js +45 -0
- package/dist/esm/fields/Geolocation/geocoderContext.native.js.map +1 -0
- package/dist/esm/fields/Geolocation/index.mjs +73 -83
- package/dist/esm/fields/Geolocation/index.mjs.map +1 -1
- package/dist/esm/fields/Geolocation/index.native.js +73 -83
- package/dist/esm/fields/Geolocation/index.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/photonGeocoder.mjs +112 -0
- package/dist/esm/fields/Geolocation/photonGeocoder.mjs.map +1 -0
- package/dist/esm/fields/Geolocation/photonGeocoder.native.js +150 -0
- package/dist/esm/fields/Geolocation/photonGeocoder.native.js.map +1 -0
- package/dist/esm/fields/Icon/index.mjs +1 -1
- package/dist/esm/fields/Icon/index.mjs.map +1 -1
- package/dist/esm/fields/Icon/index.native.js +1 -1
- package/dist/esm/fields/Icon/index.native.js.map +1 -1
- package/dist/esm/fields/Input/index.mjs +4 -2
- package/dist/esm/fields/Input/index.mjs.map +1 -1
- package/dist/esm/fields/Input/index.native.js +4 -2
- package/dist/esm/fields/Input/index.native.js.map +1 -1
- package/dist/esm/fields/MentionInput/index.mjs +115 -109
- package/dist/esm/fields/MentionInput/index.mjs.map +1 -1
- package/dist/esm/fields/MentionInput/index.native.js +127 -121
- package/dist/esm/fields/MentionInput/index.native.js.map +1 -1
- package/dist/esm/fields/OTPInput/index.mjs +7 -4
- package/dist/esm/fields/OTPInput/index.mjs.map +1 -1
- package/dist/esm/fields/OTPInput/index.native.js +7 -4
- package/dist/esm/fields/OTPInput/index.native.js.map +1 -1
- package/dist/esm/fields/PhoneInput/index.mjs +6 -3
- package/dist/esm/fields/PhoneInput/index.mjs.map +1 -1
- package/dist/esm/fields/PhoneInput/index.native.js +6 -3
- package/dist/esm/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/esm/fields/PhoneInput/phone.mjs +6 -5
- package/dist/esm/fields/PhoneInput/phone.mjs.map +1 -1
- package/dist/esm/fields/PhoneInput/phone.native.js +7 -6
- package/dist/esm/fields/PhoneInput/phone.native.js.map +1 -1
- package/dist/esm/fields/PhoneInput/regionNames.mjs +249 -0
- package/dist/esm/fields/PhoneInput/regionNames.mjs.map +1 -0
- package/dist/esm/fields/PhoneInput/regionNames.native.js +249 -0
- package/dist/esm/fields/PhoneInput/regionNames.native.js.map +1 -0
- package/dist/esm/fields/RadioGroup/index.mjs +3 -7
- package/dist/esm/fields/RadioGroup/index.mjs.map +1 -1
- package/dist/esm/fields/RadioGroup/index.native.js +3 -7
- package/dist/esm/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/esm/fields/SearchInput/index.mjs +7 -5
- package/dist/esm/fields/SearchInput/index.mjs.map +1 -1
- package/dist/esm/fields/SearchInput/index.native.js +7 -5
- package/dist/esm/fields/SearchInput/index.native.js.map +1 -1
- package/dist/esm/fields/Select/index.mjs +10 -7
- package/dist/esm/fields/Select/index.mjs.map +1 -1
- package/dist/esm/fields/Select/index.native.js +10 -7
- package/dist/esm/fields/Select/index.native.js.map +1 -1
- package/dist/esm/fields/Signature/index.mjs +7 -6
- package/dist/esm/fields/Signature/index.mjs.map +1 -1
- package/dist/esm/fields/Signature/index.native.js +7 -6
- package/dist/esm/fields/Signature/index.native.js.map +1 -1
- package/dist/esm/fields/Slider/index.mjs +10 -4
- package/dist/esm/fields/Slider/index.mjs.map +1 -1
- package/dist/esm/fields/Slider/index.native.js +10 -6
- package/dist/esm/fields/Slider/index.native.js.map +1 -1
- package/dist/esm/fields/Slider/jumpMotion.mjs +2 -2
- package/dist/esm/fields/Slider/jumpMotion.mjs.map +1 -1
- package/dist/esm/fields/Slider/jumpMotion.native.js +2 -1
- package/dist/esm/fields/Slider/jumpMotion.native.js.map +1 -1
- package/dist/esm/fields/Stepper/index.mjs +24 -5
- package/dist/esm/fields/Stepper/index.mjs.map +1 -1
- package/dist/esm/fields/Stepper/index.native.js +24 -5
- package/dist/esm/fields/Stepper/index.native.js.map +1 -1
- package/dist/esm/fields/Switch/footprint.mjs +29 -0
- package/dist/esm/fields/Switch/footprint.mjs.map +1 -0
- package/dist/esm/fields/Switch/footprint.native.js +29 -0
- package/dist/esm/fields/Switch/footprint.native.js.map +1 -0
- package/dist/esm/fields/Switch/index.mjs +44 -27
- package/dist/esm/fields/Switch/index.mjs.map +1 -1
- package/dist/esm/fields/Switch/index.native.js +44 -34
- package/dist/esm/fields/Switch/index.native.js.map +1 -1
- package/dist/esm/fields/TextArea/index.mjs +9 -6
- package/dist/esm/fields/TextArea/index.mjs.map +1 -1
- package/dist/esm/fields/TextArea/index.native.js +9 -6
- package/dist/esm/fields/TextArea/index.native.js.map +1 -1
- package/dist/esm/fields/TimePicker/catalog.mjs +1 -0
- package/dist/esm/fields/TimePicker/catalog.mjs.map +1 -1
- package/dist/esm/fields/TimePicker/catalog.native.js +1 -0
- package/dist/esm/fields/TimePicker/catalog.native.js.map +1 -1
- package/dist/esm/fields/TimePicker/parts.mjs +6 -1
- package/dist/esm/fields/TimePicker/parts.mjs.map +1 -1
- package/dist/esm/fields/TimePicker/parts.native.js +8 -1
- package/dist/esm/fields/TimePicker/parts.native.js.map +1 -1
- package/dist/esm/index.mjs +6 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +6 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/shared/panelPortal.mjs +24 -0
- package/dist/esm/shared/panelPortal.mjs.map +1 -0
- package/dist/esm/shared/panelPortal.native.js +34 -0
- package/dist/esm/shared/panelPortal.native.js.map +1 -0
- package/dist/esm/shared/pressSlopProps.mjs +16 -12
- package/dist/esm/shared/pressSlopProps.mjs.map +1 -1
- package/dist/esm/shared/pressSlopProps.native.js +18 -13
- package/dist/esm/shared/pressSlopProps.native.js.map +1 -1
- package/dist/esm/shared/utils.mjs +2 -2
- package/dist/esm/shared/utils.mjs.map +1 -1
- package/dist/esm/shared/utils.native.js +3 -2
- package/dist/esm/shared/utils.native.js.map +1 -1
- package/dist/esm/themedPrimitives.mjs +16 -3
- package/dist/esm/themedPrimitives.mjs.map +1 -1
- package/dist/esm/themedPrimitives.native.js +17 -4
- package/dist/esm/themedPrimitives.native.js.map +1 -1
- package/dist/jsx/AdaptivePopup/index.mjs +0 -10
- package/dist/jsx/AdaptivePopup/index.mjs.map +1 -1
- package/dist/jsx/AdaptivePopup/index.native.js +0 -10
- package/dist/jsx/AdaptivePopup/index.native.js.map +1 -1
- package/dist/jsx/Button/index.mjs +11 -4
- package/dist/jsx/Button/index.mjs.map +1 -1
- package/dist/jsx/Button/index.native.js +11 -4
- package/dist/jsx/Button/index.native.js.map +1 -1
- package/dist/jsx/Chip/index.mjs +6 -3
- package/dist/jsx/Chip/index.mjs.map +1 -1
- package/dist/jsx/Chip/index.native.js +6 -7
- package/dist/jsx/Chip/index.native.js.map +1 -1
- package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.mjs +3 -12
- package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.mjs.map +1 -1
- package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.native.js +2 -11
- package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
- package/dist/jsx/ContextualSaveBar/index.mjs +13 -11
- package/dist/jsx/ContextualSaveBar/index.mjs.map +1 -1
- package/dist/jsx/ContextualSaveBar/index.native.js +12 -19
- package/dist/jsx/ContextualSaveBar/index.native.js.map +1 -1
- package/dist/jsx/FieldDisplay/index.mjs +24 -12
- package/dist/jsx/FieldDisplay/index.mjs.map +1 -1
- package/dist/jsx/FieldDisplay/index.native.js +25 -13
- package/dist/jsx/FieldDisplay/index.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/PanelPortal.mjs +119 -0
- package/dist/jsx/FloatingPanel/PanelPortal.mjs.map +1 -0
- package/dist/jsx/FloatingPanel/PanelPortal.native.js +43 -0
- package/dist/jsx/FloatingPanel/PanelPortal.native.js.map +1 -0
- package/dist/jsx/FloatingPanel/index.mjs +119 -69
- package/dist/jsx/FloatingPanel/index.mjs.map +1 -1
- package/dist/jsx/FloatingPanel/index.native.js +67 -12
- package/dist/jsx/FloatingPanel/index.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/useFloatingPanel.mjs +17 -6
- package/dist/jsx/FloatingPanel/useFloatingPanel.mjs.map +1 -1
- package/dist/jsx/FloatingPanel/useFloatingPanel.native.js +16 -5
- package/dist/jsx/FloatingPanel/useFloatingPanel.native.js.map +1 -1
- package/dist/jsx/Form/index.mjs +2 -1
- package/dist/jsx/Form/index.mjs.map +1 -1
- package/dist/jsx/Form/index.native.js +2 -1
- package/dist/jsx/Form/index.native.js.map +1 -1
- package/dist/jsx/Form/submissionController.mjs +49 -0
- package/dist/jsx/Form/submissionController.mjs.map +1 -0
- package/dist/jsx/Form/submissionController.native.js +99 -0
- package/dist/jsx/Form/submissionController.native.js.map +1 -0
- package/dist/jsx/InputParts/index.mjs +67 -13
- package/dist/jsx/InputParts/index.mjs.map +1 -1
- package/dist/jsx/InputParts/index.native.js +72 -12
- package/dist/jsx/InputParts/index.native.js.map +1 -1
- package/dist/jsx/Skeleton/index.mjs +1 -3
- package/dist/jsx/Skeleton/index.mjs.map +1 -1
- package/dist/jsx/Skeleton/index.native.js +3 -6
- package/dist/jsx/Skeleton/index.native.js.map +1 -1
- package/dist/jsx/Wheel/index.mjs +0 -2
- package/dist/jsx/Wheel/index.mjs.map +1 -1
- package/dist/jsx/Wheel/index.native.js +0 -2
- package/dist/jsx/Wheel/index.native.js.map +1 -1
- package/dist/jsx/fieldLayout.mjs +1 -1
- package/dist/jsx/fieldLayout.mjs.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.mjs +19 -16
- package/dist/jsx/fields/Barcode/BarcodePreview.mjs.map +1 -1
- package/dist/jsx/fields/Barcode/BarcodePreview.native.js +21 -18
- package/dist/jsx/fields/Barcode/BarcodePreview.native.js.map +1 -1
- package/dist/jsx/fields/Barcode/index.mjs +1 -1
- package/dist/jsx/fields/Barcode/index.mjs.map +1 -1
- package/dist/jsx/fields/Barcode/index.native.js +1 -1
- package/dist/jsx/fields/Barcode/index.native.js.map +1 -1
- package/dist/jsx/fields/Barcode/qr.native.js +34 -34
- package/dist/jsx/fields/Checkbox/Checkbox.mjs +2 -4
- package/dist/jsx/fields/Checkbox/Checkbox.mjs.map +1 -1
- package/dist/jsx/fields/Checkbox/Checkbox.native.js +1 -3
- package/dist/jsx/fields/Checkbox/Checkbox.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxBox.mjs +3 -4
- package/dist/jsx/fields/Checkbox/CheckboxBox.mjs.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxBox.native.js +2 -3
- package/dist/jsx/fields/Checkbox/CheckboxBox.native.js.map +1 -1
- package/dist/jsx/fields/ColorPicker/index.mjs +3 -1
- package/dist/jsx/fields/ColorPicker/index.mjs.map +1 -1
- package/dist/jsx/fields/ColorPicker/index.native.js +3 -1
- package/dist/jsx/fields/ColorPicker/index.native.js.map +1 -1
- package/dist/jsx/fields/ColorPicker/parts.mjs +2 -1
- package/dist/jsx/fields/ColorPicker/parts.mjs.map +1 -1
- package/dist/jsx/fields/ColorPicker/parts.native.js +2 -1
- package/dist/jsx/fields/ColorPicker/parts.native.js.map +1 -1
- package/dist/jsx/fields/Combobox/index.mjs +197 -191
- package/dist/jsx/fields/Combobox/index.mjs.map +1 -1
- package/dist/jsx/fields/Combobox/index.native.js +214 -208
- package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/DateRangePicker.mjs +5 -5
- package/dist/jsx/fields/DatePicker/DateRangePicker.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/DateRangePicker.native.js +7 -7
- package/dist/jsx/fields/DatePicker/DateRangePicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/MultiDatePicker.mjs +3 -1
- package/dist/jsx/fields/DatePicker/MultiDatePicker.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js +6 -4
- package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/parts.mjs +2 -1
- package/dist/jsx/fields/DatePicker/parts.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/parts.native.js +2 -1
- package/dist/jsx/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/jsx/fields/Duration/index.mjs +4 -2
- package/dist/jsx/fields/Duration/index.mjs.map +1 -1
- package/dist/jsx/fields/Duration/index.native.js +6 -4
- package/dist/jsx/fields/Duration/index.native.js.map +1 -1
- package/dist/jsx/fields/FileUpload/index.mjs +5 -3
- package/dist/jsx/fields/FileUpload/index.mjs.map +1 -1
- package/dist/jsx/fields/FileUpload/index.native.js +10 -8
- package/dist/jsx/fields/FileUpload/index.native.js.map +1 -1
- package/dist/jsx/fields/FileUpload/nativePickerLoader.mjs +7 -3
- package/dist/jsx/fields/FileUpload/nativePickerLoader.mjs.map +1 -1
- package/dist/jsx/fields/FileUpload/nativePickerLoader.native.js +7 -2
- package/dist/jsx/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/GeolocationMap.mjs +3 -0
- package/dist/jsx/fields/Geolocation/GeolocationMap.mjs.map +1 -1
- package/dist/jsx/fields/Geolocation/geocoderContext.mjs +44 -0
- package/dist/jsx/fields/Geolocation/geocoderContext.mjs.map +1 -0
- package/dist/jsx/fields/Geolocation/geocoderContext.native.js +75 -0
- package/dist/jsx/fields/Geolocation/geocoderContext.native.js.map +1 -0
- package/dist/jsx/fields/Geolocation/index.mjs +73 -83
- package/dist/jsx/fields/Geolocation/index.mjs.map +1 -1
- package/dist/jsx/fields/Geolocation/index.native.js +72 -82
- package/dist/jsx/fields/Geolocation/index.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/photonGeocoder.mjs +112 -0
- package/dist/jsx/fields/Geolocation/photonGeocoder.mjs.map +1 -0
- package/dist/jsx/fields/Geolocation/photonGeocoder.native.js +179 -0
- package/dist/jsx/fields/Geolocation/photonGeocoder.native.js.map +1 -0
- package/dist/jsx/fields/Icon/index.mjs +1 -1
- package/dist/jsx/fields/Icon/index.mjs.map +1 -1
- package/dist/jsx/fields/Icon/index.native.js +1 -1
- package/dist/jsx/fields/Icon/index.native.js.map +1 -1
- package/dist/jsx/fields/Input/index.mjs +4 -2
- package/dist/jsx/fields/Input/index.mjs.map +1 -1
- package/dist/jsx/fields/Input/index.native.js +8 -6
- package/dist/jsx/fields/Input/index.native.js.map +1 -1
- package/dist/jsx/fields/MentionInput/index.mjs +115 -109
- package/dist/jsx/fields/MentionInput/index.mjs.map +1 -1
- package/dist/jsx/fields/MentionInput/index.native.js +130 -124
- package/dist/jsx/fields/MentionInput/index.native.js.map +1 -1
- package/dist/jsx/fields/OTPInput/index.mjs +7 -4
- package/dist/jsx/fields/OTPInput/index.mjs.map +1 -1
- package/dist/jsx/fields/OTPInput/index.native.js +11 -8
- package/dist/jsx/fields/OTPInput/index.native.js.map +1 -1
- package/dist/jsx/fields/PhoneInput/index.mjs +6 -3
- package/dist/jsx/fields/PhoneInput/index.mjs.map +1 -1
- package/dist/jsx/fields/PhoneInput/index.native.js +9 -6
- package/dist/jsx/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/jsx/fields/PhoneInput/phone.mjs +6 -5
- package/dist/jsx/fields/PhoneInput/phone.mjs.map +1 -1
- package/dist/jsx/fields/PhoneInput/phone.native.js +7 -6
- package/dist/jsx/fields/PhoneInput/phone.native.js.map +1 -1
- package/dist/jsx/fields/PhoneInput/regionNames.mjs +249 -0
- package/dist/jsx/fields/PhoneInput/regionNames.mjs.map +1 -0
- package/dist/jsx/fields/PhoneInput/regionNames.native.js +277 -0
- package/dist/jsx/fields/PhoneInput/regionNames.native.js.map +1 -0
- package/dist/jsx/fields/RadioGroup/index.mjs +3 -7
- package/dist/jsx/fields/RadioGroup/index.mjs.map +1 -1
- package/dist/jsx/fields/RadioGroup/index.native.js +2 -6
- package/dist/jsx/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/jsx/fields/SearchInput/index.mjs +7 -5
- package/dist/jsx/fields/SearchInput/index.mjs.map +1 -1
- package/dist/jsx/fields/SearchInput/index.native.js +12 -10
- package/dist/jsx/fields/SearchInput/index.native.js.map +1 -1
- package/dist/jsx/fields/Select/index.mjs +10 -7
- package/dist/jsx/fields/Select/index.mjs.map +1 -1
- package/dist/jsx/fields/Select/index.native.js +20 -17
- package/dist/jsx/fields/Select/index.native.js.map +1 -1
- package/dist/jsx/fields/Signature/index.mjs +7 -6
- package/dist/jsx/fields/Signature/index.mjs.map +1 -1
- package/dist/jsx/fields/Signature/index.native.js +10 -9
- package/dist/jsx/fields/Signature/index.native.js.map +1 -1
- package/dist/jsx/fields/Slider/index.mjs +10 -4
- package/dist/jsx/fields/Slider/index.mjs.map +1 -1
- package/dist/jsx/fields/Slider/index.native.js +21 -17
- package/dist/jsx/fields/Slider/index.native.js.map +1 -1
- package/dist/jsx/fields/Slider/jumpMotion.mjs +2 -2
- package/dist/jsx/fields/Slider/jumpMotion.mjs.map +1 -1
- package/dist/jsx/fields/Slider/jumpMotion.native.js +2 -1
- package/dist/jsx/fields/Slider/jumpMotion.native.js.map +1 -1
- package/dist/jsx/fields/Stepper/index.mjs +24 -5
- package/dist/jsx/fields/Stepper/index.mjs.map +1 -1
- package/dist/jsx/fields/Stepper/index.native.js +25 -6
- package/dist/jsx/fields/Stepper/index.native.js.map +1 -1
- package/dist/jsx/fields/Switch/footprint.mjs +29 -0
- package/dist/jsx/fields/Switch/footprint.mjs.map +1 -0
- package/dist/jsx/fields/Switch/footprint.native.js +57 -0
- package/dist/jsx/fields/Switch/footprint.native.js.map +1 -0
- package/dist/jsx/fields/Switch/index.mjs +44 -27
- package/dist/jsx/fields/Switch/index.mjs.map +1 -1
- package/dist/jsx/fields/Switch/index.native.js +60 -50
- package/dist/jsx/fields/Switch/index.native.js.map +1 -1
- package/dist/jsx/fields/TextArea/index.mjs +9 -6
- package/dist/jsx/fields/TextArea/index.mjs.map +1 -1
- package/dist/jsx/fields/TextArea/index.native.js +9 -6
- package/dist/jsx/fields/TextArea/index.native.js.map +1 -1
- package/dist/jsx/fields/TimePicker/catalog.mjs +1 -0
- package/dist/jsx/fields/TimePicker/catalog.mjs.map +1 -1
- package/dist/jsx/fields/TimePicker/catalog.native.js +1 -0
- package/dist/jsx/fields/TimePicker/catalog.native.js.map +1 -1
- package/dist/jsx/fields/TimePicker/parts.mjs +6 -1
- package/dist/jsx/fields/TimePicker/parts.mjs.map +1 -1
- package/dist/jsx/fields/TimePicker/parts.native.js +8 -1
- package/dist/jsx/fields/TimePicker/parts.native.js.map +1 -1
- package/dist/jsx/index.js +6 -1
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +6 -1
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +12 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/shared/panelPortal.mjs +24 -0
- package/dist/jsx/shared/panelPortal.mjs.map +1 -0
- package/dist/jsx/shared/panelPortal.native.js +65 -0
- package/dist/jsx/shared/panelPortal.native.js.map +1 -0
- package/dist/jsx/shared/pressSlopProps.mjs +16 -12
- package/dist/jsx/shared/pressSlopProps.mjs.map +1 -1
- package/dist/jsx/shared/pressSlopProps.native.js +18 -12
- package/dist/jsx/shared/pressSlopProps.native.js.map +1 -1
- package/dist/jsx/shared/utils.mjs +2 -2
- package/dist/jsx/shared/utils.mjs.map +1 -1
- package/dist/jsx/shared/utils.native.js +3 -2
- package/dist/jsx/shared/utils.native.js.map +1 -1
- package/dist/jsx/themedPrimitives.mjs +16 -3
- package/dist/jsx/themedPrimitives.mjs.map +1 -1
- package/dist/jsx/themedPrimitives.native.js +16 -3
- package/dist/jsx/themedPrimitives.native.js.map +1 -1
- package/package.json +15 -11
- package/src/AdaptivePopup/AdaptivePopup.spec.tsx +2 -3
- package/src/AdaptivePopup/index.tsx +11 -10
- package/src/Button/Button.borderLadder.spec.tsx +82 -0
- package/src/Button/Button.labelInk.spec.tsx +4 -1
- package/src/Button/Button.lc71.spec.tsx +17 -0
- package/src/Button/Button.radiusLaw.spec.tsx +153 -0
- package/src/Button/index.tsx +11 -4
- package/src/Chip/Chip.spec.tsx +23 -0
- package/src/Chip/index.tsx +10 -6
- package/src/ContextualSaveBar/ContextualSaveBar.spec.tsx +24 -0
- package/src/ContextualSaveBar/ContextualSaveBar.stories.tsx +37 -1
- package/src/ContextualSaveBar/UnsavedChangesDialog.tsx +3 -11
- package/src/ContextualSaveBar/index.tsx +17 -11
- package/src/ErrorSummary.stories.tsx +20 -11
- package/src/FieldDisplay/FieldDisplay.spec.tsx +47 -2
- package/src/FieldDisplay/index.tsx +21 -13
- package/src/FloatingPanel/FloatingPanel.detentLayout.spec.tsx +148 -0
- package/src/FloatingPanel/FloatingPanel.spec.tsx +140 -1
- package/src/FloatingPanel/FloatingPanel.stories.tsx +86 -1
- package/src/FloatingPanel/PanelPortal.native.tsx +15 -0
- package/src/FloatingPanel/PanelPortal.tsx +149 -0
- package/src/FloatingPanel/index.native.tsx +96 -19
- package/src/FloatingPanel/index.tsx +180 -86
- package/src/FloatingPanel/panelPortal.spec.tsx +142 -0
- package/src/FloatingPanel/panelWidthContract.spec.ts +17 -5
- package/src/FloatingPanel/touchRecipeHydration.spec.tsx +82 -0
- package/src/FloatingPanel/useFloatingPanel.spec.tsx +81 -0
- package/src/FloatingPanel/useFloatingPanel.ts +39 -12
- package/src/FloatingPanel/viewportHydration.spec.tsx +118 -0
- package/src/Form/index.tsx +2 -1
- package/src/Form/submission.spec.tsx +148 -0
- package/src/Form/submissionController.spec.ts +73 -0
- package/src/Form/submissionController.ts +59 -0
- package/src/Form/submissionDiscard.spec.tsx +41 -0
- package/src/Form/submissionPaths.spec.tsx +214 -0
- package/src/InputParts/index.tsx +48 -12
- package/src/Label/Label.stories.tsx +27 -11
- package/src/Skeleton/Skeleton.radius.spec.tsx +30 -0
- package/src/Skeleton/index.tsx +4 -7
- package/src/Wheel/Wheel.spec.tsx +9 -2
- package/src/Wheel/index.tsx +0 -2
- package/src/errorTint.spec.tsx +70 -0
- package/src/fieldFamilyStories.radius.spec.tsx +48 -0
- package/src/fieldLayout.tsx +1 -1
- package/src/fields/Barcode/BarcodePreview.spec.tsx +32 -12
- package/src/fields/Barcode/BarcodePreview.stories.tsx +5 -4
- package/src/fields/Barcode/BarcodePreview.tsx +31 -25
- package/src/fields/Barcode/index.tsx +3 -3
- package/src/fields/Checkbox/Checkbox.native.spec.tsx +92 -0
- package/src/fields/Checkbox/Checkbox.stories.tsx +1 -0
- package/src/fields/Checkbox/Checkbox.tsx +2 -2
- package/src/fields/Checkbox/CheckboxBox.spec.tsx +13 -13
- package/src/fields/Checkbox/CheckboxBox.tsx +7 -1
- package/src/fields/ColorPicker/index.tsx +7 -2
- package/src/fields/ColorPicker/parts.tsx +2 -1
- package/src/fields/Combobox/Combobox.spec.tsx +85 -55
- package/src/fields/Combobox/index.tsx +259 -240
- package/src/fields/DatePicker/DateRangePicker.tsx +5 -3
- package/src/fields/DatePicker/MultiDatePicker.tsx +3 -1
- package/src/fields/DatePicker/parts.tsx +2 -1
- package/src/fields/Duration/index.tsx +4 -2
- package/src/fields/FileUpload/index.tsx +13 -3
- package/src/fields/FileUpload/nativePickerLoader.spec.ts +34 -0
- package/src/fields/FileUpload/nativePickerLoader.ts +11 -2
- package/src/fields/Geolocation/Geolocation.spec.tsx +165 -4
- package/src/fields/Geolocation/Geolocation.stories.tsx +110 -26
- package/src/fields/Geolocation/GeolocationMap.tsx +3 -0
- package/src/fields/Geolocation/geocoderContext.tsx +56 -0
- package/src/fields/Geolocation/index.tsx +75 -80
- package/src/fields/Geolocation/photonGeocoder.spec.ts +214 -0
- package/src/fields/Geolocation/photonGeocoder.ts +150 -0
- package/src/fields/Icon/index.tsx +1 -1
- package/src/fields/Input/index.tsx +4 -2
- package/src/fields/MentionInput/MentionInput.spec.tsx +41 -30
- package/src/fields/MentionInput/index.tsx +128 -119
- package/src/fields/OTPInput/index.tsx +7 -4
- package/src/fields/PhoneInput/PhoneInput.spec.tsx +63 -0
- package/src/fields/PhoneInput/index.tsx +13 -8
- package/src/fields/PhoneInput/phone.native.spec.ts +32 -0
- package/src/fields/PhoneInput/phone.ts +5 -2
- package/src/fields/PhoneInput/regionNames.ts +250 -0
- package/src/fields/RadioGroup/RadioGroup.stories.tsx +4 -3
- package/src/fields/RadioGroup/index.tsx +3 -2
- package/src/fields/Rating/StarInk.native.spec.tsx +1 -1
- package/src/fields/SearchInput/index.tsx +6 -5
- package/src/fields/Select/Select.spec.tsx +36 -29
- package/src/fields/Select/index.tsx +14 -5
- package/src/fields/Signature/index.tsx +7 -3
- package/src/fields/Slider/index.tsx +14 -4
- package/src/fields/Slider/jumpMotion.ts +6 -2
- package/src/fields/Stepper/Stepper.spec.tsx +30 -0
- package/src/fields/Stepper/index.tsx +34 -4
- package/src/fields/Switch/Switch.footprint.native.spec.tsx +58 -0
- package/src/fields/Switch/Switch.footprint.spec.tsx +79 -0
- package/src/fields/Switch/Switch.radius.spec.tsx +37 -6
- package/src/fields/Switch/footprint.ts +45 -0
- package/src/fields/Switch/index.tsx +46 -49
- package/src/fields/TextArea/TextArea.spec.tsx +30 -1
- package/src/fields/TextArea/index.tsx +9 -6
- package/src/fields/TimePicker/TimePicker.native.spec.tsx +48 -0
- package/src/fields/TimePicker/catalog.tsx +1 -0
- package/src/fields/TimePicker/parts.tsx +5 -1
- package/src/fields/ToggleGroup/ToggleGroup.spec.tsx +17 -8
- package/src/fields/pickerShellPadding.spec.tsx +54 -0
- package/src/index.ts +8 -0
- package/src/shared/panelPortal.ts +36 -0
- package/src/shared/pressSlopProps.spec.ts +27 -1
- package/src/shared/pressSlopProps.ts +26 -17
- package/src/shared/utils.ts +2 -2
- package/src/themedPrimitives.tsx +16 -3
- package/types/AdaptivePopup/index.d.ts.map +1 -1
- package/types/Button/index.d.ts.map +1 -1
- package/types/Chip/index.d.ts.map +1 -1
- package/types/ContextualSaveBar/UnsavedChangesDialog.d.ts.map +1 -1
- package/types/ContextualSaveBar/index.d.ts.map +1 -1
- package/types/FieldDisplay/index.d.ts.map +1 -1
- package/types/FloatingPanel/PanelPortal.d.ts +24 -0
- package/types/FloatingPanel/PanelPortal.d.ts.map +1 -0
- package/types/FloatingPanel/PanelPortal.native.d.ts +9 -0
- package/types/FloatingPanel/PanelPortal.native.d.ts.map +1 -0
- package/types/FloatingPanel/index.d.ts +6 -5
- package/types/FloatingPanel/index.d.ts.map +1 -1
- package/types/FloatingPanel/index.native.d.ts.map +1 -1
- package/types/FloatingPanel/useFloatingPanel.d.ts +10 -4
- package/types/FloatingPanel/useFloatingPanel.d.ts.map +1 -1
- package/types/Form/index.d.ts.map +1 -1
- package/types/Form/submissionController.d.ts +21 -0
- package/types/Form/submissionController.d.ts.map +1 -0
- package/types/InputParts/index.d.ts +34 -2
- package/types/InputParts/index.d.ts.map +1 -1
- package/types/Skeleton/index.d.ts.map +1 -1
- package/types/Wheel/index.d.ts.map +1 -1
- package/types/fields/Barcode/BarcodePreview.d.ts +7 -3
- package/types/fields/Barcode/BarcodePreview.d.ts.map +1 -1
- package/types/fields/Checkbox/CheckboxBox.d.ts +5 -0
- package/types/fields/Checkbox/CheckboxBox.d.ts.map +1 -1
- package/types/fields/ColorPicker/index.d.ts.map +1 -1
- package/types/fields/ColorPicker/parts.d.ts +2 -0
- package/types/fields/ColorPicker/parts.d.ts.map +1 -1
- package/types/fields/Combobox/index.d.ts.map +1 -1
- package/types/fields/DatePicker/DateRangePicker.d.ts.map +1 -1
- package/types/fields/DatePicker/MultiDatePicker.d.ts.map +1 -1
- package/types/fields/DatePicker/parts.d.ts.map +1 -1
- package/types/fields/Duration/index.d.ts.map +1 -1
- package/types/fields/FileUpload/index.d.ts.map +1 -1
- package/types/fields/FileUpload/nativePickerLoader.d.ts +8 -0
- package/types/fields/FileUpload/nativePickerLoader.d.ts.map +1 -1
- package/types/fields/Geolocation/GeolocationMap.d.ts.map +1 -1
- package/types/fields/Geolocation/geocoderContext.d.ts +24 -0
- package/types/fields/Geolocation/geocoderContext.d.ts.map +1 -0
- package/types/fields/Geolocation/index.d.ts +2 -1
- package/types/fields/Geolocation/index.d.ts.map +1 -1
- package/types/fields/Geolocation/photonGeocoder.d.ts +46 -0
- package/types/fields/Geolocation/photonGeocoder.d.ts.map +1 -0
- package/types/fields/Input/index.d.ts +19 -1
- package/types/fields/Input/index.d.ts.map +1 -1
- package/types/fields/MentionInput/index.d.ts.map +1 -1
- package/types/fields/OTPInput/index.d.ts +1 -1
- package/types/fields/OTPInput/index.d.ts.map +1 -1
- package/types/fields/PhoneInput/index.d.ts.map +1 -1
- package/types/fields/PhoneInput/phone.d.ts.map +1 -1
- package/types/fields/PhoneInput/regionNames.d.ts +2 -0
- package/types/fields/PhoneInput/regionNames.d.ts.map +1 -0
- package/types/fields/RadioGroup/index.d.ts.map +1 -1
- package/types/fields/SearchInput/index.d.ts.map +1 -1
- package/types/fields/Select/index.d.ts.map +1 -1
- package/types/fields/Signature/index.d.ts.map +1 -1
- package/types/fields/Slider/index.d.ts.map +1 -1
- package/types/fields/Slider/jumpMotion.d.ts +1 -1
- package/types/fields/Slider/jumpMotion.d.ts.map +1 -1
- package/types/fields/Stepper/index.d.ts +6 -0
- package/types/fields/Stepper/index.d.ts.map +1 -1
- package/types/fields/Switch/footprint.d.ts +12 -0
- package/types/fields/Switch/footprint.d.ts.map +1 -0
- package/types/fields/Switch/index.d.ts.map +1 -1
- package/types/fields/TextArea/index.d.ts.map +1 -1
- package/types/fields/TimePicker/catalog.d.ts.map +1 -1
- package/types/fields/TimePicker/parts.d.ts.map +1 -1
- package/types/index.d.ts +8 -0
- package/types/index.d.ts.map +1 -1
- package/types/shared/panelPortal.d.ts +13 -0
- package/types/shared/panelPortal.d.ts.map +1 -0
- package/types/shared/pressSlopProps.d.ts +9 -2
- package/types/shared/pressSlopProps.d.ts.map +1 -1
- package/types/shared/utils.d.ts +1 -1
- package/types/shared/utils.d.ts.map +1 -1
- package/types/themedPrimitives.d.ts +48 -1
- package/types/themedPrimitives.d.ts.map +1 -1
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
// @vitest-environment jsdom
|
|
2
|
+
/**
|
|
3
|
+
* MPO-275: every way into a form's submission shares one guarded execution and
|
|
4
|
+
* one outcome. The routes are a native submit button, implicit Enter in the
|
|
5
|
+
* only field, Button action=submit, the save bar's Save, and Ctrl-S / Cmd-S.
|
|
6
|
+
*/
|
|
7
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
8
|
+
import { act, cleanup, fireEvent, waitFor } from "@testing-library/react";
|
|
9
|
+
import userEvent from "@testing-library/user-event";
|
|
10
|
+
import type { ReactElement } from "react";
|
|
11
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
12
|
+
import { Button } from "../Button";
|
|
13
|
+
import * as saveBarStories from "../ContextualSaveBar/ContextualSaveBar.stories";
|
|
14
|
+
import { Input } from "../fields/Input";
|
|
15
|
+
import { Form, useFormContext } from "./index";
|
|
16
|
+
|
|
17
|
+
afterEach(cleanup);
|
|
18
|
+
|
|
19
|
+
const routes = ["html", "enter", "action", "save", "ctrl-s", "cmd-s"] as const;
|
|
20
|
+
type Route = (typeof routes)[number];
|
|
21
|
+
const saveBarRoutes: readonly Route[] = ["save", "ctrl-s", "cmd-s"];
|
|
22
|
+
|
|
23
|
+
let formState = () => ({ isDirty: false, submissionAttempts: 0 });
|
|
24
|
+
|
|
25
|
+
function StateProbe() {
|
|
26
|
+
const form = useFormContext();
|
|
27
|
+
formState = () => ({
|
|
28
|
+
isDirty: form.state.isDirty,
|
|
29
|
+
submissionAttempts: form.state.submissionAttempts,
|
|
30
|
+
});
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function PathForm({
|
|
35
|
+
route,
|
|
36
|
+
onSubmit,
|
|
37
|
+
onSaved,
|
|
38
|
+
defaultName = "Original",
|
|
39
|
+
required = false,
|
|
40
|
+
}: {
|
|
41
|
+
route: Route;
|
|
42
|
+
onSubmit: (values: Record<string, unknown>) => unknown;
|
|
43
|
+
onSaved?: (values: Record<string, unknown>) => void;
|
|
44
|
+
defaultName?: string;
|
|
45
|
+
required?: boolean;
|
|
46
|
+
}) {
|
|
47
|
+
return (
|
|
48
|
+
<Form
|
|
49
|
+
formOptions={{ defaultValues: { name: defaultName } }}
|
|
50
|
+
onSubmit={onSubmit as never}
|
|
51
|
+
saveBar={{ forceVisible: true, onSaved }}
|
|
52
|
+
>
|
|
53
|
+
<StateProbe />
|
|
54
|
+
<Input name="name" label="Name" required={required} />
|
|
55
|
+
{route === "html" ? <button type="submit">Submit HTML</button> : null}
|
|
56
|
+
<Button action="submit">Submit action</Button>
|
|
57
|
+
</Form>
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
type View = ReturnType<typeof renderWithProviders>;
|
|
62
|
+
|
|
63
|
+
const nameInput = (view: View) => view.getByLabelText(/^Name/) as HTMLInputElement;
|
|
64
|
+
|
|
65
|
+
async function activate(route: Route, view: View) {
|
|
66
|
+
switch (route) {
|
|
67
|
+
case "html":
|
|
68
|
+
await act(async () => fireEvent.click(view.getByRole("button", { name: "Submit HTML" })));
|
|
69
|
+
return;
|
|
70
|
+
case "enter": {
|
|
71
|
+
const user = userEvent.setup();
|
|
72
|
+
await user.type(nameInput(view), "{Enter}");
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
case "action":
|
|
76
|
+
await act(async () => fireEvent.click(view.getByRole("button", { name: "Submit action" })));
|
|
77
|
+
return;
|
|
78
|
+
case "save":
|
|
79
|
+
await act(async () => fireEvent.click(view.getByRole("button", { name: "Save" })));
|
|
80
|
+
return;
|
|
81
|
+
case "ctrl-s":
|
|
82
|
+
await act(async () => fireEvent.keyDown(document, { key: "s", ctrlKey: true }));
|
|
83
|
+
return;
|
|
84
|
+
case "cmd-s":
|
|
85
|
+
await act(async () => fireEvent.keyDown(document, { key: "s", metaKey: true }));
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
describe("every submission path shares one outcome (MPO-275)", () => {
|
|
91
|
+
it.each(routes)(
|
|
92
|
+
"%s: a retry clears the failure while it runs, and a failed retry shows its own",
|
|
93
|
+
async (route) => {
|
|
94
|
+
let rejectRetry!: (error: Error) => void;
|
|
95
|
+
const submit = vi
|
|
96
|
+
.fn()
|
|
97
|
+
.mockRejectedValueOnce(new Error("First refusal."))
|
|
98
|
+
.mockImplementationOnce(
|
|
99
|
+
() =>
|
|
100
|
+
new Promise((_, reject) => {
|
|
101
|
+
rejectRetry = reject;
|
|
102
|
+
}),
|
|
103
|
+
);
|
|
104
|
+
const saved = vi.fn();
|
|
105
|
+
const view = renderWithProviders(
|
|
106
|
+
<PathForm route={route} onSubmit={submit} onSaved={saved} />,
|
|
107
|
+
);
|
|
108
|
+
fireEvent.change(nameInput(view), { target: { value: "Edited" } });
|
|
109
|
+
|
|
110
|
+
await activate(route, view);
|
|
111
|
+
await waitFor(() =>
|
|
112
|
+
expect(view.getByText(/Couldn't save/).textContent).toContain("First refusal."),
|
|
113
|
+
);
|
|
114
|
+
expect(submit).toHaveBeenCalledTimes(1);
|
|
115
|
+
|
|
116
|
+
await activate(route, view);
|
|
117
|
+
await waitFor(() => expect(submit).toHaveBeenCalledTimes(2));
|
|
118
|
+
await waitFor(() => expect(view.queryByText(/First refusal/)).toBeNull());
|
|
119
|
+
|
|
120
|
+
await act(async () => rejectRetry(new Error("Second refusal.")));
|
|
121
|
+
await waitFor(() =>
|
|
122
|
+
expect(view.getByText(/Couldn't save/).textContent).toContain("Second refusal."),
|
|
123
|
+
);
|
|
124
|
+
expect(view.queryByText(/First refusal/)).toBeNull();
|
|
125
|
+
expect(submit).toHaveBeenCalledTimes(2);
|
|
126
|
+
expect(nameInput(view).value).toBe("Edited");
|
|
127
|
+
expect(saved).not.toHaveBeenCalled();
|
|
128
|
+
},
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
it.each(routes)(
|
|
132
|
+
"%s: a validation refusal keeps the field error, the summary and the attempt count",
|
|
133
|
+
async (route) => {
|
|
134
|
+
const submit = vi.fn();
|
|
135
|
+
const saved = vi.fn();
|
|
136
|
+
const view = renderWithProviders(
|
|
137
|
+
<PathForm route={route} onSubmit={submit} onSaved={saved} defaultName="" required />,
|
|
138
|
+
);
|
|
139
|
+
|
|
140
|
+
await activate(route, view);
|
|
141
|
+
await waitFor(() =>
|
|
142
|
+
expect(view.container.querySelector('[data-testid="error-summary"]')?.textContent).toMatch(
|
|
143
|
+
/Name is required/,
|
|
144
|
+
),
|
|
145
|
+
);
|
|
146
|
+
expect(nameInput(view).getAttribute("aria-invalid")).toBe("true");
|
|
147
|
+
expect(formState().submissionAttempts).toBe(1);
|
|
148
|
+
expect(submit).not.toHaveBeenCalled();
|
|
149
|
+
expect(saved).not.toHaveBeenCalled();
|
|
150
|
+
expect(view.queryByText(/Couldn't save/)).toBeNull();
|
|
151
|
+
},
|
|
152
|
+
);
|
|
153
|
+
|
|
154
|
+
it.each(routes)(
|
|
155
|
+
"%s: a success calls the handler once and keeps its path's success policy",
|
|
156
|
+
async (route) => {
|
|
157
|
+
const submit = vi.fn().mockResolvedValue(undefined);
|
|
158
|
+
const saved = vi.fn();
|
|
159
|
+
const view = renderWithProviders(
|
|
160
|
+
<PathForm route={route} onSubmit={submit} onSaved={saved} />,
|
|
161
|
+
);
|
|
162
|
+
fireEvent.change(nameInput(view), { target: { value: "Edited" } });
|
|
163
|
+
|
|
164
|
+
await activate(route, view);
|
|
165
|
+
await waitFor(() => expect(submit).toHaveBeenCalledTimes(1));
|
|
166
|
+
const viaSaveBar = saveBarRoutes.includes(route);
|
|
167
|
+
await waitFor(() => expect(saved).toHaveBeenCalledTimes(viaSaveBar ? 1 : 0));
|
|
168
|
+
expect(formState().isDirty).toBe(!viaSaveBar);
|
|
169
|
+
expect(nameInput(view).value).toBe("Edited");
|
|
170
|
+
expect(view.queryByText(/Couldn't save/)).toBeNull();
|
|
171
|
+
expect(submit).toHaveBeenCalledTimes(1);
|
|
172
|
+
},
|
|
173
|
+
);
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
describe("the SubmissionPaths story counts onSubmit calls (MPO-275)", () => {
|
|
177
|
+
function mountStory() {
|
|
178
|
+
const story = saveBarStories.SubmissionPaths as { render?: () => ReactElement };
|
|
179
|
+
if (!story.render) throw new Error("SubmissionPaths has no render");
|
|
180
|
+
return renderWithProviders(story.render());
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const calls = (view: View) => view.getByTestId("submit-calls").textContent;
|
|
184
|
+
|
|
185
|
+
it("adds exactly one call per activation on every path and shows the same refusal", async () => {
|
|
186
|
+
const view = mountStory();
|
|
187
|
+
expect(calls(view)).toBe("onSubmit calls: 0");
|
|
188
|
+
const user = userEvent.setup();
|
|
189
|
+
|
|
190
|
+
const paths: Array<[string, () => Promise<unknown>]> = [
|
|
191
|
+
["enter", () => user.type(view.getByLabelText("Service name"), "{Enter}")],
|
|
192
|
+
[
|
|
193
|
+
"action",
|
|
194
|
+
() => act(async () => fireEvent.click(view.getByRole("button", { name: "Submit" }))),
|
|
195
|
+
],
|
|
196
|
+
["save", () => act(async () => fireEvent.click(view.getByRole("button", { name: "Save" })))],
|
|
197
|
+
["ctrl-s", () => act(async () => fireEvent.keyDown(document, { key: "s", ctrlKey: true }))],
|
|
198
|
+
["cmd-s", () => act(async () => fireEvent.keyDown(document, { key: "s", metaKey: true }))],
|
|
199
|
+
];
|
|
200
|
+
|
|
201
|
+
let expected = 0;
|
|
202
|
+
for (const [, run] of paths) {
|
|
203
|
+
await run();
|
|
204
|
+
expected += 1;
|
|
205
|
+
await waitFor(() => expect(calls(view)).toBe(`onSubmit calls: ${expected}`));
|
|
206
|
+
await waitFor(() =>
|
|
207
|
+
expect(view.getByText(/Couldn't save/).textContent).toContain(
|
|
208
|
+
"The record changed. Refresh and retry.",
|
|
209
|
+
),
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
expect((view.getByLabelText("Service name") as HTMLInputElement).value).toBe("service-example");
|
|
213
|
+
});
|
|
214
|
+
});
|
package/src/InputParts/index.tsx
CHANGED
|
@@ -29,6 +29,7 @@ import {
|
|
|
29
29
|
ensureFocusVisibleRing,
|
|
30
30
|
FOCUS_RING_CLIPPED_OFFSET,
|
|
31
31
|
FOCUS_RING_HALO_OFFSET,
|
|
32
|
+
useTouchSurface,
|
|
32
33
|
isTouchSurface,
|
|
33
34
|
recipeFamilies,
|
|
34
35
|
resolveGlyphPaint,
|
|
@@ -70,12 +71,14 @@ function useNativeFieldA11yProps() {
|
|
|
70
71
|
const defaultContextValues = {
|
|
71
72
|
size: "$true" as FontSizeTokens,
|
|
72
73
|
scaleIcon: 1,
|
|
74
|
+
touch: !isWeb && isTouchSurface(),
|
|
73
75
|
color: undefined as ColorTokens | string | undefined,
|
|
74
76
|
};
|
|
75
77
|
|
|
76
78
|
export const InputContext = createStyledContext<{
|
|
77
79
|
size: FontSizeTokens;
|
|
78
80
|
scaleIcon: number;
|
|
81
|
+
touch: boolean;
|
|
79
82
|
color?: ColorTokens | string;
|
|
80
83
|
}>(defaultContextValues);
|
|
81
84
|
|
|
@@ -91,8 +94,10 @@ function endCapVariantsFromHeights(heightVariants: Record<string, { height: numb
|
|
|
91
94
|
|
|
92
95
|
const sizeRecipeEndCapVariants = endCapVariantsFromHeights(recipeFamilies.control.heightVariants);
|
|
93
96
|
|
|
94
|
-
function sizeRecipeBoxFallback(val: unknown) {
|
|
95
|
-
const recipe = sizeRecipeForToken(String(val ?? "$true"), {
|
|
97
|
+
function sizeRecipeBoxFallback(val: unknown, extras: { props: { touch?: boolean } }) {
|
|
98
|
+
const recipe = sizeRecipeForToken(String(val ?? "$true"), {
|
|
99
|
+
touch: extras.props.touch ?? (!isWeb && isTouchSurface()),
|
|
100
|
+
});
|
|
96
101
|
return {
|
|
97
102
|
height: recipe.height,
|
|
98
103
|
paddingHorizontal: recipe.paddingHorizontal,
|
|
@@ -100,19 +105,25 @@ function sizeRecipeBoxFallback(val: unknown) {
|
|
|
100
105
|
};
|
|
101
106
|
}
|
|
102
107
|
|
|
103
|
-
function sizeRecipeTypeFallback(val: unknown) {
|
|
108
|
+
function sizeRecipeTypeFallback(val: unknown, extras: { props: { touch?: boolean } }) {
|
|
104
109
|
return {
|
|
105
|
-
fontSize: sizeRecipeForToken(String(val ?? "$true"), {
|
|
110
|
+
fontSize: sizeRecipeForToken(String(val ?? "$true"), {
|
|
111
|
+
touch: extras.props.touch ?? (!isWeb && isTouchSurface()),
|
|
112
|
+
}).fontSize,
|
|
106
113
|
};
|
|
107
114
|
}
|
|
108
115
|
|
|
109
|
-
function sizeRecipeIconFallback(val: unknown) {
|
|
110
|
-
const { iconSize } = sizeRecipeForToken(String(val ?? "$true"), {
|
|
116
|
+
function sizeRecipeIconFallback(val: unknown, extras: { props: { touch?: boolean } }) {
|
|
117
|
+
const { iconSize } = sizeRecipeForToken(String(val ?? "$true"), {
|
|
118
|
+
touch: extras.props.touch ?? (!isWeb && isTouchSurface()),
|
|
119
|
+
});
|
|
111
120
|
return { width: iconSize, height: iconSize };
|
|
112
121
|
}
|
|
113
122
|
|
|
114
|
-
function sizeRecipeEndCapFallback(val: unknown) {
|
|
115
|
-
const { height } = sizeRecipeForToken(String(val ?? "$true"), {
|
|
123
|
+
function sizeRecipeEndCapFallback(val: unknown, extras: { props: { touch?: boolean } }) {
|
|
124
|
+
const { height } = sizeRecipeForToken(String(val ?? "$true"), {
|
|
125
|
+
touch: extras.props.touch ?? (!isWeb && isTouchSurface()),
|
|
126
|
+
});
|
|
116
127
|
return { height, width: height, paddingHorizontal: 0 };
|
|
117
128
|
}
|
|
118
129
|
|
|
@@ -350,6 +361,7 @@ const InputGroupFrame = styled(XGroup, {
|
|
|
350
361
|
...(isWeb ? { className: "mp-composite-ring" } : {}),
|
|
351
362
|
|
|
352
363
|
variants: {
|
|
364
|
+
touch: { true: {}, false: {} },
|
|
353
365
|
unstyled: {
|
|
354
366
|
false: defaultInputGroupStyles,
|
|
355
367
|
},
|
|
@@ -431,6 +443,7 @@ const InputGroupImpl = InputGroupFrame.styleable<{
|
|
|
431
443
|
paddingHorizontal?: unknown;
|
|
432
444
|
};
|
|
433
445
|
const [focused, setFocused] = useState(false);
|
|
446
|
+
const hydrationTouch = useTouchSurface();
|
|
434
447
|
const { knobProps, control, disabledState } = useResolvedKnobs();
|
|
435
448
|
const grouped = useControlGrouped();
|
|
436
449
|
const inTableCell = useIsInTableCell();
|
|
@@ -476,7 +489,7 @@ const InputGroupImpl = InputGroupFrame.styleable<{
|
|
|
476
489
|
});
|
|
477
490
|
const sizeToken = String((props as { size?: unknown }).size ?? knobProps.sizeToken);
|
|
478
491
|
const familyRecipe = sizeRecipeForToken(sizeToken, {
|
|
479
|
-
touch:
|
|
492
|
+
touch: hydrationTouch,
|
|
480
493
|
family: recipeFamily,
|
|
481
494
|
});
|
|
482
495
|
const controlFragment =
|
|
@@ -520,6 +533,7 @@ const InputGroupImpl = InputGroupFrame.styleable<{
|
|
|
520
533
|
onPress,
|
|
521
534
|
disabled,
|
|
522
535
|
<InputGroupFrame
|
|
536
|
+
touch={hydrationTouch}
|
|
523
537
|
ref={forwardedRef}
|
|
524
538
|
borderWidth={0}
|
|
525
539
|
borderRadius={0}
|
|
@@ -559,6 +573,7 @@ const InputGroupImpl = InputGroupFrame.styleable<{
|
|
|
559
573
|
onPress,
|
|
560
574
|
disabled,
|
|
561
575
|
<InputGroupFrame
|
|
576
|
+
touch={hydrationTouch}
|
|
562
577
|
ref={forwardedRef}
|
|
563
578
|
borderWidth={0}
|
|
564
579
|
borderRadius={0}
|
|
@@ -600,6 +615,7 @@ const InputGroupImpl = InputGroupFrame.styleable<{
|
|
|
600
615
|
onPress,
|
|
601
616
|
disabled,
|
|
602
617
|
<InputGroupFrame
|
|
618
|
+
touch={hydrationTouch}
|
|
603
619
|
ref={forwardedRef}
|
|
604
620
|
{...knobProps.body}
|
|
605
621
|
size={knobProps.sizeToken}
|
|
@@ -721,8 +737,10 @@ export function mapInputModeToKeyboardType(inputMode?: string): MappedKeyboardTy
|
|
|
721
737
|
return INPUT_MODE_TO_KEYBOARD[inputMode as keyof typeof INPUT_MODE_TO_KEYBOARD];
|
|
722
738
|
}
|
|
723
739
|
|
|
724
|
-
export const inputSizeVariant: SizeVariantSpreadFunction<any> = (val = "$true") => {
|
|
725
|
-
const recipe = sizeRecipeForToken(String(val || "$true"), {
|
|
740
|
+
export const inputSizeVariant: SizeVariantSpreadFunction<any> = (val = "$true", extras) => {
|
|
741
|
+
const recipe = sizeRecipeForToken(String(val || "$true"), {
|
|
742
|
+
touch: extras?.props.touch ?? (!isWeb && isTouchSurface()),
|
|
743
|
+
});
|
|
726
744
|
return {
|
|
727
745
|
fontSize: recipe.fontSize,
|
|
728
746
|
// LC-84: Area is chromeless — inset lives on Input.Box / ThemedTextArea.
|
|
@@ -759,6 +777,7 @@ const InputFrame = styled(TInput, {
|
|
|
759
777
|
outlineColor: "transparent",
|
|
760
778
|
},
|
|
761
779
|
variants: {
|
|
780
|
+
touch: { true: {}, false: {} },
|
|
762
781
|
size: {
|
|
763
782
|
...(recipeFamilies.control.typeVariants ?? sizeRecipeTypeVariants),
|
|
764
783
|
"...size": sizeRecipeTypeFallback,
|
|
@@ -776,6 +795,7 @@ const InputAreaImpl = InputFrame.styleable<{
|
|
|
776
795
|
onChangeText?: (text: string) => void;
|
|
777
796
|
}>((areaProps, ref) => {
|
|
778
797
|
const { setFocused } = FocusContext.useStyledContext();
|
|
798
|
+
const hydrationTouch = useTouchSurface();
|
|
779
799
|
const { size } = InputContext.useStyledContext();
|
|
780
800
|
const {
|
|
781
801
|
secureTextEntry,
|
|
@@ -848,6 +868,7 @@ const InputAreaImpl = InputFrame.styleable<{
|
|
|
848
868
|
{...(inTableCell ? { minWidth: 0 } : undefined)}
|
|
849
869
|
>
|
|
850
870
|
<InputFrame
|
|
871
|
+
touch={hydrationTouch}
|
|
851
872
|
aria-describedby={fieldDescribedBy}
|
|
852
873
|
{...nativeA11yProps}
|
|
853
874
|
ref={ref}
|
|
@@ -930,6 +951,7 @@ const InputSection = styled(XGroup.Item, {
|
|
|
930
951
|
alignItems: "center",
|
|
931
952
|
context: InputContext,
|
|
932
953
|
variants: {
|
|
954
|
+
touch: { true: {}, false: {} },
|
|
933
955
|
scaleIcon: {
|
|
934
956
|
":number": {} as any,
|
|
935
957
|
},
|
|
@@ -956,6 +978,7 @@ const InputButton = styled(TButton, {
|
|
|
956
978
|
},
|
|
957
979
|
|
|
958
980
|
variants: {
|
|
981
|
+
touch: { true: {}, false: {} },
|
|
959
982
|
scaleIcon: {
|
|
960
983
|
":number": {} as any,
|
|
961
984
|
},
|
|
@@ -1000,6 +1023,7 @@ const InputGlyphButton = styled(View, {
|
|
|
1000
1023
|
focusVisibleStyle: { outlineWidth: 0 },
|
|
1001
1024
|
|
|
1002
1025
|
variants: {
|
|
1026
|
+
touch: { true: {}, false: {} },
|
|
1003
1027
|
scaleIcon: {
|
|
1004
1028
|
":number": {} as any,
|
|
1005
1029
|
},
|
|
@@ -1027,6 +1051,7 @@ const InputButtonImpl = InputButton.styleable<{ glyphRing?: boolean }>((buttonPr
|
|
|
1027
1051
|
className?: string;
|
|
1028
1052
|
};
|
|
1029
1053
|
const { size: contextSize, color: contextColor } = InputContext.useStyledContext();
|
|
1054
|
+
const hydrationTouch = useTouchSurface();
|
|
1030
1055
|
const { knobProps } = useResolvedKnobs();
|
|
1031
1056
|
const theme = useTheme();
|
|
1032
1057
|
const size = (sizeProp ?? contextSize) as FontSizeTokens;
|
|
@@ -1068,11 +1093,12 @@ const InputButtonImpl = InputButton.styleable<{ glyphRing?: boolean }>((buttonPr
|
|
|
1068
1093
|
// knob's: a $2 field inside a $4 knob would otherwise ship a 44px stop
|
|
1069
1094
|
// on a 32px frame. LC-77 keeps the sub-floor case pressable via the
|
|
1070
1095
|
// caller's hitSlop, never by inflating the cap.
|
|
1071
|
-
const square = sizeRecipeForToken(String(size ?? "$true"), { touch:
|
|
1096
|
+
const square = sizeRecipeForToken(String(size ?? "$true"), { touch: hydrationTouch }).height;
|
|
1072
1097
|
const disabled = (props as { disabled?: boolean }).disabled === true;
|
|
1073
1098
|
if (isWeb) ensureCompositeFocusRing();
|
|
1074
1099
|
return (
|
|
1075
1100
|
<InputGlyphButton
|
|
1101
|
+
touch={hydrationTouch}
|
|
1076
1102
|
ref={ref as never}
|
|
1077
1103
|
role="button"
|
|
1078
1104
|
size={size}
|
|
@@ -1104,6 +1130,7 @@ const InputButtonImpl = InputButton.styleable<{ glyphRing?: boolean }>((buttonPr
|
|
|
1104
1130
|
const square = knobProps.control.height;
|
|
1105
1131
|
return (
|
|
1106
1132
|
<InputButton
|
|
1133
|
+
touch={hydrationTouch}
|
|
1107
1134
|
ref={decorativeRef}
|
|
1108
1135
|
size={size}
|
|
1109
1136
|
height={square}
|
|
@@ -1134,6 +1161,7 @@ export const InputIconFrame = styled(View, {
|
|
|
1134
1161
|
context: InputContext,
|
|
1135
1162
|
|
|
1136
1163
|
variants: {
|
|
1164
|
+
touch: { true: {}, false: {} },
|
|
1137
1165
|
scaleIcon: {
|
|
1138
1166
|
":number": {} as any,
|
|
1139
1167
|
},
|
|
@@ -1154,6 +1182,7 @@ const InputIcon = InputIconFrame.styleable<{
|
|
|
1154
1182
|
adornment?: "leading" | "trailing";
|
|
1155
1183
|
}>((iconProps, ref) => {
|
|
1156
1184
|
const { children, color: colorProp, scaleIcon: scaleIconProp, ...props } = iconProps;
|
|
1185
|
+
const hydrationTouch = useTouchSurface();
|
|
1157
1186
|
const { size = "$true", color: contextColor, scaleIcon = 1 } = InputContext.useStyledContext();
|
|
1158
1187
|
const { knobProps } = useResolvedKnobs();
|
|
1159
1188
|
const resolvedScaleIcon = scaleIconProp ?? scaleIcon;
|
|
@@ -1170,6 +1199,7 @@ const InputIcon = InputIconFrame.styleable<{
|
|
|
1170
1199
|
const getThemedIcon = useGetThemedIcon({ size: iconSize, color: color as any });
|
|
1171
1200
|
return (
|
|
1172
1201
|
<InputIconFrame
|
|
1202
|
+
touch={hydrationTouch}
|
|
1173
1203
|
ref={ref}
|
|
1174
1204
|
size={size}
|
|
1175
1205
|
{...knobProps.controlIcon}
|
|
@@ -1192,6 +1222,7 @@ export const InputContainerFrame = styled(View, {
|
|
|
1192
1222
|
flexDirection: "column",
|
|
1193
1223
|
|
|
1194
1224
|
variants: {
|
|
1225
|
+
touch: { true: {}, false: {} },
|
|
1195
1226
|
size: {
|
|
1196
1227
|
// Size is shared with the child parts; layout spacing belongs to space.
|
|
1197
1228
|
"...size": () => ({}),
|
|
@@ -1213,10 +1244,12 @@ export const InputContainerFrame = styled(View, {
|
|
|
1213
1244
|
});
|
|
1214
1245
|
|
|
1215
1246
|
const InputContainerImpl = InputContainerFrame.styleable((props, forwardedRef) => {
|
|
1247
|
+
const hydrationTouch = useTouchSurface();
|
|
1216
1248
|
const { knobProps } = useResolvedKnobs();
|
|
1217
1249
|
const inTableCell = useIsInTableCell();
|
|
1218
1250
|
return (
|
|
1219
1251
|
<InputContainerFrame
|
|
1252
|
+
touch={hydrationTouch}
|
|
1220
1253
|
ref={forwardedRef}
|
|
1221
1254
|
size={knobProps.sizeToken}
|
|
1222
1255
|
{...knobProps.body}
|
|
@@ -1238,6 +1271,7 @@ const InputContainerImpl = InputContainerFrame.styleable((props, forwardedRef) =
|
|
|
1238
1271
|
const InputLabelFrame = styled(Label, {
|
|
1239
1272
|
context: InputContext,
|
|
1240
1273
|
variants: {
|
|
1274
|
+
touch: { true: {}, false: {} },
|
|
1241
1275
|
scaleIcon: {
|
|
1242
1276
|
":number": {} as any,
|
|
1243
1277
|
},
|
|
@@ -1263,6 +1297,7 @@ const InputInfoFrame = styled(Text, {
|
|
|
1263
1297
|
color: formCommonColors.text,
|
|
1264
1298
|
|
|
1265
1299
|
variants: {
|
|
1300
|
+
touch: { true: {}, false: {} },
|
|
1266
1301
|
scaleIcon: {
|
|
1267
1302
|
":number": {} as any,
|
|
1268
1303
|
},
|
|
@@ -1328,6 +1363,7 @@ const InputXGroup = styled(XGroup, {
|
|
|
1328
1363
|
context: InputContext,
|
|
1329
1364
|
|
|
1330
1365
|
variants: {
|
|
1366
|
+
touch: { true: {}, false: {} },
|
|
1331
1367
|
scaleIcon: {
|
|
1332
1368
|
":number": {} as any,
|
|
1333
1369
|
},
|
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from "@storybook/react-native-web-vite";
|
|
2
|
-
import {
|
|
2
|
+
import { YStack } from "tamagui";
|
|
3
|
+
import { Input as InputParts } from "../InputParts";
|
|
3
4
|
import { Label } from "./index";
|
|
4
5
|
|
|
6
|
+
/**
|
|
7
|
+
* The house Input chrome without the field's own label: the Label under test
|
|
8
|
+
* is the one above it. The `Input` field brings its own label, so it cannot
|
|
9
|
+
* stand here.
|
|
10
|
+
*/
|
|
11
|
+
function Control({ disabled, ...area }: { id: string; placeholder?: string; disabled?: boolean }) {
|
|
12
|
+
return (
|
|
13
|
+
<InputParts>
|
|
14
|
+
<InputParts.Box disabled={disabled}>
|
|
15
|
+
<InputParts.Area disabled={disabled} {...area} />
|
|
16
|
+
</InputParts.Box>
|
|
17
|
+
</InputParts>
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
|
|
5
21
|
const meta: Meta<typeof Label> = {
|
|
6
22
|
title: "Forms/Label",
|
|
7
23
|
component: Label,
|
|
@@ -34,7 +50,7 @@ export const WithControl: Story = {
|
|
|
34
50
|
<Label htmlFor="label-story-input" required>
|
|
35
51
|
Email address
|
|
36
52
|
</Label>
|
|
37
|
-
<
|
|
53
|
+
<Control id="label-story-input" placeholder="you@example.com" />
|
|
38
54
|
</YStack>
|
|
39
55
|
),
|
|
40
56
|
};
|
|
@@ -46,13 +62,13 @@ export const RequiredAndOptional: Story = {
|
|
|
46
62
|
<Label htmlFor="label-required" required>
|
|
47
63
|
Email address
|
|
48
64
|
</Label>
|
|
49
|
-
<
|
|
65
|
+
<Control id="label-required" />
|
|
50
66
|
</YStack>
|
|
51
67
|
<YStack gap="$1.5">
|
|
52
68
|
<Label htmlFor="label-optional" required={false} requiredMarking="optional">
|
|
53
69
|
Nickname
|
|
54
70
|
</Label>
|
|
55
|
-
<
|
|
71
|
+
<Control id="label-optional" />
|
|
56
72
|
</YStack>
|
|
57
73
|
</YStack>
|
|
58
74
|
),
|
|
@@ -64,7 +80,7 @@ export const ErrorState: Story = {
|
|
|
64
80
|
<Label htmlFor="label-error" required error>
|
|
65
81
|
Email address
|
|
66
82
|
</Label>
|
|
67
|
-
<
|
|
83
|
+
<Control id="label-error" />
|
|
68
84
|
</YStack>
|
|
69
85
|
),
|
|
70
86
|
};
|
|
@@ -75,7 +91,7 @@ export const Disabled: Story = {
|
|
|
75
91
|
<Label htmlFor="label-disabled" disabled>
|
|
76
92
|
Email address
|
|
77
93
|
</Label>
|
|
78
|
-
<
|
|
94
|
+
<Control id="label-disabled" disabled />
|
|
79
95
|
</YStack>
|
|
80
96
|
),
|
|
81
97
|
};
|
|
@@ -86,7 +102,7 @@ export const AsPageHeading: Story = {
|
|
|
86
102
|
<Label htmlFor="label-heading" asPageHeading>
|
|
87
103
|
Event name
|
|
88
104
|
</Label>
|
|
89
|
-
<
|
|
105
|
+
<Control id="label-heading" />
|
|
90
106
|
</YStack>
|
|
91
107
|
),
|
|
92
108
|
};
|
|
@@ -97,7 +113,7 @@ export const Hidden: Story = {
|
|
|
97
113
|
<Label htmlFor="label-hidden" hidden>
|
|
98
114
|
Search
|
|
99
115
|
</Label>
|
|
100
|
-
<
|
|
116
|
+
<Control id="label-hidden" placeholder="Search" />
|
|
101
117
|
</YStack>
|
|
102
118
|
),
|
|
103
119
|
};
|
|
@@ -107,18 +123,18 @@ export const EdgeCases: Story = {
|
|
|
107
123
|
<YStack gap="$4" maxWidth={360}>
|
|
108
124
|
<YStack gap="$1.5">
|
|
109
125
|
<Label htmlFor="label-empty">{""}</Label>
|
|
110
|
-
<
|
|
126
|
+
<Control id="label-empty" placeholder="empty label above" />
|
|
111
127
|
</YStack>
|
|
112
128
|
<YStack gap="$1.5">
|
|
113
129
|
<Label htmlFor="label-long">
|
|
114
130
|
This is an extremely long label that keeps going and going to check wrapping behaviour of
|
|
115
131
|
label text over multiple lines without breaking the layout of the associated control
|
|
116
132
|
</Label>
|
|
117
|
-
<
|
|
133
|
+
<Control id="label-long" placeholder="long label above" />
|
|
118
134
|
</YStack>
|
|
119
135
|
<YStack gap="$1.5">
|
|
120
136
|
<Label htmlFor="label-rtl">تسمية باللغة العربية</Label>
|
|
121
|
-
<
|
|
137
|
+
<Control id="label-rtl" placeholder="rtl label above" />
|
|
122
138
|
</YStack>
|
|
123
139
|
</YStack>
|
|
124
140
|
),
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { cleanup } from "@testing-library/react";
|
|
2
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
3
|
+
import { Preset } from "@multiplatform.one/theme";
|
|
4
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
5
|
+
import { Skeleton } from "./index";
|
|
6
|
+
|
|
7
|
+
afterEach(cleanup);
|
|
8
|
+
|
|
9
|
+
function textBoneRadius(borderRadius: "none" | "small" | "large" | "full") {
|
|
10
|
+
const { container } = renderWithProviders(
|
|
11
|
+
<Preset overrides={{ borderRadius }}>
|
|
12
|
+
<Skeleton variant="text" width={120} />
|
|
13
|
+
</Preset>,
|
|
14
|
+
);
|
|
15
|
+
const bone = container.querySelector(".is_Skeleton") as HTMLElement;
|
|
16
|
+
const atoms = String(bone.className)
|
|
17
|
+
.split(" ")
|
|
18
|
+
.filter((c) => c.startsWith("_btlr-"));
|
|
19
|
+
cleanup();
|
|
20
|
+
return atoms;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
describe("Skeleton text bones ride DEFAULT (knobs-enumerated Part 2b, MPO-56)", () => {
|
|
24
|
+
it("takes the token at every stop, square at none", () => {
|
|
25
|
+
expect(textBoneRadius("none")).toEqual(["_btlr-t-radius-0"]);
|
|
26
|
+
expect(textBoneRadius("small")).toEqual(["_btlr-t-radius-2"]);
|
|
27
|
+
expect(textBoneRadius("large")).toEqual(["_btlr-t-radius-6"]);
|
|
28
|
+
expect(textBoneRadius("full")).toEqual(["_btlr-t-radius-12"]);
|
|
29
|
+
});
|
|
30
|
+
});
|
package/src/Skeleton/index.tsx
CHANGED
|
@@ -109,14 +109,11 @@ export function Skeleton({
|
|
|
109
109
|
// Radius only — a skeleton is a flat blob, it never draws the knob's border.
|
|
110
110
|
// Consumers that clamp (Checkbox/Radio/Switch) pass an explicit borderRadius
|
|
111
111
|
// which wins via ...props below.
|
|
112
|
-
// Text lines
|
|
113
|
-
//
|
|
114
|
-
|
|
115
|
-
{...(variant === "rounded"
|
|
112
|
+
// Text lines and rounded blocks ride DEFAULT (knobs-enumerated Part 2b,
|
|
113
|
+
// MPO-56): the token at every stop, the paint capping at h/2.
|
|
114
|
+
{...(variant === "rounded" || variant === "text"
|
|
116
115
|
? { borderRadius: knobProps.borderRadius.borderRadius }
|
|
117
|
-
:
|
|
118
|
-
? { borderRadius: 0 }
|
|
119
|
-
: undefined)}
|
|
116
|
+
: undefined)}
|
|
120
117
|
// R-PILL (spec Skeleton "circle"): the circular variant stays 1:1 and
|
|
121
118
|
// round at every radius value, so it declares the class the
|
|
122
119
|
// `radius:none` sweep licenses it under (D-09 / LC-60).
|
package/src/Wheel/Wheel.spec.tsx
CHANGED
|
@@ -7,7 +7,7 @@ import { Wheel } from "./index";
|
|
|
7
7
|
afterEach(cleanup);
|
|
8
8
|
|
|
9
9
|
describe("Wheel contrast contract", () => {
|
|
10
|
-
it("
|
|
10
|
+
it("keeps the selected row on the body weight and rounding on the selection band", () => {
|
|
11
11
|
renderWithProviders(
|
|
12
12
|
<Preset overrides={{ borderRadius: "full" }}>
|
|
13
13
|
<Wheel items={[1, 2, 3, 4, 5]} value={3} visibleItems={5} />
|
|
@@ -15,8 +15,15 @@ describe("Wheel contrast contract", () => {
|
|
|
15
15
|
);
|
|
16
16
|
const wheel = screen.getByTestId("wheel");
|
|
17
17
|
const selected = wheel.querySelector('[data-selected="true"]')?.firstElementChild;
|
|
18
|
+
const idle = wheel.querySelector(
|
|
19
|
+
'[data-testid="wheel-item"]:not([data-selected="true"])',
|
|
20
|
+
)?.firstElementChild;
|
|
18
21
|
expect(selected).toBeTruthy();
|
|
19
|
-
expect(
|
|
22
|
+
expect(idle).toBeTruthy();
|
|
23
|
+
expect(getComputedStyle(selected as Element).fontWeight).toBe("400");
|
|
24
|
+
expect(getComputedStyle(selected as Element).fontWeight).toBe(
|
|
25
|
+
getComputedStyle(idle as Element).fontWeight,
|
|
26
|
+
);
|
|
20
27
|
expect(["", "0px"]).toContain(getComputedStyle(wheel).borderTopLeftRadius);
|
|
21
28
|
expect(getComputedStyle(screen.getByTestId("wheel-selection")).borderStartStartRadius).not.toBe(
|
|
22
29
|
"0px",
|
package/src/Wheel/index.tsx
CHANGED
|
@@ -847,7 +847,6 @@ export function Wheel<T = string | number>({
|
|
|
847
847
|
<Text
|
|
848
848
|
{...knobProps.body}
|
|
849
849
|
fontSize={size}
|
|
850
|
-
fontWeight={isSelected && !disabled ? "bold" : knobProps.textWeight.fontWeight}
|
|
851
850
|
color={itemColor(isSelected)}
|
|
852
851
|
numberOfLines={1}
|
|
853
852
|
ellipsizeMode="tail"
|
|
@@ -865,7 +864,6 @@ export function Wheel<T = string | number>({
|
|
|
865
864
|
width={flex ? "100%" : columnWidth}
|
|
866
865
|
minWidth={flex ? 0 : columnWidth}
|
|
867
866
|
flex={flex}
|
|
868
|
-
borderRadius={0}
|
|
869
867
|
data-testid="wheel"
|
|
870
868
|
data-disabled={disabled ? true : undefined}
|
|
871
869
|
aria-disabled={disabled || undefined}
|