@multiplatform.one/forms 7.45.0 → 7.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/AdaptivePopup/index.native.js +1 -1
- package/dist/cjs/AdaptivePopup/index.native.js.map +1 -1
- package/dist/cjs/Button/index.native.js +1 -1
- package/dist/cjs/Button/index.native.js.map +1 -1
- package/dist/cjs/Chip/index.native.js.map +1 -1
- package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js +1 -1
- package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
- package/dist/cjs/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
- package/dist/cjs/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
- package/dist/cjs/ContextualSaveBar/index.native.js +3 -3
- package/dist/cjs/ContextualSaveBar/index.native.js.map +1 -1
- package/dist/cjs/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
- package/dist/cjs/ControlGroup/index.native.js +1 -1
- package/dist/cjs/ControlGroup/index.native.js.map +1 -1
- package/dist/cjs/DescriptionList/index.native.js +2 -2
- package/dist/cjs/DescriptionList/index.native.js.map +1 -1
- package/dist/cjs/ErrorSummary.native.js.map +1 -1
- package/dist/cjs/FieldDisplay/editMode.native.js.map +1 -1
- package/dist/cjs/FieldDisplay/formatters.native.js.map +1 -1
- package/dist/cjs/FieldDisplay/index.native.js +1 -1
- package/dist/cjs/FieldDisplay/index.native.js.map +1 -1
- package/dist/cjs/FieldGroup.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/index.cjs +158 -40
- package/dist/cjs/FloatingPanel/nestedAction.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/pointAnchor.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/useFloatingPanel.native.js.map +1 -1
- package/dist/cjs/Form/index.native.js +1 -1
- package/dist/cjs/Form/index.native.js.map +1 -1
- package/dist/cjs/Form/submissionController.native.js.map +1 -1
- package/dist/cjs/Form/validateOn.native.js.map +1 -1
- package/dist/cjs/FormGrid.native.js.map +1 -1
- package/dist/cjs/FormSection.native.js.map +1 -1
- package/dist/cjs/InputParts/index.native.js.map +1 -1
- package/dist/cjs/Label/index.native.js.map +1 -1
- package/dist/cjs/MediaPicker/base64.native.js.map +1 -1
- package/dist/cjs/MediaPicker/payload.native.js.map +1 -1
- package/dist/cjs/MediaPicker/types.native.js.map +1 -1
- package/dist/cjs/MediaPicker/useMediaPicker.native.js.map +1 -1
- package/dist/cjs/Skeleton/index.native.js.map +1 -1
- package/dist/cjs/Spinner/SpinnerGlyph.native.js.map +1 -1
- package/dist/cjs/Spinner/spinnerSize.native.js.map +1 -1
- package/dist/cjs/Table/index.native.js.map +1 -1
- package/dist/cjs/Wheel/haptic.native.js.map +1 -1
- package/dist/cjs/Wheel/index.native.js.map +1 -1
- package/dist/cjs/Wheel/wheelShared.native.js.map +1 -1
- package/dist/cjs/actionLabel.native.js.map +1 -1
- package/dist/cjs/fieldDefaults.native.js.map +1 -1
- package/dist/cjs/fieldLayout.native.js +1 -1
- package/dist/cjs/fieldLayout.native.js.map +1 -1
- package/dist/cjs/fields/Barcode/BarcodePreview.native.js.map +1 -1
- package/dist/cjs/fields/Barcode/BarcodeScanner.native.js +1 -1
- package/dist/cjs/fields/Barcode/code128.native.js.map +1 -1
- package/dist/cjs/fields/Barcode/index.native.js +2 -2
- package/dist/cjs/fields/Barcode/index.native.js.map +1 -1
- package/dist/cjs/fields/Barcode/qr.native.js.map +1 -1
- package/dist/cjs/fields/Barcode/scannerTypes.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/Checkbox.native.js +1 -1
- package/dist/cjs/fields/Checkbox/Checkbox.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/CheckboxBox.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/CheckboxCard.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js +1 -1
- package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/checkboxGroupContext.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/index.native.js.map +1 -1
- package/dist/cjs/fields/ColorPicker/index.native.js +3 -3
- package/dist/cjs/fields/ColorPicker/index.native.js.map +1 -1
- package/dist/cjs/fields/ColorPicker/parts.native.js +2 -2
- package/dist/cjs/fields/ColorPicker/parts.native.js.map +1 -1
- package/dist/cjs/fields/Combobox/authorOptions.native.js.map +1 -1
- package/dist/cjs/fields/Combobox/index.native.js +6 -6
- package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/Calendar.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/DateRangePicker.native.js +2 -2
- package/dist/cjs/fields/DatePicker/DateRangePicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js +3 -3
- package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/DatetimePicker.native.js +2 -2
- package/dist/cjs/fields/DatePicker/MonthPicker.native.js +2 -2
- package/dist/cjs/fields/DatePicker/MonthPicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js +2 -2
- package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/catalog.native.js +2 -2
- package/dist/cjs/fields/DatePicker/catalog.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/fieldValueSync.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/index.native.js +2 -2
- package/dist/cjs/fields/DatePicker/parts.native.js +2 -2
- package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/utils.native.js.map +1 -1
- package/dist/cjs/fields/Duration/durationMath.native.js.map +1 -1
- package/dist/cjs/fields/Duration/index.native.js +3 -3
- package/dist/cjs/fields/Duration/index.native.js.map +1 -1
- package/dist/cjs/fields/FileUpload/filePickerTypes.native.js.map +1 -1
- package/dist/cjs/fields/FileUpload/index.native.js +2 -2
- package/dist/cjs/fields/FileUpload/index.native.js.map +1 -1
- package/dist/cjs/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/geoValue.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/geocoder.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/geocoderContext.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/index.native.js +5 -5
- package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/mapMath.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/mapTypes.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/nativeSearchFocus.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/photonGeocoder.native.js.map +1 -1
- package/dist/cjs/fields/Icon/drawnSet.native.js.map +1 -1
- package/dist/cjs/fields/Icon/index.native.js +3 -3
- package/dist/cjs/fields/Icon/index.native.js.map +1 -1
- package/dist/cjs/fields/ImageField/index.native.js +2 -2
- package/dist/cjs/fields/ImageField/index.native.js.map +1 -1
- package/dist/cjs/fields/Input/index.native.js +3 -3
- package/dist/cjs/fields/Input/index.native.js.map +1 -1
- package/dist/cjs/fields/MentionInput/index.native.js +3 -3
- package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
- package/dist/cjs/fields/OTPInput/index.native.js +3 -3
- package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
- package/dist/cjs/fields/OTPInput/otpCellCss.native.js.map +1 -1
- package/dist/cjs/fields/PhoneInput/dialCodes.native.js.map +1 -1
- package/dist/cjs/fields/PhoneInput/index.native.js +3 -3
- package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/cjs/fields/PhoneInput/phone.native.js.map +1 -1
- package/dist/cjs/fields/PhoneInput/regionNames.native.js.map +1 -1
- package/dist/cjs/fields/Progress/index.native.js +1 -1
- package/dist/cjs/fields/Progress/index.native.js.map +1 -1
- package/dist/cjs/fields/RadioGroup/index.native.js +1 -1
- package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/cjs/fields/Rating/index.native.js +1 -1
- package/dist/cjs/fields/Rating/index.native.js.map +1 -1
- package/dist/cjs/fields/Rating/ratingMath.native.js.map +1 -1
- package/dist/cjs/fields/Rating/types.native.js.map +1 -1
- package/dist/cjs/fields/SearchInput/index.native.js +2 -2
- package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
- package/dist/cjs/fields/Select/index.native.js +4 -4
- package/dist/cjs/fields/Select/index.native.js.map +1 -1
- package/dist/cjs/fields/Signature/index.native.js +2 -2
- package/dist/cjs/fields/Signature/index.native.js.map +1 -1
- package/dist/cjs/fields/Slider/index.native.js +1 -1
- package/dist/cjs/fields/Slider/index.native.js.map +1 -1
- package/dist/cjs/fields/Slider/jumpMotion.native.js.map +1 -1
- package/dist/cjs/fields/Stepper/index.native.js +2 -2
- package/dist/cjs/fields/Stepper/index.native.js.map +1 -1
- package/dist/cjs/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
- package/dist/cjs/fields/Switch/footprint.native.js.map +1 -1
- package/dist/cjs/fields/Switch/index.native.js +2 -2
- package/dist/cjs/fields/Switch/index.native.js.map +1 -1
- package/dist/cjs/fields/TextArea/index.native.js +2 -2
- package/dist/cjs/fields/TextArea/index.native.js.map +1 -1
- package/dist/cjs/fields/TimePicker/catalog.native.js +3 -3
- package/dist/cjs/fields/TimePicker/catalog.native.js.map +1 -1
- package/dist/cjs/fields/TimePicker/index.native.js +2 -2
- package/dist/cjs/fields/TimePicker/parts.native.js +1 -1
- package/dist/cjs/fields/TimePicker/parts.native.js.map +1 -1
- package/dist/cjs/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
- package/dist/cjs/fields/TimeRangeScrubber/index.native.js +2 -2
- package/dist/cjs/fields/TimeRangeScrubber/index.native.js.map +1 -1
- package/dist/cjs/fields/ToggleGroup/index.native.js +1 -1
- package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
- package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
- package/dist/cjs/fields/nativeDateTime/dateTimePickerLoader.native.js.map +1 -1
- package/dist/cjs/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -1
- package/dist/cjs/fields/nativeSelect.native.js.map +1 -1
- package/dist/cjs/fields/selectedOrder.native.js.map +1 -1
- package/dist/cjs/formSpacing.native.js.map +1 -1
- package/dist/cjs/hooks/useFocusManagement.native.js.map +1 -1
- package/dist/cjs/index.native.js +44 -44
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/keyboard/KeyboardDoneBar.native.js +1 -1
- package/dist/cjs/keyboard/chain.native.js.map +1 -1
- package/dist/cjs/keyboard/index.native.js.map +1 -1
- package/dist/cjs/keyboard/types.native.js.map +1 -1
- package/dist/cjs/requiredMarking.native.js.map +1 -1
- package/dist/cjs/shared/TimeColumn.native.js +1 -1
- package/dist/cjs/shared/TimeColumn.native.js.map +1 -1
- package/dist/cjs/shared/capabilityPreflight.native.js.map +1 -1
- package/dist/cjs/shared/colorRamps.native.js.map +1 -1
- package/dist/cjs/shared/devWarn.native.js.map +1 -1
- package/dist/cjs/shared/floatingList.native.js +1 -1
- package/dist/cjs/shared/floatingList.native.js.map +1 -1
- package/dist/cjs/shared/focusManagement.cjs +3 -3
- package/dist/cjs/shared/focusManagement.native.js +3 -3
- package/dist/cjs/shared/focusManagement.native.js.map +1 -1
- package/dist/cjs/shared/groupContext.native.js.map +1 -1
- package/dist/cjs/shared/i18n.native.js.map +1 -1
- package/dist/cjs/shared/instantMotion.native.js.map +1 -1
- package/dist/cjs/shared/nativeA11y.native.js.map +1 -1
- package/dist/cjs/shared/nativeAutoFocus.native.js.map +1 -1
- package/dist/cjs/shared/panelPortal.native.js.map +1 -1
- package/dist/cjs/shared/pickerTriggerContract.native.js.map +1 -1
- package/dist/cjs/shared/pressSlopProps.native.js.map +1 -1
- package/dist/cjs/shared/t.native.js.map +1 -1
- package/dist/cjs/shared/tableCellContext.native.js.map +1 -1
- package/dist/cjs/shared/useDragScroll.native.js.map +1 -1
- package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -1
- package/dist/cjs/shared/useSheetEscapeDismiss.cjs +5 -4
- package/dist/cjs/shared/useSheetEscapeDismiss.native.js +5 -3
- package/dist/cjs/shared/useSheetEscapeDismiss.native.js.map +1 -1
- package/dist/cjs/shared/useWheelIncrement.native.js.map +1 -1
- package/dist/cjs/shared/utils.native.js +1 -1
- package/dist/cjs/shared/utils.native.js.map +1 -1
- package/dist/cjs/shared/zIndex.native.js.map +1 -1
- package/dist/cjs/themedPrimitives.native.js.map +1 -1
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/cjs/utils/LinkCell.native.js.map +1 -1
- package/dist/esm/FloatingPanel/index.mjs +160 -42
- package/dist/esm/FloatingPanel/index.mjs.map +1 -1
- package/dist/esm/shared/focusManagement.mjs +3 -3
- package/dist/esm/shared/focusManagement.mjs.map +1 -1
- package/dist/esm/shared/focusManagement.native.js +3 -3
- package/dist/esm/shared/focusManagement.native.js.map +1 -1
- package/dist/esm/shared/useSheetEscapeDismiss.mjs +5 -4
- package/dist/esm/shared/useSheetEscapeDismiss.mjs.map +1 -1
- package/dist/esm/shared/useSheetEscapeDismiss.native.js +5 -3
- package/dist/esm/shared/useSheetEscapeDismiss.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/index.mjs +160 -42
- package/dist/jsx/FloatingPanel/index.mjs.map +1 -1
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/shared/focusManagement.mjs +3 -3
- package/dist/jsx/shared/focusManagement.mjs.map +1 -1
- package/dist/jsx/shared/focusManagement.native.js +3 -3
- package/dist/jsx/shared/focusManagement.native.js.map +1 -1
- package/dist/jsx/shared/useSheetEscapeDismiss.mjs +5 -4
- package/dist/jsx/shared/useSheetEscapeDismiss.mjs.map +1 -1
- package/dist/jsx/shared/useSheetEscapeDismiss.native.js +5 -3
- package/dist/jsx/shared/useSheetEscapeDismiss.native.js.map +1 -1
- package/package.json +8 -8
- package/src/FloatingPanel/FloatingPanel.coverTrigger.spec.tsx +184 -0
- package/src/FloatingPanel/FloatingPanel.spec.tsx +3 -5
- package/src/FloatingPanel/FloatingPanel.stories.tsx +26 -0
- package/src/FloatingPanel/index.tsx +255 -59
- package/src/FloatingPanel/useFloatingPanel.spec.tsx +4 -2
- package/src/shared/focusManagement.spec.tsx +11 -1
- package/src/shared/focusManagement.ts +16 -7
- package/src/shared/interactionHooks.spec.tsx +13 -0
- package/src/shared/useSheetEscapeDismiss.ts +9 -4
- package/types/FloatingPanel/index.d.ts +9 -1
- package/types/FloatingPanel/index.d.ts.map +1 -1
- package/types/shared/focusManagement.d.ts +10 -5
- package/types/shared/focusManagement.d.ts.map +1 -1
- package/types/shared/useSheetEscapeDismiss.d.ts +1 -1
- package/types/shared/useSheetEscapeDismiss.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","isWeb","useDialogContext","wasKeyboardFocus","useResolvedKnobs","motionHideDelayMs","_instanceof","left","right","Symbol","hasInstance","FOCUSABLE","canUseDom","canUseDom2","document","focusIsDropped","insideEl","ae","activeElement","body","documentElement","contains","useCaptureOnOpen","open","prevRef","wasOpenRef","generationRef","current","restoreLater","delayMs","insideRef","skipReturnFocusRef","generation","restore","restore2","_ref","target","isConnected","focus","preventScroll","focusVisible","requestAnimationFrame","setTimeout","useReturnFocusOnClose","knobProps","restoreDelayMsRef","motion","scrim","transition","useSheetModalFocus","frameRef","frame","addEventListener","focusIn","focusIn2","first","querySelector","innerRaf","raf","onKeyDown","onKeyDown2","e","key","focusables","Array","from","querySelectorAll","filter","el","offsetWidth","offsetHeight","length","preventDefault","last","shiftKey","cancelAnimationFrame","removeEventListener"],"sources":["../../../src/shared/focusManagement.ts"],"sourcesContent":[null],"mappings":"AAoCA,SAASA,SAAA,EAAWC,MAAA,QAA8B;AAClD,SAASC,KAAA,EAAOC,gBAAA,QAAwB;AACxC,SAASC,gBAAA,EAAkBC,gBAAA,EAAkBC,iBAAA,QAAyB;AAEtE,SAAMC,WACJA,CAAAC,IAAA,EAAAC,KAAA;EAEF,2BAAwB;;EAExB,IAAAA,KAAS,mBAAeC,MAAwC,oBAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA;IAC9D,OAAM,EAAKF,KAAA,CAAAC,MAAS,CAAAC,WAAA,EAAAH,IAAA;EACpB,OAAK;IAGL,OAAIA,IAAA,YAAqBC,KAAG;EAC5B;AACF;AAGA,IAAAG,SAAS,8IAAgC;AACvC,IAAAC,SAAM,YAAqCC,UAAIA,CAAA;EAC/C,OAAMZ,KAAA,WAAaa,QAAY;AAC/B;AACA,SAAIC,cAAaA,CAAAC,QAAA;EACf,IAAAC,EAAI,GAAAH,QAAS,CAAAI,aAAW;EACxB,KAAAD,EAAI,IAAAA,EAAA,KAASH,QAAW,CAAAK,IAAA,IAASF,EAAA,KAAAH,QAAA,CAAAM,eAAA;EAC/B,IAAAJ,QAAQ,aAAUA,QAAS,uBAAAA,QAAA,CAAAK,QAAA,CAAAJ,EAAA;EAAA,OAC7B;AACA;AAAqB,SACvBK,iBAAAC,IAAA;EACA,IAAAC,OAAS,GAAAxB,MAAS;EACpB,IAAAyB,UAAA,GAAAzB,MAAA;EAEA,IAAA0B,aAAS,GACP1B,MAAA,GACA;EAKA,IAAAY,SAAM;IACN,IAAMW,IAAA,KAAAE,UAAgB,CAAAE,OAAA,EAAAD,aAAA,CAAAC,OAAA;IAIpB,IAAIJ,IAAC,KAAAE,UAAa,CAAAE,OAAA;MAClBH,OAAI,CAAAG,OAAA,GAAAb,QAAoB,CAAAI,aAAW;IACnC;IACAO,UAAK,CAAAE,OAAW,GAAAJ,IAAO;EACvB;EACE;IAAaC,OACX;IAAeE;EACgB;AAChB;AACnB,SACFE,aAAAJ,OAAA,EAAAE,aAAA,EAAAG,OAAA,EAAAC,SAAA,EAAAC,kBAAA;EAGA,IAAAC,UAAA,GAAAN,aAA4B,CAAAC,OAAA;EAC5B,IAAAM,OAAW,YAASC,QAAOA,CAAA;IAC7B,IAAAC,IAAA;
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","isWeb","useDialogContext","wasKeyboardFocus","useResolvedKnobs","motionHideDelayMs","_instanceof","left","right","Symbol","hasInstance","FOCUSABLE","canUseDom","canUseDom2","document","focusIsDropped","insideEl","ae","activeElement","body","documentElement","contains","useCaptureOnOpen","open","prevRef","wasOpenRef","generationRef","current","restoreLater","delayMs","insideRef","skipReturnFocusRef","generation","restore","restore2","_ref","target","isConnected","focus","preventScroll","focusVisible","requestAnimationFrame","setTimeout","useReturnFocusOnClose","knobProps","restoreDelayMsRef","motion","scrim","transition","useSheetModalFocus","frameRef","frame","addEventListener","focusIn","focusIn2","first","querySelector","innerRaf","raf","onKeyDown","onKeyDown2","e","key","focusables","Array","from","querySelectorAll","filter","el","offsetWidth","offsetHeight","length","preventDefault","last","shiftKey","cancelAnimationFrame","removeEventListener"],"sources":["../../../src/shared/focusManagement.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useEffect, useRef } from "react";
|
|
2
2
|
import { isWeb } from "tamagui";
|
|
3
|
-
function useSheetEscapeDismiss(enabled, onDismiss) {
|
|
3
|
+
function useSheetEscapeDismiss(enabled, onDismiss, target = "window") {
|
|
4
4
|
const onDismissRef = useRef(onDismiss);
|
|
5
5
|
onDismissRef.current = onDismiss;
|
|
6
6
|
useEffect(() => {
|
|
@@ -9,9 +9,10 @@ function useSheetEscapeDismiss(enabled, onDismiss) {
|
|
|
9
9
|
if (event.key !== "Escape" || event.defaultPrevented) return;
|
|
10
10
|
onDismissRef.current();
|
|
11
11
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
const node = target === "document" ? document : window;
|
|
13
|
+
node.addEventListener("keydown", onKeyDown);
|
|
14
|
+
return () => node.removeEventListener("keydown", onKeyDown);
|
|
15
|
+
}, [enabled, target]);
|
|
15
16
|
}
|
|
16
17
|
export { useSheetEscapeDismiss };
|
|
17
18
|
//# sourceMappingURL=useSheetEscapeDismiss.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","isWeb","useSheetEscapeDismiss","enabled","onDismiss","onDismissRef","current","onKeyDown","event","key","defaultPrevented","window","addEventListener","removeEventListener"],"sources":["../../../src/shared/useSheetEscapeDismiss.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,EAAWC,MAAA,QAAc;AAClC,SAASC,KAAA,QAAa;AAYf,SAASC,
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","isWeb","useSheetEscapeDismiss","enabled","onDismiss","target","onDismissRef","current","onKeyDown","event","key","defaultPrevented","node","document","window","addEventListener","removeEventListener"],"sources":["../../../src/shared/useSheetEscapeDismiss.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,EAAWC,MAAA,QAAc;AAClC,SAASC,KAAA,QAAa;AAYf,SAASC,sBACdC,OAAA,EACAC,SAAA,EACAC,MAAA,GAAgC,UAChC;EACA,MAAMC,YAAA,GAAeN,MAAA,CAAOI,SAAS;EACrCE,YAAA,CAAaC,OAAA,GAAUH,SAAA;EACvBL,SAAA,CAAU,MAAM;IACd,IAAI,CAACE,KAAA,IAAS,CAACE,OAAA,EAAS;IACxB,MAAMK,SAAA,GAAaC,KAAA,IAAyB;MAC1C,IAAIA,KAAA,CAAMC,GAAA,KAAQ,YAAYD,KAAA,CAAME,gBAAA,EAAkB;MACtDL,YAAA,CAAaC,OAAA,CAAQ;IACvB;IACA,MAAMK,IAAA,GAAOP,MAAA,KAAW,aAAaQ,QAAA,GAAWC,MAAA;IAChDF,IAAA,CAAKG,gBAAA,CAAiB,WAAWP,SAA0B;IAC3D,OAAO,MAAMI,IAAA,CAAKI,mBAAA,CAAoB,WAAWR,SAA0B;EAC7E,GAAG,CAACL,OAAA,EAASE,MAAM,CAAC;AACtB","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useEffect, useRef } from "react";
|
|
2
2
|
import { isWeb } from "tamagui";
|
|
3
3
|
function useSheetEscapeDismiss(enabled, onDismiss) {
|
|
4
|
+
var target = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "window";
|
|
4
5
|
var onDismissRef = useRef(onDismiss);
|
|
5
6
|
onDismissRef.current = onDismiss;
|
|
6
7
|
useEffect(function () {
|
|
@@ -9,11 +10,12 @@ function useSheetEscapeDismiss(enabled, onDismiss) {
|
|
|
9
10
|
if (event.key !== "Escape" || event.defaultPrevented) return;
|
|
10
11
|
onDismissRef.current();
|
|
11
12
|
};
|
|
12
|
-
|
|
13
|
+
var node = target === "document" ? document : window;
|
|
14
|
+
node.addEventListener("keydown", onKeyDown);
|
|
13
15
|
return function () {
|
|
14
|
-
return
|
|
16
|
+
return node.removeEventListener("keydown", onKeyDown);
|
|
15
17
|
};
|
|
16
|
-
}, [enabled]);
|
|
18
|
+
}, [enabled, target]);
|
|
17
19
|
}
|
|
18
20
|
export { useSheetEscapeDismiss };
|
|
19
21
|
//# sourceMappingURL=useSheetEscapeDismiss.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","isWeb","useSheetEscapeDismiss","enabled","onDismiss","onDismissRef","current","onKeyDown","onKeyDown2","event","key","defaultPrevented","window","addEventListener","removeEventListener"],"sources":["../../../src/shared/useSheetEscapeDismiss.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,EAAWC,MAAA,QAAc;AAClC,SAASC,KAAA,QAAa;AAYf,SAASC,
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","isWeb","useSheetEscapeDismiss","enabled","onDismiss","target","arguments","length","onDismissRef","current","onKeyDown","onKeyDown2","event","key","defaultPrevented","node","document","window","addEventListener","removeEventListener"],"sources":["../../../src/shared/useSheetEscapeDismiss.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,EAAWC,MAAA,QAAc;AAClC,SAASC,KAAA,QAAa;AAYf,SAASC,sBACdC,OAAA,EACAC,SAAA,EACA;EAEA,IAAAC,MAAM,GAAAC,SAAe,CAAAC,MAAO,QAASD,SAAA,iBAAAA,SAAA;EACrC,IAAAE,YAAa,GAAAR,MAAU,CAAAI,SAAA;EACvBI,YAAU,CAAAC,OAAM,GAAAL,SAAA;EACdL,SAAK,aAAU;IACf,KAAAE,KAAM,KAAAE,OAAa;IACjB,IAAAO,SAAU,YAAQC,UAAYA,CAAAC,KAAM;MACpC,IAAAA,KAAA,CAAAC,GAAa,aAAQ,IAAAD,KAAA,CAAAE,gBAAA;MACvBN,YAAA,CAAAC,OAAA;IACA;IACA,IAAAM,IAAK,GAAAV,MAAA,KAAiB,aAAWW,QAA0B,GAAAC,MAAA;IAC3DF,IAAA,CAAAG,gBAAkB,YAAAR,SAAoB;IACxC,OAAI,YAAgB;MACtB,OAAAK,IAAA,CAAAI,mBAAA,YAAAT,SAAA","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { transitionProps } from "@multiplatform.one/theme";
|
|
2
|
-
import { useCallback, useEffect, useLayoutEffect, useRef, useState, useSyncExternalStore } from "react";
|
|
3
|
-
import { OVERLAY_ANCHOR_GAP, OVERLAY_ATTACH_GAP, OVERLAY_BREAKPOINT, Surface, useResolvedKnobs, wasKeyboardFocus, ensureKeyboardModalityTracking } from "@multiplatform.one/theme";
|
|
2
|
+
import { cloneElement, isValidElement, useCallback, useEffect, useLayoutEffect, useRef, useState, useSyncExternalStore } from "react";
|
|
3
|
+
import { OVERLAY_ANCHOR_GAP, OVERLAY_ATTACH_GAP, OVERLAY_BREAKPOINT, Surface, useResolvedKnobs, wasKeyboardFocus, ensureKeyboardModalityTracking, motionDurationMs } from "@multiplatform.one/theme";
|
|
4
4
|
import { isWeb, Sheet, View, YStack } from "tamagui";
|
|
5
5
|
import { useClick, useDismiss, useInteractions } from "@floating-ui/react";
|
|
6
6
|
import { ScrollArrow } from "../shared/floatingList.mjs";
|
|
@@ -71,8 +71,10 @@ function fixedContainingBlockOrigin(element) {
|
|
|
71
71
|
left: 0
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
|
-
function isRtl() {
|
|
75
|
-
|
|
74
|
+
function isRtl(element) {
|
|
75
|
+
if (!isWeb || typeof document === "undefined") return false;
|
|
76
|
+
const direction = element ? getComputedStyle(element).direction : "";
|
|
77
|
+
return direction ? direction === "rtl" : (element?.closest("[dir]") ?? document.documentElement).getAttribute("dir") === "rtl";
|
|
76
78
|
}
|
|
77
79
|
function panelTransformOrigin(placement) {
|
|
78
80
|
const rtl = isRtl();
|
|
@@ -84,37 +86,76 @@ function panelTransformOrigin(placement) {
|
|
|
84
86
|
const ECHO_STRIPPED_ATTRIBUTES = ["id", "for", "name", "data-testid", "aria-label", "aria-controls", "aria-labelledby", "aria-describedby", "aria-activedescendant"];
|
|
85
87
|
function TriggerEchoRow({
|
|
86
88
|
sourceRef,
|
|
87
|
-
onPress
|
|
89
|
+
onPress,
|
|
90
|
+
children,
|
|
91
|
+
anchorRect,
|
|
92
|
+
source
|
|
88
93
|
}) {
|
|
89
94
|
const rowRef = useRef(null);
|
|
95
|
+
const visualRef = useRef(null);
|
|
90
96
|
useLayoutEffect(() => {
|
|
91
97
|
const row = rowRef.current;
|
|
92
|
-
const
|
|
93
|
-
if (!row || !
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
98
|
+
const source2 = sourceRef.current;
|
|
99
|
+
if (!row || !source2 || typeof source2.cloneNode !== "function") return;
|
|
100
|
+
const sync = () => {
|
|
101
|
+
const control = source2.matches(PANEL_FOCUSABLE) ? source2 : source2.querySelector(PANEL_FOCUSABLE);
|
|
102
|
+
const labelledBy = control?.getAttribute("aria-labelledby");
|
|
103
|
+
const label = control?.getAttribute("aria-label") || labelledBy?.split(/\s+/).map(id => document.getElementById(id)?.textContent || "").join(" ") || control?.textContent || source2.textContent || "";
|
|
104
|
+
row.setAttribute("aria-label", label);
|
|
105
|
+
const rect = anchorRect ?? source2.getBoundingClientRect();
|
|
106
|
+
row.style.width = `${rect.width}px`;
|
|
107
|
+
row.style.height = `${rect.height}px`;
|
|
108
|
+
const rtl = isRtl(source2);
|
|
109
|
+
row.style.alignSelf = "flex-start";
|
|
110
|
+
const frameStyle = row.parentElement ? getComputedStyle(row.parentElement) : null;
|
|
111
|
+
row.style.marginTop = `${-(parseFloat(frameStyle?.borderTopWidth || "0") || 0)}px`;
|
|
112
|
+
row.style.position = "sticky";
|
|
113
|
+
row.style.top = row.style.marginTop;
|
|
114
|
+
row.style.zIndex = "1";
|
|
115
|
+
row.style.marginLeft = rtl ? "" : `${-(parseFloat(frameStyle?.borderLeftWidth || "0") || 0)}px`;
|
|
116
|
+
row.style.marginRight = rtl ? `${-(parseFloat(frameStyle?.borderRightWidth || "0") || 0)}px` : "";
|
|
117
|
+
const snapshot = children == null ? source2.cloneNode(true) : visualRef.current;
|
|
118
|
+
if (!snapshot) return;
|
|
119
|
+
const sourceFields = source2.querySelectorAll("input, textarea");
|
|
120
|
+
const snapshotFields = snapshot.querySelectorAll("input, textarea");
|
|
121
|
+
sourceFields.forEach((field, index) => {
|
|
122
|
+
const copy = snapshotFields[index];
|
|
123
|
+
if (copy) copy.value = field.value;
|
|
124
|
+
});
|
|
125
|
+
for (const node of [snapshot, ...Array.from(snapshot.querySelectorAll("*"))]) {
|
|
126
|
+
for (const name of ECHO_STRIPPED_ATTRIBUTES) node.removeAttribute(name);
|
|
127
|
+
if (node.hasAttribute("tabindex") || node.matches("input, textarea, button, a, select")) {
|
|
128
|
+
node.setAttribute("tabindex", "-1");
|
|
129
|
+
}
|
|
105
130
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
131
|
+
snapshot.setAttribute("inert", "");
|
|
132
|
+
snapshot.setAttribute("aria-hidden", "true");
|
|
133
|
+
if (children == null) visualRef.current?.replaceChildren(snapshot);
|
|
134
|
+
};
|
|
135
|
+
sync();
|
|
136
|
+
if (typeof ResizeObserver === "undefined") return;
|
|
137
|
+
const observer = new ResizeObserver(sync);
|
|
138
|
+
observer.observe(source2);
|
|
139
|
+
return () => observer.disconnect();
|
|
140
|
+
}, [sourceRef, source, children, anchorRect]);
|
|
110
141
|
return /* @__PURE__ */jsx(View, {
|
|
111
142
|
ref: rowRef,
|
|
112
143
|
"data-fp-trigger-row": "",
|
|
113
|
-
"
|
|
144
|
+
role: "button",
|
|
145
|
+
"aria-expanded": true,
|
|
146
|
+
tabIndex: -1,
|
|
114
147
|
cursor: "pointer",
|
|
115
148
|
onPress,
|
|
116
149
|
flexShrink: 0,
|
|
117
|
-
pointerEvents: "auto"
|
|
150
|
+
pointerEvents: "auto",
|
|
151
|
+
children: /* @__PURE__ */jsx(View, {
|
|
152
|
+
ref: visualRef,
|
|
153
|
+
pointerEvents: "none",
|
|
154
|
+
"aria-hidden": true,
|
|
155
|
+
children: isValidElement(children) ? cloneElement(children, {
|
|
156
|
+
ref: null
|
|
157
|
+
}) : children
|
|
158
|
+
})
|
|
118
159
|
});
|
|
119
160
|
}
|
|
120
161
|
const overlayFloatBreakpoint = OVERLAY_BREAKPOINT;
|
|
@@ -136,6 +177,7 @@ function FloatingPanel(props) {
|
|
|
136
177
|
const shouldUseSheet = props.sheet ?? (!isWeb || !viewportGtSm);
|
|
137
178
|
const panelProps = {
|
|
138
179
|
...props,
|
|
180
|
+
cover: props.anchorMode ? props.anchorMode === "cover-trigger" : props.cover,
|
|
139
181
|
children: /* @__PURE__ */jsx(Surface, {
|
|
140
182
|
painted: false,
|
|
141
183
|
children: props.children
|
|
@@ -176,7 +218,8 @@ function FloatingPanelSheet({
|
|
|
176
218
|
transition: transitionProp,
|
|
177
219
|
header,
|
|
178
220
|
scrollViewProps,
|
|
179
|
-
openOn = "press"
|
|
221
|
+
openOn = "press",
|
|
222
|
+
escapeTarget = "window"
|
|
180
223
|
}) {
|
|
181
224
|
const {
|
|
182
225
|
knobProps
|
|
@@ -197,7 +240,7 @@ function FloatingPanelSheet({
|
|
|
197
240
|
if (next) setPosition(0);
|
|
198
241
|
onOpenChange(next);
|
|
199
242
|
};
|
|
200
|
-
useSheetEscapeDismiss(open, () => handleOpenChange(false));
|
|
243
|
+
useSheetEscapeDismiss(open, () => handleOpenChange(false), escapeTarget);
|
|
201
244
|
const sheetFrameRef = useRef(null);
|
|
202
245
|
useParkedFrameInert(open, sheetFrameRef);
|
|
203
246
|
useSheetModalFocus(open, sheetFrameRef, skipReturnFocusRef);
|
|
@@ -218,7 +261,7 @@ function FloatingPanelSheet({
|
|
|
218
261
|
onClickCapture: openFromTrigger
|
|
219
262
|
} : void 0;
|
|
220
263
|
return /* @__PURE__ */jsxs(Fragment, {
|
|
221
|
-
children: [/* @__PURE__ */jsxs(View, {
|
|
264
|
+
children: [trigger != null && /* @__PURE__ */jsxs(View, {
|
|
222
265
|
flexDirection: "row",
|
|
223
266
|
alignItems: "center",
|
|
224
267
|
width: triggerSizing === "content" ? "auto" : "100%",
|
|
@@ -254,6 +297,7 @@ function FloatingPanelSheet({
|
|
|
254
297
|
opacity: 0
|
|
255
298
|
}
|
|
256
299
|
}), /* @__PURE__ */jsx(Sheet.Handle, {}), /* @__PURE__ */jsxs(Sheet.Frame, {
|
|
300
|
+
"data-testid": "floating-panel-sheet",
|
|
257
301
|
...{
|
|
258
302
|
ref: sheetFrameRef,
|
|
259
303
|
tabIndex: -1
|
|
@@ -286,8 +330,12 @@ function FloatingPanelWeb({
|
|
|
286
330
|
contentPadding = "default",
|
|
287
331
|
openOn = "press",
|
|
288
332
|
cover = true,
|
|
289
|
-
triggerEcho = true
|
|
333
|
+
triggerEcho = true,
|
|
334
|
+
triggerRow,
|
|
335
|
+
anchorRect,
|
|
336
|
+
...sheetProps
|
|
290
337
|
}) {
|
|
338
|
+
const [collisionSheet, setCollisionSheet] = useState(false);
|
|
291
339
|
const isFill = sizing === "fill";
|
|
292
340
|
const isContextMenu = openOn === "contextmenu";
|
|
293
341
|
const overlayStyleRef = useRef(null);
|
|
@@ -313,7 +361,7 @@ function FloatingPanelWeb({
|
|
|
313
361
|
pointPlacementRef.current = null;
|
|
314
362
|
};
|
|
315
363
|
const panel = useFloatingPanel({
|
|
316
|
-
open,
|
|
364
|
+
open: open && !collisionSheet,
|
|
317
365
|
onOpenChange,
|
|
318
366
|
disabled,
|
|
319
367
|
repositionRef: repositionFnRef,
|
|
@@ -324,13 +372,18 @@ function FloatingPanelWeb({
|
|
|
324
372
|
cover,
|
|
325
373
|
onBeforeOpen: resetPosition
|
|
326
374
|
});
|
|
327
|
-
useReturnFocusOnClose(open, skipReturnFocusRef);
|
|
328
|
-
useKeyboardFocusIntoPanel(open && panel.mounted, panel.refs.floating, keyboardOpenRef);
|
|
375
|
+
useReturnFocusOnClose(open, skipReturnFocusRef, panel.refs.floating);
|
|
376
|
+
useKeyboardFocusIntoPanel(open && panel.mounted && !collisionSheet, panel.refs.floating, keyboardOpenRef);
|
|
329
377
|
useEffect(() => {
|
|
330
378
|
if (open) return;
|
|
331
379
|
keyboardOpenRef.current = false;
|
|
332
380
|
anchorPointRef.current = null;
|
|
333
381
|
}, [open]);
|
|
382
|
+
useEffect(() => {
|
|
383
|
+
if (open || !collisionSheet) return;
|
|
384
|
+
const timer = setTimeout(() => setCollisionSheet(false), motionDurationMs(panel.knobProps.motion.slide.transition));
|
|
385
|
+
return () => clearTimeout(timer);
|
|
386
|
+
}, [open, collisionSheet, panel.knobProps.motion.slide.transition]);
|
|
334
387
|
const repositionOverlay = useCallback(() => {
|
|
335
388
|
const dropdownElement = panel.refs.floating.current;
|
|
336
389
|
const trig = panel.triggerRef.current;
|
|
@@ -341,10 +394,17 @@ function FloatingPanelWeb({
|
|
|
341
394
|
dropdownElement.scrollTop = 0;
|
|
342
395
|
}
|
|
343
396
|
const point = isContextMenu ? anchorPointRef.current ?? referenceCornerPoint(trig, isRtl()) : null;
|
|
397
|
+
const measured = anchorRect ? {
|
|
398
|
+
...anchorRect,
|
|
399
|
+
top: anchorRect.y,
|
|
400
|
+
left: anchorRect.x,
|
|
401
|
+
right: anchorRect.x + anchorRect.width,
|
|
402
|
+
bottom: anchorRect.y + anchorRect.height
|
|
403
|
+
} : trig.getBoundingClientRect();
|
|
344
404
|
const triggerBounds = point ? {
|
|
345
405
|
top: point.y,
|
|
346
406
|
bottom: point.y
|
|
347
|
-
} :
|
|
407
|
+
} : measured;
|
|
348
408
|
const viewportHeight = window.innerHeight;
|
|
349
409
|
const cs = getComputedStyle(dropdownElement);
|
|
350
410
|
const borderTopWidth = parseFloat(cs.borderTopWidth) || 0;
|
|
@@ -354,6 +414,46 @@ function FloatingPanelWeb({
|
|
|
354
414
|
const totalContentHeight = scrollContentHeight + totalBorderWidth;
|
|
355
415
|
const liveTransition = panel.panelTransition;
|
|
356
416
|
const containingBlock = fixedContainingBlockOrigin(dropdownElement);
|
|
417
|
+
if (cover && !point) {
|
|
418
|
+
const rtl = isRtl(trig);
|
|
419
|
+
const viewport = window.visualViewport;
|
|
420
|
+
const viewportLeft = viewport?.offsetLeft ?? 0;
|
|
421
|
+
const viewportTop = viewport?.offsetTop ?? 0;
|
|
422
|
+
const viewportRight = viewportLeft + (viewport?.width ?? (document.documentElement.clientWidth || window.innerWidth));
|
|
423
|
+
const viewportBottom = viewportTop + (viewport?.height ?? window.innerHeight);
|
|
424
|
+
dropdownElement.style.left = `${viewportLeft - containingBlock.left}px`;
|
|
425
|
+
const layoutStyle = getComputedStyle(dropdownElement);
|
|
426
|
+
const scale = layoutStyle.transform && layoutStyle.transform !== "none" && typeof DOMMatrixReadOnly !== "undefined" ? Math.abs(new DOMMatrixReadOnly(layoutStyle.transform).a) : 1;
|
|
427
|
+
const layoutWidth = dropdownElement.getBoundingClientRect().width / (scale || 1);
|
|
428
|
+
const width = Math.max(layoutWidth || dropdownElement.offsetWidth, measured.width);
|
|
429
|
+
const left = rtl ? measured.right - width : measured.left;
|
|
430
|
+
const firstActionHeight = contentRef.current?.querySelector(PANEL_FOCUSABLE)?.getBoundingClientRect().height || Number(panel.knobProps.menuRow.minHeight) || totalContentHeight;
|
|
431
|
+
const bodyStyle = contentRef.current ? getComputedStyle(contentRef.current) : null;
|
|
432
|
+
const bodyPadding = (parseFloat(bodyStyle?.paddingTop || "0") || 0) + (parseFloat(bodyStyle?.paddingBottom || "0") || 0);
|
|
433
|
+
const neededHeight = sheetProps.scrollable ? Math.min(totalContentHeight, measured.height + firstActionHeight + bodyPadding + totalBorderWidth) : totalContentHeight;
|
|
434
|
+
if (measured.width > 0 && measured.height > 0 && (left < viewportLeft || left + width > Math.max(measured.right, viewportRight - panelViewportPadding) || measured.right > viewportRight || measured.top < viewportTop || measured.top + Math.max(neededHeight, measured.height) > viewportBottom - panelViewportPadding)) {
|
|
435
|
+
dropdownElement.style.visibility = "hidden";
|
|
436
|
+
setCollisionSheet(true);
|
|
437
|
+
return;
|
|
438
|
+
}
|
|
439
|
+
const top2 = measured.top - containingBlock.top;
|
|
440
|
+
const cssLeft2 = left - containingBlock.left;
|
|
441
|
+
const maxHeight = Math.max(0, viewportBottom - panelViewportPadding - measured.top);
|
|
442
|
+
dropdownElement.style.top = `${top2}px`;
|
|
443
|
+
dropdownElement.style.left = `${cssLeft2}px`;
|
|
444
|
+
dropdownElement.style.maxHeight = `${maxHeight}px`;
|
|
445
|
+
dropdownElement.dir = rtl ? "rtl" : "ltr";
|
|
446
|
+
dropdownElement.style.transformOrigin = rtl ? "top right" : "top left";
|
|
447
|
+
dropdownElement.style.visibility = "visible";
|
|
448
|
+
overlayStyleRef.current = {
|
|
449
|
+
top: top2,
|
|
450
|
+
left: cssLeft2,
|
|
451
|
+
maxHeight
|
|
452
|
+
};
|
|
453
|
+
panel.initializingRef.current = false;
|
|
454
|
+
if (isInitial) dropdownElement.style.transition = liveTransition;
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
357
457
|
let isDropup = panel.placement.startsWith("top");
|
|
358
458
|
let cssLeft;
|
|
359
459
|
if (point) {
|
|
@@ -474,13 +574,14 @@ function FloatingPanelWeb({
|
|
|
474
574
|
});
|
|
475
575
|
}
|
|
476
576
|
});
|
|
477
|
-
}, [isFill, isContextMenu, cover, panel.placement, panel.refs, panel.triggerRef, panel.updateArrows, panel.panelTransition]);
|
|
577
|
+
}, [isFill, isContextMenu, cover, anchorRect, sheetProps.scrollable, panel.placement, panel.refs, panel.triggerRef, panel.updateArrows, panel.panelTransition]);
|
|
478
578
|
repositionFnRef.current = repositionOverlay;
|
|
479
579
|
const click = useClick(panel.context, {
|
|
480
580
|
event: "mousedown",
|
|
481
|
-
enabled: !isContextMenu
|
|
581
|
+
enabled: !isContextMenu && !collisionSheet
|
|
482
582
|
});
|
|
483
583
|
const dismiss = useDismiss(panel.context, {
|
|
584
|
+
enabled: !collisionSheet,
|
|
484
585
|
// Use 'click' instead of default 'pointerdown' so scrolling to the bottom
|
|
485
586
|
// (e.g. via wheel/trackpad or scroll arrow hover) doesn't trigger outside-press.
|
|
486
587
|
outsidePressEvent: "click",
|
|
@@ -495,10 +596,10 @@ function FloatingPanelWeb({
|
|
|
495
596
|
useLayoutEffect(() => {
|
|
496
597
|
if (!open || !panel.mounted) return;
|
|
497
598
|
repositionOverlay();
|
|
498
|
-
}, [open, panel.mounted, repositionOverlay, panel.y]);
|
|
599
|
+
}, [open, panel.mounted, repositionOverlay, panel.y, panel.x]);
|
|
499
600
|
useLayoutEffect(() => {
|
|
500
601
|
const content = contentRef.current;
|
|
501
|
-
if (!open || !panel.mounted || !isFill || !content || typeof ResizeObserver === "undefined") {
|
|
602
|
+
if (!open || !panel.mounted || !isFill && !cover || !content || typeof ResizeObserver === "undefined") {
|
|
502
603
|
return;
|
|
503
604
|
}
|
|
504
605
|
let frame = 0;
|
|
@@ -510,15 +611,16 @@ function FloatingPanelWeb({
|
|
|
510
611
|
});
|
|
511
612
|
});
|
|
512
613
|
observer.observe(content);
|
|
614
|
+
if (panel.triggerRef.current) observer.observe(panel.triggerRef.current);
|
|
513
615
|
return () => {
|
|
514
616
|
observer.disconnect();
|
|
515
617
|
if (frame) cancelAnimationFrame(frame);
|
|
516
618
|
};
|
|
517
|
-
}, [open, panel.mounted, isFill, repositionOverlay]);
|
|
619
|
+
}, [open, panel.mounted, isFill, cover, repositionOverlay, panel.triggerRef]);
|
|
518
620
|
const handleScroll = useCallback(event => {
|
|
519
621
|
const el = event.target;
|
|
520
622
|
panel.updateArrows(el);
|
|
521
|
-
if (isFill) return;
|
|
623
|
+
if (isFill || cover && !isContextMenu) return;
|
|
522
624
|
if (panel.initializingRef.current) {
|
|
523
625
|
lastScrollTopRef.current = el.scrollTop;
|
|
524
626
|
return;
|
|
@@ -541,7 +643,7 @@ function FloatingPanelWeb({
|
|
|
541
643
|
grownRef.current = true;
|
|
542
644
|
repositionFnRef.current?.();
|
|
543
645
|
}
|
|
544
|
-
}, [isFill, panel.updateArrows]);
|
|
646
|
+
}, [isFill, cover, isContextMenu, panel.updateArrows]);
|
|
545
647
|
const webTransition = panel.panelTransition;
|
|
546
648
|
const {
|
|
547
649
|
style: elevatedSurfaceStyle,
|
|
@@ -596,11 +698,21 @@ function FloatingPanelWeb({
|
|
|
596
698
|
return /* @__PURE__ */jsxs(Fragment, {
|
|
597
699
|
children: [/* @__PURE__ */jsx(View, {
|
|
598
700
|
...referenceProps,
|
|
701
|
+
alignSelf: sheetProps.triggerSizing === "content" ? "flex-start" : void 0,
|
|
599
702
|
cursor: disabled ? "not-allowed" : "pointer",
|
|
600
703
|
opacity: disabled ? 0.5 : 1,
|
|
601
704
|
"data-fp-reference": "",
|
|
602
705
|
children: trigger
|
|
603
|
-
}),
|
|
706
|
+
}), collisionSheet && /* @__PURE__ */jsx(FloatingPanelSheet, {
|
|
707
|
+
...sheetProps,
|
|
708
|
+
open,
|
|
709
|
+
onOpenChange,
|
|
710
|
+
trigger: null,
|
|
711
|
+
escapeTarget: "document",
|
|
712
|
+
skipReturnFocusRef,
|
|
713
|
+
contentPadding,
|
|
714
|
+
children
|
|
715
|
+
}), panel.mounted && !collisionSheet && /* @__PURE__ */jsx(PanelPortal, {
|
|
604
716
|
anchor: panel.triggerRef.current,
|
|
605
717
|
children: /* @__PURE__ */jsxs(YStack, {
|
|
606
718
|
...getFloatingProps({
|
|
@@ -613,6 +725,9 @@ function FloatingPanelWeb({
|
|
|
613
725
|
scrollbarWidth: "none",
|
|
614
726
|
zIndex: zIndex.dropdown,
|
|
615
727
|
overflow: "auto",
|
|
728
|
+
...(cover && !isContextMenu ? {
|
|
729
|
+
overflowX: "hidden"
|
|
730
|
+
} : {}),
|
|
616
731
|
...panel.floatingStyleRef.current,
|
|
617
732
|
...(overlayStyleRef.current ? {
|
|
618
733
|
maxHeight: overlayStyleRef.current.maxHeight
|
|
@@ -623,7 +738,7 @@ function FloatingPanelWeb({
|
|
|
623
738
|
// then positions against this box and is clipped by its scroll.
|
|
624
739
|
transform: panel.visible ? "none" : "scale(0.96)",
|
|
625
740
|
transition: webTransition,
|
|
626
|
-
transformOrigin: panelTransformOrigin(pointPlacementRef.current ? `${pointPlacementRef.current.dropup ? "top" : "bottom"}-${pointPlacementRef.current.alignEnd ? "end" : "start"}` : panel.placement)
|
|
741
|
+
transformOrigin: cover && !isContextMenu ? isRtl(panel.triggerRef.current) ? "top right" : "top left" : panelTransformOrigin(pointPlacementRef.current ? `${pointPlacementRef.current.dropup ? "top" : "bottom"}-${pointPlacementRef.current.alignEnd ? "end" : "start"}` : panel.placement)
|
|
627
742
|
},
|
|
628
743
|
onScroll: handleScroll,
|
|
629
744
|
onTransitionEnd: event => {
|
|
@@ -641,7 +756,10 @@ function FloatingPanelWeb({
|
|
|
641
756
|
paddingVertical: 0,
|
|
642
757
|
children: [isContextMenu || !cover || !triggerEcho ? null : /* @__PURE__ */jsx(TriggerEchoRow, {
|
|
643
758
|
sourceRef: panel.triggerRef,
|
|
644
|
-
|
|
759
|
+
source: trigger,
|
|
760
|
+
anchorRect,
|
|
761
|
+
onPress: () => onOpenChange(false),
|
|
762
|
+
children: triggerRow
|
|
645
763
|
}), /* @__PURE__ */jsx(ScrollArrow, {
|
|
646
764
|
direction: "up",
|
|
647
765
|
scrollRef: panel.refs.floating,
|