@multiplatform.one/forms 7.7.6 → 7.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Button/index.cjs +1 -4
- package/dist/cjs/Button/index.native.js +5 -6
- package/dist/cjs/Button/index.native.js.map +1 -1
- package/dist/cjs/Chip/index.cjs +1 -1
- package/dist/cjs/Chip/index.native.js +1 -1
- package/dist/cjs/Chip/index.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/index.cjs +59 -14
- package/dist/cjs/FloatingPanel/index.native.js +16 -7
- package/dist/cjs/FloatingPanel/index.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/nestedAction.cjs +37 -0
- package/dist/cjs/FloatingPanel/nestedAction.native.js +42 -0
- package/dist/cjs/FloatingPanel/nestedAction.native.js.map +1 -0
- package/dist/cjs/InputParts/index.cjs +19 -8
- package/dist/cjs/InputParts/index.native.js +20 -11
- package/dist/cjs/InputParts/index.native.js.map +1 -1
- package/dist/cjs/Wheel/index.cjs +3 -3
- package/dist/cjs/Wheel/index.native.js +3 -3
- package/dist/cjs/Wheel/index.native.js.map +1 -1
- package/dist/cjs/fieldLayout.cjs +3 -3
- package/dist/cjs/fieldLayout.native.js +3 -3
- package/dist/cjs/fieldLayout.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.cjs +9 -2
- package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js +10 -1
- package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
- package/dist/cjs/fields/Combobox/index.cjs +36 -29
- package/dist/cjs/fields/Combobox/index.native.js +38 -38
- package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/Calendar.cjs +6 -1
- package/dist/cjs/fields/DatePicker/Calendar.native.js +6 -1
- package/dist/cjs/fields/DatePicker/Calendar.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/DateRangePicker.cjs +2 -2
- package/dist/cjs/fields/DatePicker/DateRangePicker.native.js +2 -2
- package/dist/cjs/fields/DatePicker/DateRangePicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.cjs +15 -12
- package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js +16 -12
- package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/DatetimePicker.native.js +39 -14
- package/dist/cjs/fields/DatePicker/DatetimePicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/MonthPicker.cjs +10 -3
- package/dist/cjs/fields/DatePicker/MonthPicker.native.js +10 -3
- package/dist/cjs/fields/DatePicker/MonthPicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/MultiDatePicker.cjs +2 -2
- package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js +2 -2
- package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/index.native.js +3 -0
- package/dist/cjs/fields/DatePicker/index.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/parts.cjs +26 -14
- package/dist/cjs/fields/DatePicker/parts.native.js +28 -14
- package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/cjs/fields/FileUpload/index.cjs +6 -0
- package/dist/cjs/fields/FileUpload/index.native.js +6 -0
- package/dist/cjs/fields/FileUpload/index.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/GeolocationMap.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/geocoder.cjs +63 -0
- package/dist/cjs/fields/Geolocation/geocoder.native.js +68 -0
- package/dist/cjs/fields/Geolocation/geocoder.native.js.map +1 -0
- package/dist/cjs/fields/Geolocation/index.cjs +801 -152
- package/dist/cjs/fields/Geolocation/index.native.js +856 -167
- package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/nativeSearchFocus.cjs +44 -0
- package/dist/cjs/fields/Geolocation/nativeSearchFocus.native.js +47 -0
- package/dist/cjs/fields/Geolocation/nativeSearchFocus.native.js.map +1 -0
- package/dist/cjs/fields/Icon/drawnSet.cjs +16 -3
- package/dist/cjs/fields/Icon/drawnSet.native.js +20 -3
- package/dist/cjs/fields/Icon/drawnSet.native.js.map +1 -1
- package/dist/cjs/fields/Icon/index.cjs +102 -27
- package/dist/cjs/fields/Icon/index.native.js +115 -31
- package/dist/cjs/fields/Icon/index.native.js.map +1 -1
- package/dist/cjs/fields/Input/index.cjs +5 -12
- package/dist/cjs/fields/Input/index.native.js +5 -13
- package/dist/cjs/fields/Input/index.native.js.map +1 -1
- package/dist/cjs/fields/PhoneInput/index.cjs +2 -2
- package/dist/cjs/fields/PhoneInput/index.native.js +2 -2
- package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/cjs/fields/RadioGroup/index.cjs +34 -5
- package/dist/cjs/fields/RadioGroup/index.native.js +49 -7
- package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/cjs/fields/SearchInput/index.cjs +8 -9
- package/dist/cjs/fields/SearchInput/index.native.js +8 -9
- package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
- package/dist/cjs/fields/Select/index.cjs +42 -11
- package/dist/cjs/fields/Select/index.native.js +52 -20
- package/dist/cjs/fields/Select/index.native.js.map +1 -1
- package/dist/cjs/fields/Stepper/index.cjs +144 -31
- package/dist/cjs/fields/Stepper/index.native.js +151 -31
- package/dist/cjs/fields/Stepper/index.native.js.map +1 -1
- package/dist/cjs/fields/ToggleGroup/index.cjs +35 -2
- package/dist/cjs/fields/ToggleGroup/index.native.js +42 -2
- package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/index.native.js +2 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/shared/focusManagement.cjs +24 -11
- package/dist/cjs/shared/focusManagement.native.js +24 -11
- package/dist/cjs/shared/focusManagement.native.js.map +1 -1
- package/dist/cjs/shared/nativeA11y.cjs +57 -0
- package/dist/cjs/shared/nativeA11y.native.js +61 -0
- package/dist/cjs/shared/nativeA11y.native.js.map +1 -0
- package/dist/esm/Button/index.mjs +1 -4
- package/dist/esm/Button/index.mjs.map +1 -1
- package/dist/esm/Button/index.native.js +5 -6
- package/dist/esm/Button/index.native.js.map +1 -1
- package/dist/esm/Chip/index.mjs +1 -1
- package/dist/esm/Chip/index.mjs.map +1 -1
- package/dist/esm/Chip/index.native.js +1 -1
- package/dist/esm/Chip/index.native.js.map +1 -1
- package/dist/esm/FloatingPanel/index.mjs +58 -15
- package/dist/esm/FloatingPanel/index.mjs.map +1 -1
- package/dist/esm/FloatingPanel/index.native.js +15 -8
- package/dist/esm/FloatingPanel/index.native.js.map +1 -1
- package/dist/esm/FloatingPanel/nestedAction.mjs +11 -0
- package/dist/esm/FloatingPanel/nestedAction.mjs.map +1 -0
- package/dist/esm/FloatingPanel/nestedAction.native.js +13 -0
- package/dist/esm/FloatingPanel/nestedAction.native.js.map +1 -0
- package/dist/esm/InputParts/index.mjs +20 -9
- package/dist/esm/InputParts/index.mjs.map +1 -1
- package/dist/esm/InputParts/index.native.js +21 -12
- package/dist/esm/InputParts/index.native.js.map +1 -1
- package/dist/esm/Wheel/index.mjs +3 -3
- package/dist/esm/Wheel/index.mjs.map +1 -1
- package/dist/esm/Wheel/index.native.js +3 -3
- package/dist/esm/Wheel/index.native.js.map +1 -1
- package/dist/esm/fieldLayout.mjs +3 -3
- package/dist/esm/fieldLayout.mjs.map +1 -1
- package/dist/esm/fieldLayout.native.js +3 -3
- package/dist/esm/fieldLayout.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxFieldFrame.mjs +8 -1
- package/dist/esm/fields/Checkbox/CheckboxFieldFrame.mjs.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxFieldFrame.native.js +10 -1
- package/dist/esm/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
- package/dist/esm/fields/Combobox/index.mjs +36 -29
- package/dist/esm/fields/Combobox/index.mjs.map +1 -1
- package/dist/esm/fields/Combobox/index.native.js +38 -38
- package/dist/esm/fields/Combobox/index.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/Calendar.mjs +6 -1
- package/dist/esm/fields/DatePicker/Calendar.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/Calendar.native.js +6 -1
- package/dist/esm/fields/DatePicker/Calendar.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/DateRangePicker.mjs +2 -2
- package/dist/esm/fields/DatePicker/DateRangePicker.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/DateRangePicker.native.js +2 -2
- package/dist/esm/fields/DatePicker/DateRangePicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/DatetimePicker.catalog.mjs +15 -12
- package/dist/esm/fields/DatePicker/DatetimePicker.catalog.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js +16 -12
- package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/DatetimePicker.native.js +39 -14
- package/dist/esm/fields/DatePicker/DatetimePicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/MonthPicker.mjs +10 -3
- package/dist/esm/fields/DatePicker/MonthPicker.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/MonthPicker.native.js +10 -3
- package/dist/esm/fields/DatePicker/MonthPicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/MultiDatePicker.mjs +2 -2
- package/dist/esm/fields/DatePicker/MultiDatePicker.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/MultiDatePicker.native.js +2 -2
- package/dist/esm/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/index.native.js +3 -0
- package/dist/esm/fields/DatePicker/index.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/parts.mjs +28 -16
- package/dist/esm/fields/DatePicker/parts.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/parts.native.js +30 -16
- package/dist/esm/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/esm/fields/FileUpload/index.mjs +6 -0
- package/dist/esm/fields/FileUpload/index.mjs.map +1 -1
- package/dist/esm/fields/FileUpload/index.native.js +6 -0
- package/dist/esm/fields/FileUpload/index.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/GeolocationMap.mjs.map +1 -1
- package/dist/esm/fields/Geolocation/GeolocationMap.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/geocoder.mjs +33 -0
- package/dist/esm/fields/Geolocation/geocoder.mjs.map +1 -0
- package/dist/esm/fields/Geolocation/geocoder.native.js +35 -0
- package/dist/esm/fields/Geolocation/geocoder.native.js.map +1 -0
- package/dist/esm/fields/Geolocation/index.mjs +792 -149
- package/dist/esm/fields/Geolocation/index.mjs.map +1 -1
- package/dist/esm/fields/Geolocation/index.native.js +847 -164
- package/dist/esm/fields/Geolocation/index.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/nativeSearchFocus.mjs +19 -0
- package/dist/esm/fields/Geolocation/nativeSearchFocus.mjs.map +1 -0
- package/dist/esm/fields/Geolocation/nativeSearchFocus.native.js +19 -0
- package/dist/esm/fields/Geolocation/nativeSearchFocus.native.js.map +1 -0
- package/dist/esm/fields/Icon/drawnSet.mjs +16 -3
- package/dist/esm/fields/Icon/drawnSet.mjs.map +1 -1
- package/dist/esm/fields/Icon/drawnSet.native.js +20 -3
- package/dist/esm/fields/Icon/drawnSet.native.js.map +1 -1
- package/dist/esm/fields/Icon/index.mjs +93 -18
- package/dist/esm/fields/Icon/index.mjs.map +1 -1
- package/dist/esm/fields/Icon/index.native.js +106 -22
- package/dist/esm/fields/Icon/index.native.js.map +1 -1
- package/dist/esm/fields/Input/index.mjs +5 -12
- package/dist/esm/fields/Input/index.mjs.map +1 -1
- package/dist/esm/fields/Input/index.native.js +5 -13
- package/dist/esm/fields/Input/index.native.js.map +1 -1
- package/dist/esm/fields/PhoneInput/index.mjs +2 -2
- package/dist/esm/fields/PhoneInput/index.mjs.map +1 -1
- package/dist/esm/fields/PhoneInput/index.native.js +2 -2
- package/dist/esm/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/esm/fields/RadioGroup/index.mjs +34 -5
- package/dist/esm/fields/RadioGroup/index.mjs.map +1 -1
- package/dist/esm/fields/RadioGroup/index.native.js +49 -7
- package/dist/esm/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/esm/fields/SearchInput/index.mjs +9 -10
- package/dist/esm/fields/SearchInput/index.mjs.map +1 -1
- package/dist/esm/fields/SearchInput/index.native.js +9 -10
- package/dist/esm/fields/SearchInput/index.native.js.map +1 -1
- package/dist/esm/fields/Select/index.mjs +42 -11
- package/dist/esm/fields/Select/index.mjs.map +1 -1
- package/dist/esm/fields/Select/index.native.js +52 -20
- package/dist/esm/fields/Select/index.native.js.map +1 -1
- package/dist/esm/fields/Stepper/index.mjs +145 -32
- package/dist/esm/fields/Stepper/index.mjs.map +1 -1
- package/dist/esm/fields/Stepper/index.native.js +152 -32
- package/dist/esm/fields/Stepper/index.native.js.map +1 -1
- package/dist/esm/fields/ToggleGroup/index.mjs +35 -2
- package/dist/esm/fields/ToggleGroup/index.mjs.map +1 -1
- package/dist/esm/fields/ToggleGroup/index.native.js +42 -2
- package/dist/esm/fields/ToggleGroup/index.native.js.map +1 -1
- package/dist/esm/index.mjs +2 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/shared/focusManagement.mjs +24 -11
- package/dist/esm/shared/focusManagement.mjs.map +1 -1
- package/dist/esm/shared/focusManagement.native.js +24 -11
- package/dist/esm/shared/focusManagement.native.js.map +1 -1
- package/dist/esm/shared/nativeA11y.mjs +31 -0
- package/dist/esm/shared/nativeA11y.mjs.map +1 -0
- package/dist/esm/shared/nativeA11y.native.js +32 -0
- package/dist/esm/shared/nativeA11y.native.js.map +1 -0
- package/dist/jsx/Button/index.mjs +1 -4
- package/dist/jsx/Button/index.mjs.map +1 -1
- package/dist/jsx/Button/index.native.js +5 -6
- package/dist/jsx/Button/index.native.js.map +1 -1
- package/dist/jsx/Chip/index.mjs +1 -1
- package/dist/jsx/Chip/index.mjs.map +1 -1
- package/dist/jsx/Chip/index.native.js +1 -1
- package/dist/jsx/Chip/index.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/index.mjs +58 -15
- package/dist/jsx/FloatingPanel/index.mjs.map +1 -1
- package/dist/jsx/FloatingPanel/index.native.js +16 -7
- package/dist/jsx/FloatingPanel/index.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/nestedAction.mjs +11 -0
- package/dist/jsx/FloatingPanel/nestedAction.mjs.map +1 -0
- package/dist/jsx/FloatingPanel/nestedAction.native.js +42 -0
- package/dist/jsx/FloatingPanel/nestedAction.native.js.map +1 -0
- package/dist/jsx/InputParts/index.mjs +20 -9
- package/dist/jsx/InputParts/index.mjs.map +1 -1
- package/dist/jsx/InputParts/index.native.js +20 -11
- package/dist/jsx/InputParts/index.native.js.map +1 -1
- package/dist/jsx/Wheel/index.mjs +3 -3
- package/dist/jsx/Wheel/index.mjs.map +1 -1
- package/dist/jsx/Wheel/index.native.js +3 -3
- package/dist/jsx/Wheel/index.native.js.map +1 -1
- package/dist/jsx/fieldLayout.mjs +3 -3
- package/dist/jsx/fieldLayout.mjs.map +1 -1
- package/dist/jsx/fieldLayout.native.js +3 -3
- package/dist/jsx/fieldLayout.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.mjs +8 -1
- package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.mjs.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.native.js +10 -1
- package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
- package/dist/jsx/fields/Combobox/index.mjs +36 -29
- package/dist/jsx/fields/Combobox/index.mjs.map +1 -1
- package/dist/jsx/fields/Combobox/index.native.js +38 -38
- package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/Calendar.mjs +6 -1
- package/dist/jsx/fields/DatePicker/Calendar.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/Calendar.native.js +6 -1
- package/dist/jsx/fields/DatePicker/Calendar.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/DateRangePicker.mjs +2 -2
- package/dist/jsx/fields/DatePicker/DateRangePicker.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/DateRangePicker.native.js +2 -2
- package/dist/jsx/fields/DatePicker/DateRangePicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.mjs +15 -12
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js +16 -12
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/DatetimePicker.native.js +39 -14
- package/dist/jsx/fields/DatePicker/DatetimePicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/MonthPicker.mjs +10 -3
- package/dist/jsx/fields/DatePicker/MonthPicker.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/MonthPicker.native.js +10 -3
- package/dist/jsx/fields/DatePicker/MonthPicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/MultiDatePicker.mjs +2 -2
- package/dist/jsx/fields/DatePicker/MultiDatePicker.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js +2 -2
- package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/index.native.js +3 -0
- package/dist/jsx/fields/DatePicker/index.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/parts.mjs +28 -16
- package/dist/jsx/fields/DatePicker/parts.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/parts.native.js +28 -14
- package/dist/jsx/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/jsx/fields/FileUpload/index.mjs +6 -0
- package/dist/jsx/fields/FileUpload/index.mjs.map +1 -1
- package/dist/jsx/fields/FileUpload/index.native.js +6 -0
- package/dist/jsx/fields/FileUpload/index.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/GeolocationMap.mjs.map +1 -1
- package/dist/jsx/fields/Geolocation/GeolocationMap.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/geocoder.mjs +33 -0
- package/dist/jsx/fields/Geolocation/geocoder.mjs.map +1 -0
- package/dist/jsx/fields/Geolocation/geocoder.native.js +68 -0
- package/dist/jsx/fields/Geolocation/geocoder.native.js.map +1 -0
- package/dist/jsx/fields/Geolocation/index.mjs +792 -149
- package/dist/jsx/fields/Geolocation/index.mjs.map +1 -1
- package/dist/jsx/fields/Geolocation/index.native.js +856 -167
- package/dist/jsx/fields/Geolocation/index.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/nativeSearchFocus.mjs +19 -0
- package/dist/jsx/fields/Geolocation/nativeSearchFocus.mjs.map +1 -0
- package/dist/jsx/fields/Geolocation/nativeSearchFocus.native.js +47 -0
- package/dist/jsx/fields/Geolocation/nativeSearchFocus.native.js.map +1 -0
- package/dist/jsx/fields/Icon/drawnSet.mjs +16 -3
- package/dist/jsx/fields/Icon/drawnSet.mjs.map +1 -1
- package/dist/jsx/fields/Icon/drawnSet.native.js +20 -3
- package/dist/jsx/fields/Icon/drawnSet.native.js.map +1 -1
- package/dist/jsx/fields/Icon/index.mjs +93 -18
- package/dist/jsx/fields/Icon/index.mjs.map +1 -1
- package/dist/jsx/fields/Icon/index.native.js +115 -31
- package/dist/jsx/fields/Icon/index.native.js.map +1 -1
- package/dist/jsx/fields/Input/index.mjs +5 -12
- package/dist/jsx/fields/Input/index.mjs.map +1 -1
- package/dist/jsx/fields/Input/index.native.js +5 -13
- package/dist/jsx/fields/Input/index.native.js.map +1 -1
- package/dist/jsx/fields/PhoneInput/index.mjs +2 -2
- package/dist/jsx/fields/PhoneInput/index.mjs.map +1 -1
- package/dist/jsx/fields/PhoneInput/index.native.js +2 -2
- package/dist/jsx/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/jsx/fields/RadioGroup/index.mjs +34 -5
- package/dist/jsx/fields/RadioGroup/index.mjs.map +1 -1
- package/dist/jsx/fields/RadioGroup/index.native.js +49 -7
- package/dist/jsx/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/jsx/fields/SearchInput/index.mjs +9 -10
- package/dist/jsx/fields/SearchInput/index.mjs.map +1 -1
- package/dist/jsx/fields/SearchInput/index.native.js +8 -9
- package/dist/jsx/fields/SearchInput/index.native.js.map +1 -1
- package/dist/jsx/fields/Select/index.mjs +42 -11
- package/dist/jsx/fields/Select/index.mjs.map +1 -1
- package/dist/jsx/fields/Select/index.native.js +52 -20
- package/dist/jsx/fields/Select/index.native.js.map +1 -1
- package/dist/jsx/fields/Stepper/index.mjs +145 -32
- package/dist/jsx/fields/Stepper/index.mjs.map +1 -1
- package/dist/jsx/fields/Stepper/index.native.js +151 -31
- package/dist/jsx/fields/Stepper/index.native.js.map +1 -1
- package/dist/jsx/fields/ToggleGroup/index.mjs +35 -2
- package/dist/jsx/fields/ToggleGroup/index.mjs.map +1 -1
- package/dist/jsx/fields/ToggleGroup/index.native.js +42 -2
- package/dist/jsx/fields/ToggleGroup/index.native.js.map +1 -1
- package/dist/jsx/index.js +2 -1
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +2 -1
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +2 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/shared/focusManagement.mjs +24 -11
- package/dist/jsx/shared/focusManagement.mjs.map +1 -1
- package/dist/jsx/shared/focusManagement.native.js +24 -11
- package/dist/jsx/shared/focusManagement.native.js.map +1 -1
- package/dist/jsx/shared/nativeA11y.mjs +31 -0
- package/dist/jsx/shared/nativeA11y.mjs.map +1 -0
- package/dist/jsx/shared/nativeA11y.native.js +61 -0
- package/dist/jsx/shared/nativeA11y.native.js.map +1 -0
- package/package.json +9 -7
- package/src/Button/Button.fontWeight.spec.tsx +75 -0
- package/src/Button/Button.labelInk.spec.tsx +21 -18
- package/src/Button/Button.outlinedChannel.spec.tsx +46 -0
- package/src/Button/Button.sizeLadder.spec.tsx +4 -3
- package/src/Button/Button.stories.tsx +20 -0
- package/src/Button/index.tsx +30 -7
- package/src/Chip/Chip.spec.tsx +3 -1
- package/src/Chip/index.tsx +1 -5
- package/src/FieldGroup.stories.tsx +3 -7
- package/src/FieldLayout.stories.tsx +75 -12
- package/src/Fieldset.stories.tsx +3 -7
- package/src/FloatingPanel/FloatingPanel.native.spec.tsx +54 -0
- package/src/FloatingPanel/FloatingPanel.spec.tsx +109 -0
- package/src/FloatingPanel/index.native.tsx +24 -7
- package/src/FloatingPanel/index.tsx +80 -13
- package/src/FloatingPanel/nestedAction.spec.ts +36 -0
- package/src/FloatingPanel/nestedAction.ts +15 -0
- package/src/FloatingPanel/panelWidthContract.spec.ts +12 -15
- package/src/FormGrid.stories.tsx +5 -11
- package/src/FormsIntegration.stories.tsx +2 -6
- package/src/InputParts/InputButton.spec.tsx +16 -0
- package/src/InputParts/index.tsx +34 -7
- package/src/InputParts/layoutGap.spec.tsx +43 -0
- package/src/Wheel/Wheel.spec.tsx +16 -0
- package/src/Wheel/index.tsx +3 -3
- package/src/fieldFamilyStories.radius.spec.tsx +118 -0
- package/src/fieldLayout.spec.tsx +42 -1
- package/src/fieldLayout.tsx +9 -9
- package/src/fields/Barcode/Barcode.spec.tsx +2 -0
- package/src/fields/Checkbox/CheckboxFieldFrame.spec.tsx +18 -0
- package/src/fields/Checkbox/CheckboxFieldFrame.tsx +6 -1
- package/src/fields/Combobox/Combobox.spec.tsx +48 -1
- package/src/fields/Combobox/index.tsx +53 -39
- package/src/fields/DatePicker/Calendar.tsx +4 -1
- package/src/fields/DatePicker/DatePicker.stories.tsx +22 -1
- package/src/fields/DatePicker/DateRangePicker.tsx +4 -2
- package/src/fields/DatePicker/DatetimePicker.catalog.tsx +21 -19
- package/src/fields/DatePicker/DatetimePicker.native.spec.tsx +144 -0
- package/src/fields/DatePicker/DatetimePicker.native.tsx +57 -32
- package/src/fields/DatePicker/DatetimePicker.stories.tsx +22 -0
- package/src/fields/DatePicker/MonthPicker.tsx +8 -3
- package/src/fields/DatePicker/MultiDatePicker.tsx +4 -2
- package/src/fields/DatePicker/index.native.tsx +1 -0
- package/src/fields/DatePicker/parts.spec.tsx +56 -0
- package/src/fields/DatePicker/parts.tsx +33 -12
- package/src/fields/FileUpload/FileUpload.spec.tsx +29 -0
- package/src/fields/FileUpload/index.tsx +6 -0
- package/src/fields/Geolocation/Geolocation.spec.tsx +287 -35
- package/src/fields/Geolocation/Geolocation.stories.tsx +141 -7
- package/src/fields/Geolocation/GeolocationMap.native.tsx +3 -0
- package/src/fields/Geolocation/GeolocationMap.tsx +4 -0
- package/src/fields/Geolocation/geocoder.spec.ts +59 -0
- package/src/fields/Geolocation/geocoder.ts +84 -0
- package/src/fields/Geolocation/geocoderSeam.spec.tsx +203 -0
- package/src/fields/Geolocation/index.tsx +912 -180
- package/src/fields/Geolocation/nativeSearchFocus.spec.ts +34 -0
- package/src/fields/Geolocation/nativeSearchFocus.ts +19 -0
- package/src/fields/Geolocation/salvage.spec.tsx +398 -0
- package/src/fields/Geolocation/storyProviders.spec.tsx +44 -0
- package/src/fields/Icon/Icon.spec.tsx +215 -1
- package/src/fields/Icon/Icon.stories.tsx +9 -1
- package/src/fields/Icon/drawnSet.tsx +44 -4
- package/src/fields/Icon/index.tsx +118 -18
- package/src/fields/Input/Input.copy.spec.tsx +1 -0
- package/src/fields/Input/Input.spec.tsx +50 -0
- package/src/fields/Input/Input.stories.tsx +1 -1
- package/src/fields/Input/index.tsx +7 -13
- package/src/fields/PhoneInput/index.tsx +2 -2
- package/src/fields/RadioGroup/RadioGroup.native.spec.tsx +67 -0
- package/src/fields/RadioGroup/index.tsx +82 -8
- package/src/fields/SearchInput/SearchInput.spec.tsx +14 -0
- package/src/fields/SearchInput/index.tsx +5 -6
- package/src/fields/Select/Select.spec.tsx +54 -0
- package/src/fields/Select/index.tsx +52 -17
- package/src/fields/Stepper/Stepper.spec.tsx +34 -1
- package/src/fields/Stepper/index.tsx +193 -33
- package/src/fields/ToggleGroup/ToggleGroup.native.spec.tsx +73 -0
- package/src/fields/ToggleGroup/ToggleGroup.spec.tsx +49 -0
- package/src/fields/ToggleGroup/index.tsx +76 -1
- package/src/index.ts +9 -0
- package/src/shared/focusManagement.spec.tsx +68 -0
- package/src/shared/focusManagement.ts +20 -10
- package/src/shared/nativeA11y.spec.ts +64 -0
- package/src/shared/nativeA11y.ts +80 -0
- package/types/Button/index.d.ts +22 -3
- package/types/Button/index.d.ts.map +1 -1
- package/types/Chip/index.d.ts.map +1 -1
- package/types/FloatingPanel/index.d.ts +11 -1
- package/types/FloatingPanel/index.d.ts.map +1 -1
- package/types/FloatingPanel/index.native.d.ts +2 -1
- package/types/FloatingPanel/index.native.d.ts.map +1 -1
- package/types/FloatingPanel/nestedAction.d.ts +13 -0
- package/types/FloatingPanel/nestedAction.d.ts.map +1 -0
- package/types/InputParts/index.d.ts.map +1 -1
- package/types/fields/Checkbox/CheckboxFieldFrame.d.ts +46 -2
- package/types/fields/Checkbox/CheckboxFieldFrame.d.ts.map +1 -1
- package/types/fields/Checkbox/index.d.ts +3 -3
- package/types/fields/Combobox/index.d.ts +3 -1
- package/types/fields/Combobox/index.d.ts.map +1 -1
- package/types/fields/DatePicker/Calendar.d.ts.map +1 -1
- package/types/fields/DatePicker/DateRangePicker.d.ts.map +1 -1
- package/types/fields/DatePicker/DatetimePicker.catalog.d.ts.map +1 -1
- package/types/fields/DatePicker/DatetimePicker.native.d.ts.map +1 -1
- package/types/fields/DatePicker/MonthPicker.d.ts.map +1 -1
- package/types/fields/DatePicker/MultiDatePicker.d.ts.map +1 -1
- package/types/fields/DatePicker/index.native.d.ts.map +1 -1
- package/types/fields/DatePicker/parts.d.ts.map +1 -1
- package/types/fields/FileUpload/index.d.ts.map +1 -1
- package/types/fields/Geolocation/GeolocationMap.d.ts +4 -0
- package/types/fields/Geolocation/GeolocationMap.d.ts.map +1 -1
- package/types/fields/Geolocation/GeolocationMap.native.d.ts +3 -0
- package/types/fields/Geolocation/GeolocationMap.native.d.ts.map +1 -1
- package/types/fields/Geolocation/geocoder.d.ts +53 -0
- package/types/fields/Geolocation/geocoder.d.ts.map +1 -0
- package/types/fields/Geolocation/index.d.ts +18 -2
- package/types/fields/Geolocation/index.d.ts.map +1 -1
- package/types/fields/Geolocation/nativeSearchFocus.d.ts +8 -0
- package/types/fields/Geolocation/nativeSearchFocus.d.ts.map +1 -0
- package/types/fields/Icon/drawnSet.d.ts.map +1 -1
- package/types/fields/Icon/index.d.ts.map +1 -1
- package/types/fields/Input/index.d.ts.map +1 -1
- package/types/fields/PhoneInput/index.d.ts.map +1 -1
- package/types/fields/RadioGroup/index.d.ts +30 -3
- package/types/fields/RadioGroup/index.d.ts.map +1 -1
- package/types/fields/SearchInput/index.d.ts.map +1 -1
- package/types/fields/Select/index.d.ts.map +1 -1
- package/types/fields/Stepper/index.d.ts.map +1 -1
- package/types/fields/ToggleGroup/index.d.ts +31 -2
- package/types/fields/ToggleGroup/index.d.ts.map +1 -1
- package/types/index.d.ts +2 -0
- package/types/index.d.ts.map +1 -1
- package/types/shared/focusManagement.d.ts +2 -2
- package/types/shared/focusManagement.d.ts.map +1 -1
- package/types/shared/nativeA11y.d.ts +61 -0
- package/types/shared/nativeA11y.d.ts.map +1 -0
- package/src/router.d.ts +0 -16
|
@@ -19,6 +19,7 @@ import { Skeleton } from "../../Skeleton";
|
|
|
19
19
|
import { Field, FieldLayout } from "../../fieldLayout";
|
|
20
20
|
import { formButtonColors, formCommonColors, formInputColors } from "../../shared/colorRamps";
|
|
21
21
|
import { warnBareDisabled } from "../../shared/devWarn";
|
|
22
|
+
import { choiceItemA11y, composeA11yName } from "../../shared/nativeA11y";
|
|
22
23
|
import {
|
|
23
24
|
getElevationWrapperProps,
|
|
24
25
|
getFieldError,
|
|
@@ -79,8 +80,18 @@ function ToggleItemWithElevation({
|
|
|
79
80
|
groupedRadius: Record<string, unknown>;
|
|
80
81
|
} & Record<string, any>) {
|
|
81
82
|
if (elevationWrapperProps.elevation) {
|
|
83
|
+
// The segment carries flexBasis 0 to share the run. A column wrapper would
|
|
84
|
+
// read that as its HEIGHT and resolve the whole frame to the two 1px
|
|
85
|
+
// borders (MPO-133), so the wrapper lays out along the row in BOTH
|
|
86
|
+
// orientations and inherits the segment's place in the run.
|
|
82
87
|
return (
|
|
83
|
-
<View
|
|
88
|
+
<View
|
|
89
|
+
{...elevationWrapperProps}
|
|
90
|
+
{...groupedRadius}
|
|
91
|
+
flexDirection="row"
|
|
92
|
+
flexGrow={1}
|
|
93
|
+
flexShrink={0}
|
|
94
|
+
>
|
|
84
95
|
<ToggleItemFrame {...props} {...groupedRadius} />
|
|
85
96
|
</View>
|
|
86
97
|
);
|
|
@@ -99,6 +110,15 @@ export interface ToggleGroupOption {
|
|
|
99
110
|
* item-level `disabled` without it DEV-warns `bare-disabled`.
|
|
100
111
|
*/
|
|
101
112
|
disabledReason?: string;
|
|
113
|
+
/**
|
|
114
|
+
* MPO-283 — accessible name for THIS segment, overriding `label`. Use it
|
|
115
|
+
* when the segment carries meaning the label text does not: an icon-only
|
|
116
|
+
* segment, or a segment whose state is encoded in fill/weight/position.
|
|
117
|
+
* Native reads it as `accessibilityLabel`, web as `aria-label`.
|
|
118
|
+
*/
|
|
119
|
+
accessibilityLabel?: string;
|
|
120
|
+
/** Extra spoken context for this segment (native `accessibilityHint`). */
|
|
121
|
+
accessibilityHint?: string;
|
|
102
122
|
}
|
|
103
123
|
|
|
104
124
|
export interface ToggleGroupProps {
|
|
@@ -138,6 +158,26 @@ export interface ToggleGroupProps {
|
|
|
138
158
|
skeleton?: boolean;
|
|
139
159
|
/** When true, uses compact sizing */
|
|
140
160
|
compact?: boolean;
|
|
161
|
+
/**
|
|
162
|
+
* MPO-283 — accessible name for the whole group.
|
|
163
|
+
*
|
|
164
|
+
* tamagui does not map `aria-label` onto React Native's
|
|
165
|
+
* `accessibilityLabel`, so on native the web attribute is inert; this prop
|
|
166
|
+
* is the native channel and `aria-label` is accepted as an alias for it.
|
|
167
|
+
*
|
|
168
|
+
* iOS only speaks elements, never non-element containers, so a name set
|
|
169
|
+
* here is PREFIXED onto each segment's accessible name ("Severity, warning")
|
|
170
|
+
* rather than sitting on the frame where nothing would read it. Segments
|
|
171
|
+
* stay individually selectable — the group is never collapsed into one
|
|
172
|
+
* element, which would hide which segment is chosen.
|
|
173
|
+
*/
|
|
174
|
+
accessibilityLabel?: string;
|
|
175
|
+
/** Alias for `accessibilityLabel`; also emitted as the web attribute. */
|
|
176
|
+
"aria-label"?: string;
|
|
177
|
+
/** Web-only name reference. Native has no id-based equivalent. */
|
|
178
|
+
"aria-labelledby"?: string;
|
|
179
|
+
/** Extra spoken context for the group (native `accessibilityHint`). */
|
|
180
|
+
accessibilityHint?: string;
|
|
141
181
|
}
|
|
142
182
|
|
|
143
183
|
export function ToggleGroup({
|
|
@@ -165,6 +205,10 @@ export function ToggleGroup({
|
|
|
165
205
|
children,
|
|
166
206
|
skeleton,
|
|
167
207
|
compact,
|
|
208
|
+
accessibilityLabel,
|
|
209
|
+
accessibilityHint,
|
|
210
|
+
"aria-label": ariaLabel,
|
|
211
|
+
"aria-labelledby": ariaLabelledBy,
|
|
168
212
|
}: ToggleGroupProps) {
|
|
169
213
|
// Canonical `onChange` and the alias `onValueChange` both fire from the
|
|
170
214
|
// single emit site below (same reconciliation as Switch).
|
|
@@ -172,6 +216,10 @@ export function ToggleGroup({
|
|
|
172
216
|
onChange?.(val);
|
|
173
217
|
onValueChange?.(val);
|
|
174
218
|
};
|
|
219
|
+
// MPO-283: one name, two channels. tamagui drops `aria-label` on native, so
|
|
220
|
+
// the prop and the attribute are reconciled here and each platform is handed
|
|
221
|
+
// the spelling it actually reads.
|
|
222
|
+
const groupA11yName = accessibilityLabel ?? ariaLabel;
|
|
175
223
|
const { resolvedForm, knobProps, control, text, elevation, disabledState, id } = useFormField({
|
|
176
224
|
form: formProp,
|
|
177
225
|
id: idProp,
|
|
@@ -406,6 +454,25 @@ export function ToggleGroup({
|
|
|
406
454
|
}
|
|
407
455
|
: undefined)}
|
|
408
456
|
{...(kbFocusValue === option.value ? keyboardFocusRingProps : undefined)}
|
|
457
|
+
// MPO-283. On iOS a styled View is not an accessibility element, so
|
|
458
|
+
// without this block the whole segmented control is absent from the
|
|
459
|
+
// tree: correct on screen, invisible to anything reading elements.
|
|
460
|
+
// The SEGMENTS carry the semantics, never the frame — an
|
|
461
|
+
// `accessible` frame would collapse them into one element and lose
|
|
462
|
+
// which one is chosen, which is the only thing worth announcing.
|
|
463
|
+
{...(!isWeb
|
|
464
|
+
? choiceItemA11y({
|
|
465
|
+
kind: type === "multiple" ? "checkbox" : "radio",
|
|
466
|
+
name: composeA11yName(groupA11yName, option.accessibilityLabel ?? option.label),
|
|
467
|
+
selected,
|
|
468
|
+
disabled: itemDisabled,
|
|
469
|
+
hint: option.accessibilityHint ?? accessibilityHint,
|
|
470
|
+
})
|
|
471
|
+
: {
|
|
472
|
+
...(option.accessibilityLabel
|
|
473
|
+
? { "aria-label": option.accessibilityLabel }
|
|
474
|
+
: undefined),
|
|
475
|
+
})}
|
|
409
476
|
>
|
|
410
477
|
{option.icon}
|
|
411
478
|
<SizableText
|
|
@@ -508,6 +575,14 @@ export function ToggleGroup({
|
|
|
508
575
|
"aria-required": required || undefined,
|
|
509
576
|
"aria-invalid": hasError || undefined,
|
|
510
577
|
"aria-readonly": readOnly || undefined,
|
|
578
|
+
// MPO-283: web reads the attribute, Android reads the RN prop off the
|
|
579
|
+
// container. iOS reads neither, which is why the name is also prefixed
|
|
580
|
+
// onto every segment above.
|
|
581
|
+
...(groupA11yName ? { "aria-label": groupA11yName } : undefined),
|
|
582
|
+
...(ariaLabelledBy ? { "aria-labelledby": ariaLabelledBy } : undefined),
|
|
583
|
+
...(!isWeb && groupA11yName
|
|
584
|
+
? { accessibilityLabel: groupA11yName, accessibilityRole: "radiogroup" as const }
|
|
585
|
+
: undefined),
|
|
511
586
|
};
|
|
512
587
|
|
|
513
588
|
return (
|
package/src/index.ts
CHANGED
|
@@ -218,6 +218,15 @@ export type { BarcodePreviewProps } from "./fields/Barcode/BarcodePreview";
|
|
|
218
218
|
|
|
219
219
|
export { Geolocation } from "./fields/Geolocation";
|
|
220
220
|
export type { GeolocationProps, GeolocationMapProps } from "./fields/Geolocation";
|
|
221
|
+
export type {
|
|
222
|
+
GeocodeFn,
|
|
223
|
+
GeocodeQuery,
|
|
224
|
+
GeocodeResult,
|
|
225
|
+
Geocoder,
|
|
226
|
+
ReverseGeocodeFn,
|
|
227
|
+
ReverseGeocodeQuery,
|
|
228
|
+
} from "./fields/Geolocation/geocoder";
|
|
229
|
+
export { resolveGeocoder } from "./fields/Geolocation/geocoder";
|
|
221
230
|
|
|
222
231
|
export { ImageField } from "./fields/ImageField";
|
|
223
232
|
export type { ImageFieldProps } from "./fields/ImageField";
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { act, cleanup, renderHook } from "@testing-library/react";
|
|
2
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
3
|
+
import { useReturnFocusOnClose, useSheetModalFocus } from "./focusManagement";
|
|
4
|
+
|
|
5
|
+
afterEach(() => {
|
|
6
|
+
cleanup();
|
|
7
|
+
vi.useRealTimers();
|
|
8
|
+
document.body.replaceChildren();
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
for (const mode of ["floating", "sheet"] as const) {
|
|
12
|
+
describe(`${mode} close focus`, () => {
|
|
13
|
+
function setup() {
|
|
14
|
+
vi.useFakeTimers();
|
|
15
|
+
const trigger = document.createElement("button");
|
|
16
|
+
const frame = document.createElement("div");
|
|
17
|
+
const item = document.createElement("button");
|
|
18
|
+
const outside = document.createElement("input");
|
|
19
|
+
frame.append(item);
|
|
20
|
+
document.body.append(trigger, frame, outside);
|
|
21
|
+
trigger.focus();
|
|
22
|
+
const skipReturnFocusRef = { current: false };
|
|
23
|
+
const frameRef = { current: frame };
|
|
24
|
+
const hook = renderHook(
|
|
25
|
+
({ open }) => {
|
|
26
|
+
if (mode === "sheet") useSheetModalFocus(open, frameRef, skipReturnFocusRef);
|
|
27
|
+
else useReturnFocusOnClose(open, skipReturnFocusRef);
|
|
28
|
+
},
|
|
29
|
+
{ initialProps: { open: true } },
|
|
30
|
+
);
|
|
31
|
+
return { ...hook, trigger, item, outside, skipReturnFocusRef };
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
it("restores dropped focus after the close animation", async () => {
|
|
35
|
+
const h = setup();
|
|
36
|
+
h.trigger.blur();
|
|
37
|
+
h.rerender({ open: false });
|
|
38
|
+
await act(() => vi.advanceTimersByTimeAsync(400));
|
|
39
|
+
expect(document.activeElement).toBe(h.trigger);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it("honors suppression set after close, before the delayed restore", async () => {
|
|
43
|
+
const h = setup();
|
|
44
|
+
h.trigger.blur();
|
|
45
|
+
h.rerender({ open: false });
|
|
46
|
+
h.skipReturnFocusRef.current = true;
|
|
47
|
+
await act(() => vi.advanceTimersByTimeAsync(400));
|
|
48
|
+
expect(document.activeElement).toBe(document.body);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it("keeps focus deliberately moved outside", async () => {
|
|
52
|
+
const h = setup();
|
|
53
|
+
h.outside.focus();
|
|
54
|
+
h.rerender({ open: false });
|
|
55
|
+
await act(() => vi.advanceTimersByTimeAsync(400));
|
|
56
|
+
expect(document.activeElement).toBe(h.outside);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it("does not restore a previous close after reopening", async () => {
|
|
60
|
+
const h = setup();
|
|
61
|
+
h.trigger.blur();
|
|
62
|
+
h.rerender({ open: false });
|
|
63
|
+
h.rerender({ open: true });
|
|
64
|
+
await act(() => vi.advanceTimersByTimeAsync(400));
|
|
65
|
+
expect(document.activeElement).not.toBe(h.trigger);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
@@ -53,24 +53,30 @@ function focusIsDropped(insideEl?: HTMLElement | null): boolean {
|
|
|
53
53
|
function useCaptureOnOpen(open: boolean) {
|
|
54
54
|
const prevRef = useRef<HTMLElement | null>(null);
|
|
55
55
|
const wasOpenRef = useRef(false);
|
|
56
|
+
const generationRef = useRef(0);
|
|
56
57
|
if (canUseDom()) {
|
|
58
|
+
if (open !== wasOpenRef.current) generationRef.current += 1;
|
|
57
59
|
if (open && !wasOpenRef.current) {
|
|
58
60
|
prevRef.current = document.activeElement as HTMLElement | null;
|
|
59
61
|
}
|
|
60
62
|
wasOpenRef.current = open;
|
|
61
63
|
}
|
|
62
|
-
return prevRef;
|
|
64
|
+
return { prevRef, generationRef };
|
|
63
65
|
}
|
|
64
66
|
|
|
65
67
|
function restoreLater(
|
|
66
68
|
prevRef: RefObject<HTMLElement | null>,
|
|
69
|
+
generationRef: RefObject<number>,
|
|
67
70
|
insideRef?: RefObject<HTMLElement | null>,
|
|
71
|
+
skipReturnFocusRef?: RefObject<boolean>,
|
|
68
72
|
) {
|
|
73
|
+
const generation = generationRef.current;
|
|
69
74
|
const restore = () => {
|
|
70
75
|
// Fires from the unmount path, so the document can be gone by now (a test
|
|
71
76
|
// environment torn down inside the retry window). `isConnected` stays
|
|
72
77
|
// stale-true on a detached node, so it does not cover this.
|
|
73
78
|
if (!canUseDom()) return;
|
|
79
|
+
if (skipReturnFocusRef?.current || generationRef.current !== generation) return;
|
|
74
80
|
const target = prevRef.current;
|
|
75
81
|
if (!target || !target.isConnected) return;
|
|
76
82
|
if (focusIsDropped(insideRef?.current ?? null)) {
|
|
@@ -87,12 +93,12 @@ function restoreLater(
|
|
|
87
93
|
}
|
|
88
94
|
|
|
89
95
|
/** Restore focus to the element focused at open time, on close (web only). */
|
|
90
|
-
export function useReturnFocusOnClose(open: boolean) {
|
|
91
|
-
const prevRef = useCaptureOnOpen(open);
|
|
96
|
+
export function useReturnFocusOnClose(open: boolean, skipReturnFocusRef?: RefObject<boolean>) {
|
|
97
|
+
const { prevRef, generationRef } = useCaptureOnOpen(open);
|
|
92
98
|
useEffect(() => {
|
|
93
99
|
if (!canUseDom() || !open) return;
|
|
94
|
-
return () => restoreLater(prevRef);
|
|
95
|
-
}, [open, prevRef]);
|
|
100
|
+
return () => restoreLater(prevRef, generationRef, undefined, skipReturnFocusRef);
|
|
101
|
+
}, [open, prevRef, generationRef, skipReturnFocusRef]);
|
|
96
102
|
}
|
|
97
103
|
|
|
98
104
|
/**
|
|
@@ -101,13 +107,17 @@ export function useReturnFocusOnClose(open: boolean) {
|
|
|
101
107
|
* on close, return focus (focus left inside the parked frame counts as
|
|
102
108
|
* dropped).
|
|
103
109
|
*/
|
|
104
|
-
export function useSheetModalFocus(
|
|
105
|
-
|
|
110
|
+
export function useSheetModalFocus(
|
|
111
|
+
open: boolean,
|
|
112
|
+
frameRef: RefObject<HTMLElement | null>,
|
|
113
|
+
skipReturnFocusRef?: RefObject<boolean>,
|
|
114
|
+
) {
|
|
115
|
+
const { prevRef, generationRef } = useCaptureOnOpen(open);
|
|
106
116
|
useEffect(() => {
|
|
107
117
|
if (!canUseDom() || !open) return;
|
|
108
118
|
const frame = frameRef.current;
|
|
109
119
|
if (!frame || typeof frame.addEventListener !== "function") {
|
|
110
|
-
return () => restoreLater(prevRef, frameRef);
|
|
120
|
+
return () => restoreLater(prevRef, generationRef, frameRef, skipReturnFocusRef);
|
|
111
121
|
}
|
|
112
122
|
|
|
113
123
|
// Focus moves in once the sheet has mounted its frame (spring start).
|
|
@@ -150,7 +160,7 @@ export function useSheetModalFocus(open: boolean, frameRef: RefObject<HTMLElemen
|
|
|
150
160
|
cancelAnimationFrame(raf);
|
|
151
161
|
cancelAnimationFrame(innerRaf);
|
|
152
162
|
frame.removeEventListener("keydown", onKeyDown);
|
|
153
|
-
restoreLater(prevRef, frameRef);
|
|
163
|
+
restoreLater(prevRef, generationRef, frameRef, skipReturnFocusRef);
|
|
154
164
|
};
|
|
155
|
-
}, [open, frameRef, prevRef]);
|
|
165
|
+
}, [open, frameRef, prevRef, generationRef, skipReturnFocusRef]);
|
|
156
166
|
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { choiceItemA11y, composeA11yName } from "./nativeA11y";
|
|
3
|
+
|
|
4
|
+
describe("composeA11yName", () => {
|
|
5
|
+
it("returns the option's own name when the group has none", () => {
|
|
6
|
+
expect(composeA11yName(undefined, "warning")).toBe("warning");
|
|
7
|
+
expect(composeA11yName(" ", "warning")).toBe("warning");
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it("puts the group name in front, because iOS never reads a container", () => {
|
|
11
|
+
expect(composeA11yName("Severity", "warning")).toBe("Severity, warning");
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
describe("choiceItemA11y", () => {
|
|
16
|
+
it("carries role, name and both state spellings", () => {
|
|
17
|
+
expect(
|
|
18
|
+
choiceItemA11y({ kind: "radio", name: "DEBITS", selected: true, disabled: false }),
|
|
19
|
+
).toEqual({
|
|
20
|
+
accessible: true,
|
|
21
|
+
role: "button",
|
|
22
|
+
accessibilityRole: "button",
|
|
23
|
+
accessibilityLabel: "DEBITS",
|
|
24
|
+
accessibilityState: { disabled: false, selected: true, checked: true },
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
// Measured on iOS 26.2 / RN 0.83: a radio or checkbox accessibilityRole
|
|
29
|
+
// takes the element OUT of the tree. `button` is what keeps it in, for both
|
|
30
|
+
// kinds, and `role` must be overridden too because RN prefers it.
|
|
31
|
+
it("pins the platform role to button whatever the control means", () => {
|
|
32
|
+
const checkbox = choiceItemA11y({
|
|
33
|
+
kind: "checkbox",
|
|
34
|
+
name: "error",
|
|
35
|
+
selected: false,
|
|
36
|
+
disabled: true,
|
|
37
|
+
});
|
|
38
|
+
expect(checkbox.role).toBe("button");
|
|
39
|
+
expect(checkbox.accessibilityRole).toBe("button");
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it("omits the hint rather than emitting undefined", () => {
|
|
43
|
+
const props = choiceItemA11y({
|
|
44
|
+
kind: "checkbox",
|
|
45
|
+
name: "error",
|
|
46
|
+
selected: false,
|
|
47
|
+
disabled: true,
|
|
48
|
+
});
|
|
49
|
+
expect("accessibilityHint" in props).toBe(false);
|
|
50
|
+
expect(props.accessibilityState).toEqual({ disabled: true, selected: false, checked: false });
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it("keeps a hint when one is given", () => {
|
|
54
|
+
expect(
|
|
55
|
+
choiceItemA11y({
|
|
56
|
+
kind: "radio",
|
|
57
|
+
name: "derived",
|
|
58
|
+
selected: false,
|
|
59
|
+
disabled: false,
|
|
60
|
+
hint: "recomputed from other emitters",
|
|
61
|
+
}).accessibilityHint,
|
|
62
|
+
).toBe("recomputed from other emitters");
|
|
63
|
+
});
|
|
64
|
+
});
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MPO-283 — the accessibility props a choice control needs on React Native.
|
|
3
|
+
*
|
|
4
|
+
* Two things make this necessary rather than decorative. A styled View is not
|
|
5
|
+
* an accessibility element on iOS, so a control that never sets `accessible`
|
|
6
|
+
* is absent from the tree however correctly it draws. And tamagui does not map
|
|
7
|
+
* `aria-*` onto React Native's accessibility props, so every web attribute a
|
|
8
|
+
* component already carries — `aria-label`, `aria-checked`, `role` — is inert
|
|
9
|
+
* on a device.
|
|
10
|
+
*
|
|
11
|
+
* Measured on a Release iphonesimulator build against 7.7.6: RadioGroup's
|
|
12
|
+
* options came back as bare `StaticText`, ToggleGroup contributed nothing at
|
|
13
|
+
* all.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* What the control MEANS: one-of-N, or one of several independent choices.
|
|
18
|
+
* It is not what gets sent to the platform — see `nativeChoiceRole`.
|
|
19
|
+
*/
|
|
20
|
+
export type ChoiceKind = "radio" | "checkbox";
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* MEASURED, not chosen. `accessibilityRole: "radio"` (and `"checkbox"`) takes
|
|
24
|
+
* the element OUT of the iOS accessibility tree entirely on RN 0.83 / iOS 26.2
|
|
25
|
+
* — worse than the defect, because at least the sibling label used to be
|
|
26
|
+
* there. `"button"` puts it in, and the selected/checked state rides on
|
|
27
|
+
* `accessibilityState` where a reader actually finds it.
|
|
28
|
+
*
|
|
29
|
+
* tamagui's own RadioGroup.Item already sets `role: "radio"` on native, and RN
|
|
30
|
+
* gives `role` precedence over `accessibilityRole`, so overriding BOTH is what
|
|
31
|
+
* makes the difference. Setting only `accessibilityRole` leaves the element
|
|
32
|
+
* hidden.
|
|
33
|
+
*/
|
|
34
|
+
const nativeChoiceRole = "button" as const;
|
|
35
|
+
|
|
36
|
+
export interface ChoiceA11yProps {
|
|
37
|
+
accessible: true;
|
|
38
|
+
role: typeof nativeChoiceRole;
|
|
39
|
+
accessibilityRole: typeof nativeChoiceRole;
|
|
40
|
+
accessibilityLabel: string;
|
|
41
|
+
accessibilityState: { disabled: boolean; selected: boolean; checked: boolean };
|
|
42
|
+
accessibilityHint?: string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* iOS speaks elements and never non-element containers, so a group's accessible
|
|
47
|
+
* name cannot sit on the frame — it rides in front of each option's own name.
|
|
48
|
+
* Making the frame `accessible` instead would collapse the options into one
|
|
49
|
+
* element and lose which one is chosen, which is the only thing worth saying.
|
|
50
|
+
*/
|
|
51
|
+
export function composeA11yName(groupName: string | undefined, ownName: string): string {
|
|
52
|
+
const group = groupName?.trim();
|
|
53
|
+
return group ? `${group}, ${ownName}` : ownName;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function choiceItemA11y({
|
|
57
|
+
name,
|
|
58
|
+
selected,
|
|
59
|
+
disabled,
|
|
60
|
+
hint,
|
|
61
|
+
}: {
|
|
62
|
+
/** Kept for the caller's clarity; the platform role is pinned above. */
|
|
63
|
+
kind?: ChoiceKind;
|
|
64
|
+
name: string;
|
|
65
|
+
selected: boolean;
|
|
66
|
+
disabled: boolean;
|
|
67
|
+
hint?: string;
|
|
68
|
+
}): ChoiceA11yProps {
|
|
69
|
+
return {
|
|
70
|
+
accessible: true,
|
|
71
|
+
role: nativeChoiceRole,
|
|
72
|
+
accessibilityRole: nativeChoiceRole,
|
|
73
|
+
accessibilityLabel: name,
|
|
74
|
+
// `selected` is what a reader announces for a segment, `checked` what it
|
|
75
|
+
// announces for a radio; the iOS tree surfaces them as `selected: true`
|
|
76
|
+
// and `value: "checked"`. Both are set so one shape serves both controls.
|
|
77
|
+
accessibilityState: { disabled, selected, checked: selected },
|
|
78
|
+
...(hint ? { accessibilityHint: hint } : undefined),
|
|
79
|
+
};
|
|
80
|
+
}
|
package/types/Button/index.d.ts
CHANGED
|
@@ -7,8 +7,8 @@ import type { SizeTokens } from "@tamagui/web";
|
|
|
7
7
|
* Coordinated size recipe (Polaris slim/medium/large, Primer s/m/l, Linear
|
|
8
8
|
* 28/32/40, Spectrum S/M, M3 XS/S). Height, pad, type, icon, gap and radius
|
|
9
9
|
* step together from the size table. The borderRadius knob is an override
|
|
10
|
-
*
|
|
11
|
-
* Density
|
|
10
|
+
* of painted corners only (`resolveControlRadius`); internal gap keeps the
|
|
11
|
+
* icon and label grouped. Density selects the same-height compact family.
|
|
12
12
|
*
|
|
13
13
|
* GENERATED (LC-75 / LC-80): Button consumes `recipeFamilies.control` — the
|
|
14
14
|
* handwritten mirror table this file used to carry drifted (md font 13 vs the
|
|
@@ -40,7 +40,26 @@ export declare const ButtonFrame: import("tamagui").TamaguiComponent<import("@ta
|
|
|
40
40
|
chromeless?: boolean | "all" | undefined;
|
|
41
41
|
selected?: boolean | undefined;
|
|
42
42
|
}, import("@tamagui/web").StaticConfigPublic>;
|
|
43
|
-
|
|
43
|
+
/**
|
|
44
|
+
* MPO-91: `variant` is Omitted, and that Omit IS the guard.
|
|
45
|
+
*
|
|
46
|
+
* `ButtonFrame` is `styled(View)` and declares only an `outlined` BOOLEAN, so
|
|
47
|
+
* `variant="outlined"` was never read — it landed on the frame as an unread
|
|
48
|
+
* prop and the button rendered FILLED. Because `TamaguiButtonProps` carries
|
|
49
|
+
* `variant`, the inherited type advertised a channel this component ignores,
|
|
50
|
+
* so 75 call sites across 29 files typechecked, rendered wrong, and said
|
|
51
|
+
* nothing. Declaring the prop and dropping it on the floor is the lying API
|
|
52
|
+
* MPO-81 refused to ship.
|
|
53
|
+
*
|
|
54
|
+
* Omitting it turns every one of those call sites into a compile error instead
|
|
55
|
+
* of a silent no-op, which is what stops the prop coming back. The house
|
|
56
|
+
* channel is the `outlined` boolean.
|
|
57
|
+
*
|
|
58
|
+
* `@multiplatform.one/components`' Button still accepts `variant` and maps it
|
|
59
|
+
* onto `outlined` — that shim is the documented raw-tamagui compat hatch, and
|
|
60
|
+
* it declares the prop itself rather than inheriting it from here.
|
|
61
|
+
*/
|
|
62
|
+
export interface ButtonProps extends Omit<TamaguiButtonProps, "form" | "icon" | "iconAfter" | "variant"> {
|
|
44
63
|
action?: "submit" | "reset";
|
|
45
64
|
form?: AnyFormApi;
|
|
46
65
|
loading?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Button/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAYL,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAEhB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAEL,KAAK,WAAW,IAAI,kBAAkB,EAUvC,MAAM,SAAS,CAAC;AAIjB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,KAAK,EAAE,UAAU,EAAuB,MAAM,cAAc,CAAC;AAMpE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAE1C,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAkC,CAAC;AAElG,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,EACrC,MAAM,GAAE,gBAA4B,GACnC,gBAAgB,CAOlB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,YAAY,EAAE,OAAO,GACpB,gBAAgB,CAElB;AAaD,0DAA0D;AAC1D,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAElE,KAAK,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAqE7D,eAAO,MAAM,WAAW;;;;;;;;6CA4DtB,CAAC;AAEH,MAAM,WAAW,WAAY,SAAQ,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Button/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAYL,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAEhB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAEL,KAAK,WAAW,IAAI,kBAAkB,EAUvC,MAAM,SAAS,CAAC;AAIjB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,KAAK,EAAE,UAAU,EAAuB,MAAM,cAAc,CAAC;AAMpE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAE1C,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAkC,CAAC;AAElG,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,EACrC,MAAM,GAAE,gBAA4B,GACnC,gBAAgB,CAOlB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,YAAY,EAAE,OAAO,GACpB,gBAAgB,CAElB;AAaD,0DAA0D;AAC1D,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAElE,KAAK,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAqE7D,eAAO,MAAM,WAAW;;;;;;;;6CA4DtB,CAAC;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,WAAY,SAAQ,IAAI,CACvC,kBAAkB,EAClB,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,CAC1C;IACC,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC7C;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAED,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,MAAM,EACN,IAAI,EAAE,QAAQ,EACd,OAAO,EACP,MAAM,EACN,KAAK,EACL,OAAO,EACP,OAAO,EACP,QAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,OAAO,EACP,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,OAAO,EACP,QAAQ,EACR,MAAc,EACd,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,cAAc,EACd,uBAAiC,EACjC,gBAAgB,EAChB,YAAwB,EACxB,MAAM,EAAE,UAAU,EAClB,iBAAiB,EAAE,qBAAqB,EACxC,GAAG,KAAK,EACT,EAAE,WAAW,2CAmeb;yBApgBe,MAAM;;;iBAtDd,CAAC;YAEJ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Chip/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtD,OAAO,EAQL,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAe,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMrD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AACzD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC3F,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,gFAAgF;AAChF,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE5E,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oEAAoE;IACpE,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAqID;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;6CA+BpB,CAAC;AAEH,eAAO,MAAM,QAAQ;;;6CAenB,CAAC;AAiBH,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEnD;AAED;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AA2GD,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,IAAI,EACJ,OAAO,EAAE,WAAsB,EAC/B,KAAc,EACd,SAAS,EACT,QAAQ,EACR,QAAgB,EAChB,OAAO,EACP,IAAI,EACJ,aAAa,EACb,gBAA+B,GAChC,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Chip/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtD,OAAO,EAQL,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAe,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMrD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AACzD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC3F,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,gFAAgF;AAChF,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE5E,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oEAAoE;IACpE,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAqID;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;6CA+BpB,CAAC;AAEH,eAAO,MAAM,QAAQ;;;6CAenB,CAAC;AAiBH,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEnD;AAED;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AA2GD,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,IAAI,EACJ,OAAO,EAAE,WAAsB,EAC/B,KAAc,EACd,SAAS,EACT,QAAQ,EACR,QAAgB,EAChB,OAAO,EACP,IAAI,EACJ,aAAa,EACb,gBAA+B,GAChC,EAAE,SAAS,2CAoNX;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAC"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import type { ReactNode } from "react";
|
|
1
|
+
import type { ReactNode, RefObject } from "react";
|
|
2
2
|
import type { PanelWidthMode } from "./useFloatingPanel";
|
|
3
|
+
export { floatingPanelActionProps, isNestedPanelAction } from "./nestedAction";
|
|
3
4
|
export { useFloatingPanel, panelAnimationDuration, panelGrowDuration, panelTransition, panelViewportPadding, panelAnchorOffset, resolvePanelWidthMode, } from "./useFloatingPanel";
|
|
4
5
|
export type { PanelWidthMode, UseFloatingPanelOptions, UseFloatingPanelReturn, } from "./useFloatingPanel";
|
|
5
6
|
export interface FloatingPanelProps {
|
|
6
7
|
open: boolean;
|
|
7
8
|
onOpenChange: (open: boolean) => void;
|
|
9
|
+
/** Native only: the modal is presented and its inputs can receive focus. */
|
|
10
|
+
onNativeShow?: () => void;
|
|
11
|
+
/** Suppress delayed trigger focus when a consumer handles close focus itself. Web only. */
|
|
12
|
+
skipReturnFocusRef?: RefObject<boolean>;
|
|
8
13
|
trigger: ReactNode;
|
|
9
14
|
/**
|
|
10
15
|
* Optional control rendered beside the trigger but OUTSIDE the native press
|
|
@@ -92,6 +97,11 @@ export interface FloatingPanelProps {
|
|
|
92
97
|
value?: string;
|
|
93
98
|
hint?: string;
|
|
94
99
|
};
|
|
100
|
+
/**
|
|
101
|
+
* Stretch keeps the whole field pressable by default. Content lets an
|
|
102
|
+
* adornment trigger hug its content inside a composite field.
|
|
103
|
+
*/
|
|
104
|
+
triggerSizing?: "stretch" | "content";
|
|
95
105
|
/**
|
|
96
106
|
* How the trigger opens the panel. `"press"` (default) is click/tap.
|
|
97
107
|
* `"contextmenu"` is the ContextMenu gesture: web `contextmenu` (right-click
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/FloatingPanel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAW,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/FloatingPanel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAW,MAAM,OAAO,CAAC;AAe3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG/E,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,cAAc,EACd,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAI5B,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,2FAA2F;IAC3F,kBAAkB,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO,EAAE,SAAS,CAAC;IACnB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C;;;;;OAKG;IACH,WAAW,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACtC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;CAClC;AAgED;;;;GAIG;AACH,wBAAgB,eAAe,YAW9B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,2CAetD"}
|
|
@@ -48,7 +48,8 @@ import type { FloatingPanelProps } from "./index";
|
|
|
48
48
|
export { useFloatingPanel, panelAnimationDuration, panelGrowDuration, panelTransition, panelViewportPadding, } from "./useFloatingPanel";
|
|
49
49
|
export type { UseFloatingPanelOptions, UseFloatingPanelReturn } from "./useFloatingPanel";
|
|
50
50
|
export type { FloatingPanelProps } from "./index";
|
|
51
|
+
export { floatingPanelActionProps, isNestedPanelAction } from "./nestedAction";
|
|
51
52
|
/** Native never has a >sm web viewport; AdaptivePopup uses this to pick Sheet mode. */
|
|
52
53
|
export declare function useViewportGtSm(): boolean;
|
|
53
|
-
export declare function FloatingPanel({ open, onOpenChange, trigger, triggerEnd, children, scrollable, disabled, contentPadding, header, scrollViewProps, triggerA11y, sheetFill, openOn, }: FloatingPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
54
|
+
export declare function FloatingPanel({ open, onOpenChange, onNativeShow, trigger, triggerEnd, triggerSizing, children, scrollable, disabled, contentPadding, header, scrollViewProps, triggerA11y, sheetFill, openOn, }: FloatingPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
54
55
|
//# sourceMappingURL=index.native.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../src/FloatingPanel/index.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAmBH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAKlD,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../src/FloatingPanel/index.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAmBH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAKlD,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE/E,uFAAuF;AACvF,wBAAgB,eAAe,YAE9B;AAoBD,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,UAAU,EACV,aAAyB,EACzB,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,cAA0B,EAC1B,MAAM,EACN,eAAe,EACf,WAAW,EACX,SAAS,EACT,MAAgB,GACjB,EAAE,kBAAkB,2CA0XpB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const floatingPanelActionProps: {
|
|
2
|
+
readonly "data-floating-panel-action": "true";
|
|
3
|
+
};
|
|
4
|
+
export interface PanelActionEvent {
|
|
5
|
+
target?: unknown;
|
|
6
|
+
currentTarget?: unknown;
|
|
7
|
+
nativeEvent?: {
|
|
8
|
+
target?: unknown;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
/** Marked actions inside a trigger keep their own press and keyboard behavior. */
|
|
12
|
+
export declare function isNestedPanelAction(event: PanelActionEvent): boolean;
|
|
13
|
+
//# sourceMappingURL=nestedAction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nestedAction.d.ts","sourceRoot":"","sources":["../../src/FloatingPanel/nestedAction.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB;;CAAoD,CAAC;AAE1F,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACpC;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAKpE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/InputParts/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5D,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAEL,KAAK,IAAI,MAAM,EAWhB,MAAM,SAAS,CAAC;AACjB,OAAO,EAiBL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AA+BlC,eAAO,MAAM,YAAY;UACjB,cAAc;eACT,MAAM;YACT,WAAW,GAAG,MAAM;EACN,CAAC;AA2CzB,eAAO,MAAM,YAAY;uBACJ,OAAO;;EAE1B,CAAC;AAEH,wEAAwE;AACxE,eAAO,MAAM,eAAe,GAAI,QAAQ,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC;;;;CAYvE,CAAC;AAuBF,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS;;;;;;;;cAiB1E;AAgCD,KAAK,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAExC,wBAAgB,WAAW,CACzB,QAAQ,EAAE,WAAW,EACrB,UAAU,EAAE,OAAO,GAClB,OAAO,GAAG,QAAQ,GAAG,SAAS,CAGhC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAI1E;AAED,eAAO,MAAM,iBAAiB,i8CA8B5B,CAAC;AAIH,wBAAgB,yBAAyB,IAAI,IAAI,CAOhD;AA4BD,eAAO,MAAM,uBAAuB;;;;;;;;;;+BAzGT,GAAG;;;;;;2BANH,GAAG;;;;;;;;;;;;;;;;;;;+BAMH,GAAG;;;;;;2BANH,GAAG;;;;;;;;;CAkJpB,CAAC;AA4VX,eAAO,MAAM,sBAAsB;;;;;;CAMzB,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;;;CAKzB,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,OAAO,sBAAsB,CAAC,CAAC;AAEnG,sFAAsF;AACtF,MAAM,MAAM,kBAAkB,GAC5B,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,OAAO,sBAAsB,CAAC,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;AAExE,wBAAgB,0BAA0B,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAG7F;AAED,wBAAgB,0BAA0B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAG7F;AAED,eAAO,MAAM,gBAAgB,EAAE,yBAAyB,CAAC,GAAG,CAO3D,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/InputParts/index.tsx"],"names":[],"mappings":"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"}
|