@multiplatform.one/forms 7.80.0 → 7.81.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/AdaptivePopup/index.cjs +1 -1
- package/dist/cjs/AdaptivePopup/index.native.js +3 -3
- package/dist/cjs/AdaptivePopup/index.native.js.map +1 -1
- package/dist/cjs/Button/IconButtonGroup.native.js.map +1 -1
- package/dist/cjs/Button/circleGlyph.native.js.map +1 -1
- package/dist/cjs/Button/iconButtonGroupContext.native.js.map +1 -1
- package/dist/cjs/Button/index.cjs +12 -5
- package/dist/cjs/Button/index.native.js +16 -8
- package/dist/cjs/Button/index.native.js.map +1 -1
- package/dist/cjs/Button/webGlass.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/PanelHeader.cjs +3 -8
- package/dist/cjs/FloatingPanel/PanelHeader.native.js +3 -8
- package/dist/cjs/FloatingPanel/PanelHeader.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/RegularPanel.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/compactFace.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/containingBlock.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/coverRect.cjs +0 -8
- package/dist/cjs/FloatingPanel/coverRect.native.js +0 -8
- package/dist/cjs/FloatingPanel/coverRect.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/echoContext.cjs +5 -27
- package/dist/cjs/FloatingPanel/echoContext.native.js +5 -28
- package/dist/cjs/FloatingPanel/echoContext.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/index.cjs +49 -131
- package/dist/cjs/FloatingPanel/index.native.js +26 -91
- package/dist/cjs/FloatingPanel/index.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/nestedAction.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/paintedBox.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/panelWidth.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/pointAnchor.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/regularPlacement.native.js.map +1 -1
- package/dist/cjs/FloatingPanel/trailingAction.native.js +1 -1
- package/dist/cjs/FloatingPanel/trailingAction.native.js.map +1 -1
- package/dist/cjs/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/PasswordReveal.native.js.map +1 -1
- package/dist/cjs/InputParts/index.native.js.map +1 -1
- package/dist/cjs/InputParts/keyboardAppearance.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/SystemColorField.native.js.map +1 -1
- package/dist/cjs/fields/ColorPicker/index.native.js +2 -2
- package/dist/cjs/fields/ColorPicker/index.native.js.map +1 -1
- package/dist/cjs/fields/ColorPicker/parts.native.js +2 -2
- package/dist/cjs/fields/ColorPicker/parts.native.js.map +1 -1
- package/dist/cjs/fields/ColorPicker/systemColorWell.gnome.native.js.map +1 -1
- package/dist/cjs/fields/Combobox/authorOptions.native.js.map +1 -1
- package/dist/cjs/fields/Combobox/index.cjs +3 -10
- package/dist/cjs/fields/Combobox/index.native.js +8 -15
- 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/DurationWheel.native.js +1 -1
- package/dist/cjs/fields/Duration/durationMath.native.js.map +1 -1
- package/dist/cjs/fields/Duration/durationWheelTypes.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/InlineChoices.cjs +4 -8
- package/dist/cjs/fields/Select/InlineChoices.native.js +4 -8
- package/dist/cjs/fields/Select/InlineChoices.native.js.map +1 -1
- package/dist/cjs/fields/Select/SheetPickerRow.native.js.map +1 -1
- package/dist/cjs/fields/Select/index.cjs +46 -199
- package/dist/cjs/fields/Select/index.native.js +56 -211
- package/dist/cjs/fields/Select/index.native.js.map +1 -1
- package/dist/cjs/fields/Select/shouldInlineChoices.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.cjs +2 -2
- package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js +3 -3
- 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/nativeDateTime/sheetKeyboard.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.cjs +4 -0
- package/dist/cjs/index.native.js +49 -45
- 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/CheckGlyph.cjs +40 -0
- package/dist/cjs/shared/CheckGlyph.native.js +44 -0
- package/dist/cjs/shared/CheckGlyph.native.js.map +1 -0
- 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/choiceRowPress.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/fieldRowContext.native.js.map +1 -1
- package/dist/cjs/shared/floatingList.cjs +82 -3
- package/dist/cjs/shared/floatingList.native.js +96 -6
- package/dist/cjs/shared/floatingList.native.js.map +1 -1
- 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/overlaySizeClass.native.js.map +1 -1
- package/dist/cjs/shared/overlayStack.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/restoreRetries.native.js.map +1 -1
- package/dist/cjs/shared/sheetNavigation.native.js.map +1 -1
- package/dist/cjs/shared/systemControlModules.gnome.native.js.map +1 -1
- package/dist/cjs/shared/systemControls.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.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/standardActions.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/AdaptivePopup/index.mjs +2 -2
- package/dist/esm/AdaptivePopup/index.mjs.map +1 -1
- package/dist/esm/AdaptivePopup/index.native.js +2 -2
- package/dist/esm/AdaptivePopup/index.native.js.map +1 -1
- package/dist/esm/Button/IconButtonGroup.native.js.map +1 -1
- package/dist/esm/Button/circleGlyph.native.js.map +1 -1
- package/dist/esm/Button/iconButtonGroupContext.native.js.map +1 -1
- package/dist/esm/Button/index.mjs +12 -5
- package/dist/esm/Button/index.mjs.map +1 -1
- package/dist/esm/Button/index.native.js +14 -6
- package/dist/esm/Button/index.native.js.map +1 -1
- package/dist/esm/Button/webGlass.native.js.map +1 -1
- package/dist/esm/Chip/index.native.js.map +1 -1
- package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
- package/dist/esm/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
- package/dist/esm/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
- package/dist/esm/ContextualSaveBar/index.native.js.map +1 -1
- package/dist/esm/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
- package/dist/esm/ControlGroup/index.native.js.map +1 -1
- package/dist/esm/DescriptionList/index.native.js.map +1 -1
- package/dist/esm/ErrorSummary.native.js.map +1 -1
- package/dist/esm/FieldDisplay/editMode.native.js.map +1 -1
- package/dist/esm/FieldDisplay/formatters.native.js.map +1 -1
- package/dist/esm/FieldDisplay/index.native.js.map +1 -1
- package/dist/esm/FieldGroup.native.js.map +1 -1
- package/dist/esm/FloatingPanel/PanelHeader.mjs +3 -8
- package/dist/esm/FloatingPanel/PanelHeader.mjs.map +1 -1
- package/dist/esm/FloatingPanel/PanelHeader.native.js +3 -8
- package/dist/esm/FloatingPanel/PanelHeader.native.js.map +1 -1
- package/dist/esm/FloatingPanel/RegularPanel.native.js.map +1 -1
- package/dist/esm/FloatingPanel/compactFace.native.js.map +1 -1
- package/dist/esm/FloatingPanel/containingBlock.native.js.map +1 -1
- package/dist/esm/FloatingPanel/coverRect.mjs +1 -8
- package/dist/esm/FloatingPanel/coverRect.mjs.map +1 -1
- package/dist/esm/FloatingPanel/coverRect.native.js +1 -8
- package/dist/esm/FloatingPanel/coverRect.native.js.map +1 -1
- package/dist/esm/FloatingPanel/echoContext.mjs +4 -24
- package/dist/esm/FloatingPanel/echoContext.mjs.map +1 -1
- package/dist/esm/FloatingPanel/echoContext.native.js +4 -25
- package/dist/esm/FloatingPanel/echoContext.native.js.map +1 -1
- package/dist/esm/FloatingPanel/index.mjs +53 -135
- package/dist/esm/FloatingPanel/index.mjs.map +1 -1
- package/dist/esm/FloatingPanel/index.native.js +30 -95
- package/dist/esm/FloatingPanel/index.native.js.map +1 -1
- package/dist/esm/FloatingPanel/nestedAction.native.js.map +1 -1
- package/dist/esm/FloatingPanel/paintedBox.native.js.map +1 -1
- package/dist/esm/FloatingPanel/panelWidth.native.js.map +1 -1
- package/dist/esm/FloatingPanel/pointAnchor.native.js.map +1 -1
- package/dist/esm/FloatingPanel/regularPlacement.native.js.map +1 -1
- package/dist/esm/FloatingPanel/trailingAction.native.js.map +1 -1
- package/dist/esm/FloatingPanel/useFloatingPanel.native.js.map +1 -1
- package/dist/esm/Form/index.native.js.map +1 -1
- package/dist/esm/Form/submissionController.native.js.map +1 -1
- package/dist/esm/Form/validateOn.native.js.map +1 -1
- package/dist/esm/FormGrid.native.js.map +1 -1
- package/dist/esm/FormSection.native.js.map +1 -1
- package/dist/esm/InputParts/PasswordReveal.native.js.map +1 -1
- package/dist/esm/InputParts/index.native.js.map +1 -1
- package/dist/esm/InputParts/keyboardAppearance.native.js.map +1 -1
- package/dist/esm/Label/index.native.js.map +1 -1
- package/dist/esm/MediaPicker/base64.native.js.map +1 -1
- package/dist/esm/MediaPicker/payload.native.js.map +1 -1
- package/dist/esm/MediaPicker/types.native.js.map +1 -1
- package/dist/esm/MediaPicker/useMediaPicker.native.js.map +1 -1
- package/dist/esm/Skeleton/index.native.js.map +1 -1
- package/dist/esm/Spinner/SpinnerGlyph.native.js.map +1 -1
- package/dist/esm/Spinner/spinnerSize.native.js.map +1 -1
- package/dist/esm/Table/index.native.js.map +1 -1
- package/dist/esm/Wheel/haptic.native.js.map +1 -1
- package/dist/esm/Wheel/index.native.js.map +1 -1
- package/dist/esm/Wheel/wheelShared.native.js.map +1 -1
- package/dist/esm/actionLabel.native.js.map +1 -1
- package/dist/esm/fieldDefaults.native.js.map +1 -1
- package/dist/esm/fieldLayout.native.js.map +1 -1
- package/dist/esm/fields/Barcode/BarcodePreview.native.js.map +1 -1
- package/dist/esm/fields/Barcode/code128.native.js.map +1 -1
- package/dist/esm/fields/Barcode/index.native.js.map +1 -1
- package/dist/esm/fields/Barcode/qr.native.js.map +1 -1
- package/dist/esm/fields/Barcode/scannerTypes.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/Checkbox.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxBox.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxCard.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/checkboxGroupContext.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/index.native.js.map +1 -1
- package/dist/esm/fields/ColorPicker/SystemColorField.native.js.map +1 -1
- package/dist/esm/fields/ColorPicker/index.native.js.map +1 -1
- package/dist/esm/fields/ColorPicker/parts.native.js.map +1 -1
- package/dist/esm/fields/ColorPicker/systemColorWell.gnome.native.js.map +1 -1
- package/dist/esm/fields/Combobox/authorOptions.native.js.map +1 -1
- package/dist/esm/fields/Combobox/index.mjs +4 -11
- package/dist/esm/fields/Combobox/index.mjs.map +1 -1
- package/dist/esm/fields/Combobox/index.native.js +4 -11
- package/dist/esm/fields/Combobox/index.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/Calendar.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/DateRangePicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/MonthPicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/catalog.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/fieldValueSync.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/utils.native.js.map +1 -1
- package/dist/esm/fields/Duration/durationMath.native.js.map +1 -1
- package/dist/esm/fields/Duration/durationWheelTypes.native.js.map +1 -1
- package/dist/esm/fields/Duration/index.native.js.map +1 -1
- package/dist/esm/fields/FileUpload/filePickerTypes.native.js.map +1 -1
- package/dist/esm/fields/FileUpload/index.native.js.map +1 -1
- package/dist/esm/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/geoValue.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/geocoder.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/geocoderContext.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/index.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/mapMath.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/mapTypes.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/nativeSearchFocus.native.js.map +1 -1
- package/dist/esm/fields/Geolocation/photonGeocoder.native.js.map +1 -1
- package/dist/esm/fields/Icon/drawnSet.native.js.map +1 -1
- package/dist/esm/fields/Icon/index.native.js.map +1 -1
- package/dist/esm/fields/ImageField/index.native.js.map +1 -1
- package/dist/esm/fields/Input/index.native.js.map +1 -1
- package/dist/esm/fields/MentionInput/index.native.js.map +1 -1
- package/dist/esm/fields/OTPInput/index.native.js.map +1 -1
- package/dist/esm/fields/OTPInput/otpCellCss.native.js.map +1 -1
- package/dist/esm/fields/PhoneInput/dialCodes.native.js.map +1 -1
- package/dist/esm/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/esm/fields/PhoneInput/phone.native.js.map +1 -1
- package/dist/esm/fields/PhoneInput/regionNames.native.js.map +1 -1
- package/dist/esm/fields/Progress/index.native.js.map +1 -1
- package/dist/esm/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/esm/fields/Rating/index.native.js.map +1 -1
- package/dist/esm/fields/Rating/ratingMath.native.js.map +1 -1
- package/dist/esm/fields/Rating/types.native.js.map +1 -1
- package/dist/esm/fields/SearchInput/index.native.js.map +1 -1
- package/dist/esm/fields/Select/InlineChoices.mjs +2 -6
- package/dist/esm/fields/Select/InlineChoices.mjs.map +1 -1
- package/dist/esm/fields/Select/InlineChoices.native.js +2 -6
- package/dist/esm/fields/Select/InlineChoices.native.js.map +1 -1
- package/dist/esm/fields/Select/SheetPickerRow.native.js.map +1 -1
- package/dist/esm/fields/Select/index.mjs +49 -202
- package/dist/esm/fields/Select/index.mjs.map +1 -1
- package/dist/esm/fields/Select/index.native.js +55 -210
- package/dist/esm/fields/Select/index.native.js.map +1 -1
- package/dist/esm/fields/Select/shouldInlineChoices.native.js.map +1 -1
- package/dist/esm/fields/Signature/index.native.js.map +1 -1
- package/dist/esm/fields/Slider/index.native.js.map +1 -1
- package/dist/esm/fields/Slider/jumpMotion.native.js.map +1 -1
- package/dist/esm/fields/Stepper/index.native.js.map +1 -1
- package/dist/esm/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
- package/dist/esm/fields/Switch/footprint.native.js.map +1 -1
- package/dist/esm/fields/Switch/index.native.js.map +1 -1
- package/dist/esm/fields/TextArea/index.native.js.map +1 -1
- package/dist/esm/fields/TimePicker/catalog.native.js.map +1 -1
- package/dist/esm/fields/TimePicker/parts.native.js.map +1 -1
- package/dist/esm/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
- package/dist/esm/fields/TimeRangeScrubber/index.native.js.map +1 -1
- package/dist/esm/fields/ToggleGroup/index.native.js.map +1 -1
- package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.mjs +3 -3
- package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.mjs.map +1 -1
- package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js +3 -3
- package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
- package/dist/esm/fields/nativeDateTime/dateTimePickerLoader.native.js.map +1 -1
- package/dist/esm/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -1
- package/dist/esm/fields/nativeDateTime/sheetKeyboard.native.js.map +1 -1
- package/dist/esm/fields/nativeSelect.native.js.map +1 -1
- package/dist/esm/fields/selectedOrder.native.js.map +1 -1
- package/dist/esm/formSpacing.native.js.map +1 -1
- package/dist/esm/hooks/useFocusManagement.native.js.map +1 -1
- package/dist/esm/index.mjs +3 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +3 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/keyboard/chain.native.js.map +1 -1
- package/dist/esm/keyboard/index.native.js.map +1 -1
- package/dist/esm/keyboard/types.native.js.map +1 -1
- package/dist/esm/requiredMarking.native.js.map +1 -1
- package/dist/esm/shared/CheckGlyph.mjs +15 -0
- package/dist/esm/shared/CheckGlyph.mjs.map +1 -0
- package/dist/esm/shared/CheckGlyph.native.js +16 -0
- package/dist/esm/shared/CheckGlyph.native.js.map +1 -0
- package/dist/esm/shared/TimeColumn.native.js.map +1 -1
- package/dist/esm/shared/capabilityPreflight.native.js.map +1 -1
- package/dist/esm/shared/choiceRowPress.native.js.map +1 -1
- package/dist/esm/shared/colorRamps.native.js.map +1 -1
- package/dist/esm/shared/devWarn.native.js.map +1 -1
- package/dist/esm/shared/fieldRowContext.native.js.map +1 -1
- package/dist/esm/shared/floatingList.mjs +80 -4
- package/dist/esm/shared/floatingList.mjs.map +1 -1
- package/dist/esm/shared/floatingList.native.js +93 -6
- package/dist/esm/shared/floatingList.native.js.map +1 -1
- package/dist/esm/shared/focusManagement.native.js.map +1 -1
- package/dist/esm/shared/groupContext.native.js.map +1 -1
- package/dist/esm/shared/i18n.native.js.map +1 -1
- package/dist/esm/shared/instantMotion.native.js.map +1 -1
- package/dist/esm/shared/nativeA11y.native.js.map +1 -1
- package/dist/esm/shared/nativeAutoFocus.native.js.map +1 -1
- package/dist/esm/shared/overlaySizeClass.native.js.map +1 -1
- package/dist/esm/shared/overlayStack.native.js.map +1 -1
- package/dist/esm/shared/panelPortal.native.js.map +1 -1
- package/dist/esm/shared/pickerTriggerContract.native.js.map +1 -1
- package/dist/esm/shared/pressSlopProps.native.js.map +1 -1
- package/dist/esm/shared/restoreRetries.native.js.map +1 -1
- package/dist/esm/shared/sheetNavigation.native.js.map +1 -1
- package/dist/esm/shared/systemControlModules.gnome.native.js.map +1 -1
- package/dist/esm/shared/systemControls.native.js.map +1 -1
- package/dist/esm/shared/t.native.js.map +1 -1
- package/dist/esm/shared/tableCellContext.native.js.map +1 -1
- package/dist/esm/shared/useDragScroll.native.js.map +1 -1
- package/dist/esm/shared/useKeyboardInset.native.js.map +1 -1
- package/dist/esm/shared/useSheetEscapeDismiss.native.js.map +1 -1
- package/dist/esm/shared/useWheelIncrement.native.js.map +1 -1
- package/dist/esm/shared/utils.native.js.map +1 -1
- package/dist/esm/shared/zIndex.native.js.map +1 -1
- package/dist/esm/standardActions.native.js.map +1 -1
- package/dist/esm/themedPrimitives.native.js.map +1 -1
- package/dist/esm/types.native.js.map +1 -1
- package/dist/esm/utils/LinkCell.native.js.map +1 -1
- package/dist/jsx/AdaptivePopup/index.mjs +2 -2
- package/dist/jsx/AdaptivePopup/index.mjs.map +1 -1
- package/dist/jsx/AdaptivePopup/index.native.js +1 -1
- package/dist/jsx/AdaptivePopup/index.native.js.map +1 -1
- package/dist/jsx/Button/index.mjs +12 -5
- package/dist/jsx/Button/index.mjs.map +1 -1
- package/dist/jsx/Button/index.native.js +14 -6
- package/dist/jsx/Button/index.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/PanelHeader.mjs +3 -8
- package/dist/jsx/FloatingPanel/PanelHeader.mjs.map +1 -1
- package/dist/jsx/FloatingPanel/PanelHeader.native.js +3 -8
- package/dist/jsx/FloatingPanel/PanelHeader.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/coverRect.mjs +1 -8
- package/dist/jsx/FloatingPanel/coverRect.mjs.map +1 -1
- package/dist/jsx/FloatingPanel/coverRect.native.js +0 -8
- package/dist/jsx/FloatingPanel/coverRect.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/echoContext.mjs +4 -24
- package/dist/jsx/FloatingPanel/echoContext.mjs.map +1 -1
- package/dist/jsx/FloatingPanel/echoContext.native.js +5 -28
- package/dist/jsx/FloatingPanel/echoContext.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/index.mjs +53 -135
- package/dist/jsx/FloatingPanel/index.mjs.map +1 -1
- package/dist/jsx/FloatingPanel/index.native.js +26 -91
- package/dist/jsx/FloatingPanel/index.native.js.map +1 -1
- package/dist/jsx/fields/Combobox/index.mjs +4 -11
- package/dist/jsx/fields/Combobox/index.mjs.map +1 -1
- package/dist/jsx/fields/Combobox/index.native.js +3 -10
- package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
- package/dist/jsx/fields/Select/InlineChoices.mjs +2 -6
- package/dist/jsx/fields/Select/InlineChoices.mjs.map +1 -1
- package/dist/jsx/fields/Select/InlineChoices.native.js +4 -8
- package/dist/jsx/fields/Select/InlineChoices.native.js.map +1 -1
- package/dist/jsx/fields/Select/index.mjs +49 -202
- package/dist/jsx/fields/Select/index.mjs.map +1 -1
- package/dist/jsx/fields/Select/index.native.js +52 -207
- package/dist/jsx/fields/Select/index.native.js.map +1 -1
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.mjs +3 -3
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.mjs.map +1 -1
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js +2 -2
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
- package/dist/jsx/index.js +3 -1
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +3 -1
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +4 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/shared/CheckGlyph.mjs +15 -0
- package/dist/jsx/shared/CheckGlyph.mjs.map +1 -0
- package/dist/jsx/shared/CheckGlyph.native.js +44 -0
- package/dist/jsx/shared/CheckGlyph.native.js.map +1 -0
- package/dist/jsx/shared/floatingList.mjs +80 -4
- package/dist/jsx/shared/floatingList.mjs.map +1 -1
- package/dist/jsx/shared/floatingList.native.js +95 -5
- package/dist/jsx/shared/floatingList.native.js.map +1 -1
- package/package.json +8 -8
- package/src/AdaptivePopup/index.tsx +2 -2
- package/src/Button/Button.iconButton.spec.tsx +39 -0
- package/src/Button/index.tsx +20 -8
- package/src/FloatingPanel/FloatingPanel.iconCover.spec.tsx +279 -0
- package/src/FloatingPanel/FloatingPanel.menuFace.native.spec.tsx +78 -69
- package/src/FloatingPanel/FloatingPanel.seamlessCover.spec.tsx +12 -0
- package/src/FloatingPanel/PanelHeader.tsx +4 -12
- package/src/FloatingPanel/coverRect.ts +2 -15
- package/src/FloatingPanel/echoContext.ts +6 -40
- package/src/FloatingPanel/index.native.tsx +36 -145
- package/src/FloatingPanel/index.tsx +61 -187
- package/src/FloatingPanel/pointAnchor.spec.ts +1 -1
- package/src/FloatingPanel/pointAnchor.ts +4 -4
- package/src/fields/Combobox/index.tsx +4 -9
- package/src/fields/Select/InlineChoices.tsx +2 -2
- package/src/fields/Select/Select.containingBlock.spec.tsx +131 -130
- package/src/fields/Select/Select.stories.tsx +10 -0
- package/src/fields/Select/index.tsx +66 -253
- package/src/fields/nativeDateTime/OsDateTimeSheet.tsx +3 -3
- package/src/index.ts +2 -1
- package/src/shared/CheckGlyph.tsx +12 -0
- package/src/shared/floatingList.spec.tsx +154 -1
- package/src/shared/floatingList.tsx +125 -8
- package/types/Button/index.d.ts.map +1 -1
- package/types/FloatingPanel/PanelHeader.d.ts +1 -6
- package/types/FloatingPanel/PanelHeader.d.ts.map +1 -1
- package/types/FloatingPanel/coverRect.d.ts +2 -11
- package/types/FloatingPanel/coverRect.d.ts.map +1 -1
- package/types/FloatingPanel/echoContext.d.ts +5 -22
- package/types/FloatingPanel/echoContext.d.ts.map +1 -1
- package/types/FloatingPanel/index.d.ts +6 -8
- package/types/FloatingPanel/index.d.ts.map +1 -1
- package/types/FloatingPanel/index.native.d.ts +1 -1
- package/types/FloatingPanel/index.native.d.ts.map +1 -1
- package/types/FloatingPanel/pointAnchor.d.ts +4 -4
- package/types/fields/Combobox/index.d.ts.map +1 -1
- package/types/fields/Select/index.d.ts.map +1 -1
- package/types/index.d.ts +2 -1
- package/types/index.d.ts.map +1 -1
- package/types/shared/CheckGlyph.d.ts +10 -0
- package/types/shared/CheckGlyph.d.ts.map +1 -0
- package/types/shared/floatingList.d.ts +55 -1
- package/types/shared/floatingList.d.ts.map +1 -1
- package/dist/cjs/FloatingPanel/iconEcho.cjs +0 -106
- package/dist/cjs/FloatingPanel/iconEcho.native.js +0 -116
- package/dist/cjs/FloatingPanel/iconEcho.native.js.map +0 -1
- package/dist/esm/FloatingPanel/iconEcho.mjs +0 -79
- package/dist/esm/FloatingPanel/iconEcho.mjs.map +0 -1
- package/dist/esm/FloatingPanel/iconEcho.native.js +0 -86
- package/dist/esm/FloatingPanel/iconEcho.native.js.map +0 -1
- package/dist/jsx/FloatingPanel/iconEcho.mjs +0 -79
- package/dist/jsx/FloatingPanel/iconEcho.mjs.map +0 -1
- package/dist/jsx/FloatingPanel/iconEcho.native.js +0 -116
- package/dist/jsx/FloatingPanel/iconEcho.native.js.map +0 -1
- package/src/FloatingPanel/FloatingPanel.iconEcho.spec.tsx +0 -357
- package/src/FloatingPanel/iconEcho.tsx +0 -124
- package/types/FloatingPanel/iconEcho.d.ts +0 -29
- package/types/FloatingPanel/iconEcho.d.ts.map +0 -1
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
transitionProps,
|
|
3
|
+
overlayScrim,
|
|
4
|
+
sheetGrabber,
|
|
5
|
+
sheetGrabberClearance,
|
|
6
|
+
} from "@multiplatform.one/theme";
|
|
2
7
|
import type { ReactNode, RefObject, UIEvent } from "react";
|
|
3
8
|
import {
|
|
4
9
|
cloneElement,
|
|
@@ -15,7 +20,6 @@ import {
|
|
|
15
20
|
OVERLAY_ATTACH_GAP,
|
|
16
21
|
OVERLAY_BREAKPOINT,
|
|
17
22
|
Surface,
|
|
18
|
-
SurfaceContext,
|
|
19
23
|
useResolvedKnobs,
|
|
20
24
|
wasKeyboardFocus,
|
|
21
25
|
ensureKeyboardModalityTracking,
|
|
@@ -41,14 +45,8 @@ import { OverlayStackProvider, useInsideOverlay, useOverlayZIndex } from "../sha
|
|
|
41
45
|
import { resolveCompactFace, type CompactFace } from "./compactFace";
|
|
42
46
|
import { isNestedPanelAction, type PanelActionEvent } from "./nestedAction";
|
|
43
47
|
import { PanelPortal } from "./PanelPortal";
|
|
44
|
-
import {
|
|
45
|
-
|
|
46
|
-
PanelIconEchoBoxContext,
|
|
47
|
-
sameEchoBox,
|
|
48
|
-
type PanelIconEchoBox,
|
|
49
|
-
} from "./echoContext";
|
|
50
|
-
import { iconEchoElement, iconEchoOverlays, type IconEcho } from "./iconEcho";
|
|
51
|
-
import { echoInCover, iconCoverRect } from "./coverRect";
|
|
48
|
+
import { PanelSheetContext } from "./echoContext";
|
|
49
|
+
import { iconCoverRect } from "./coverRect";
|
|
52
50
|
import { groupSurfaceOf, paintedTriggerBox } from "./paintedBox";
|
|
53
51
|
import {
|
|
54
52
|
contextMenuPoint,
|
|
@@ -103,14 +101,13 @@ export interface FloatingPanelProps {
|
|
|
103
101
|
*/
|
|
104
102
|
coverAlign?: "start" | "auto";
|
|
105
103
|
/**
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
* down from the button's top edge, or up from its bottom edge.
|
|
104
|
+
* The trigger is an icon-only button (LC-112, FZ-8665 Round 45). Its panel
|
|
105
|
+
* covers the surface the button is seen on, a glass capsule or its press
|
|
106
|
+
* target, and repeats nothing: the content starts at the panel's top edge,
|
|
107
|
+
* and a press outside it closes it. The panel never slides off the button:
|
|
108
|
+
* it opens down from the button's top edge, or up from its bottom edge.
|
|
112
109
|
*/
|
|
113
|
-
|
|
110
|
+
iconCover?: boolean;
|
|
114
111
|
/**
|
|
115
112
|
* Optional control rendered beside the trigger but OUTSIDE the native press
|
|
116
113
|
* capture (e.g. DatePicker/ColorPicker clear). On native the trigger subtree
|
|
@@ -410,7 +407,6 @@ export function TriggerEchoRow({
|
|
|
410
407
|
const stretched = grown > rect.width;
|
|
411
408
|
row.style.width = `${stretched ? grown : rect.width}px`;
|
|
412
409
|
row.style.height = `${rect.height}px`;
|
|
413
|
-
const rtl = isRtl(source);
|
|
414
410
|
row.style.alignSelf = "flex-start";
|
|
415
411
|
const frameStyle = row.parentElement ? getComputedStyle(row.parentElement) : null;
|
|
416
412
|
row.style.position = "sticky";
|
|
@@ -419,12 +415,10 @@ export function TriggerEchoRow({
|
|
|
419
415
|
row.style.zIndex = "1";
|
|
420
416
|
// Sticky over a scrolled body, so it carries the panel's own fill.
|
|
421
417
|
row.style.backgroundColor = frameStyle?.backgroundColor ?? "";
|
|
422
|
-
row
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
row.style.marginRight =
|
|
426
|
-
? `${-(parseFloat(frameStyle?.borderRightWidth || "0") || 0)}px`
|
|
427
|
-
: "";
|
|
418
|
+
// Both sides overlap the frame's border, so a trigger-wide row fits a
|
|
419
|
+
// trigger-wide panel instead of pushing it a border wider (FZ-8557).
|
|
420
|
+
row.style.marginLeft = `${-(parseFloat(frameStyle?.borderLeftWidth || "0") || 0)}px`;
|
|
421
|
+
row.style.marginRight = `${-(parseFloat(frameStyle?.borderRightWidth || "0") || 0)}px`;
|
|
428
422
|
const snapshot =
|
|
429
423
|
children == null ? (source.cloneNode(true) as HTMLElement) : visualRef.current;
|
|
430
424
|
if (!snapshot) return;
|
|
@@ -521,97 +515,6 @@ export function placeEchoOverTrigger(
|
|
|
521
515
|
}
|
|
522
516
|
}
|
|
523
517
|
|
|
524
|
-
/**
|
|
525
|
-
* The band an icon trigger's echo rides (LC-112, FZ-8480): as tall as the
|
|
526
|
-
* trigger, sticky on the panel's top edge (or its bottom edge when the panel
|
|
527
|
-
* opened upward), filled with the panel's surface so scrolled rows pass under
|
|
528
|
-
* it. It comes last in the document, so a keyboard open lands on the panel's
|
|
529
|
-
* content and the echo is the last tab stop; CSS order draws it first.
|
|
530
|
-
*/
|
|
531
|
-
function IconEchoRow({ children }: { children: ReactNode }) {
|
|
532
|
-
return (
|
|
533
|
-
<View
|
|
534
|
-
data-fp-icon-echo=""
|
|
535
|
-
flexShrink={0}
|
|
536
|
-
alignSelf="stretch"
|
|
537
|
-
pointerEvents="box-none"
|
|
538
|
-
style={{ order: -1, position: "sticky", zIndex: 1 }}
|
|
539
|
-
>
|
|
540
|
-
<View data-fp-icon-echo-box="" alignItems="flex-start" justifyContent="flex-start">
|
|
541
|
-
{children}
|
|
542
|
-
</View>
|
|
543
|
-
</View>
|
|
544
|
-
);
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
/**
|
|
548
|
-
* Lay the icon echo on the trigger's measured box: the band is the trigger's
|
|
549
|
-
* height on the edge the panel shares with it, and the box sits `offset` in
|
|
550
|
-
* from the panel's start edge, pulled back over the frame's border so the
|
|
551
|
-
* button lands exactly where the trigger is. An overlaid echo (an X) takes no
|
|
552
|
-
* height of its own and lets the content show beside it.
|
|
553
|
-
*/
|
|
554
|
-
function placeIconEcho(
|
|
555
|
-
panelElement: HTMLElement,
|
|
556
|
-
{
|
|
557
|
-
offset,
|
|
558
|
-
width,
|
|
559
|
-
height,
|
|
560
|
-
up,
|
|
561
|
-
overlay,
|
|
562
|
-
group = null,
|
|
563
|
-
}: {
|
|
564
|
-
offset: number;
|
|
565
|
-
width: number;
|
|
566
|
-
height: number;
|
|
567
|
-
up: boolean;
|
|
568
|
-
overlay: boolean;
|
|
569
|
-
/**
|
|
570
|
-
* The surface the panel covers when it is not the trigger's own box (a
|
|
571
|
-
* grouped capsule, or the 44pt target of a smaller avatar): the band
|
|
572
|
-
* covers all of it, and only the pressed trigger shows, at its own spot.
|
|
573
|
-
*/
|
|
574
|
-
group?: { top: number; height: number } | null;
|
|
575
|
-
},
|
|
576
|
-
) {
|
|
577
|
-
const row = panelElement.querySelector<HTMLElement>("[data-fp-icon-echo]");
|
|
578
|
-
const box = row?.querySelector<HTMLElement>("[data-fp-icon-echo-box]");
|
|
579
|
-
if (!row || !box) return;
|
|
580
|
-
const frame = getComputedStyle(panelElement);
|
|
581
|
-
const border = (side: "Top" | "Bottom" | "Left" | "Right") =>
|
|
582
|
-
parseFloat(frame[`border${side}Width`] || "0") || 0;
|
|
583
|
-
const rtl = panelElement.dir === "rtl";
|
|
584
|
-
row.style.order = up ? "1" : "-1";
|
|
585
|
-
row.style.height = `${height}px`;
|
|
586
|
-
row.style.backgroundColor = overlay ? "transparent" : frame.backgroundColor;
|
|
587
|
-
if (up) {
|
|
588
|
-
row.style.top = "";
|
|
589
|
-
row.style.marginTop = "";
|
|
590
|
-
row.style.marginBottom = `${-border("Bottom")}px`;
|
|
591
|
-
row.style.bottom = row.style.marginBottom;
|
|
592
|
-
} else {
|
|
593
|
-
row.style.bottom = "";
|
|
594
|
-
row.style.marginTop = `${-border("Top")}px`;
|
|
595
|
-
row.style.marginBottom = overlay ? `${-(height - border("Top"))}px` : "";
|
|
596
|
-
row.style.top = row.style.marginTop;
|
|
597
|
-
}
|
|
598
|
-
row.setAttribute("data-fp-icon-echo", overlay ? "overlay" : "band");
|
|
599
|
-
if (group) {
|
|
600
|
-
row.style.height = `${group.height}px`;
|
|
601
|
-
if (!up && overlay) row.style.marginBottom = `${-(group.height - border("Top"))}px`;
|
|
602
|
-
}
|
|
603
|
-
row.style.marginLeft = `${-border("Left")}px`;
|
|
604
|
-
row.style.marginRight = `${-border("Right")}px`;
|
|
605
|
-
box.style.width = `${width}px`;
|
|
606
|
-
box.style.height = `${height}px`;
|
|
607
|
-
box.style.marginLeft = rtl ? "" : `${offset}px`;
|
|
608
|
-
box.style.marginRight = rtl ? `${offset}px` : "";
|
|
609
|
-
box.style.alignSelf = "flex-start";
|
|
610
|
-
box.style.marginTop = group ? `${group.top}px` : "";
|
|
611
|
-
box.style.position = "relative";
|
|
612
|
-
box.style.zIndex = "1";
|
|
613
|
-
}
|
|
614
|
-
|
|
615
518
|
/** The box that lays an element out, past any `display: contents` wrappers. */
|
|
616
519
|
function layoutParentOf(element: HTMLElement | null): HTMLElement | null {
|
|
617
520
|
let parent = element?.parentElement ?? null;
|
|
@@ -815,11 +718,11 @@ function FloatingPanelSheet({
|
|
|
815
718
|
>
|
|
816
719
|
<Sheet.Overlay
|
|
817
720
|
{...transitionProps(scrimMotion)}
|
|
818
|
-
backgroundColor=
|
|
721
|
+
backgroundColor={overlayScrim}
|
|
819
722
|
enterStyle={{ opacity: 0 }}
|
|
820
723
|
exitStyle={{ opacity: 0 }}
|
|
821
724
|
/>
|
|
822
|
-
<Sheet.Handle />
|
|
725
|
+
<Sheet.Handle {...sheetGrabber} aria-label="Resize" />
|
|
823
726
|
<Sheet.Frame
|
|
824
727
|
data-testid="floating-panel-sheet"
|
|
825
728
|
// Sheet.Frame forwards its ref at runtime; the styled prop type
|
|
@@ -829,19 +732,32 @@ function FloatingPanelSheet({
|
|
|
829
732
|
{...knobProps.elevatedSurface}
|
|
830
733
|
borderBottomLeftRadius={0}
|
|
831
734
|
borderBottomRightRadius={0}
|
|
735
|
+
// A sheet spans the screen: only its top edge meets the page, so the
|
|
736
|
+
// sides and bottom draw no border beside a full-width row (FZ-8557).
|
|
737
|
+
borderLeftWidth={0}
|
|
738
|
+
borderRightWidth={0}
|
|
739
|
+
borderBottomWidth={0}
|
|
832
740
|
{...panelChromeFocus}
|
|
833
741
|
padding={framePadding}
|
|
742
|
+
{...(contentPadding === "none" ? { paddingTop: sheetGrabberClearance } : null)}
|
|
834
743
|
gap={frameGap}
|
|
835
744
|
>
|
|
836
745
|
<OverlayStackProvider zIndex={sheetZIndex}>
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
{
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
746
|
+
<PanelSheetContext.Provider value>
|
|
747
|
+
{header}
|
|
748
|
+
{scrollable ? (
|
|
749
|
+
<Sheet.ScrollView flex={header ? 1 : undefined} {...scrollViewProps}>
|
|
750
|
+
{children}
|
|
751
|
+
</Sheet.ScrollView>
|
|
752
|
+
) : (
|
|
753
|
+
children
|
|
754
|
+
)}
|
|
755
|
+
{contentPadding === "none" ? (
|
|
756
|
+
// An edge-to-edge list clears the home indicator (HIG); a padded
|
|
757
|
+
// frame's own padding already does.
|
|
758
|
+
<View style={{ height: "env(safe-area-inset-bottom)" }} flexShrink={0} />
|
|
759
|
+
) : null}
|
|
760
|
+
</PanelSheetContext.Provider>
|
|
845
761
|
</OverlayStackProvider>
|
|
846
762
|
</Sheet.Frame>
|
|
847
763
|
</Sheet>
|
|
@@ -867,7 +783,7 @@ function FloatingPanelWeb({
|
|
|
867
783
|
cover = true,
|
|
868
784
|
triggerEcho = true,
|
|
869
785
|
coverAlign = "start",
|
|
870
|
-
|
|
786
|
+
iconCover,
|
|
871
787
|
triggerRow,
|
|
872
788
|
anchorRect,
|
|
873
789
|
clampCollisions = false,
|
|
@@ -880,10 +796,8 @@ function FloatingPanelWeb({
|
|
|
880
796
|
// A context menu anchored on its trigger (a bar button's long-press menu)
|
|
881
797
|
// covers the trigger like any other menu; only a free one opens at the point.
|
|
882
798
|
const pointMenu = isContextMenu && sheetProps.anchorMode !== "cover-trigger";
|
|
883
|
-
const
|
|
884
|
-
const
|
|
885
|
-
const iconEchoUpRef = useRef(false);
|
|
886
|
-
const [echoBox, setEchoBox] = useState<PanelIconEchoBox | null>(null);
|
|
799
|
+
const coversIcon = cover && !pointMenu && iconCover === true;
|
|
800
|
+
const openedUpRef = useRef(false);
|
|
887
801
|
const overlayStyleRef = useRef<{ top: number; left?: number; maxHeight: number } | null>(null);
|
|
888
802
|
const pinnedTopRef = useRef(0);
|
|
889
803
|
const pinnedHeightRef = useRef(0);
|
|
@@ -996,11 +910,10 @@ function FloatingPanelWeb({
|
|
|
996
910
|
const viewportBottom = viewportTop + (viewport?.height ?? window.innerHeight);
|
|
997
911
|
dropdownElement.style.left = `${viewportLeft - containingBlock.left}px`;
|
|
998
912
|
// LC-112 (FZ-8480 Round 37): a grouped icon trigger's surface is the
|
|
999
|
-
// group's plate, so the panel covers the whole plate
|
|
1000
|
-
|
|
1001
|
-
const groupSurface = showIconEcho ? groupSurfaceOf(trig) : null;
|
|
913
|
+
// group's plate, so the panel covers the whole plate.
|
|
914
|
+
const groupSurface = coversIcon ? groupSurfaceOf(trig) : null;
|
|
1002
915
|
const groupBox = groupSurface?.getBoundingClientRect() ?? null;
|
|
1003
|
-
if (
|
|
916
|
+
if (coversIcon) dropdownElement.style.minWidth = groupBox ? `${groupBox.width}px` : "";
|
|
1004
917
|
const layoutStyle = getComputedStyle(dropdownElement);
|
|
1005
918
|
const scale =
|
|
1006
919
|
layoutStyle.transform &&
|
|
@@ -1069,7 +982,7 @@ function FloatingPanelWeb({
|
|
|
1069
982
|
: totalContentHeight;
|
|
1070
983
|
// LC-112 (FZ-8480): an icon trigger's panel covers the surface the
|
|
1071
984
|
// trigger is seen on: its capsule, else its press target.
|
|
1072
|
-
const painted =
|
|
985
|
+
const painted = coversIcon ? paintedTriggerBox(trig, measured) : null;
|
|
1073
986
|
const coverRect = painted
|
|
1074
987
|
? iconCoverRect(
|
|
1075
988
|
{
|
|
@@ -1088,20 +1001,14 @@ function FloatingPanelWeb({
|
|
|
1088
1001
|
: null,
|
|
1089
1002
|
)
|
|
1090
1003
|
: null;
|
|
1091
|
-
const echoCover = coverRect
|
|
1092
|
-
? echoInCover(
|
|
1093
|
-
{ x: measured.left, y: measured.top, width: measured.width, height: measured.height },
|
|
1094
|
-
coverRect,
|
|
1095
|
-
)
|
|
1096
|
-
: null;
|
|
1097
1004
|
let placedTop = measured.top;
|
|
1098
1005
|
let placedLeft = left;
|
|
1099
1006
|
let placedMaxHeight: number | null = null;
|
|
1100
|
-
|
|
1007
|
+
openedUpRef.current = false;
|
|
1101
1008
|
if (coverRect && measured.width > 0 && measured.height > 0) {
|
|
1102
|
-
// LC-112 (FZ-8480): the
|
|
1103
|
-
//
|
|
1104
|
-
//
|
|
1009
|
+
// LC-112 (FZ-8480): the panel stays on its button: down from its top
|
|
1010
|
+
// edge, or up from its bottom. It covers the button's plate and press
|
|
1011
|
+
// box where they reach past it.
|
|
1105
1012
|
const placed = placeOverTrigger({
|
|
1106
1013
|
trigger: coverRect,
|
|
1107
1014
|
width,
|
|
@@ -1120,7 +1027,7 @@ function FloatingPanelWeb({
|
|
|
1120
1027
|
if (!slides) placedLeft = placed.left;
|
|
1121
1028
|
alignEnd = placed.end;
|
|
1122
1029
|
placedMaxHeight = placed.maxHeight;
|
|
1123
|
-
|
|
1030
|
+
openedUpRef.current = placed.up;
|
|
1124
1031
|
} else if (
|
|
1125
1032
|
measured.width > 0 &&
|
|
1126
1033
|
measured.height > 0 &&
|
|
@@ -1162,33 +1069,9 @@ function FloatingPanelWeb({
|
|
|
1162
1069
|
alignEnd = placed.end;
|
|
1163
1070
|
}
|
|
1164
1071
|
coverAlignEndRef.current = alignEnd;
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
panelLeft: placedLeft,
|
|
1169
|
-
panelWidth: width,
|
|
1170
|
-
rtl,
|
|
1171
|
-
});
|
|
1172
|
-
const echoOverlays = iconEcho != null && iconEchoOverlays(iconEcho, iconEchoUpRef.current);
|
|
1173
|
-
const nextEchoBox =
|
|
1174
|
-
showIconEcho && echoOverlays
|
|
1175
|
-
? echoHeaderBox({
|
|
1176
|
-
offset: echoStart,
|
|
1177
|
-
width: measured.width,
|
|
1178
|
-
height: echoCover?.height ?? measured.height,
|
|
1179
|
-
panelWidth: width,
|
|
1180
|
-
rtl,
|
|
1181
|
-
})
|
|
1182
|
-
: null;
|
|
1183
|
-
setEchoBox((previous) => (sameEchoBox(previous, nextEchoBox) ? previous : nextEchoBox));
|
|
1184
|
-
placeIconEcho(dropdownElement, {
|
|
1185
|
-
offset: echoStart,
|
|
1186
|
-
width: measured.width,
|
|
1187
|
-
height: measured.height,
|
|
1188
|
-
up: iconEchoUpRef.current,
|
|
1189
|
-
overlay: echoOverlays,
|
|
1190
|
-
group: echoCover,
|
|
1191
|
-
});
|
|
1072
|
+
// A whole-pixel start edge: at a half pixel the rows paint a device
|
|
1073
|
+
// pixel short of the panel's far edge, a gutter of panel fill (FZ-8557).
|
|
1074
|
+
placedLeft = Math.round(placedLeft);
|
|
1192
1075
|
placeEchoOverTrigger(
|
|
1193
1076
|
dropdownElement,
|
|
1194
1077
|
{
|
|
@@ -1208,7 +1091,7 @@ function FloatingPanelWeb({
|
|
|
1208
1091
|
dropdownElement.style.left = `${cssLeft}px`;
|
|
1209
1092
|
dropdownElement.style.maxHeight = `${maxHeight}px`;
|
|
1210
1093
|
dropdownElement.dir = rtl ? "rtl" : "ltr";
|
|
1211
|
-
dropdownElement.style.transformOrigin = `${
|
|
1094
|
+
dropdownElement.style.transformOrigin = `${openedUpRef.current ? "bottom" : "top"} ${rtl !== alignEnd ? "right" : "left"}`;
|
|
1212
1095
|
dropdownElement.style.visibility = "visible";
|
|
1213
1096
|
overlayStyleRef.current = { top, left: cssLeft, maxHeight };
|
|
1214
1097
|
panel.initializingRef.current = false;
|
|
@@ -1369,7 +1252,7 @@ function FloatingPanelWeb({
|
|
|
1369
1252
|
isFill,
|
|
1370
1253
|
isContextMenu,
|
|
1371
1254
|
pointMenu,
|
|
1372
|
-
|
|
1255
|
+
coversIcon,
|
|
1373
1256
|
cover,
|
|
1374
1257
|
anchorRect,
|
|
1375
1258
|
clampCollisions,
|
|
@@ -1644,7 +1527,7 @@ function FloatingPanelWeb({
|
|
|
1644
1527
|
transition: webTransition,
|
|
1645
1528
|
transformOrigin:
|
|
1646
1529
|
cover && !pointMenu
|
|
1647
|
-
? `${
|
|
1530
|
+
? `${openedUpRef.current ? "bottom" : "top"} ${
|
|
1648
1531
|
isRtl(panel.triggerRef.current) !== coverAlignEndRef.current
|
|
1649
1532
|
? "right"
|
|
1650
1533
|
: "left"
|
|
@@ -1680,7 +1563,7 @@ function FloatingPanelWeb({
|
|
|
1680
1563
|
paddingVertical={0}
|
|
1681
1564
|
paddingBottom={panel.coverCornerInset || 0}
|
|
1682
1565
|
>
|
|
1683
|
-
{pointMenu || !cover || !triggerEcho ||
|
|
1566
|
+
{pointMenu || !cover || !triggerEcho || coversIcon ? null : (
|
|
1684
1567
|
<TriggerEchoRow
|
|
1685
1568
|
sourceRef={panel.triggerRef}
|
|
1686
1569
|
source={trigger}
|
|
@@ -1701,11 +1584,7 @@ function FloatingPanelWeb({
|
|
|
1701
1584
|
{...(contentPadding !== "none" ? panel.knobProps.panelPadding : undefined)}
|
|
1702
1585
|
{...(contentPadding !== "none" ? panel.knobProps.gapLg : undefined)}
|
|
1703
1586
|
>
|
|
1704
|
-
<OverlayStackProvider zIndex={panelZIndex}>
|
|
1705
|
-
<PanelIconEchoBoxContext.Provider value={echoBox}>
|
|
1706
|
-
{children}
|
|
1707
|
-
</PanelIconEchoBoxContext.Provider>
|
|
1708
|
-
</OverlayStackProvider>
|
|
1587
|
+
<OverlayStackProvider zIndex={panelZIndex}>{children}</OverlayStackProvider>
|
|
1709
1588
|
</View>
|
|
1710
1589
|
<ScrollArrow
|
|
1711
1590
|
direction="down"
|
|
@@ -1713,11 +1592,6 @@ function FloatingPanelWeb({
|
|
|
1713
1592
|
visible={panel.arrowDown}
|
|
1714
1593
|
arrowScrollDirRef={panel.arrowScrollDirRef}
|
|
1715
1594
|
/>
|
|
1716
|
-
{showIconEcho && iconEcho ? (
|
|
1717
|
-
<IconEchoRow>
|
|
1718
|
-
{iconEchoElement(trigger, iconEcho, () => onOpenChange(false), triggerSurface)}
|
|
1719
|
-
</IconEchoRow>
|
|
1720
|
-
) : null}
|
|
1721
1595
|
</YStack>
|
|
1722
1596
|
</Theme>
|
|
1723
1597
|
</PanelPortal>
|
|
@@ -277,7 +277,7 @@ describe("placeOverTrigger (FZ-7830, LC-112 where no sheet may take it)", () =>
|
|
|
277
277
|
});
|
|
278
278
|
});
|
|
279
279
|
|
|
280
|
-
describe("placeOverTrigger pinned:
|
|
280
|
+
describe("placeOverTrigger pinned: a panel stays on its icon trigger (LC-112, FZ-8480)", () => {
|
|
281
281
|
const phone: PanelBounds = { top: 57, left: 10, right: 380, bottom: 800 };
|
|
282
282
|
|
|
283
283
|
it("opens down from the button's top edge where the menu fits", () => {
|
|
@@ -169,10 +169,10 @@ export function placeOverTrigger({
|
|
|
169
169
|
*/
|
|
170
170
|
align?: "start" | "auto";
|
|
171
171
|
/**
|
|
172
|
-
* The menu
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
*
|
|
172
|
+
* The menu covers its icon trigger (LC-112, FZ-8480), so it never slides
|
|
173
|
+
* off the button vertically: it opens down from the button's top edge, or
|
|
174
|
+
* up from its bottom edge where there is more room above, and scrolls what
|
|
175
|
+
* still does not fit.
|
|
176
176
|
*/
|
|
177
177
|
pinned?: boolean;
|
|
178
178
|
}): TriggerPlacement {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { useTouchSurface } from "@multiplatform.one/theme";
|
|
2
|
+
import { CheckGlyph } from "../../shared/CheckGlyph";
|
|
2
3
|
import type { ReactNode } from "react";
|
|
3
4
|
import {
|
|
4
5
|
Fragment,
|
|
@@ -11,13 +12,7 @@ import {
|
|
|
11
12
|
memo,
|
|
12
13
|
} from "react";
|
|
13
14
|
import { useTranslation } from "../../shared/i18n";
|
|
14
|
-
import {
|
|
15
|
-
CaretDownIcon,
|
|
16
|
-
CheckIcon,
|
|
17
|
-
MagnifyingGlassIcon,
|
|
18
|
-
PlusIcon,
|
|
19
|
-
XIcon,
|
|
20
|
-
} from "@phosphor-icons/react";
|
|
15
|
+
import { CaretDownIcon, MagnifyingGlassIcon, PlusIcon, XIcon } from "@phosphor-icons/react";
|
|
21
16
|
import {
|
|
22
17
|
useClick,
|
|
23
18
|
useDismiss,
|
|
@@ -427,7 +422,7 @@ const ComboboxItem = memo(function ComboboxItem({
|
|
|
427
422
|
{option.label}
|
|
428
423
|
</Text>
|
|
429
424
|
)}
|
|
430
|
-
{isSelected && <
|
|
425
|
+
{isSelected && <CheckGlyph />}
|
|
431
426
|
</ComboboxRow>
|
|
432
427
|
);
|
|
433
428
|
});
|
|
@@ -2237,7 +2232,7 @@ function NativeComboboxCore({
|
|
|
2237
2232
|
{option.label}
|
|
2238
2233
|
</Text>
|
|
2239
2234
|
)}
|
|
2240
|
-
{selected && <
|
|
2235
|
+
{selected && <CheckGlyph />}
|
|
2241
2236
|
</View>
|
|
2242
2237
|
);
|
|
2243
2238
|
return (
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { hairline, IconSlot, keyboardFocusRingProps } from "@multiplatform.one/theme";
|
|
2
|
-
import {
|
|
2
|
+
import { CheckGlyph } from "../../shared/CheckGlyph";
|
|
3
3
|
import { useRef, type KeyboardEvent, type ReactNode } from "react";
|
|
4
4
|
import { Pressable } from "react-native";
|
|
5
5
|
import { isWeb, Text, View, XStack, YStack } from "tamagui";
|
|
@@ -100,7 +100,7 @@ export function InlineChoices({
|
|
|
100
100
|
>
|
|
101
101
|
{option.label}
|
|
102
102
|
</Text>
|
|
103
|
-
{selected ? <
|
|
103
|
+
{selected ? <CheckGlyph /> : null}
|
|
104
104
|
</XStack>
|
|
105
105
|
);
|
|
106
106
|
|