@multiplatform.one/forms 7.34.4 → 7.36.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.cjs +26 -43
- package/dist/cjs/AdaptivePopup/index.native.js +26 -47
- package/dist/cjs/AdaptivePopup/index.native.js.map +1 -1
- package/dist/cjs/Button/index.cjs +96 -61
- package/dist/cjs/Button/index.native.js +104 -64
- package/dist/cjs/Button/index.native.js.map +1 -1
- package/dist/cjs/Chip/index.cjs +9 -3
- package/dist/cjs/Chip/index.native.js +9 -3
- package/dist/cjs/Chip/index.native.js.map +1 -1
- package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.cjs +6 -31
- package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js +6 -31
- package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
- package/dist/cjs/ContextualSaveBar/index.cjs +5 -4
- package/dist/cjs/ContextualSaveBar/index.native.js +5 -4
- package/dist/cjs/ContextualSaveBar/index.native.js.map +1 -1
- package/dist/cjs/ControlGroup/index.cjs +12 -11
- package/dist/cjs/ControlGroup/index.native.js +12 -11
- package/dist/cjs/ControlGroup/index.native.js.map +1 -1
- package/dist/cjs/DescriptionList/index.cjs +17 -21
- package/dist/cjs/DescriptionList/index.native.js +17 -21
- package/dist/cjs/DescriptionList/index.native.js.map +1 -1
- package/dist/cjs/FieldDisplay/index.cjs +5 -8
- package/dist/cjs/FieldDisplay/index.native.js +6 -9
- package/dist/cjs/FieldDisplay/index.native.js.map +1 -1
- package/dist/cjs/FieldGroup.cjs +4 -15
- package/dist/cjs/FieldGroup.native.js +4 -15
- package/dist/cjs/FieldGroup.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/index.cjs +80 -22
- package/dist/cjs/FloatingPanel/index.native.js +44 -20
- package/dist/cjs/FloatingPanel/index.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/useFloatingPanel.cjs +31 -17
- package/dist/cjs/FloatingPanel/useFloatingPanel.native.js +36 -16
- package/dist/cjs/FloatingPanel/useFloatingPanel.native.js.map +1 -1
- package/dist/cjs/Form/index.cjs +9 -13
- package/dist/cjs/Form/index.native.js +12 -13
- package/dist/cjs/Form/index.native.js.map +1 -1
- package/dist/cjs/FormGrid.cjs +7 -16
- package/dist/cjs/FormGrid.native.js +7 -16
- package/dist/cjs/FormGrid.native.js.map +1 -1
- package/dist/cjs/FormSection.cjs +4 -9
- package/dist/cjs/FormSection.native.js +4 -9
- package/dist/cjs/FormSection.native.js.map +1 -1
- package/dist/cjs/InputParts/index.cjs +53 -71
- package/dist/cjs/InputParts/index.native.js +54 -73
- package/dist/cjs/InputParts/index.native.js.map +1 -1
- package/dist/cjs/Label/index.cjs +0 -1
- package/dist/cjs/Label/index.native.js +0 -1
- package/dist/cjs/Label/index.native.js.map +1 -1
- package/dist/cjs/MediaPicker/base64.cjs +45 -0
- package/dist/cjs/MediaPicker/base64.native.js +48 -0
- package/dist/cjs/MediaPicker/base64.native.js.map +1 -0
- package/dist/cjs/MediaPicker/payload.cjs +61 -0
- package/dist/cjs/MediaPicker/payload.native.js +64 -0
- package/dist/cjs/MediaPicker/payload.native.js.map +1 -0
- package/dist/cjs/MediaPicker/pickMedia.cjs +134 -0
- package/dist/cjs/MediaPicker/pickMedia.native.js +97 -0
- package/dist/cjs/MediaPicker/pickMedia.native.js.map +1 -0
- package/dist/cjs/MediaPicker/types.cjs +39 -0
- package/dist/cjs/MediaPicker/types.native.js +162 -0
- package/dist/cjs/MediaPicker/types.native.js.map +1 -0
- package/dist/cjs/MediaPicker/useMediaPicker.cjs +57 -0
- package/dist/cjs/MediaPicker/useMediaPicker.native.js +61 -0
- package/dist/cjs/MediaPicker/useMediaPicker.native.js.map +1 -0
- package/dist/cjs/Skeleton/index.cjs +124 -42
- package/dist/cjs/Skeleton/index.native.js +128 -50
- package/dist/cjs/Skeleton/index.native.js.map +1 -1
- package/dist/cjs/Spinner/index.cjs +2 -2
- package/dist/cjs/Spinner/index.native.js +2 -2
- package/dist/cjs/Spinner/index.native.js.map +1 -1
- package/dist/cjs/Wheel/index.cjs +10 -20
- package/dist/cjs/Wheel/index.native.js +12 -22
- package/dist/cjs/Wheel/index.native.js.map +1 -1
- package/dist/cjs/fieldLayout.cjs +18 -7
- package/dist/cjs/fieldLayout.native.js +20 -7
- package/dist/cjs/fieldLayout.native.js.map +1 -1
- package/dist/cjs/fields/Barcode/BarcodeScanner.cjs +2 -3
- package/dist/cjs/fields/Barcode/BarcodeScanner.native.js +2 -3
- package/dist/cjs/fields/Barcode/BarcodeScanner.native.js.map +1 -1
- package/dist/cjs/fields/Barcode/index.cjs +7 -11
- package/dist/cjs/fields/Barcode/index.native.js +7 -11
- package/dist/cjs/fields/Barcode/index.native.js.map +1 -1
- package/dist/cjs/fields/Barcode/scannerTypes.cjs +3 -2
- package/dist/cjs/fields/Barcode/scannerTypes.native.js +3 -2
- package/dist/cjs/fields/Barcode/scannerTypes.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/Checkbox.cjs +10 -18
- package/dist/cjs/fields/Checkbox/Checkbox.native.js +10 -18
- package/dist/cjs/fields/Checkbox/Checkbox.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/CheckboxBox.cjs +4 -2
- package/dist/cjs/fields/Checkbox/CheckboxBox.native.js +4 -2
- package/dist/cjs/fields/Checkbox/CheckboxBox.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/CheckboxCard.cjs +11 -21
- package/dist/cjs/fields/Checkbox/CheckboxCard.native.js +11 -22
- package/dist/cjs/fields/Checkbox/CheckboxCard.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/CheckboxGroup.cjs +3 -6
- package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js +4 -11
- package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/index.cjs +12 -11
- package/dist/cjs/fields/Checkbox/index.native.js +12 -11
- package/dist/cjs/fields/Checkbox/index.native.js.map +1 -1
- package/dist/cjs/fields/ColorPicker/index.cjs +14 -13
- package/dist/cjs/fields/ColorPicker/index.native.js +16 -15
- package/dist/cjs/fields/ColorPicker/index.native.js.map +1 -1
- package/dist/cjs/fields/ColorPicker/parts.cjs +8 -12
- package/dist/cjs/fields/ColorPicker/parts.native.js +10 -14
- package/dist/cjs/fields/ColorPicker/parts.native.js.map +1 -1
- package/dist/cjs/fields/Combobox/index.cjs +16 -18
- package/dist/cjs/fields/Combobox/index.native.js +17 -19
- package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/Calendar.cjs +3 -2
- package/dist/cjs/fields/DatePicker/Calendar.native.js +3 -2
- package/dist/cjs/fields/DatePicker/Calendar.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/DateRangePicker.cjs +8 -5
- package/dist/cjs/fields/DatePicker/DateRangePicker.native.js +8 -5
- package/dist/cjs/fields/DatePicker/DateRangePicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.cjs +7 -4
- package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js +7 -4
- package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/DatetimePicker.native.js +7 -4
- package/dist/cjs/fields/DatePicker/DatetimePicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/MonthPicker.cjs +11 -7
- package/dist/cjs/fields/DatePicker/MonthPicker.native.js +11 -7
- package/dist/cjs/fields/DatePicker/MonthPicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/MultiDatePicker.cjs +7 -4
- package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js +7 -4
- package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/catalog.cjs +7 -4
- package/dist/cjs/fields/DatePicker/catalog.native.js +7 -4
- package/dist/cjs/fields/DatePicker/catalog.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/index.native.js +7 -4
- package/dist/cjs/fields/DatePicker/index.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/parts.cjs +19 -24
- package/dist/cjs/fields/DatePicker/parts.native.js +19 -24
- package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/cjs/fields/Duration/index.cjs +5 -6
- package/dist/cjs/fields/Duration/index.native.js +5 -6
- package/dist/cjs/fields/Duration/index.native.js.map +1 -1
- package/dist/cjs/fields/FileUpload/index.cjs +55 -13
- package/dist/cjs/fields/FileUpload/index.native.js +57 -13
- package/dist/cjs/fields/FileUpload/index.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/index.cjs +4 -13
- package/dist/cjs/fields/Geolocation/index.native.js +4 -13
- package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
- package/dist/cjs/fields/Icon/index.cjs +6 -8
- package/dist/cjs/fields/Icon/index.native.js +7 -10
- package/dist/cjs/fields/Icon/index.native.js.map +1 -1
- package/dist/cjs/fields/ImageField/index.cjs +8 -9
- package/dist/cjs/fields/ImageField/index.native.js +8 -9
- package/dist/cjs/fields/ImageField/index.native.js.map +1 -1
- package/dist/cjs/fields/Input/index.cjs +5 -5
- package/dist/cjs/fields/Input/index.native.js +5 -5
- package/dist/cjs/fields/Input/index.native.js.map +1 -1
- package/dist/cjs/fields/MentionInput/index.cjs +3 -5
- package/dist/cjs/fields/MentionInput/index.native.js +3 -5
- package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
- package/dist/cjs/fields/OTPInput/index.cjs +2 -4
- package/dist/cjs/fields/OTPInput/index.native.js +2 -4
- package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
- package/dist/cjs/fields/PhoneInput/index.cjs +1 -3
- package/dist/cjs/fields/PhoneInput/index.native.js +1 -3
- package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/cjs/fields/Progress/index.cjs +15 -20
- package/dist/cjs/fields/Progress/index.native.js +15 -20
- package/dist/cjs/fields/Progress/index.native.js.map +1 -1
- package/dist/cjs/fields/RadioGroup/index.cjs +7 -10
- package/dist/cjs/fields/RadioGroup/index.native.js +8 -15
- package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/cjs/fields/Rating/index.cjs +17 -29
- package/dist/cjs/fields/Rating/index.native.js +18 -30
- package/dist/cjs/fields/Rating/index.native.js.map +1 -1
- package/dist/cjs/fields/SearchInput/index.cjs +18 -11
- package/dist/cjs/fields/SearchInput/index.native.js +21 -9
- package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
- package/dist/cjs/fields/Select/index.cjs +12 -14
- package/dist/cjs/fields/Select/index.native.js +15 -17
- package/dist/cjs/fields/Select/index.native.js.map +1 -1
- package/dist/cjs/fields/Signature/index.cjs +3 -5
- package/dist/cjs/fields/Signature/index.native.js +3 -5
- package/dist/cjs/fields/Signature/index.native.js.map +1 -1
- package/dist/cjs/fields/Slider/index.cjs +60 -44
- package/dist/cjs/fields/Slider/index.native.js +76 -59
- package/dist/cjs/fields/Slider/index.native.js.map +1 -1
- package/dist/cjs/fields/Stepper/index.cjs +48 -27
- package/dist/cjs/fields/Stepper/index.native.js +53 -28
- package/dist/cjs/fields/Stepper/index.native.js.map +1 -1
- package/dist/cjs/fields/Switch/footprint.cjs +9 -7
- package/dist/cjs/fields/Switch/footprint.native.js +9 -7
- package/dist/cjs/fields/Switch/footprint.native.js.map +1 -1
- package/dist/cjs/fields/Switch/index.cjs +87 -109
- package/dist/cjs/fields/Switch/index.native.js +92 -112
- package/dist/cjs/fields/Switch/index.native.js.map +1 -1
- package/dist/cjs/fields/TextArea/index.cjs +5 -8
- package/dist/cjs/fields/TextArea/index.native.js +5 -8
- package/dist/cjs/fields/TextArea/index.native.js.map +1 -1
- package/dist/cjs/fields/TimePicker/catalog.cjs +8 -5
- package/dist/cjs/fields/TimePicker/catalog.native.js +8 -5
- package/dist/cjs/fields/TimePicker/catalog.native.js.map +1 -1
- package/dist/cjs/fields/TimePicker/index.native.js +8 -5
- package/dist/cjs/fields/TimePicker/index.native.js.map +1 -1
- package/dist/cjs/fields/TimePicker/parts.cjs +1 -5
- package/dist/cjs/fields/TimePicker/parts.native.js +1 -5
- package/dist/cjs/fields/TimePicker/parts.native.js.map +1 -1
- package/dist/cjs/fields/TimeRangeScrubber/index.cjs +17 -15
- package/dist/cjs/fields/TimeRangeScrubber/index.native.js +17 -15
- package/dist/cjs/fields/TimeRangeScrubber/index.native.js.map +1 -1
- package/dist/cjs/fields/ToggleGroup/index.cjs +24 -34
- package/dist/cjs/fields/ToggleGroup/index.native.js +26 -36
- package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
- package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.cjs +4 -4
- package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js +5 -5
- package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
- package/dist/cjs/formSpacing.cjs +1 -1
- package/dist/cjs/formSpacing.native.js +1 -1
- package/dist/cjs/formSpacing.native.js.map +1 -1
- package/dist/cjs/index.cjs +8 -1
- package/dist/cjs/index.native.js +7 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/shared/TimeColumn.cjs +1 -3
- package/dist/cjs/shared/TimeColumn.native.js +1 -3
- package/dist/cjs/shared/TimeColumn.native.js.map +1 -1
- package/dist/cjs/shared/colorRamps.cjs +17 -15
- package/dist/cjs/shared/colorRamps.native.js +17 -15
- package/dist/cjs/shared/colorRamps.native.js.map +1 -1
- package/dist/cjs/shared/floatingList.cjs +4 -6
- package/dist/cjs/shared/floatingList.native.js +4 -6
- package/dist/cjs/shared/floatingList.native.js.map +1 -1
- package/dist/cjs/shared/focusManagement.cjs +15 -5
- package/dist/cjs/shared/focusManagement.native.js +15 -5
- package/dist/cjs/shared/focusManagement.native.js.map +1 -1
- package/dist/cjs/shared/instantMotion.cjs +31 -0
- package/dist/cjs/shared/instantMotion.native.js +35 -0
- package/dist/cjs/shared/instantMotion.native.js.map +1 -0
- package/dist/cjs/shared/utils.cjs +11 -11
- package/dist/cjs/shared/utils.native.js +12 -12
- package/dist/cjs/shared/utils.native.js.map +1 -1
- package/dist/cjs/themedPrimitives.cjs +1 -1
- package/dist/cjs/themedPrimitives.native.js +1 -1
- package/dist/cjs/themedPrimitives.native.js.map +1 -1
- package/dist/esm/AdaptivePopup/index.mjs +22 -39
- package/dist/esm/AdaptivePopup/index.mjs.map +1 -1
- package/dist/esm/AdaptivePopup/index.native.js +22 -43
- package/dist/esm/AdaptivePopup/index.native.js.map +1 -1
- package/dist/esm/Button/index.mjs +76 -40
- package/dist/esm/Button/index.mjs.map +1 -1
- package/dist/esm/Button/index.native.js +84 -43
- package/dist/esm/Button/index.native.js.map +1 -1
- package/dist/esm/Chip/index.mjs +10 -4
- package/dist/esm/Chip/index.mjs.map +1 -1
- package/dist/esm/Chip/index.native.js +10 -4
- package/dist/esm/Chip/index.native.js.map +1 -1
- package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.mjs +3 -28
- package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.mjs.map +1 -1
- package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.native.js +3 -28
- package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
- package/dist/esm/ContextualSaveBar/index.mjs +3 -2
- package/dist/esm/ContextualSaveBar/index.mjs.map +1 -1
- package/dist/esm/ContextualSaveBar/index.native.js +3 -2
- package/dist/esm/ContextualSaveBar/index.native.js.map +1 -1
- package/dist/esm/ControlGroup/index.mjs +3 -2
- package/dist/esm/ControlGroup/index.mjs.map +1 -1
- package/dist/esm/ControlGroup/index.native.js +3 -2
- package/dist/esm/ControlGroup/index.native.js.map +1 -1
- package/dist/esm/DescriptionList/index.mjs +18 -22
- package/dist/esm/DescriptionList/index.mjs.map +1 -1
- package/dist/esm/DescriptionList/index.native.js +18 -22
- package/dist/esm/DescriptionList/index.native.js.map +1 -1
- package/dist/esm/FieldDisplay/index.mjs +6 -9
- package/dist/esm/FieldDisplay/index.mjs.map +1 -1
- package/dist/esm/FieldDisplay/index.native.js +7 -10
- package/dist/esm/FieldDisplay/index.native.js.map +1 -1
- package/dist/esm/FieldGroup.mjs +5 -16
- package/dist/esm/FieldGroup.mjs.map +1 -1
- package/dist/esm/FieldGroup.native.js +5 -16
- package/dist/esm/FieldGroup.native.js.map +1 -1
- package/dist/esm/FloatingPanel/index.mjs +78 -20
- package/dist/esm/FloatingPanel/index.mjs.map +1 -1
- package/dist/esm/FloatingPanel/index.native.js +42 -18
- package/dist/esm/FloatingPanel/index.native.js.map +1 -1
- package/dist/esm/FloatingPanel/useFloatingPanel.mjs +26 -14
- package/dist/esm/FloatingPanel/useFloatingPanel.mjs.map +1 -1
- package/dist/esm/FloatingPanel/useFloatingPanel.native.js +31 -13
- package/dist/esm/FloatingPanel/useFloatingPanel.native.js.map +1 -1
- package/dist/esm/Form/index.mjs +10 -14
- package/dist/esm/Form/index.mjs.map +1 -1
- package/dist/esm/Form/index.native.js +13 -14
- package/dist/esm/Form/index.native.js.map +1 -1
- package/dist/esm/FormGrid.mjs +7 -16
- package/dist/esm/FormGrid.mjs.map +1 -1
- package/dist/esm/FormGrid.native.js +7 -16
- package/dist/esm/FormGrid.native.js.map +1 -1
- package/dist/esm/FormSection.mjs +4 -9
- package/dist/esm/FormSection.mjs.map +1 -1
- package/dist/esm/FormSection.native.js +4 -9
- package/dist/esm/FormSection.native.js.map +1 -1
- package/dist/esm/InputParts/index.mjs +13 -30
- package/dist/esm/InputParts/index.mjs.map +1 -1
- package/dist/esm/InputParts/index.native.js +14 -32
- package/dist/esm/InputParts/index.native.js.map +1 -1
- package/dist/esm/Label/index.mjs +0 -1
- package/dist/esm/Label/index.mjs.map +1 -1
- package/dist/esm/Label/index.native.js +0 -1
- package/dist/esm/Label/index.native.js.map +1 -1
- package/dist/esm/MediaPicker/base64.mjs +20 -0
- package/dist/esm/MediaPicker/base64.mjs.map +1 -0
- package/dist/esm/MediaPicker/base64.native.js +20 -0
- package/dist/esm/MediaPicker/base64.native.js.map +1 -0
- package/dist/esm/MediaPicker/payload.mjs +35 -0
- package/dist/esm/MediaPicker/payload.mjs.map +1 -0
- package/dist/esm/MediaPicker/payload.native.js +35 -0
- package/dist/esm/MediaPicker/payload.native.js.map +1 -0
- package/dist/esm/MediaPicker/pickMedia.mjs +109 -0
- package/dist/esm/MediaPicker/pickMedia.mjs.map +1 -0
- package/dist/esm/MediaPicker/pickMedia.native.js +69 -0
- package/dist/esm/MediaPicker/pickMedia.native.js.map +1 -0
- package/dist/esm/MediaPicker/types.mjs +14 -0
- package/dist/esm/MediaPicker/types.mjs.map +1 -0
- package/dist/esm/MediaPicker/types.native.js +134 -0
- package/dist/esm/MediaPicker/types.native.js.map +1 -0
- package/dist/esm/MediaPicker/useMediaPicker.mjs +32 -0
- package/dist/esm/MediaPicker/useMediaPicker.mjs.map +1 -0
- package/dist/esm/MediaPicker/useMediaPicker.native.js +33 -0
- package/dist/esm/MediaPicker/useMediaPicker.native.js.map +1 -0
- package/dist/esm/Skeleton/index.mjs +123 -42
- package/dist/esm/Skeleton/index.mjs.map +1 -1
- package/dist/esm/Skeleton/index.native.js +128 -51
- package/dist/esm/Skeleton/index.native.js.map +1 -1
- package/dist/esm/Spinner/index.mjs +2 -2
- package/dist/esm/Spinner/index.mjs.map +1 -1
- package/dist/esm/Spinner/index.native.js +2 -2
- package/dist/esm/Spinner/index.native.js.map +1 -1
- package/dist/esm/Wheel/index.mjs +9 -19
- package/dist/esm/Wheel/index.mjs.map +1 -1
- package/dist/esm/Wheel/index.native.js +11 -21
- package/dist/esm/Wheel/index.native.js.map +1 -1
- package/dist/esm/fieldLayout.mjs +18 -7
- package/dist/esm/fieldLayout.mjs.map +1 -1
- package/dist/esm/fieldLayout.native.js +20 -7
- package/dist/esm/fieldLayout.native.js.map +1 -1
- package/dist/esm/fields/Barcode/BarcodeScanner.mjs +2 -3
- package/dist/esm/fields/Barcode/BarcodeScanner.mjs.map +1 -1
- package/dist/esm/fields/Barcode/BarcodeScanner.native.js +2 -3
- package/dist/esm/fields/Barcode/BarcodeScanner.native.js.map +1 -1
- package/dist/esm/fields/Barcode/index.mjs +8 -12
- package/dist/esm/fields/Barcode/index.mjs.map +1 -1
- package/dist/esm/fields/Barcode/index.native.js +8 -12
- package/dist/esm/fields/Barcode/index.native.js.map +1 -1
- package/dist/esm/fields/Barcode/scannerTypes.mjs +3 -2
- package/dist/esm/fields/Barcode/scannerTypes.mjs.map +1 -1
- package/dist/esm/fields/Barcode/scannerTypes.native.js +3 -2
- package/dist/esm/fields/Barcode/scannerTypes.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/Checkbox.mjs +11 -19
- package/dist/esm/fields/Checkbox/Checkbox.mjs.map +1 -1
- package/dist/esm/fields/Checkbox/Checkbox.native.js +11 -19
- package/dist/esm/fields/Checkbox/Checkbox.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxBox.mjs +4 -2
- package/dist/esm/fields/Checkbox/CheckboxBox.mjs.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxBox.native.js +4 -2
- package/dist/esm/fields/Checkbox/CheckboxBox.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxCard.mjs +11 -21
- package/dist/esm/fields/Checkbox/CheckboxCard.mjs.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxCard.native.js +11 -22
- package/dist/esm/fields/Checkbox/CheckboxCard.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxGroup.mjs +3 -6
- package/dist/esm/fields/Checkbox/CheckboxGroup.mjs.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxGroup.native.js +4 -11
- package/dist/esm/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/index.mjs +4 -3
- package/dist/esm/fields/Checkbox/index.mjs.map +1 -1
- package/dist/esm/fields/Checkbox/index.native.js +4 -3
- package/dist/esm/fields/Checkbox/index.native.js.map +1 -1
- package/dist/esm/fields/ColorPicker/index.mjs +15 -14
- package/dist/esm/fields/ColorPicker/index.mjs.map +1 -1
- package/dist/esm/fields/ColorPicker/index.native.js +17 -16
- package/dist/esm/fields/ColorPicker/index.native.js.map +1 -1
- package/dist/esm/fields/ColorPicker/parts.mjs +9 -13
- package/dist/esm/fields/ColorPicker/parts.mjs.map +1 -1
- package/dist/esm/fields/ColorPicker/parts.native.js +11 -15
- package/dist/esm/fields/ColorPicker/parts.native.js.map +1 -1
- package/dist/esm/fields/Combobox/index.mjs +17 -19
- package/dist/esm/fields/Combobox/index.mjs.map +1 -1
- package/dist/esm/fields/Combobox/index.native.js +18 -20
- package/dist/esm/fields/Combobox/index.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/Calendar.mjs +3 -2
- package/dist/esm/fields/DatePicker/Calendar.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/Calendar.native.js +3 -2
- package/dist/esm/fields/DatePicker/Calendar.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/DateRangePicker.mjs +8 -5
- package/dist/esm/fields/DatePicker/DateRangePicker.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/DateRangePicker.native.js +8 -5
- package/dist/esm/fields/DatePicker/DateRangePicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/DatetimePicker.catalog.mjs +7 -4
- package/dist/esm/fields/DatePicker/DatetimePicker.catalog.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js +7 -4
- package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/DatetimePicker.native.js +7 -4
- package/dist/esm/fields/DatePicker/DatetimePicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/MonthPicker.mjs +9 -5
- package/dist/esm/fields/DatePicker/MonthPicker.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/MonthPicker.native.js +9 -5
- package/dist/esm/fields/DatePicker/MonthPicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/MultiDatePicker.mjs +7 -4
- package/dist/esm/fields/DatePicker/MultiDatePicker.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/MultiDatePicker.native.js +7 -4
- package/dist/esm/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/catalog.mjs +7 -4
- package/dist/esm/fields/DatePicker/catalog.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/catalog.native.js +7 -4
- package/dist/esm/fields/DatePicker/catalog.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/index.native.js +7 -4
- package/dist/esm/fields/DatePicker/index.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/parts.mjs +9 -14
- package/dist/esm/fields/DatePicker/parts.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/parts.native.js +9 -14
- package/dist/esm/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/esm/fields/Duration/index.mjs +5 -6
- package/dist/esm/fields/Duration/index.mjs.map +1 -1
- package/dist/esm/fields/Duration/index.native.js +5 -6
- package/dist/esm/fields/Duration/index.native.js.map +1 -1
- package/dist/esm/fields/FileUpload/index.mjs +49 -7
- package/dist/esm/fields/FileUpload/index.mjs.map +1 -1
- package/dist/esm/fields/FileUpload/index.native.js +51 -7
- package/dist/esm/fields/FileUpload/index.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/index.mjs +5 -14
- package/dist/esm/fields/Geolocation/index.mjs.map +1 -1
- package/dist/esm/fields/Geolocation/index.native.js +5 -14
- package/dist/esm/fields/Geolocation/index.native.js.map +1 -1
- package/dist/esm/fields/Icon/index.mjs +10 -12
- package/dist/esm/fields/Icon/index.mjs.map +1 -1
- package/dist/esm/fields/Icon/index.native.js +9 -12
- package/dist/esm/fields/Icon/index.native.js.map +1 -1
- package/dist/esm/fields/ImageField/index.mjs +4 -5
- package/dist/esm/fields/ImageField/index.mjs.map +1 -1
- package/dist/esm/fields/ImageField/index.native.js +4 -5
- package/dist/esm/fields/ImageField/index.native.js.map +1 -1
- package/dist/esm/fields/Input/index.mjs +5 -5
- package/dist/esm/fields/Input/index.mjs.map +1 -1
- package/dist/esm/fields/Input/index.native.js +5 -5
- package/dist/esm/fields/Input/index.native.js.map +1 -1
- package/dist/esm/fields/MentionInput/index.mjs +4 -6
- package/dist/esm/fields/MentionInput/index.mjs.map +1 -1
- package/dist/esm/fields/MentionInput/index.native.js +4 -6
- package/dist/esm/fields/MentionInput/index.native.js.map +1 -1
- package/dist/esm/fields/OTPInput/index.mjs +2 -4
- package/dist/esm/fields/OTPInput/index.mjs.map +1 -1
- package/dist/esm/fields/OTPInput/index.native.js +2 -4
- package/dist/esm/fields/OTPInput/index.native.js.map +1 -1
- package/dist/esm/fields/PhoneInput/index.mjs +1 -3
- package/dist/esm/fields/PhoneInput/index.mjs.map +1 -1
- package/dist/esm/fields/PhoneInput/index.native.js +1 -3
- package/dist/esm/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/esm/fields/Progress/index.mjs +17 -22
- package/dist/esm/fields/Progress/index.mjs.map +1 -1
- package/dist/esm/fields/Progress/index.native.js +17 -22
- package/dist/esm/fields/Progress/index.native.js.map +1 -1
- package/dist/esm/fields/RadioGroup/index.mjs +8 -11
- package/dist/esm/fields/RadioGroup/index.mjs.map +1 -1
- package/dist/esm/fields/RadioGroup/index.native.js +9 -16
- package/dist/esm/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/esm/fields/Rating/index.mjs +9 -21
- package/dist/esm/fields/Rating/index.mjs.map +1 -1
- package/dist/esm/fields/Rating/index.native.js +10 -22
- package/dist/esm/fields/Rating/index.native.js.map +1 -1
- package/dist/esm/fields/SearchInput/index.mjs +18 -11
- package/dist/esm/fields/SearchInput/index.mjs.map +1 -1
- package/dist/esm/fields/SearchInput/index.native.js +22 -10
- package/dist/esm/fields/SearchInput/index.native.js.map +1 -1
- package/dist/esm/fields/Select/index.mjs +13 -15
- package/dist/esm/fields/Select/index.mjs.map +1 -1
- package/dist/esm/fields/Select/index.native.js +16 -18
- package/dist/esm/fields/Select/index.native.js.map +1 -1
- package/dist/esm/fields/Signature/index.mjs +3 -5
- package/dist/esm/fields/Signature/index.mjs.map +1 -1
- package/dist/esm/fields/Signature/index.native.js +3 -5
- package/dist/esm/fields/Signature/index.native.js.map +1 -1
- package/dist/esm/fields/Slider/index.mjs +44 -30
- package/dist/esm/fields/Slider/index.mjs.map +1 -1
- package/dist/esm/fields/Slider/index.native.js +45 -30
- package/dist/esm/fields/Slider/index.native.js.map +1 -1
- package/dist/esm/fields/Stepper/index.mjs +43 -22
- package/dist/esm/fields/Stepper/index.mjs.map +1 -1
- package/dist/esm/fields/Stepper/index.native.js +48 -23
- package/dist/esm/fields/Stepper/index.native.js.map +1 -1
- package/dist/esm/fields/Switch/footprint.mjs +9 -7
- package/dist/esm/fields/Switch/footprint.mjs.map +1 -1
- package/dist/esm/fields/Switch/footprint.native.js +9 -7
- package/dist/esm/fields/Switch/footprint.native.js.map +1 -1
- package/dist/esm/fields/Switch/index.mjs +73 -95
- package/dist/esm/fields/Switch/index.mjs.map +1 -1
- package/dist/esm/fields/Switch/index.native.js +78 -98
- package/dist/esm/fields/Switch/index.native.js.map +1 -1
- package/dist/esm/fields/TextArea/index.mjs +5 -8
- package/dist/esm/fields/TextArea/index.mjs.map +1 -1
- package/dist/esm/fields/TextArea/index.native.js +5 -8
- package/dist/esm/fields/TextArea/index.native.js.map +1 -1
- package/dist/esm/fields/TimePicker/catalog.mjs +8 -5
- package/dist/esm/fields/TimePicker/catalog.mjs.map +1 -1
- package/dist/esm/fields/TimePicker/catalog.native.js +8 -5
- package/dist/esm/fields/TimePicker/catalog.native.js.map +1 -1
- package/dist/esm/fields/TimePicker/index.native.js +8 -5
- package/dist/esm/fields/TimePicker/index.native.js.map +1 -1
- package/dist/esm/fields/TimePicker/parts.mjs +1 -5
- package/dist/esm/fields/TimePicker/parts.mjs.map +1 -1
- package/dist/esm/fields/TimePicker/parts.native.js +1 -5
- package/dist/esm/fields/TimePicker/parts.native.js.map +1 -1
- package/dist/esm/fields/TimeRangeScrubber/index.mjs +7 -5
- package/dist/esm/fields/TimeRangeScrubber/index.mjs.map +1 -1
- package/dist/esm/fields/TimeRangeScrubber/index.native.js +7 -5
- package/dist/esm/fields/TimeRangeScrubber/index.native.js.map +1 -1
- package/dist/esm/fields/ToggleGroup/index.mjs +14 -24
- package/dist/esm/fields/ToggleGroup/index.mjs.map +1 -1
- package/dist/esm/fields/ToggleGroup/index.native.js +16 -26
- package/dist/esm/fields/ToggleGroup/index.native.js.map +1 -1
- package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.mjs +4 -4
- package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.mjs.map +1 -1
- package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js +5 -5
- package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
- package/dist/esm/formSpacing.mjs +1 -1
- package/dist/esm/formSpacing.native.js +1 -1
- package/dist/esm/formSpacing.native.js.map +1 -1
- package/dist/esm/index.mjs +5 -3
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +5 -3
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/shared/TimeColumn.mjs +1 -3
- package/dist/esm/shared/TimeColumn.mjs.map +1 -1
- package/dist/esm/shared/TimeColumn.native.js +1 -3
- package/dist/esm/shared/TimeColumn.native.js.map +1 -1
- package/dist/esm/shared/colorRamps.mjs +17 -16
- package/dist/esm/shared/colorRamps.mjs.map +1 -1
- package/dist/esm/shared/colorRamps.native.js +17 -16
- package/dist/esm/shared/colorRamps.native.js.map +1 -1
- package/dist/esm/shared/floatingList.mjs +3 -5
- package/dist/esm/shared/floatingList.mjs.map +1 -1
- package/dist/esm/shared/floatingList.native.js +3 -5
- package/dist/esm/shared/floatingList.native.js.map +1 -1
- package/dist/esm/shared/focusManagement.mjs +16 -6
- package/dist/esm/shared/focusManagement.mjs.map +1 -1
- package/dist/esm/shared/focusManagement.native.js +16 -6
- package/dist/esm/shared/focusManagement.native.js.map +1 -1
- package/dist/esm/shared/instantMotion.mjs +6 -0
- package/dist/esm/shared/instantMotion.mjs.map +1 -0
- package/dist/esm/shared/instantMotion.native.js +7 -0
- package/dist/esm/shared/instantMotion.native.js.map +1 -0
- package/dist/esm/shared/utils.mjs +2 -2
- package/dist/esm/shared/utils.mjs.map +1 -1
- package/dist/esm/shared/utils.native.js +2 -2
- package/dist/esm/shared/utils.native.js.map +1 -1
- package/dist/esm/themedPrimitives.mjs +1 -1
- package/dist/esm/themedPrimitives.native.js +1 -1
- package/dist/esm/themedPrimitives.native.js.map +1 -1
- package/dist/jsx/AdaptivePopup/index.mjs +22 -39
- package/dist/jsx/AdaptivePopup/index.mjs.map +1 -1
- package/dist/jsx/AdaptivePopup/index.native.js +26 -47
- package/dist/jsx/AdaptivePopup/index.native.js.map +1 -1
- package/dist/jsx/Button/index.mjs +76 -40
- package/dist/jsx/Button/index.mjs.map +1 -1
- package/dist/jsx/Button/index.native.js +104 -64
- package/dist/jsx/Button/index.native.js.map +1 -1
- package/dist/jsx/Chip/index.mjs +10 -4
- package/dist/jsx/Chip/index.mjs.map +1 -1
- package/dist/jsx/Chip/index.native.js +9 -3
- package/dist/jsx/Chip/index.native.js.map +1 -1
- package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.mjs +3 -28
- package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.mjs.map +1 -1
- package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.native.js +6 -31
- package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
- package/dist/jsx/ContextualSaveBar/index.mjs +3 -2
- package/dist/jsx/ContextualSaveBar/index.mjs.map +1 -1
- package/dist/jsx/ContextualSaveBar/index.native.js +5 -4
- package/dist/jsx/ContextualSaveBar/index.native.js.map +1 -1
- package/dist/jsx/ControlGroup/index.mjs +3 -2
- package/dist/jsx/ControlGroup/index.mjs.map +1 -1
- package/dist/jsx/ControlGroup/index.native.js +12 -11
- package/dist/jsx/ControlGroup/index.native.js.map +1 -1
- package/dist/jsx/DescriptionList/index.mjs +18 -22
- package/dist/jsx/DescriptionList/index.mjs.map +1 -1
- package/dist/jsx/DescriptionList/index.native.js +17 -21
- package/dist/jsx/DescriptionList/index.native.js.map +1 -1
- package/dist/jsx/FieldDisplay/index.mjs +6 -9
- package/dist/jsx/FieldDisplay/index.mjs.map +1 -1
- package/dist/jsx/FieldDisplay/index.native.js +6 -9
- package/dist/jsx/FieldDisplay/index.native.js.map +1 -1
- package/dist/jsx/FieldGroup.mjs +5 -16
- package/dist/jsx/FieldGroup.mjs.map +1 -1
- package/dist/jsx/FieldGroup.native.js +4 -15
- package/dist/jsx/FieldGroup.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/index.mjs +78 -20
- package/dist/jsx/FloatingPanel/index.mjs.map +1 -1
- package/dist/jsx/FloatingPanel/index.native.js +44 -20
- package/dist/jsx/FloatingPanel/index.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/useFloatingPanel.mjs +26 -14
- package/dist/jsx/FloatingPanel/useFloatingPanel.mjs.map +1 -1
- package/dist/jsx/FloatingPanel/useFloatingPanel.native.js +36 -16
- package/dist/jsx/FloatingPanel/useFloatingPanel.native.js.map +1 -1
- package/dist/jsx/Form/index.mjs +10 -14
- package/dist/jsx/Form/index.mjs.map +1 -1
- package/dist/jsx/Form/index.native.js +12 -13
- package/dist/jsx/Form/index.native.js.map +1 -1
- package/dist/jsx/FormGrid.mjs +7 -16
- package/dist/jsx/FormGrid.mjs.map +1 -1
- package/dist/jsx/FormGrid.native.js +7 -16
- package/dist/jsx/FormGrid.native.js.map +1 -1
- package/dist/jsx/FormSection.mjs +4 -9
- package/dist/jsx/FormSection.mjs.map +1 -1
- package/dist/jsx/FormSection.native.js +4 -9
- package/dist/jsx/FormSection.native.js.map +1 -1
- package/dist/jsx/InputParts/index.mjs +13 -30
- package/dist/jsx/InputParts/index.mjs.map +1 -1
- package/dist/jsx/InputParts/index.native.js +54 -73
- package/dist/jsx/InputParts/index.native.js.map +1 -1
- package/dist/jsx/Label/index.mjs +0 -1
- package/dist/jsx/Label/index.mjs.map +1 -1
- package/dist/jsx/Label/index.native.js +0 -1
- package/dist/jsx/Label/index.native.js.map +1 -1
- package/dist/jsx/MediaPicker/base64.mjs +20 -0
- package/dist/jsx/MediaPicker/base64.mjs.map +1 -0
- package/dist/jsx/MediaPicker/base64.native.js +48 -0
- package/dist/jsx/MediaPicker/base64.native.js.map +1 -0
- package/dist/jsx/MediaPicker/payload.mjs +35 -0
- package/dist/jsx/MediaPicker/payload.mjs.map +1 -0
- package/dist/jsx/MediaPicker/payload.native.js +64 -0
- package/dist/jsx/MediaPicker/payload.native.js.map +1 -0
- package/dist/jsx/MediaPicker/pickMedia.mjs +109 -0
- package/dist/jsx/MediaPicker/pickMedia.mjs.map +1 -0
- package/dist/jsx/MediaPicker/pickMedia.native.js +97 -0
- package/dist/jsx/MediaPicker/pickMedia.native.js.map +1 -0
- package/dist/jsx/MediaPicker/types.mjs +14 -0
- package/dist/jsx/MediaPicker/types.mjs.map +1 -0
- package/dist/jsx/MediaPicker/types.native.js +162 -0
- package/dist/jsx/MediaPicker/types.native.js.map +1 -0
- package/dist/jsx/MediaPicker/useMediaPicker.mjs +32 -0
- package/dist/jsx/MediaPicker/useMediaPicker.mjs.map +1 -0
- package/dist/jsx/MediaPicker/useMediaPicker.native.js +61 -0
- package/dist/jsx/MediaPicker/useMediaPicker.native.js.map +1 -0
- package/dist/jsx/Skeleton/index.mjs +123 -42
- package/dist/jsx/Skeleton/index.mjs.map +1 -1
- package/dist/jsx/Skeleton/index.native.js +128 -50
- package/dist/jsx/Skeleton/index.native.js.map +1 -1
- package/dist/jsx/Spinner/index.mjs +2 -2
- package/dist/jsx/Spinner/index.mjs.map +1 -1
- package/dist/jsx/Spinner/index.native.js +2 -2
- package/dist/jsx/Spinner/index.native.js.map +1 -1
- package/dist/jsx/Wheel/index.mjs +9 -19
- package/dist/jsx/Wheel/index.mjs.map +1 -1
- package/dist/jsx/Wheel/index.native.js +12 -22
- package/dist/jsx/Wheel/index.native.js.map +1 -1
- package/dist/jsx/fieldLayout.mjs +18 -7
- package/dist/jsx/fieldLayout.mjs.map +1 -1
- package/dist/jsx/fieldLayout.native.js +20 -7
- package/dist/jsx/fieldLayout.native.js.map +1 -1
- package/dist/jsx/fields/Barcode/BarcodeScanner.mjs +2 -3
- package/dist/jsx/fields/Barcode/BarcodeScanner.mjs.map +1 -1
- package/dist/jsx/fields/Barcode/BarcodeScanner.native.js +2 -3
- package/dist/jsx/fields/Barcode/BarcodeScanner.native.js.map +1 -1
- package/dist/jsx/fields/Barcode/index.mjs +8 -12
- package/dist/jsx/fields/Barcode/index.mjs.map +1 -1
- package/dist/jsx/fields/Barcode/index.native.js +7 -11
- package/dist/jsx/fields/Barcode/index.native.js.map +1 -1
- package/dist/jsx/fields/Barcode/scannerTypes.mjs +3 -2
- package/dist/jsx/fields/Barcode/scannerTypes.mjs.map +1 -1
- package/dist/jsx/fields/Barcode/scannerTypes.native.js +3 -2
- package/dist/jsx/fields/Barcode/scannerTypes.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/Checkbox.mjs +11 -19
- package/dist/jsx/fields/Checkbox/Checkbox.mjs.map +1 -1
- package/dist/jsx/fields/Checkbox/Checkbox.native.js +10 -18
- package/dist/jsx/fields/Checkbox/Checkbox.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxBox.mjs +4 -2
- package/dist/jsx/fields/Checkbox/CheckboxBox.mjs.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxBox.native.js +4 -2
- package/dist/jsx/fields/Checkbox/CheckboxBox.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxCard.mjs +11 -21
- package/dist/jsx/fields/Checkbox/CheckboxCard.mjs.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxCard.native.js +11 -22
- package/dist/jsx/fields/Checkbox/CheckboxCard.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxGroup.mjs +3 -6
- package/dist/jsx/fields/Checkbox/CheckboxGroup.mjs.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxGroup.native.js +4 -11
- package/dist/jsx/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/index.mjs +4 -3
- package/dist/jsx/fields/Checkbox/index.mjs.map +1 -1
- package/dist/jsx/fields/Checkbox/index.native.js +12 -11
- package/dist/jsx/fields/Checkbox/index.native.js.map +1 -1
- package/dist/jsx/fields/ColorPicker/index.mjs +15 -14
- package/dist/jsx/fields/ColorPicker/index.mjs.map +1 -1
- package/dist/jsx/fields/ColorPicker/index.native.js +16 -15
- package/dist/jsx/fields/ColorPicker/index.native.js.map +1 -1
- package/dist/jsx/fields/ColorPicker/parts.mjs +9 -13
- package/dist/jsx/fields/ColorPicker/parts.mjs.map +1 -1
- package/dist/jsx/fields/ColorPicker/parts.native.js +10 -14
- package/dist/jsx/fields/ColorPicker/parts.native.js.map +1 -1
- package/dist/jsx/fields/Combobox/index.mjs +17 -19
- package/dist/jsx/fields/Combobox/index.mjs.map +1 -1
- package/dist/jsx/fields/Combobox/index.native.js +17 -19
- package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/Calendar.mjs +3 -2
- package/dist/jsx/fields/DatePicker/Calendar.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/Calendar.native.js +3 -2
- package/dist/jsx/fields/DatePicker/Calendar.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/DateRangePicker.mjs +8 -5
- package/dist/jsx/fields/DatePicker/DateRangePicker.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/DateRangePicker.native.js +8 -5
- package/dist/jsx/fields/DatePicker/DateRangePicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.mjs +7 -4
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js +7 -4
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/DatetimePicker.native.js +7 -4
- package/dist/jsx/fields/DatePicker/DatetimePicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/MonthPicker.mjs +9 -5
- package/dist/jsx/fields/DatePicker/MonthPicker.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/MonthPicker.native.js +11 -7
- package/dist/jsx/fields/DatePicker/MonthPicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/MultiDatePicker.mjs +7 -4
- package/dist/jsx/fields/DatePicker/MultiDatePicker.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js +7 -4
- package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/catalog.mjs +7 -4
- package/dist/jsx/fields/DatePicker/catalog.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/catalog.native.js +7 -4
- package/dist/jsx/fields/DatePicker/catalog.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/index.native.js +7 -4
- package/dist/jsx/fields/DatePicker/index.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/parts.mjs +9 -14
- package/dist/jsx/fields/DatePicker/parts.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/parts.native.js +19 -24
- package/dist/jsx/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/jsx/fields/Duration/index.mjs +5 -6
- package/dist/jsx/fields/Duration/index.mjs.map +1 -1
- package/dist/jsx/fields/Duration/index.native.js +5 -6
- package/dist/jsx/fields/Duration/index.native.js.map +1 -1
- package/dist/jsx/fields/FileUpload/index.mjs +49 -7
- package/dist/jsx/fields/FileUpload/index.mjs.map +1 -1
- package/dist/jsx/fields/FileUpload/index.native.js +57 -13
- package/dist/jsx/fields/FileUpload/index.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/index.mjs +5 -14
- package/dist/jsx/fields/Geolocation/index.mjs.map +1 -1
- package/dist/jsx/fields/Geolocation/index.native.js +4 -13
- package/dist/jsx/fields/Geolocation/index.native.js.map +1 -1
- package/dist/jsx/fields/Icon/index.mjs +10 -12
- package/dist/jsx/fields/Icon/index.mjs.map +1 -1
- package/dist/jsx/fields/Icon/index.native.js +7 -10
- package/dist/jsx/fields/Icon/index.native.js.map +1 -1
- package/dist/jsx/fields/ImageField/index.mjs +4 -5
- package/dist/jsx/fields/ImageField/index.mjs.map +1 -1
- package/dist/jsx/fields/ImageField/index.native.js +8 -9
- package/dist/jsx/fields/ImageField/index.native.js.map +1 -1
- package/dist/jsx/fields/Input/index.mjs +5 -5
- package/dist/jsx/fields/Input/index.mjs.map +1 -1
- package/dist/jsx/fields/Input/index.native.js +5 -5
- package/dist/jsx/fields/Input/index.native.js.map +1 -1
- package/dist/jsx/fields/MentionInput/index.mjs +4 -6
- package/dist/jsx/fields/MentionInput/index.mjs.map +1 -1
- package/dist/jsx/fields/MentionInput/index.native.js +3 -5
- package/dist/jsx/fields/MentionInput/index.native.js.map +1 -1
- package/dist/jsx/fields/OTPInput/index.mjs +2 -4
- package/dist/jsx/fields/OTPInput/index.mjs.map +1 -1
- package/dist/jsx/fields/OTPInput/index.native.js +2 -4
- package/dist/jsx/fields/OTPInput/index.native.js.map +1 -1
- package/dist/jsx/fields/PhoneInput/index.mjs +1 -3
- package/dist/jsx/fields/PhoneInput/index.mjs.map +1 -1
- package/dist/jsx/fields/PhoneInput/index.native.js +1 -3
- package/dist/jsx/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/jsx/fields/Progress/index.mjs +17 -22
- package/dist/jsx/fields/Progress/index.mjs.map +1 -1
- package/dist/jsx/fields/Progress/index.native.js +15 -20
- package/dist/jsx/fields/Progress/index.native.js.map +1 -1
- package/dist/jsx/fields/RadioGroup/index.mjs +8 -11
- package/dist/jsx/fields/RadioGroup/index.mjs.map +1 -1
- package/dist/jsx/fields/RadioGroup/index.native.js +8 -15
- package/dist/jsx/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/jsx/fields/Rating/index.mjs +9 -21
- package/dist/jsx/fields/Rating/index.mjs.map +1 -1
- package/dist/jsx/fields/Rating/index.native.js +18 -30
- package/dist/jsx/fields/Rating/index.native.js.map +1 -1
- package/dist/jsx/fields/SearchInput/index.mjs +18 -11
- package/dist/jsx/fields/SearchInput/index.mjs.map +1 -1
- package/dist/jsx/fields/SearchInput/index.native.js +21 -9
- package/dist/jsx/fields/SearchInput/index.native.js.map +1 -1
- package/dist/jsx/fields/Select/index.mjs +13 -15
- package/dist/jsx/fields/Select/index.mjs.map +1 -1
- package/dist/jsx/fields/Select/index.native.js +15 -17
- package/dist/jsx/fields/Select/index.native.js.map +1 -1
- package/dist/jsx/fields/Signature/index.mjs +3 -5
- package/dist/jsx/fields/Signature/index.mjs.map +1 -1
- package/dist/jsx/fields/Signature/index.native.js +3 -5
- package/dist/jsx/fields/Signature/index.native.js.map +1 -1
- package/dist/jsx/fields/Slider/index.mjs +44 -30
- package/dist/jsx/fields/Slider/index.mjs.map +1 -1
- package/dist/jsx/fields/Slider/index.native.js +76 -59
- package/dist/jsx/fields/Slider/index.native.js.map +1 -1
- package/dist/jsx/fields/Stepper/index.mjs +43 -22
- package/dist/jsx/fields/Stepper/index.mjs.map +1 -1
- package/dist/jsx/fields/Stepper/index.native.js +53 -28
- package/dist/jsx/fields/Stepper/index.native.js.map +1 -1
- package/dist/jsx/fields/Switch/footprint.mjs +9 -7
- package/dist/jsx/fields/Switch/footprint.mjs.map +1 -1
- package/dist/jsx/fields/Switch/footprint.native.js +9 -7
- package/dist/jsx/fields/Switch/footprint.native.js.map +1 -1
- package/dist/jsx/fields/Switch/index.mjs +73 -95
- package/dist/jsx/fields/Switch/index.mjs.map +1 -1
- package/dist/jsx/fields/Switch/index.native.js +92 -112
- package/dist/jsx/fields/Switch/index.native.js.map +1 -1
- package/dist/jsx/fields/TextArea/index.mjs +5 -8
- package/dist/jsx/fields/TextArea/index.mjs.map +1 -1
- package/dist/jsx/fields/TextArea/index.native.js +5 -8
- package/dist/jsx/fields/TextArea/index.native.js.map +1 -1
- package/dist/jsx/fields/TimePicker/catalog.mjs +8 -5
- package/dist/jsx/fields/TimePicker/catalog.mjs.map +1 -1
- package/dist/jsx/fields/TimePicker/catalog.native.js +8 -5
- package/dist/jsx/fields/TimePicker/catalog.native.js.map +1 -1
- package/dist/jsx/fields/TimePicker/index.native.js +8 -5
- package/dist/jsx/fields/TimePicker/index.native.js.map +1 -1
- package/dist/jsx/fields/TimePicker/parts.mjs +1 -5
- package/dist/jsx/fields/TimePicker/parts.mjs.map +1 -1
- package/dist/jsx/fields/TimePicker/parts.native.js +1 -5
- package/dist/jsx/fields/TimePicker/parts.native.js.map +1 -1
- package/dist/jsx/fields/TimeRangeScrubber/index.mjs +7 -5
- package/dist/jsx/fields/TimeRangeScrubber/index.mjs.map +1 -1
- package/dist/jsx/fields/TimeRangeScrubber/index.native.js +17 -15
- package/dist/jsx/fields/TimeRangeScrubber/index.native.js.map +1 -1
- package/dist/jsx/fields/ToggleGroup/index.mjs +14 -24
- package/dist/jsx/fields/ToggleGroup/index.mjs.map +1 -1
- package/dist/jsx/fields/ToggleGroup/index.native.js +26 -36
- package/dist/jsx/fields/ToggleGroup/index.native.js.map +1 -1
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.mjs +4 -4
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.mjs.map +1 -1
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js +5 -5
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
- package/dist/jsx/formSpacing.mjs +1 -1
- package/dist/jsx/formSpacing.native.js +1 -1
- package/dist/jsx/index.js +5 -3
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +5 -3
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +7 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/shared/TimeColumn.mjs +1 -3
- package/dist/jsx/shared/TimeColumn.mjs.map +1 -1
- package/dist/jsx/shared/TimeColumn.native.js +1 -3
- package/dist/jsx/shared/TimeColumn.native.js.map +1 -1
- package/dist/jsx/shared/colorRamps.mjs +17 -16
- package/dist/jsx/shared/colorRamps.mjs.map +1 -1
- package/dist/jsx/shared/colorRamps.native.js +17 -15
- package/dist/jsx/shared/colorRamps.native.js.map +1 -1
- package/dist/jsx/shared/floatingList.mjs +3 -5
- package/dist/jsx/shared/floatingList.mjs.map +1 -1
- package/dist/jsx/shared/floatingList.native.js +4 -6
- package/dist/jsx/shared/floatingList.native.js.map +1 -1
- package/dist/jsx/shared/focusManagement.mjs +16 -6
- package/dist/jsx/shared/focusManagement.mjs.map +1 -1
- package/dist/jsx/shared/focusManagement.native.js +15 -5
- package/dist/jsx/shared/focusManagement.native.js.map +1 -1
- package/dist/jsx/shared/instantMotion.mjs +6 -0
- package/dist/jsx/shared/instantMotion.mjs.map +1 -0
- package/dist/jsx/shared/instantMotion.native.js +35 -0
- package/dist/jsx/shared/instantMotion.native.js.map +1 -0
- package/dist/jsx/shared/utils.mjs +2 -2
- package/dist/jsx/shared/utils.mjs.map +1 -1
- package/dist/jsx/shared/utils.native.js +12 -12
- package/dist/jsx/shared/utils.native.js.map +1 -1
- package/dist/jsx/themedPrimitives.mjs +1 -1
- package/dist/jsx/themedPrimitives.native.js +1 -1
- package/package.json +8 -8
- package/src/AdaptivePopup/index.tsx +20 -43
- package/src/Button/Button.disabledReasonInk.spec.tsx +60 -1
- package/src/Button/Button.filledBorder.spec.tsx +2 -2
- package/src/Button/Button.labelInk.spec.tsx +15 -31
- package/src/Button/Button.lc18.spec.tsx +7 -7
- package/src/Button/Button.lc71.spec.tsx +33 -46
- package/src/Button/Button.loading.spec.tsx +87 -0
- package/src/Button/Button.nativeInk.spec.tsx +100 -0
- package/src/Button/Button.radiusLaw.spec.tsx +18 -24
- package/src/Button/Button.sizeLadder.spec.tsx +12 -24
- package/src/Button/Button.sizeToken.spec.tsx +123 -0
- package/src/Button/Button.spec.tsx +17 -17
- package/src/Button/Button.stories.tsx +40 -4
- package/src/Button/index.tsx +114 -61
- package/src/Chip/Chip.spec.tsx +41 -3
- package/src/Chip/index.tsx +15 -8
- package/src/ContextualSaveBar/ContextualSaveBar.spec.tsx +5 -5
- package/src/ContextualSaveBar/UnsavedChangesDialog.tsx +5 -22
- package/src/ContextualSaveBar/index.tsx +3 -2
- package/src/ControlGroup/index.tsx +9 -4
- package/src/DescriptionList/DescriptionList.spec.tsx +11 -3
- package/src/DescriptionList/DescriptionList.stories.tsx +1 -3
- package/src/DescriptionList/index.tsx +24 -26
- package/src/FieldDisplay/index.tsx +12 -9
- package/src/FieldGroup.spec.tsx +15 -13
- package/src/FieldGroup.tsx +11 -17
- package/src/FieldLayout.stories.tsx +4 -5
- package/src/FloatingPanel/FloatingPanel.native.spec.tsx +33 -0
- package/src/FloatingPanel/FloatingPanel.spec.tsx +62 -0
- package/src/FloatingPanel/FloatingPanel.stories.tsx +4 -4
- package/src/FloatingPanel/index.native.tsx +38 -19
- package/src/FloatingPanel/index.tsx +112 -22
- package/src/FloatingPanel/touchRecipeHydration.spec.tsx +62 -4
- package/src/FloatingPanel/useFloatingPanel.spec.tsx +94 -27
- package/src/FloatingPanel/useFloatingPanel.ts +47 -20
- package/src/Form/Form.stories.tsx +0 -4
- package/src/Form/form.spec.tsx +67 -20
- package/src/Form/index.tsx +15 -15
- package/src/FormGrid.spec.tsx +32 -31
- package/src/FormGrid.stories.tsx +0 -1
- package/src/FormGrid.tsx +12 -22
- package/src/FormSection.tsx +5 -10
- package/src/InputParts/InputParts.stories.tsx +4 -4
- package/src/InputParts/index.spec.tsx +25 -0
- package/src/InputParts/index.tsx +13 -44
- package/src/InputParts/layoutGap.spec.tsx +9 -11
- package/src/Label/Label.spec.tsx +33 -0
- package/src/Label/index.tsx +0 -1
- package/src/MediaPicker/MediaPicker.stories.tsx +65 -0
- package/src/MediaPicker/MediaPickerDemo.spec.tsx +68 -0
- package/src/MediaPicker/README.md +35 -0
- package/src/MediaPicker/base64.spec.ts +29 -0
- package/src/MediaPicker/base64.ts +23 -0
- package/src/MediaPicker/payload.ts +54 -0
- package/src/MediaPicker/pickMedia.native.spec.ts +160 -0
- package/src/MediaPicker/pickMedia.native.ts +95 -0
- package/src/MediaPicker/pickMedia.spec.ts +125 -0
- package/src/MediaPicker/pickMedia.ts +152 -0
- package/src/MediaPicker/types.ts +43 -0
- package/src/MediaPicker/useMediaPicker.spec.tsx +48 -0
- package/src/MediaPicker/useMediaPicker.ts +33 -0
- package/src/Skeleton/Skeleton.stories.tsx +2 -2
- package/src/Skeleton/index.tsx +172 -53
- package/src/Skeleton/skeletonStories.spec.tsx +1 -1
- package/src/Spinner/Spinner.spec.tsx +9 -9
- package/src/Spinner/Spinner.stories.tsx +10 -10
- package/src/Spinner/index.native.tsx +2 -2
- package/src/Spinner/index.tsx +4 -4
- package/src/Spinner/spinnerSize.ts +1 -1
- package/src/Wheel/Wheel.spec.tsx +3 -3
- package/src/Wheel/Wheel.stories.tsx +1 -1
- package/src/Wheel/index.tsx +10 -22
- package/src/Wheel/wheelStories.spec.tsx +1 -1
- package/src/errorTint.spec.tsx +77 -1
- package/src/fieldFamilyStories.radius.spec.tsx +2 -2
- package/src/fieldLayout.spec.tsx +77 -12
- package/src/fieldLayout.tsx +29 -13
- package/src/fields/Barcode/BarcodeScanner.native.tsx +1 -2
- package/src/fields/Barcode/BarcodeScanner.tsx +1 -2
- package/src/fields/Barcode/index.tsx +4 -17
- package/src/fields/Barcode/scannerTypes.ts +8 -6
- package/src/fields/Checkbox/Checkbox.stories.tsx +1 -2
- package/src/fields/Checkbox/Checkbox.tsx +14 -22
- package/src/fields/Checkbox/CheckboxBox.spec.tsx +50 -14
- package/src/fields/Checkbox/CheckboxBox.tsx +4 -2
- package/src/fields/Checkbox/CheckboxCard.heading.spec.tsx +29 -0
- package/src/fields/Checkbox/CheckboxCard.spec.tsx +62 -27
- package/src/fields/Checkbox/CheckboxCard.tsx +11 -13
- package/src/fields/Checkbox/CheckboxGroup.stories.tsx +0 -1
- package/src/fields/Checkbox/CheckboxGroup.tsx +2 -9
- package/src/fields/Checkbox/index.tsx +4 -3
- package/src/fields/ColorPicker/ColorPicker.stories.tsx +1 -1
- package/src/fields/ColorPicker/index.tsx +26 -15
- package/src/fields/ColorPicker/parts.tsx +8 -9
- package/src/fields/Combobox/Combobox.spec.tsx +26 -11
- package/src/fields/Combobox/Combobox.stories.tsx +1 -6
- package/src/fields/Combobox/index.tsx +16 -23
- package/src/fields/DatePicker/Calendar.spec.tsx +3 -3
- package/src/fields/DatePicker/Calendar.tsx +8 -2
- package/src/fields/DatePicker/DatePicker.stories.tsx +1 -2
- package/src/fields/DatePicker/DateRangePicker.stories.tsx +1 -2
- package/src/fields/DatePicker/DateRangePicker.tsx +15 -8
- package/src/fields/DatePicker/DatetimePicker.catalog.tsx +11 -7
- package/src/fields/DatePicker/DatetimePicker.native.tsx +11 -6
- package/src/fields/DatePicker/DatetimePicker.stories.tsx +1 -2
- package/src/fields/DatePicker/MonthPicker.stories.tsx +1 -2
- package/src/fields/DatePicker/MonthPicker.tsx +13 -8
- package/src/fields/DatePicker/MultiDatePicker.stories.tsx +1 -2
- package/src/fields/DatePicker/MultiDatePicker.tsx +9 -7
- package/src/fields/DatePicker/catalog.tsx +11 -7
- package/src/fields/DatePicker/index.native.tsx +11 -6
- package/src/fields/DatePicker/parts.tsx +8 -11
- package/src/fields/Duration/Duration.spec.tsx +2 -2
- package/src/fields/Duration/Duration.stories.tsx +1 -2
- package/src/fields/Duration/index.tsx +2 -8
- package/src/fields/FileUpload/FileUpload.spec.tsx +11 -25
- package/src/fields/FileUpload/FileUpload.stories.tsx +1 -1
- package/src/fields/FileUpload/index.tsx +72 -10
- package/src/fields/Geolocation/Geolocation.spec.tsx +5 -0
- package/src/fields/Geolocation/index.tsx +5 -12
- package/src/fields/Icon/Icon.stories.tsx +3 -3
- package/src/fields/Icon/index.tsx +7 -19
- package/src/fields/ImageField/index.tsx +2 -5
- package/src/fields/Input/Input.copy.spec.tsx +4 -4
- package/src/fields/Input/Input.spec.tsx +54 -28
- package/src/fields/Input/Input.stories.tsx +4 -18
- package/src/fields/Input/index.tsx +7 -14
- package/src/fields/MentionInput/MentionInput.spec.tsx +1 -1
- package/src/fields/MentionInput/MentionInput.stories.tsx +1 -2
- package/src/fields/MentionInput/index.tsx +4 -8
- package/src/fields/OTPInput/OtpInput.spec.tsx +6 -6
- package/src/fields/OTPInput/OtpInput.stories.tsx +1 -1
- package/src/fields/OTPInput/index.tsx +4 -5
- package/src/fields/OTPInput/otpCellHeightTouch.spec.ts +5 -4
- package/src/fields/PhoneInput/PhoneInput.spec.tsx +2 -5
- package/src/fields/PhoneInput/PhoneInput.stories.tsx +1 -1
- package/src/fields/PhoneInput/index.tsx +1 -3
- package/src/fields/Progress/Progress.spec.tsx +34 -21
- package/src/fields/Progress/Progress.stories.tsx +3 -5
- package/src/fields/Progress/index.tsx +20 -28
- package/src/fields/RadioGroup/RadioGroup.stories.tsx +1 -1
- package/src/fields/RadioGroup/index.tsx +8 -14
- package/src/fields/Rating/Rating.spec.tsx +1 -4
- package/src/fields/Rating/index.tsx +10 -23
- package/src/fields/SearchInput/SearchInput.native.spec.tsx +111 -0
- package/src/fields/SearchInput/SearchInput.spec.tsx +106 -19
- package/src/fields/SearchInput/SearchInput.stories.tsx +26 -6
- package/src/fields/SearchInput/index.tsx +65 -49
- package/src/fields/Select/Select.spec.tsx +65 -0
- package/src/fields/Select/Select.stories.tsx +8 -7
- package/src/fields/Select/index.tsx +21 -22
- package/src/fields/Signature/index.tsx +1 -5
- package/src/fields/Slider/Slider.spec.tsx +43 -8
- package/src/fields/Slider/Slider.stories.tsx +3 -3
- package/src/fields/Slider/index.tsx +57 -38
- package/src/fields/Stepper/Stepper.spec.tsx +22 -2
- package/src/fields/Stepper/Stepper.stories.tsx +1 -1
- package/src/fields/Stepper/index.tsx +55 -21
- package/src/fields/Switch/Switch.footprint.native.spec.tsx +18 -18
- package/src/fields/Switch/Switch.footprint.spec.tsx +64 -54
- package/src/fields/Switch/Switch.spec.tsx +125 -4
- package/src/fields/Switch/Switch.stories.tsx +3 -3
- package/src/fields/Switch/footprint.ts +14 -15
- package/src/fields/Switch/index.tsx +83 -117
- package/src/fields/TextArea/TextArea.spec.tsx +11 -11
- package/src/fields/TextArea/TextArea.stories.tsx +3 -8
- package/src/fields/TextArea/index.tsx +4 -8
- package/src/fields/TimePicker/catalog.tsx +8 -7
- package/src/fields/TimePicker/index.native.tsx +8 -6
- package/src/fields/TimePicker/parts.tsx +1 -4
- package/src/fields/TimeRangeScrubber/index.tsx +7 -5
- package/src/fields/ToggleGroup/ToggleGroup.spec.tsx +21 -33
- package/src/fields/ToggleGroup/ToggleGroup.stories.tsx +4 -8
- package/src/fields/ToggleGroup/index.tsx +21 -36
- package/src/fields/nativeDateTime/OsDateTimeSheet.tsx +4 -4
- package/src/fields/pickerActivation.spec.tsx +4 -2
- package/src/fields/pickerRows.spec.tsx +2 -0
- package/src/formSpacing.ts +3 -3
- package/src/index.ts +22 -4
- package/src/shared/TimeColumn.tsx +1 -1
- package/src/shared/colorRamps.ts +23 -25
- package/src/shared/floatingList.spec.tsx +8 -12
- package/src/shared/floatingList.tsx +3 -8
- package/src/shared/focusManagement.spec.tsx +39 -2
- package/src/shared/focusManagement.ts +26 -5
- package/src/shared/instantMotion.spec.ts +26 -0
- package/src/shared/instantMotion.ts +13 -0
- package/src/shared/utils.spec.ts +4 -4
- package/src/shared/utils.ts +8 -10
- package/src/themedPrimitives.tsx +1 -1
- package/types/AdaptivePopup/index.d.ts.map +1 -1
- package/types/Button/index.d.ts +8 -16
- package/types/Button/index.d.ts.map +1 -1
- package/types/Chip/index.d.ts +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/ControlGroup/index.d.ts.map +1 -1
- package/types/DescriptionList/index.d.ts +7 -3
- package/types/DescriptionList/index.d.ts.map +1 -1
- package/types/FieldDisplay/index.d.ts.map +1 -1
- package/types/FieldGroup.d.ts +6 -9
- package/types/FieldGroup.d.ts.map +1 -1
- package/types/FloatingPanel/index.d.ts +9 -6
- package/types/FloatingPanel/index.d.ts.map +1 -1
- package/types/FloatingPanel/index.native.d.ts +1 -1
- package/types/FloatingPanel/index.native.d.ts.map +1 -1
- package/types/FloatingPanel/useFloatingPanel.d.ts +19 -14
- package/types/FloatingPanel/useFloatingPanel.d.ts.map +1 -1
- package/types/Form/index.d.ts +7 -8
- package/types/Form/index.d.ts.map +1 -1
- package/types/FormGrid.d.ts +3 -5
- package/types/FormGrid.d.ts.map +1 -1
- package/types/FormSection.d.ts +3 -5
- package/types/FormSection.d.ts.map +1 -1
- package/types/InputParts/index.d.ts +37 -46
- package/types/InputParts/index.d.ts.map +1 -1
- package/types/Label/index.d.ts.map +1 -1
- package/types/MediaPicker/base64.d.ts +2 -0
- package/types/MediaPicker/base64.d.ts.map +1 -0
- package/types/MediaPicker/payload.d.ts +4 -0
- package/types/MediaPicker/payload.d.ts.map +1 -0
- package/types/MediaPicker/pickMedia.d.ts +3 -0
- package/types/MediaPicker/pickMedia.d.ts.map +1 -0
- package/types/MediaPicker/pickMedia.native.d.ts +3 -0
- package/types/MediaPicker/pickMedia.native.d.ts.map +1 -0
- package/types/MediaPicker/types.d.ts +23 -0
- package/types/MediaPicker/types.d.ts.map +1 -0
- package/types/MediaPicker/useMediaPicker.d.ts +6 -0
- package/types/MediaPicker/useMediaPicker.d.ts.map +1 -0
- package/types/Skeleton/index.d.ts +25 -4
- package/types/Skeleton/index.d.ts.map +1 -1
- package/types/Spinner/spinnerSize.d.ts +1 -1
- package/types/Wheel/index.d.ts.map +1 -1
- package/types/fieldLayout.d.ts +6 -7
- package/types/fieldLayout.d.ts.map +1 -1
- package/types/fields/Barcode/BarcodeScanner.d.ts +1 -1
- package/types/fields/Barcode/BarcodeScanner.d.ts.map +1 -1
- package/types/fields/Barcode/BarcodeScanner.native.d.ts +1 -1
- package/types/fields/Barcode/BarcodeScanner.native.d.ts.map +1 -1
- package/types/fields/Barcode/index.d.ts +1 -3
- package/types/fields/Barcode/index.d.ts.map +1 -1
- package/types/fields/Barcode/scannerTypes.d.ts +2 -4
- package/types/fields/Barcode/scannerTypes.d.ts.map +1 -1
- package/types/fields/Checkbox/Checkbox.d.ts +6 -7
- package/types/fields/Checkbox/Checkbox.d.ts.map +1 -1
- package/types/fields/Checkbox/CheckboxBox.d.ts +6 -2
- package/types/fields/Checkbox/CheckboxBox.d.ts.map +1 -1
- package/types/fields/Checkbox/CheckboxCard.d.ts +5 -5
- package/types/fields/Checkbox/CheckboxCard.d.ts.map +1 -1
- package/types/fields/Checkbox/CheckboxGroup.d.ts +1 -3
- package/types/fields/Checkbox/CheckboxGroup.d.ts.map +1 -1
- package/types/fields/Checkbox/index.d.ts +5 -5
- package/types/fields/Checkbox/index.d.ts.map +1 -1
- package/types/fields/ColorPicker/index.d.ts +0 -2
- package/types/fields/ColorPicker/index.d.ts.map +1 -1
- package/types/fields/ColorPicker/parts.d.ts +2 -2
- package/types/fields/ColorPicker/parts.d.ts.map +1 -1
- package/types/fields/Combobox/index.d.ts +1 -3
- package/types/fields/Combobox/index.d.ts.map +1 -1
- package/types/fields/DatePicker/Calendar.d.ts.map +1 -1
- package/types/fields/DatePicker/DateRangePicker.d.ts +0 -2
- package/types/fields/DatePicker/DateRangePicker.d.ts.map +1 -1
- package/types/fields/DatePicker/DatetimePicker.catalog.d.ts +0 -2
- package/types/fields/DatePicker/DatetimePicker.catalog.d.ts.map +1 -1
- package/types/fields/DatePicker/DatetimePicker.native.d.ts +0 -1
- package/types/fields/DatePicker/DatetimePicker.native.d.ts.map +1 -1
- package/types/fields/DatePicker/MonthPicker.d.ts +0 -2
- package/types/fields/DatePicker/MonthPicker.d.ts.map +1 -1
- package/types/fields/DatePicker/MultiDatePicker.d.ts +0 -2
- package/types/fields/DatePicker/MultiDatePicker.d.ts.map +1 -1
- package/types/fields/DatePicker/catalog.d.ts +0 -2
- package/types/fields/DatePicker/catalog.d.ts.map +1 -1
- package/types/fields/DatePicker/index.native.d.ts +0 -1
- package/types/fields/DatePicker/index.native.d.ts.map +1 -1
- package/types/fields/DatePicker/parts.d.ts +1 -2
- package/types/fields/DatePicker/parts.d.ts.map +1 -1
- package/types/fields/Duration/index.d.ts +2 -4
- package/types/fields/Duration/index.d.ts.map +1 -1
- package/types/fields/FileUpload/index.d.ts +10 -2
- package/types/fields/FileUpload/index.d.ts.map +1 -1
- package/types/fields/Geolocation/index.d.ts +1 -3
- package/types/fields/Geolocation/index.d.ts.map +1 -1
- package/types/fields/Icon/index.d.ts +0 -1
- package/types/fields/Icon/index.d.ts.map +1 -1
- package/types/fields/ImageField/index.d.ts +1 -3
- package/types/fields/ImageField/index.d.ts.map +1 -1
- package/types/fields/Input/index.d.ts +17 -22
- package/types/fields/Input/index.d.ts.map +1 -1
- package/types/fields/MentionInput/index.d.ts +0 -2
- package/types/fields/MentionInput/index.d.ts.map +1 -1
- package/types/fields/OTPInput/index.d.ts +0 -2
- package/types/fields/OTPInput/index.d.ts.map +1 -1
- package/types/fields/PhoneInput/index.d.ts +0 -1
- package/types/fields/PhoneInput/index.d.ts.map +1 -1
- package/types/fields/Progress/index.d.ts +4 -6
- package/types/fields/Progress/index.d.ts.map +1 -1
- package/types/fields/RadioGroup/index.d.ts +5 -7
- package/types/fields/RadioGroup/index.d.ts.map +1 -1
- package/types/fields/Rating/index.d.ts +1 -3
- package/types/fields/Rating/index.d.ts.map +1 -1
- package/types/fields/SearchInput/index.d.ts +7 -4
- package/types/fields/SearchInput/index.d.ts.map +1 -1
- package/types/fields/Select/index.d.ts +1 -3
- package/types/fields/Select/index.d.ts.map +1 -1
- package/types/fields/Signature/index.d.ts +1 -3
- package/types/fields/Signature/index.d.ts.map +1 -1
- package/types/fields/Slider/index.d.ts +8 -3
- package/types/fields/Slider/index.d.ts.map +1 -1
- package/types/fields/Stepper/index.d.ts +10 -2
- package/types/fields/Stepper/index.d.ts.map +1 -1
- package/types/fields/Switch/footprint.d.ts.map +1 -1
- package/types/fields/Switch/index.d.ts +1 -3
- package/types/fields/Switch/index.d.ts.map +1 -1
- package/types/fields/TextArea/index.d.ts +1 -3
- package/types/fields/TextArea/index.d.ts.map +1 -1
- package/types/fields/TimePicker/catalog.d.ts +1 -3
- package/types/fields/TimePicker/catalog.d.ts.map +1 -1
- package/types/fields/TimePicker/index.native.d.ts +0 -1
- package/types/fields/TimePicker/index.native.d.ts.map +1 -1
- package/types/fields/TimePicker/parts.d.ts +1 -2
- package/types/fields/TimePicker/parts.d.ts.map +1 -1
- package/types/fields/TimeRangeScrubber/index.d.ts +1 -2
- package/types/fields/TimeRangeScrubber/index.d.ts.map +1 -1
- package/types/fields/ToggleGroup/index.d.ts +2 -4
- package/types/fields/ToggleGroup/index.d.ts.map +1 -1
- package/types/formSpacing.d.ts +3 -3
- package/types/index.d.ts +7 -4
- package/types/index.d.ts.map +1 -1
- package/types/shared/colorRamps.d.ts +19 -21
- package/types/shared/colorRamps.d.ts.map +1 -1
- package/types/shared/floatingList.d.ts.map +1 -1
- package/types/shared/focusManagement.d.ts.map +1 -1
- package/types/shared/instantMotion.d.ts +4 -0
- package/types/shared/instantMotion.d.ts.map +1 -0
- package/types/shared/utils.d.ts +1 -3
- package/types/shared/utils.d.ts.map +1 -1
- package/types/themedPrimitives.d.ts +2 -2
- package/src/Button/Button.density.spec.tsx +0 -164
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { imageMime, imagePayload } from "./payload";
|
|
2
|
+
import { MediaPickerError, type MediaPickOptions, type PickedMedia } from "./types";
|
|
3
|
+
|
|
4
|
+
let active = false;
|
|
5
|
+
|
|
6
|
+
export function pickMedia(
|
|
7
|
+
options: MediaPickOptions,
|
|
8
|
+
signal?: AbortSignal,
|
|
9
|
+
): Promise<PickedMedia | null> {
|
|
10
|
+
if (signal?.aborted) return Promise.resolve(null);
|
|
11
|
+
if (active)
|
|
12
|
+
return Promise.reject(
|
|
13
|
+
new MediaPickerError("busy", "An image picker is already open.", options.source),
|
|
14
|
+
);
|
|
15
|
+
if (typeof document === "undefined" || !document.body) {
|
|
16
|
+
return Promise.reject(
|
|
17
|
+
new MediaPickerError("unavailable", "Image selection needs a browser.", options.source),
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
if (navigator.userActivation?.isActive === false) {
|
|
21
|
+
return Promise.reject(
|
|
22
|
+
new MediaPickerError(
|
|
23
|
+
"permission-denied",
|
|
24
|
+
"Open the image picker from a user action.",
|
|
25
|
+
options.source,
|
|
26
|
+
),
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
active = true;
|
|
30
|
+
return new Promise((resolve, reject) => {
|
|
31
|
+
const input = document.createElement("input");
|
|
32
|
+
input.type = "file";
|
|
33
|
+
input.accept = "image/*";
|
|
34
|
+
input.hidden = true;
|
|
35
|
+
if (options.source === "camera") input.setAttribute("capture", "environment");
|
|
36
|
+
let settled = false;
|
|
37
|
+
let reading = false;
|
|
38
|
+
let timer: ReturnType<typeof setTimeout> | undefined;
|
|
39
|
+
let reader: FileReader | undefined;
|
|
40
|
+
let image: HTMLImageElement | undefined;
|
|
41
|
+
|
|
42
|
+
const finish = (result: PickedMedia | null, error?: unknown) => {
|
|
43
|
+
if (settled) return;
|
|
44
|
+
settled = true;
|
|
45
|
+
active = false;
|
|
46
|
+
clearTimeout(timer);
|
|
47
|
+
input.remove();
|
|
48
|
+
input.removeEventListener("change", change);
|
|
49
|
+
input.removeEventListener("cancel", cancel);
|
|
50
|
+
window.removeEventListener("focus", focus);
|
|
51
|
+
signal?.removeEventListener("abort", cancel);
|
|
52
|
+
if (reader) {
|
|
53
|
+
reader.onload = reader.onerror = reader.onabort = null;
|
|
54
|
+
if (reader.readyState === FileReader.LOADING) reader.abort();
|
|
55
|
+
}
|
|
56
|
+
if (image) image.onload = image.onerror = null;
|
|
57
|
+
if (error)
|
|
58
|
+
reject(
|
|
59
|
+
error instanceof MediaPickerError
|
|
60
|
+
? error
|
|
61
|
+
: new MediaPickerError(
|
|
62
|
+
"read-failed",
|
|
63
|
+
"The image could not be read.",
|
|
64
|
+
options.source,
|
|
65
|
+
undefined,
|
|
66
|
+
{ cause: error },
|
|
67
|
+
),
|
|
68
|
+
);
|
|
69
|
+
else resolve(result);
|
|
70
|
+
};
|
|
71
|
+
const cancel = () => finish(null);
|
|
72
|
+
const focus = () => {
|
|
73
|
+
clearTimeout(timer);
|
|
74
|
+
timer = setTimeout(() => {
|
|
75
|
+
if (!reading && !input.files?.length) cancel();
|
|
76
|
+
}, 1000);
|
|
77
|
+
};
|
|
78
|
+
const change = () => {
|
|
79
|
+
const file = input.files?.[0];
|
|
80
|
+
if (!file) {
|
|
81
|
+
cancel();
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
reading = true;
|
|
85
|
+
const mimeType = imageMime(file.type, file.name);
|
|
86
|
+
if (!mimeType.startsWith("image/")) {
|
|
87
|
+
finish(
|
|
88
|
+
null,
|
|
89
|
+
new MediaPickerError("invalid-image", "Choose an image file.", options.source),
|
|
90
|
+
);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
reader = new FileReader();
|
|
94
|
+
reader.onerror = () => finish(null, reader?.error ?? new Error("Image read failed"));
|
|
95
|
+
reader.onabort = cancel;
|
|
96
|
+
reader.onload = () => {
|
|
97
|
+
const rawUri = String(reader?.result ?? "");
|
|
98
|
+
const base64 = rawUri.slice(rawUri.indexOf(",") + 1);
|
|
99
|
+
const uri = `data:${mimeType};base64,${base64}`;
|
|
100
|
+
image = new Image();
|
|
101
|
+
image.onerror = () =>
|
|
102
|
+
finish(
|
|
103
|
+
null,
|
|
104
|
+
new MediaPickerError(
|
|
105
|
+
"invalid-image",
|
|
106
|
+
"This browser cannot decode the image.",
|
|
107
|
+
options.source,
|
|
108
|
+
),
|
|
109
|
+
);
|
|
110
|
+
image.onload = () => {
|
|
111
|
+
try {
|
|
112
|
+
finish(
|
|
113
|
+
imagePayload(
|
|
114
|
+
{ uri, mimeType, width: image!.naturalWidth, height: image!.naturalHeight },
|
|
115
|
+
base64,
|
|
116
|
+
options,
|
|
117
|
+
),
|
|
118
|
+
);
|
|
119
|
+
} catch (error) {
|
|
120
|
+
finish(null, error);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
image.src = uri;
|
|
124
|
+
};
|
|
125
|
+
try {
|
|
126
|
+
reader.readAsDataURL(file);
|
|
127
|
+
} catch (error) {
|
|
128
|
+
finish(null, error);
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
input.addEventListener("change", change);
|
|
133
|
+
input.addEventListener("cancel", cancel);
|
|
134
|
+
signal?.addEventListener("abort", cancel, { once: true });
|
|
135
|
+
window.addEventListener("focus", focus);
|
|
136
|
+
try {
|
|
137
|
+
document.body.appendChild(input);
|
|
138
|
+
input.click();
|
|
139
|
+
} catch (error) {
|
|
140
|
+
finish(
|
|
141
|
+
null,
|
|
142
|
+
new MediaPickerError(
|
|
143
|
+
"permission-denied",
|
|
144
|
+
"The browser refused to open the image picker.",
|
|
145
|
+
options.source,
|
|
146
|
+
undefined,
|
|
147
|
+
{ cause: error },
|
|
148
|
+
),
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export type MediaSource = "camera" | "library";
|
|
2
|
+
|
|
3
|
+
export interface MediaPickOptions {
|
|
4
|
+
source: MediaSource;
|
|
5
|
+
base64?: boolean;
|
|
6
|
+
bytes?: boolean;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface PickedMedia {
|
|
10
|
+
uri: string;
|
|
11
|
+
mimeType: string;
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
base64?: string;
|
|
15
|
+
bytes?: Uint8Array;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export type MediaPickerErrorCode =
|
|
19
|
+
| "permission-denied"
|
|
20
|
+
| "unavailable"
|
|
21
|
+
| "read-failed"
|
|
22
|
+
| "invalid-image"
|
|
23
|
+
| "busy";
|
|
24
|
+
|
|
25
|
+
export class MediaPickerError extends Error {
|
|
26
|
+
readonly name = "MediaPickerError";
|
|
27
|
+
readonly code: MediaPickerErrorCode;
|
|
28
|
+
readonly source: MediaSource;
|
|
29
|
+
readonly canAskAgain?: boolean;
|
|
30
|
+
|
|
31
|
+
constructor(
|
|
32
|
+
code: MediaPickerErrorCode,
|
|
33
|
+
message: string,
|
|
34
|
+
source: MediaSource,
|
|
35
|
+
canAskAgain?: boolean,
|
|
36
|
+
options?: ErrorOptions,
|
|
37
|
+
) {
|
|
38
|
+
super(message, options);
|
|
39
|
+
this.code = code;
|
|
40
|
+
this.source = source;
|
|
41
|
+
this.canAskAgain = canAskAgain;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { act, renderHook } from "@testing-library/react";
|
|
2
|
+
import { beforeEach, expect, it, vi } from "vitest";
|
|
3
|
+
import { pickMedia } from "./pickMedia";
|
|
4
|
+
import { useMediaPicker } from "./useMediaPicker";
|
|
5
|
+
|
|
6
|
+
vi.mock("./pickMedia", () => ({ pickMedia: vi.fn() }));
|
|
7
|
+
beforeEach(() => vi.resetAllMocks());
|
|
8
|
+
|
|
9
|
+
it("tracks pending and rejects overlapping picks", async () => {
|
|
10
|
+
let finish!: (result: null) => void;
|
|
11
|
+
vi.mocked(pickMedia).mockImplementation(
|
|
12
|
+
() =>
|
|
13
|
+
new Promise((resolve) => {
|
|
14
|
+
finish = resolve;
|
|
15
|
+
}),
|
|
16
|
+
);
|
|
17
|
+
const hook = renderHook(() => useMediaPicker());
|
|
18
|
+
let result!: Promise<unknown>;
|
|
19
|
+
act(() => {
|
|
20
|
+
result = hook.result.current.pick({ source: "library" });
|
|
21
|
+
});
|
|
22
|
+
expect(hook.result.current.pending).toBe(true);
|
|
23
|
+
await expect(hook.result.current.pick({ source: "camera" })).rejects.toMatchObject({
|
|
24
|
+
code: "busy",
|
|
25
|
+
});
|
|
26
|
+
await act(async () => {
|
|
27
|
+
finish(null);
|
|
28
|
+
await result;
|
|
29
|
+
});
|
|
30
|
+
expect(hook.result.current.pending).toBe(false);
|
|
31
|
+
hook.unmount();
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it("aborts a pending pick when unmounted", async () => {
|
|
35
|
+
let signal: AbortSignal | undefined;
|
|
36
|
+
vi.mocked(pickMedia).mockImplementation((_options, abortSignal) => {
|
|
37
|
+
signal = abortSignal;
|
|
38
|
+
return new Promise((resolve) => abortSignal!.addEventListener("abort", () => resolve(null)));
|
|
39
|
+
});
|
|
40
|
+
const hook = renderHook(() => useMediaPicker());
|
|
41
|
+
let result!: Promise<unknown>;
|
|
42
|
+
act(() => {
|
|
43
|
+
result = hook.result.current.pick({ source: "library" });
|
|
44
|
+
});
|
|
45
|
+
hook.unmount();
|
|
46
|
+
expect(signal?.aborted).toBe(true);
|
|
47
|
+
expect(await result).toBeNull();
|
|
48
|
+
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
import { pickMedia } from "./pickMedia";
|
|
3
|
+
import { MediaPickerError, type MediaPickOptions, type PickedMedia } from "./types";
|
|
4
|
+
|
|
5
|
+
export function useMediaPicker() {
|
|
6
|
+
const active = useRef<AbortController | null>(null);
|
|
7
|
+
const mounted = useRef(true);
|
|
8
|
+
const [pending, setPending] = useState(false);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
mounted.current = true;
|
|
11
|
+
return () => {
|
|
12
|
+
mounted.current = false;
|
|
13
|
+
active.current?.abort();
|
|
14
|
+
};
|
|
15
|
+
}, []);
|
|
16
|
+
|
|
17
|
+
const pick = useCallback((options: MediaPickOptions): Promise<PickedMedia | null> => {
|
|
18
|
+
if (!mounted.current) return Promise.resolve(null);
|
|
19
|
+
if (active.current)
|
|
20
|
+
return Promise.reject(
|
|
21
|
+
new MediaPickerError("busy", "An image picker is already open.", options.source),
|
|
22
|
+
);
|
|
23
|
+
const controller = new AbortController();
|
|
24
|
+
active.current = controller;
|
|
25
|
+
setPending(true);
|
|
26
|
+
return pickMedia(options, controller.signal).finally(() => {
|
|
27
|
+
active.current = null;
|
|
28
|
+
if (mounted.current) setPending(false);
|
|
29
|
+
});
|
|
30
|
+
}, []);
|
|
31
|
+
|
|
32
|
+
return { pick, pending };
|
|
33
|
+
}
|
|
@@ -59,7 +59,7 @@ export const Variants: Story = {
|
|
|
59
59
|
*/
|
|
60
60
|
export const TextLines: Story = {
|
|
61
61
|
render: () => (
|
|
62
|
-
<YStack gap="$6" width={320}>
|
|
62
|
+
<YStack gap="$6" width={320} maxWidth="100%">
|
|
63
63
|
<YStack gap="$2">
|
|
64
64
|
<Paragraph size="$2">one line</Paragraph>
|
|
65
65
|
<SkeletonText />
|
|
@@ -90,7 +90,7 @@ export const Circles: Story = {
|
|
|
90
90
|
/** What a loading row actually looks like: avatar, name, two lines of body. */
|
|
91
91
|
export const LoadingRow: Story = {
|
|
92
92
|
render: () => (
|
|
93
|
-
<XStack gap="$3" width={360} alignItems="flex-start">
|
|
93
|
+
<XStack gap="$3" width={360} maxWidth="100%" alignItems="flex-start">
|
|
94
94
|
<SkeletonCircle size={40} />
|
|
95
95
|
<YStack flex={1} gap="$2">
|
|
96
96
|
<Skeleton variant="text" width="45%" />
|
package/src/Skeleton/index.tsx
CHANGED
|
@@ -1,10 +1,24 @@
|
|
|
1
|
+
import { createContext, useContext, type ReactNode } from "react";
|
|
1
2
|
import { radiusClassProps, sizeRecipeForToken, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
2
3
|
import type { GetProps } from "tamagui";
|
|
3
4
|
import { View, styled, isWeb } from "tamagui";
|
|
5
|
+
import { useTranslation } from "../shared/i18n";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The one Skeleton. `@multiplatform.one/components` re-exports this module,
|
|
9
|
+
* so a loading Button, a field skeleton and a screen placeholder paint the
|
|
10
|
+
* same bone with the same motion.
|
|
11
|
+
*
|
|
12
|
+
* Motion: one keyframe (`mp-skeleton-pulse`), mounted once per document by
|
|
13
|
+
* the first bone. It runs only while the animation knob resolves a
|
|
14
|
+
* transition; `prefers-reduced-motion` resolves none (useResolvedKnobs), and
|
|
15
|
+
* the stylesheet's media query also stops a bone the server rendered pulsing.
|
|
16
|
+
*/
|
|
4
17
|
|
|
5
18
|
// ── Types ─────────────────────────────────────────────────────
|
|
6
19
|
|
|
7
20
|
export type SkeletonVariant = "text" | "circular" | "rectangular" | "rounded";
|
|
21
|
+
export type SkeletonTextSize = "body" | "display";
|
|
8
22
|
|
|
9
23
|
export interface SkeletonProps extends Omit<GetProps<typeof SkeletonFrame>, "variant"> {
|
|
10
24
|
variant?: SkeletonVariant;
|
|
@@ -14,6 +28,8 @@ export interface SkeletonProps extends Omit<GetProps<typeof SkeletonFrame>, "var
|
|
|
14
28
|
height?: number | string;
|
|
15
29
|
/** Whether to animate the skeleton */
|
|
16
30
|
animate?: boolean;
|
|
31
|
+
/** Accessible name for a root loading region. Ignored on decorative bones. */
|
|
32
|
+
label?: string;
|
|
17
33
|
}
|
|
18
34
|
|
|
19
35
|
// ── Styled component ──────────────────────────────────────────
|
|
@@ -21,12 +37,14 @@ export interface SkeletonProps extends Omit<GetProps<typeof SkeletonFrame>, "var
|
|
|
21
37
|
const SkeletonFrame = styled(View, {
|
|
22
38
|
name: "Skeleton",
|
|
23
39
|
backgroundColor: "$color5",
|
|
40
|
+
overflow: "hidden",
|
|
41
|
+
pointerEvents: "none",
|
|
42
|
+
flexShrink: 0,
|
|
24
43
|
|
|
25
44
|
variants: {
|
|
26
45
|
variant: {
|
|
27
46
|
text: {
|
|
28
47
|
borderRadius: "$2",
|
|
29
|
-
height: 16,
|
|
30
48
|
},
|
|
31
49
|
circular: {
|
|
32
50
|
borderRadius: 1000,
|
|
@@ -48,34 +66,41 @@ const SkeletonFrame = styled(View, {
|
|
|
48
66
|
// Size-knob geometry (spec: Skeleton block/text/circle scale with
|
|
49
67
|
// `sizeToken`), DERIVED from the generated size recipe (LC-80): a text bone
|
|
50
68
|
// is the token's recipe fontSize + 2px of line-box rounding (medium keeps
|
|
51
|
-
// the previous 16px line), and a circle bone is the
|
|
52
|
-
// step above the control ramp
|
|
53
|
-
const SKELETON_SIZE_TOKENS = ["$3", "$4", "$5"] as const;
|
|
69
|
+
// the previous 16px line), display is twice that, and a circle bone is the
|
|
70
|
+
// medallion one height step above the control ramp.
|
|
71
|
+
const SKELETON_SIZE_TOKENS = ["$3", "$4", "$true", "$5"] as const;
|
|
54
72
|
const skeletonCircleTokenUp: Record<string, string> = { $3: "$4", $4: "$5", $5: "$6" };
|
|
55
73
|
|
|
56
|
-
function skeletonTextHeight(sizeToken: string): number
|
|
57
|
-
|
|
58
|
-
|
|
74
|
+
function skeletonTextHeight(sizeToken: string, textSize: SkeletonTextSize = "body"): number {
|
|
75
|
+
const known = (SKELETON_SIZE_TOKENS as readonly string[]).includes(sizeToken) ? sizeToken : "$4";
|
|
76
|
+
const body = sizeRecipeForToken(known).fontSize + 2;
|
|
77
|
+
return textSize === "display" ? body * 2 : body;
|
|
59
78
|
}
|
|
60
79
|
|
|
61
80
|
function skeletonCircleSize(sizeToken: string): number {
|
|
62
81
|
return sizeRecipeForToken(skeletonCircleTokenUp[sizeToken] ?? "$5").height;
|
|
63
82
|
}
|
|
64
|
-
// SP-GAP: text-line gap follows the space knob; medium keeps $2.
|
|
65
|
-
const skeletonGapMap: Record<string, string> = { small: "$1", medium: "$2", large: "$3" };
|
|
66
83
|
|
|
67
|
-
//
|
|
68
|
-
//
|
|
84
|
+
// One keyframe, mounted once. The reduced-motion and forced-colors rules ride
|
|
85
|
+
// the same sheet so a bone never pulses for a user who asked for stillness.
|
|
69
86
|
const PULSE_STYLE_ID = "__mp-skeleton-pulse";
|
|
87
|
+
const PULSE_ANIMATION = "mp-skeleton-pulse 1.5s ease-in-out infinite";
|
|
70
88
|
function ensurePulseKeyframes() {
|
|
71
89
|
if (!isWeb || typeof document === "undefined") return;
|
|
72
90
|
if (document.getElementById(PULSE_STYLE_ID)) return;
|
|
73
91
|
const style = document.createElement("style");
|
|
74
92
|
style.id = PULSE_STYLE_ID;
|
|
75
|
-
style.textContent =
|
|
93
|
+
style.textContent = [
|
|
94
|
+
"@keyframes mp-skeleton-pulse{0%{opacity:1}50%{opacity:0.4}100%{opacity:1}}",
|
|
95
|
+
"@media (prefers-reduced-motion:reduce){.mp-skeleton-bone{animation:none!important}}",
|
|
96
|
+
"@media (forced-colors:active){.mp-skeleton-bone{outline:1px solid transparent;outline-offset:-1px}}",
|
|
97
|
+
].join("");
|
|
76
98
|
document.head.appendChild(style);
|
|
77
99
|
}
|
|
78
100
|
|
|
101
|
+
/** False inside a SkeletonText / SkeletonGroup: the region announces once. */
|
|
102
|
+
const AnnounceCtx = createContext(true);
|
|
103
|
+
|
|
79
104
|
// ── Skeleton Component ────────────────────────────────────────
|
|
80
105
|
|
|
81
106
|
export function Skeleton({
|
|
@@ -84,42 +109,68 @@ export function Skeleton({
|
|
|
84
109
|
height,
|
|
85
110
|
animate = true,
|
|
86
111
|
style,
|
|
112
|
+
label,
|
|
113
|
+
className,
|
|
87
114
|
...props
|
|
88
115
|
}: SkeletonProps) {
|
|
89
|
-
const {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
116
|
+
const { t } = useTranslation();
|
|
117
|
+
const { knobProps } = useResolvedKnobs({ component: "Skeleton" });
|
|
118
|
+
const shouldAnnounce = useContext(AnnounceCtx);
|
|
119
|
+
// Pulse only when animating is on AND the animation knob resolves a
|
|
120
|
+
// transition (undefined at animation:none and under prefers-reduced-motion).
|
|
121
|
+
const pulsing = Boolean(animate && knobProps.motion.control.transition);
|
|
122
|
+
if (isWeb) ensurePulseKeyframes();
|
|
123
|
+
|
|
124
|
+
const decorative = props["aria-hidden"] === true || !shouldAnnounce;
|
|
125
|
+
// Corner smoothing is an R-SCALE arc: circular is R-PILL (a squircle would
|
|
126
|
+
// break 1:1) and rectangular is square by variant.
|
|
127
|
+
const smoothingClass =
|
|
128
|
+
variant === "text" || variant === "rounded" ? knobProps.borderRadius.className : undefined;
|
|
129
|
+
const boneClass = [
|
|
130
|
+
"mp-skeleton-bone",
|
|
131
|
+
pulsing ? "mp-skeleton-pulse" : "mp-skeleton-static",
|
|
132
|
+
smoothingClass,
|
|
133
|
+
className,
|
|
134
|
+
]
|
|
135
|
+
.filter(Boolean)
|
|
136
|
+
.join(" ");
|
|
137
|
+
|
|
138
|
+
// Merge the pulse last into `style` so a consumer style cannot kill it
|
|
139
|
+
// (LC-20: animation:none stops the pulse via the knob; otherwise it runs).
|
|
98
140
|
const mergedStyle =
|
|
99
|
-
isWeb && pulsing
|
|
100
|
-
|
|
101
|
-
|
|
141
|
+
isWeb && pulsing ? { ...(style as object), animation: PULSE_ANIMATION } : style;
|
|
142
|
+
|
|
143
|
+
const textHeight = variant === "text" ? skeletonTextHeight(knobProps.sizeToken) : undefined;
|
|
144
|
+
const resolvedHeight = height ?? textHeight;
|
|
102
145
|
|
|
103
146
|
return (
|
|
104
147
|
<SkeletonFrame
|
|
105
148
|
variant={variant}
|
|
106
149
|
width={width}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
//
|
|
110
|
-
// Consumers that clamp
|
|
111
|
-
// which wins via ...props below.
|
|
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.
|
|
150
|
+
height={resolvedHeight}
|
|
151
|
+
// Radius only — a skeleton is a flat blob, it never draws the knob's
|
|
152
|
+
// border. Text lines and rounded blocks ride DEFAULT (MPO-56): the token
|
|
153
|
+
// at every stop. Consumers that clamp pass borderRadius via ...props.
|
|
114
154
|
{...(variant === "rounded" || variant === "text"
|
|
115
155
|
? { borderRadius: knobProps.borderRadius.borderRadius }
|
|
116
156
|
: undefined)}
|
|
117
|
-
// R-PILL (spec Skeleton "circle"):
|
|
118
|
-
// round at every radius value, so it declares the class the
|
|
119
|
-
// `radius:none` sweep licenses it under (D-09 / LC-60).
|
|
157
|
+
// R-PILL (spec Skeleton "circle"): stays 1:1 and round at every radius.
|
|
120
158
|
{...(variant === "circular" ? radiusClassProps("R-PILL", "SkeletonCircle") : undefined)}
|
|
121
159
|
{...props}
|
|
160
|
+
{...(isWeb ? { className: boneClass } : undefined)}
|
|
122
161
|
{...(mergedStyle ? { style: mergedStyle } : undefined)}
|
|
162
|
+
pointerEvents="none"
|
|
163
|
+
data-skeleton=""
|
|
164
|
+
data-skeleton-variant={variant}
|
|
165
|
+
data-animate={pulsing ? "true" : "false"}
|
|
166
|
+
data-width={width != null ? String(width) : undefined}
|
|
167
|
+
data-height={resolvedHeight != null ? String(resolvedHeight) : undefined}
|
|
168
|
+
aria-hidden={decorative ? true : undefined}
|
|
169
|
+
role={decorative ? undefined : "status"}
|
|
170
|
+
aria-busy={decorative ? undefined : true}
|
|
171
|
+
aria-live={decorative ? undefined : "polite"}
|
|
172
|
+
aria-label={decorative ? undefined : (label ?? t("Loading"))}
|
|
173
|
+
accessibilityElementsHidden={decorative}
|
|
123
174
|
/>
|
|
124
175
|
);
|
|
125
176
|
}
|
|
@@ -130,43 +181,111 @@ export function SkeletonText({
|
|
|
130
181
|
lines = 1,
|
|
131
182
|
gap: gapProp,
|
|
132
183
|
lastLineWidth = "70%",
|
|
184
|
+
size: textSize = "body",
|
|
185
|
+
label,
|
|
186
|
+
width,
|
|
187
|
+
height,
|
|
188
|
+
animate,
|
|
189
|
+
style,
|
|
190
|
+
variant: _variant,
|
|
133
191
|
...props
|
|
134
192
|
}: SkeletonProps & {
|
|
135
193
|
lines?: number;
|
|
136
194
|
gap?: string | number;
|
|
137
195
|
lastLineWidth?: string | number;
|
|
196
|
+
size?: SkeletonTextSize;
|
|
138
197
|
}) {
|
|
139
|
-
const {
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
198
|
+
const { t } = useTranslation();
|
|
199
|
+
const { knobProps } = useResolvedKnobs({ component: "Skeleton" });
|
|
200
|
+
const shouldAnnounce = useContext(AnnounceCtx);
|
|
201
|
+
const count = Math.max(0, Math.floor(Number(lines) || 0));
|
|
202
|
+
const lineHeight = height ?? skeletonTextHeight(knobProps.sizeToken, textSize);
|
|
203
|
+
// SP-GAP: the text-line gap is the tight role (gapSm) at every size token.
|
|
204
|
+
const gap = gapProp ?? knobProps.gapSm.gap;
|
|
205
|
+
const decorative = !shouldAnnounce;
|
|
206
|
+
|
|
207
|
+
if (count === 0) return null;
|
|
144
208
|
|
|
145
209
|
return (
|
|
146
|
-
<
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
210
|
+
<AnnounceCtx.Provider value={false}>
|
|
211
|
+
<View
|
|
212
|
+
{...props}
|
|
213
|
+
width={width ?? "100%"}
|
|
214
|
+
gap={gap}
|
|
215
|
+
data-skeleton-text=""
|
|
216
|
+
data-lines={String(count)}
|
|
217
|
+
aria-hidden={decorative ? true : undefined}
|
|
218
|
+
role={decorative ? undefined : "status"}
|
|
219
|
+
aria-busy={decorative ? undefined : true}
|
|
220
|
+
aria-live={decorative ? undefined : "polite"}
|
|
221
|
+
aria-label={decorative ? undefined : (label ?? t("Loading"))}
|
|
222
|
+
>
|
|
223
|
+
{Array.from({ length: count }, (_, i) => (
|
|
224
|
+
<Skeleton
|
|
225
|
+
key={i}
|
|
226
|
+
variant="text"
|
|
227
|
+
animate={animate}
|
|
228
|
+
style={style}
|
|
229
|
+
height={lineHeight}
|
|
230
|
+
width={
|
|
231
|
+
count === 1 ? (width ?? lastLineWidth) : i === count - 1 ? lastLineWidth : "100%"
|
|
232
|
+
}
|
|
233
|
+
/>
|
|
234
|
+
))}
|
|
235
|
+
</View>
|
|
236
|
+
</AnnounceCtx.Provider>
|
|
156
237
|
);
|
|
157
238
|
}
|
|
158
239
|
|
|
159
240
|
// ── Skeleton.Circle - for avatar placeholder ──────────────────
|
|
160
241
|
|
|
161
|
-
export function SkeletonCircle({
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
242
|
+
export function SkeletonCircle({
|
|
243
|
+
size: sizeProp,
|
|
244
|
+
label,
|
|
245
|
+
...props
|
|
246
|
+
}: SkeletonProps & { size?: number }) {
|
|
247
|
+
const { knobProps } = useResolvedKnobs({ component: "Skeleton" });
|
|
248
|
+
const diameter = Math.max(0, sizeProp ?? skeletonCircleSize(knobProps.sizeToken));
|
|
249
|
+
return (
|
|
250
|
+
<Skeleton
|
|
251
|
+
variant="circular"
|
|
252
|
+
label={label}
|
|
253
|
+
width={diameter}
|
|
254
|
+
height={diameter}
|
|
255
|
+
{...props}
|
|
256
|
+
data-diameter={String(diameter)}
|
|
257
|
+
/>
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// ── Skeleton.Group - one announcement for a composed placeholder ──
|
|
262
|
+
|
|
263
|
+
export function SkeletonGroup({
|
|
264
|
+
children,
|
|
265
|
+
label,
|
|
266
|
+
...props
|
|
267
|
+
}: GetProps<typeof View> & { children?: ReactNode; label?: string }) {
|
|
268
|
+
const { t } = useTranslation();
|
|
269
|
+
return (
|
|
270
|
+
<AnnounceCtx.Provider value={false}>
|
|
271
|
+
<View
|
|
272
|
+
{...props}
|
|
273
|
+
role="status"
|
|
274
|
+
aria-busy={true}
|
|
275
|
+
aria-live="polite"
|
|
276
|
+
aria-label={label ?? t("Loading")}
|
|
277
|
+
data-skeleton-group=""
|
|
278
|
+
>
|
|
279
|
+
{children}
|
|
280
|
+
</View>
|
|
281
|
+
</AnnounceCtx.Provider>
|
|
282
|
+
);
|
|
165
283
|
}
|
|
166
284
|
|
|
167
285
|
// ── Attach sub-components ─────────────────────────────────────
|
|
168
286
|
|
|
169
287
|
Skeleton.Text = SkeletonText;
|
|
170
288
|
Skeleton.Circle = SkeletonCircle;
|
|
289
|
+
Skeleton.Group = SkeletonGroup;
|
|
171
290
|
|
|
172
291
|
export type SkeletonFrameProps = GetProps<typeof SkeletonFrame>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Mounts every Forms/Skeleton story and asserts what it exists to show. The
|
|
3
3
|
* theme hooks stay REAL: text-bone height comes from the size recipe and the
|
|
4
|
-
* pulse gates on knobProps.transition, so a stub would measure neither.
|
|
4
|
+
* pulse gates on knobProps.motion.control.transition, so a stub would measure neither.
|
|
5
5
|
*
|
|
6
6
|
* Geometry is read off the CLASS, not `style`. Tamagui compiles width, height
|
|
7
7
|
* and radius into atomic classes (`_w-240px`, `_w-7037` for 70%), and only the
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import { cleanup } from "@testing-library/react";
|
|
6
6
|
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
7
|
-
import { Preset } from "@multiplatform.one/theme";
|
|
7
|
+
import { Preset, Surface } from "@multiplatform.one/theme";
|
|
8
8
|
import { afterEach, describe, expect, it } from "vitest";
|
|
9
9
|
import { Spinner } from "./index";
|
|
10
10
|
|
|
@@ -42,10 +42,10 @@ describe("Spinner", () => {
|
|
|
42
42
|
|
|
43
43
|
it("maps explicit small/large onto the shared size-token scale", () => {
|
|
44
44
|
const small = renderWithProviders(<Spinner size="small" />);
|
|
45
|
-
expect(status(small.container).getAttribute("data-size")).toBe("$1");
|
|
45
|
+
expect(status(small.container).getAttribute("data-size-token")).toBe("$1");
|
|
46
46
|
cleanup();
|
|
47
47
|
const large = renderWithProviders(<Spinner size="large" />);
|
|
48
|
-
expect(status(large.container).getAttribute("data-size")).toBe("$3");
|
|
48
|
+
expect(status(large.container).getAttribute("data-size-token")).toBe("$3");
|
|
49
49
|
});
|
|
50
50
|
|
|
51
51
|
it("publishes data-animation=none when the animation knob is none", () => {
|
|
@@ -64,17 +64,17 @@ describe("Spinner", () => {
|
|
|
64
64
|
|
|
65
65
|
it("follows the size knob when size is omitted", () => {
|
|
66
66
|
const small = renderWithProviders(
|
|
67
|
-
<
|
|
67
|
+
<Surface size="$3">
|
|
68
68
|
<Spinner />
|
|
69
|
-
</
|
|
69
|
+
</Surface>,
|
|
70
70
|
);
|
|
71
|
-
expect(status(small.container).getAttribute("data-size")).toBe("$3");
|
|
71
|
+
expect(status(small.container).getAttribute("data-size-token")).toBe("$3");
|
|
72
72
|
cleanup();
|
|
73
73
|
const large = renderWithProviders(
|
|
74
|
-
<
|
|
74
|
+
<Surface size="$5">
|
|
75
75
|
<Spinner />
|
|
76
|
-
</
|
|
76
|
+
</Surface>,
|
|
77
77
|
);
|
|
78
|
-
expect(status(large.container).getAttribute("data-size")).toBe("$5");
|
|
78
|
+
expect(status(large.container).getAttribute("data-size-token")).toBe("$5");
|
|
79
79
|
});
|
|
80
80
|
});
|