@multiplatform.one/forms 7.6.3 → 7.7.1
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.cjs +8 -2
- package/dist/cjs/Button/index.native.js +14 -3
- package/dist/cjs/Button/index.native.js.map +1 -1
- package/dist/cjs/Chip/index.cjs +1 -3
- package/dist/cjs/Chip/index.native.js +5 -3
- 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.cjs +19 -3
- package/dist/cjs/ContextualSaveBar/index.native.js +22 -6
- 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.cjs +41 -13
- package/dist/cjs/DescriptionList/index.native.js +45 -15
- package/dist/cjs/DescriptionList/index.native.js.map +1 -1
- package/dist/cjs/ErrorSummary.cjs +4 -1
- package/dist/cjs/ErrorSummary.native.js +4 -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/useFloatingPanel.cjs +24 -2
- package/dist/cjs/FloatingPanel/useFloatingPanel.native.js +43 -2
- 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/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.cjs +42 -2
- package/dist/cjs/InputParts/index.native.js +42 -2
- package/dist/cjs/InputParts/index.native.js.map +1 -1
- package/dist/cjs/Label/index.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/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.cjs +5 -2
- package/dist/cjs/fields/Checkbox/Checkbox.native.js +7 -4
- 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.cjs +69 -59
- package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js +76 -66
- package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
- package/dist/cjs/fields/Checkbox/checkboxGroupContext.cjs +33 -0
- package/dist/cjs/fields/Checkbox/checkboxGroupContext.native.js +36 -0
- package/dist/cjs/fields/Checkbox/checkboxGroupContext.native.js.map +1 -0
- 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 +5 -5
- 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.cjs +402 -0
- package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js +441 -0
- package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -0
- package/dist/cjs/fields/DatePicker/DatetimePicker.cjs +2 -376
- package/dist/cjs/fields/DatePicker/DatetimePicker.native.js +70 -298
- package/dist/cjs/fields/DatePicker/DatetimePicker.native.js.map +1 -1
- 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.cjs +306 -0
- package/dist/cjs/fields/DatePicker/catalog.native.js +350 -0
- package/dist/cjs/fields/DatePicker/catalog.native.js.map +1 -0
- package/dist/cjs/fields/DatePicker/fieldValueSync.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/index.cjs +7 -280
- package/dist/cjs/fields/DatePicker/index.native.js +67 -186
- package/dist/cjs/fields/DatePicker/index.native.js.map +1 -1
- package/dist/cjs/fields/DatePicker/parts.cjs +12 -9
- package/dist/cjs/fields/DatePicker/parts.native.js +14 -11
- 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.cjs +29 -3
- package/dist/cjs/fields/Duration/index.native.js +32 -6
- 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.cjs +0 -1
- package/dist/cjs/fields/FileUpload/index.native.js +7 -3
- 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/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/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 +2 -2
- 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.cjs +9 -4
- package/dist/cjs/fields/PhoneInput/index.native.js +16 -9
- 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/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.cjs +1 -1
- package/dist/cjs/fields/Rating/index.native.js +5 -2
- 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.cjs +6 -0
- package/dist/cjs/fields/SearchInput/index.native.js +8 -2
- package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
- package/dist/cjs/fields/Select/index.cjs +88 -2
- package/dist/cjs/fields/Select/index.native.js +94 -6
- package/dist/cjs/fields/Select/index.native.js.map +1 -1
- package/dist/cjs/fields/Signature/index.cjs +9 -5
- package/dist/cjs/fields/Signature/index.native.js +11 -7
- package/dist/cjs/fields/Signature/index.native.js.map +1 -1
- package/dist/cjs/fields/Slider/index.cjs +3 -1
- package/dist/cjs/fields/Slider/index.native.js +4 -2
- 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/index.cjs +5 -18
- package/dist/cjs/fields/Switch/index.native.js +7 -20
- package/dist/cjs/fields/Switch/index.native.js.map +1 -1
- package/dist/cjs/fields/TextArea/index.cjs +19 -5
- package/dist/cjs/fields/TextArea/index.native.js +25 -7
- package/dist/cjs/fields/TextArea/index.native.js.map +1 -1
- package/dist/cjs/fields/TimePicker/catalog.cjs +203 -0
- package/dist/cjs/fields/TimePicker/catalog.native.js +227 -0
- package/dist/cjs/fields/TimePicker/catalog.native.js.map +1 -0
- package/dist/cjs/fields/TimePicker/index.cjs +6 -177
- package/dist/cjs/fields/TimePicker/index.native.js +75 -86
- package/dist/cjs/fields/TimePicker/index.native.js.map +1 -1
- 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.cjs +6 -0
- package/dist/cjs/fields/TimeRangeScrubber/geometry.native.js +6 -0
- package/dist/cjs/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
- package/dist/cjs/fields/TimeRangeScrubber/index.cjs +34 -14
- package/dist/cjs/fields/TimeRangeScrubber/index.native.js +40 -16
- 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 +202 -0
- package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js +211 -0
- package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -0
- package/dist/cjs/fields/nativeDateTime/osDateTimeIosDisplay.cjs +30 -0
- package/dist/cjs/fields/nativeDateTime/osDateTimeIosDisplay.native.js +33 -0
- package/dist/cjs/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -0
- package/dist/cjs/fields/nativeSelect.cjs +30 -0
- package/dist/cjs/fields/nativeSelect.native.js +33 -0
- package/dist/cjs/fields/nativeSelect.native.js.map +1 -0
- 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 +1 -0
- package/dist/cjs/index.native.js +44 -43
- package/dist/cjs/index.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.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/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/themedPrimitives.cjs +5 -0
- package/dist/cjs/themedPrimitives.native.js +5 -0
- 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.native.js.map +1 -1
- package/dist/esm/Button/index.mjs +9 -3
- package/dist/esm/Button/index.mjs.map +1 -1
- package/dist/esm/Button/index.native.js +14 -3
- package/dist/esm/Button/index.native.js.map +1 -1
- package/dist/esm/Chip/index.mjs +1 -3
- package/dist/esm/Chip/index.mjs.map +1 -1
- package/dist/esm/Chip/index.native.js +5 -3
- 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.mjs +19 -3
- package/dist/esm/ContextualSaveBar/index.mjs.map +1 -1
- package/dist/esm/ContextualSaveBar/index.native.js +19 -3
- 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.mjs +41 -13
- package/dist/esm/DescriptionList/index.mjs.map +1 -1
- package/dist/esm/DescriptionList/index.native.js +43 -13
- package/dist/esm/DescriptionList/index.native.js.map +1 -1
- package/dist/esm/ErrorSummary.mjs +5 -2
- package/dist/esm/ErrorSummary.mjs.map +1 -1
- package/dist/esm/ErrorSummary.native.js +5 -2
- 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/useFloatingPanel.mjs +24 -3
- package/dist/esm/FloatingPanel/useFloatingPanel.mjs.map +1 -1
- package/dist/esm/FloatingPanel/useFloatingPanel.native.js +43 -3
- package/dist/esm/FloatingPanel/useFloatingPanel.native.js.map +1 -1
- package/dist/esm/Form/index.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/index.mjs +43 -3
- package/dist/esm/InputParts/index.mjs.map +1 -1
- package/dist/esm/InputParts/index.native.js +43 -3
- package/dist/esm/InputParts/index.native.js.map +1 -1
- package/dist/esm/Label/index.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/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.mjs +5 -2
- package/dist/esm/fields/Checkbox/Checkbox.mjs.map +1 -1
- package/dist/esm/fields/Checkbox/Checkbox.native.js +6 -3
- 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.mjs +69 -59
- package/dist/esm/fields/Checkbox/CheckboxGroup.mjs.map +1 -1
- package/dist/esm/fields/Checkbox/CheckboxGroup.native.js +75 -65
- package/dist/esm/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
- package/dist/esm/fields/Checkbox/checkboxGroupContext.mjs +7 -0
- package/dist/esm/fields/Checkbox/checkboxGroupContext.mjs.map +1 -0
- package/dist/esm/fields/Checkbox/checkboxGroupContext.native.js +7 -0
- package/dist/esm/fields/Checkbox/checkboxGroupContext.native.js.map +1 -0
- package/dist/esm/fields/Checkbox/index.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/Combobox/authorOptions.native.js.map +1 -1
- 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.mjs +377 -0
- package/dist/esm/fields/DatePicker/DatetimePicker.catalog.mjs.map +1 -0
- package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js +413 -0
- package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -0
- package/dist/esm/fields/DatePicker/DatetimePicker.mjs +1 -375
- package/dist/esm/fields/DatePicker/DatetimePicker.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/DatetimePicker.native.js +65 -293
- package/dist/esm/fields/DatePicker/DatetimePicker.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.mjs +276 -0
- package/dist/esm/fields/DatePicker/catalog.mjs.map +1 -0
- package/dist/esm/fields/DatePicker/catalog.native.js +317 -0
- package/dist/esm/fields/DatePicker/catalog.native.js.map +1 -0
- package/dist/esm/fields/DatePicker/fieldValueSync.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/index.mjs +1 -274
- package/dist/esm/fields/DatePicker/index.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/index.native.js +60 -179
- package/dist/esm/fields/DatePicker/index.native.js.map +1 -1
- package/dist/esm/fields/DatePicker/parts.mjs +13 -10
- package/dist/esm/fields/DatePicker/parts.mjs.map +1 -1
- package/dist/esm/fields/DatePicker/parts.native.js +13 -10
- 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/index.mjs +29 -4
- package/dist/esm/fields/Duration/index.mjs.map +1 -1
- package/dist/esm/fields/Duration/index.native.js +29 -4
- 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.mjs +0 -1
- package/dist/esm/fields/FileUpload/index.mjs.map +1 -1
- package/dist/esm/fields/FileUpload/index.native.js +5 -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/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/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.mjs +9 -4
- package/dist/esm/fields/PhoneInput/index.mjs.map +1 -1
- package/dist/esm/fields/PhoneInput/index.native.js +13 -6
- 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/Progress/index.native.js.map +1 -1
- package/dist/esm/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/esm/fields/Rating/index.mjs +2 -2
- package/dist/esm/fields/Rating/index.mjs.map +1 -1
- package/dist/esm/fields/Rating/index.native.js +5 -2
- 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.mjs +6 -0
- package/dist/esm/fields/SearchInput/index.mjs.map +1 -1
- package/dist/esm/fields/SearchInput/index.native.js +6 -0
- package/dist/esm/fields/SearchInput/index.native.js.map +1 -1
- package/dist/esm/fields/Select/index.mjs +78 -3
- package/dist/esm/fields/Select/index.mjs.map +1 -1
- package/dist/esm/fields/Select/index.native.js +80 -3
- package/dist/esm/fields/Select/index.native.js.map +1 -1
- package/dist/esm/fields/Signature/index.mjs +10 -6
- package/dist/esm/fields/Signature/index.mjs.map +1 -1
- package/dist/esm/fields/Signature/index.native.js +10 -6
- package/dist/esm/fields/Signature/index.native.js.map +1 -1
- package/dist/esm/fields/Slider/index.mjs +4 -2
- package/dist/esm/fields/Slider/index.mjs.map +1 -1
- package/dist/esm/fields/Slider/index.native.js +4 -2
- 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/index.mjs +6 -19
- package/dist/esm/fields/Switch/index.mjs.map +1 -1
- package/dist/esm/fields/Switch/index.native.js +6 -19
- package/dist/esm/fields/Switch/index.native.js.map +1 -1
- package/dist/esm/fields/TextArea/index.mjs +19 -5
- package/dist/esm/fields/TextArea/index.mjs.map +1 -1
- package/dist/esm/fields/TextArea/index.native.js +23 -5
- package/dist/esm/fields/TextArea/index.native.js.map +1 -1
- package/dist/esm/fields/TimePicker/catalog.mjs +174 -0
- package/dist/esm/fields/TimePicker/catalog.mjs.map +1 -0
- package/dist/esm/fields/TimePicker/catalog.native.js +195 -0
- package/dist/esm/fields/TimePicker/catalog.native.js.map +1 -0
- package/dist/esm/fields/TimePicker/index.mjs +2 -173
- package/dist/esm/fields/TimePicker/index.mjs.map +1 -1
- package/dist/esm/fields/TimePicker/index.native.js +76 -87
- package/dist/esm/fields/TimePicker/index.native.js.map +1 -1
- package/dist/esm/fields/TimePicker/parts.native.js.map +1 -1
- package/dist/esm/fields/TimeRangeScrubber/geometry.mjs +6 -1
- package/dist/esm/fields/TimeRangeScrubber/geometry.mjs.map +1 -1
- package/dist/esm/fields/TimeRangeScrubber/geometry.native.js +6 -1
- package/dist/esm/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
- package/dist/esm/fields/TimeRangeScrubber/index.mjs +37 -18
- package/dist/esm/fields/TimeRangeScrubber/index.mjs.map +1 -1
- package/dist/esm/fields/TimeRangeScrubber/index.native.js +41 -18
- 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 +166 -0
- package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.mjs.map +1 -0
- package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js +172 -0
- package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -0
- package/dist/esm/fields/nativeDateTime/osDateTimeIosDisplay.mjs +5 -0
- package/dist/esm/fields/nativeDateTime/osDateTimeIosDisplay.mjs.map +1 -0
- package/dist/esm/fields/nativeDateTime/osDateTimeIosDisplay.native.js +5 -0
- package/dist/esm/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -0
- package/dist/esm/fields/nativeSelect.mjs +5 -0
- package/dist/esm/fields/nativeSelect.mjs.map +1 -0
- package/dist/esm/fields/nativeSelect.native.js +5 -0
- package/dist/esm/fields/nativeSelect.native.js.map +1 -0
- 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 +2 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -2
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/requiredMarking.native.js.map +1 -1
- package/dist/esm/shared/TimeColumn.native.js.map +1 -1
- package/dist/esm/shared/capabilityPreflight.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/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/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/themedPrimitives.mjs +5 -0
- package/dist/esm/themedPrimitives.mjs.map +1 -1
- package/dist/esm/themedPrimitives.native.js +5 -0
- 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.native.js +1 -1
- package/dist/jsx/AdaptivePopup/index.native.js.map +1 -1
- package/dist/jsx/Button/index.mjs +9 -3
- package/dist/jsx/Button/index.mjs.map +1 -1
- package/dist/jsx/Button/index.native.js +14 -3
- package/dist/jsx/Button/index.native.js.map +1 -1
- package/dist/jsx/Chip/index.mjs +1 -3
- package/dist/jsx/Chip/index.mjs.map +1 -1
- package/dist/jsx/Chip/index.native.js +5 -3
- package/dist/jsx/Chip/index.native.js.map +1 -1
- package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.native.js +1 -1
- package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
- package/dist/jsx/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
- package/dist/jsx/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
- package/dist/jsx/ContextualSaveBar/index.mjs +19 -3
- package/dist/jsx/ContextualSaveBar/index.mjs.map +1 -1
- package/dist/jsx/ContextualSaveBar/index.native.js +22 -6
- package/dist/jsx/ContextualSaveBar/index.native.js.map +1 -1
- package/dist/jsx/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
- package/dist/jsx/ControlGroup/index.native.js +1 -1
- package/dist/jsx/ControlGroup/index.native.js.map +1 -1
- package/dist/jsx/DescriptionList/index.mjs +41 -13
- package/dist/jsx/DescriptionList/index.mjs.map +1 -1
- package/dist/jsx/DescriptionList/index.native.js +45 -15
- package/dist/jsx/DescriptionList/index.native.js.map +1 -1
- package/dist/jsx/ErrorSummary.mjs +5 -2
- package/dist/jsx/ErrorSummary.mjs.map +1 -1
- package/dist/jsx/ErrorSummary.native.js +4 -1
- package/dist/jsx/ErrorSummary.native.js.map +1 -1
- package/dist/jsx/FieldDisplay/editMode.native.js.map +1 -1
- package/dist/jsx/FieldDisplay/formatters.native.js.map +1 -1
- package/dist/jsx/FieldDisplay/index.native.js +1 -1
- package/dist/jsx/FieldDisplay/index.native.js.map +1 -1
- package/dist/jsx/FieldGroup.native.js.map +1 -1
- package/dist/jsx/FloatingPanel/useFloatingPanel.mjs +24 -3
- package/dist/jsx/FloatingPanel/useFloatingPanel.mjs.map +1 -1
- package/dist/jsx/FloatingPanel/useFloatingPanel.native.js +43 -2
- package/dist/jsx/FloatingPanel/useFloatingPanel.native.js.map +1 -1
- package/dist/jsx/Form/index.native.js +1 -1
- package/dist/jsx/Form/index.native.js.map +1 -1
- package/dist/jsx/Form/validateOn.native.js.map +1 -1
- package/dist/jsx/FormGrid.native.js.map +1 -1
- package/dist/jsx/FormSection.native.js.map +1 -1
- package/dist/jsx/InputParts/index.mjs +43 -3
- package/dist/jsx/InputParts/index.mjs.map +1 -1
- package/dist/jsx/InputParts/index.native.js +42 -2
- package/dist/jsx/InputParts/index.native.js.map +1 -1
- package/dist/jsx/Label/index.native.js.map +1 -1
- package/dist/jsx/Skeleton/index.native.js.map +1 -1
- package/dist/jsx/Spinner/SpinnerGlyph.native.js.map +1 -1
- package/dist/jsx/Spinner/spinnerSize.native.js.map +1 -1
- package/dist/jsx/Table/index.native.js.map +1 -1
- package/dist/jsx/Wheel/haptic.native.js.map +1 -1
- package/dist/jsx/Wheel/index.native.js.map +1 -1
- package/dist/jsx/actionLabel.native.js.map +1 -1
- package/dist/jsx/fieldDefaults.native.js.map +1 -1
- package/dist/jsx/fieldLayout.native.js +1 -1
- package/dist/jsx/fieldLayout.native.js.map +1 -1
- package/dist/jsx/fields/Barcode/BarcodePreview.native.js.map +1 -1
- package/dist/jsx/fields/Barcode/BarcodeScanner.native.js +1 -1
- package/dist/jsx/fields/Barcode/code128.native.js.map +1 -1
- package/dist/jsx/fields/Barcode/index.native.js +2 -2
- package/dist/jsx/fields/Barcode/index.native.js.map +1 -1
- package/dist/jsx/fields/Barcode/qr.native.js.map +1 -1
- package/dist/jsx/fields/Barcode/scannerTypes.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/Checkbox.mjs +5 -2
- package/dist/jsx/fields/Checkbox/Checkbox.mjs.map +1 -1
- package/dist/jsx/fields/Checkbox/Checkbox.native.js +7 -4
- package/dist/jsx/fields/Checkbox/Checkbox.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxBox.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxCard.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxGroup.mjs +69 -59
- package/dist/jsx/fields/Checkbox/CheckboxGroup.mjs.map +1 -1
- package/dist/jsx/fields/Checkbox/CheckboxGroup.native.js +76 -66
- package/dist/jsx/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
- package/dist/jsx/fields/Checkbox/checkboxGroupContext.mjs +7 -0
- package/dist/jsx/fields/Checkbox/checkboxGroupContext.mjs.map +1 -0
- package/dist/jsx/fields/Checkbox/checkboxGroupContext.native.js +36 -0
- package/dist/jsx/fields/Checkbox/checkboxGroupContext.native.js.map +1 -0
- package/dist/jsx/fields/Checkbox/index.native.js.map +1 -1
- package/dist/jsx/fields/ColorPicker/index.native.js +3 -3
- package/dist/jsx/fields/ColorPicker/index.native.js.map +1 -1
- package/dist/jsx/fields/ColorPicker/parts.native.js +2 -2
- package/dist/jsx/fields/ColorPicker/parts.native.js.map +1 -1
- package/dist/jsx/fields/Combobox/authorOptions.native.js.map +1 -1
- package/dist/jsx/fields/Combobox/index.native.js +5 -5
- package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/Calendar.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/DateRangePicker.native.js +2 -2
- package/dist/jsx/fields/DatePicker/DateRangePicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.mjs +377 -0
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.mjs.map +1 -0
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js +441 -0
- package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -0
- package/dist/jsx/fields/DatePicker/DatetimePicker.mjs +1 -375
- package/dist/jsx/fields/DatePicker/DatetimePicker.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/DatetimePicker.native.js +70 -298
- package/dist/jsx/fields/DatePicker/DatetimePicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/MonthPicker.native.js +2 -2
- package/dist/jsx/fields/DatePicker/MonthPicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js +2 -2
- package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/catalog.mjs +276 -0
- package/dist/jsx/fields/DatePicker/catalog.mjs.map +1 -0
- package/dist/jsx/fields/DatePicker/catalog.native.js +350 -0
- package/dist/jsx/fields/DatePicker/catalog.native.js.map +1 -0
- package/dist/jsx/fields/DatePicker/fieldValueSync.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/index.mjs +1 -274
- package/dist/jsx/fields/DatePicker/index.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/index.native.js +67 -186
- package/dist/jsx/fields/DatePicker/index.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/parts.mjs +13 -10
- package/dist/jsx/fields/DatePicker/parts.mjs.map +1 -1
- package/dist/jsx/fields/DatePicker/parts.native.js +14 -11
- package/dist/jsx/fields/DatePicker/parts.native.js.map +1 -1
- package/dist/jsx/fields/DatePicker/utils.native.js.map +1 -1
- package/dist/jsx/fields/Duration/durationMath.native.js.map +1 -1
- package/dist/jsx/fields/Duration/index.mjs +29 -4
- package/dist/jsx/fields/Duration/index.mjs.map +1 -1
- package/dist/jsx/fields/Duration/index.native.js +32 -6
- package/dist/jsx/fields/Duration/index.native.js.map +1 -1
- package/dist/jsx/fields/FileUpload/filePickerTypes.native.js.map +1 -1
- package/dist/jsx/fields/FileUpload/index.mjs +0 -1
- package/dist/jsx/fields/FileUpload/index.mjs.map +1 -1
- package/dist/jsx/fields/FileUpload/index.native.js +7 -3
- package/dist/jsx/fields/FileUpload/index.native.js.map +1 -1
- package/dist/jsx/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/geoValue.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/index.native.js +5 -5
- package/dist/jsx/fields/Geolocation/index.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/mapMath.native.js.map +1 -1
- package/dist/jsx/fields/Geolocation/mapTypes.native.js.map +1 -1
- package/dist/jsx/fields/Icon/drawnSet.native.js.map +1 -1
- package/dist/jsx/fields/Icon/index.native.js +3 -3
- package/dist/jsx/fields/Icon/index.native.js.map +1 -1
- package/dist/jsx/fields/ImageField/index.native.js +2 -2
- package/dist/jsx/fields/ImageField/index.native.js.map +1 -1
- package/dist/jsx/fields/Input/index.native.js +2 -2
- package/dist/jsx/fields/Input/index.native.js.map +1 -1
- package/dist/jsx/fields/MentionInput/index.native.js +3 -3
- package/dist/jsx/fields/MentionInput/index.native.js.map +1 -1
- package/dist/jsx/fields/OTPInput/index.native.js +3 -3
- package/dist/jsx/fields/OTPInput/index.native.js.map +1 -1
- package/dist/jsx/fields/OTPInput/otpCellCss.native.js.map +1 -1
- package/dist/jsx/fields/PhoneInput/dialCodes.native.js.map +1 -1
- package/dist/jsx/fields/PhoneInput/index.mjs +9 -4
- package/dist/jsx/fields/PhoneInput/index.mjs.map +1 -1
- package/dist/jsx/fields/PhoneInput/index.native.js +16 -9
- package/dist/jsx/fields/PhoneInput/index.native.js.map +1 -1
- package/dist/jsx/fields/PhoneInput/phone.native.js.map +1 -1
- package/dist/jsx/fields/Progress/index.native.js +1 -1
- package/dist/jsx/fields/Progress/index.native.js.map +1 -1
- package/dist/jsx/fields/RadioGroup/index.native.js +1 -1
- package/dist/jsx/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/jsx/fields/Rating/index.mjs +2 -2
- package/dist/jsx/fields/Rating/index.mjs.map +1 -1
- package/dist/jsx/fields/Rating/index.native.js +5 -2
- package/dist/jsx/fields/Rating/index.native.js.map +1 -1
- package/dist/jsx/fields/Rating/ratingMath.native.js.map +1 -1
- package/dist/jsx/fields/Rating/types.native.js.map +1 -1
- package/dist/jsx/fields/SearchInput/index.mjs +6 -0
- package/dist/jsx/fields/SearchInput/index.mjs.map +1 -1
- package/dist/jsx/fields/SearchInput/index.native.js +8 -2
- package/dist/jsx/fields/SearchInput/index.native.js.map +1 -1
- package/dist/jsx/fields/Select/index.mjs +78 -3
- package/dist/jsx/fields/Select/index.mjs.map +1 -1
- package/dist/jsx/fields/Select/index.native.js +94 -6
- package/dist/jsx/fields/Select/index.native.js.map +1 -1
- package/dist/jsx/fields/Signature/index.mjs +10 -6
- package/dist/jsx/fields/Signature/index.mjs.map +1 -1
- package/dist/jsx/fields/Signature/index.native.js +11 -7
- package/dist/jsx/fields/Signature/index.native.js.map +1 -1
- package/dist/jsx/fields/Slider/index.mjs +4 -2
- package/dist/jsx/fields/Slider/index.mjs.map +1 -1
- package/dist/jsx/fields/Slider/index.native.js +4 -2
- package/dist/jsx/fields/Slider/index.native.js.map +1 -1
- package/dist/jsx/fields/Slider/jumpMotion.native.js.map +1 -1
- package/dist/jsx/fields/Stepper/index.native.js +2 -2
- package/dist/jsx/fields/Stepper/index.native.js.map +1 -1
- package/dist/jsx/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
- package/dist/jsx/fields/Switch/index.mjs +6 -19
- package/dist/jsx/fields/Switch/index.mjs.map +1 -1
- package/dist/jsx/fields/Switch/index.native.js +7 -20
- package/dist/jsx/fields/Switch/index.native.js.map +1 -1
- package/dist/jsx/fields/TextArea/index.mjs +19 -5
- package/dist/jsx/fields/TextArea/index.mjs.map +1 -1
- package/dist/jsx/fields/TextArea/index.native.js +25 -7
- package/dist/jsx/fields/TextArea/index.native.js.map +1 -1
- package/dist/jsx/fields/TimePicker/catalog.mjs +174 -0
- package/dist/jsx/fields/TimePicker/catalog.mjs.map +1 -0
- package/dist/jsx/fields/TimePicker/catalog.native.js +227 -0
- package/dist/jsx/fields/TimePicker/catalog.native.js.map +1 -0
- package/dist/jsx/fields/TimePicker/index.mjs +2 -173
- package/dist/jsx/fields/TimePicker/index.mjs.map +1 -1
- package/dist/jsx/fields/TimePicker/index.native.js +75 -86
- package/dist/jsx/fields/TimePicker/index.native.js.map +1 -1
- package/dist/jsx/fields/TimePicker/parts.native.js +1 -1
- package/dist/jsx/fields/TimePicker/parts.native.js.map +1 -1
- package/dist/jsx/fields/TimeRangeScrubber/geometry.mjs +6 -1
- package/dist/jsx/fields/TimeRangeScrubber/geometry.mjs.map +1 -1
- package/dist/jsx/fields/TimeRangeScrubber/geometry.native.js +6 -0
- package/dist/jsx/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
- package/dist/jsx/fields/TimeRangeScrubber/index.mjs +37 -18
- package/dist/jsx/fields/TimeRangeScrubber/index.mjs.map +1 -1
- package/dist/jsx/fields/TimeRangeScrubber/index.native.js +40 -16
- package/dist/jsx/fields/TimeRangeScrubber/index.native.js.map +1 -1
- package/dist/jsx/fields/ToggleGroup/index.native.js +1 -1
- package/dist/jsx/fields/ToggleGroup/index.native.js.map +1 -1
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.mjs +166 -0
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.mjs.map +1 -0
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js +211 -0
- package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -0
- package/dist/jsx/fields/nativeDateTime/osDateTimeIosDisplay.mjs +5 -0
- package/dist/jsx/fields/nativeDateTime/osDateTimeIosDisplay.mjs.map +1 -0
- package/dist/jsx/fields/nativeDateTime/osDateTimeIosDisplay.native.js +33 -0
- package/dist/jsx/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -0
- package/dist/jsx/fields/nativeSelect.mjs +5 -0
- package/dist/jsx/fields/nativeSelect.mjs.map +1 -0
- package/dist/jsx/fields/nativeSelect.native.js +33 -0
- package/dist/jsx/fields/nativeSelect.native.js.map +1 -0
- package/dist/jsx/fields/selectedOrder.native.js.map +1 -1
- package/dist/jsx/formSpacing.native.js.map +1 -1
- package/dist/jsx/hooks/useFocusManagement.native.js.map +1 -1
- package/dist/jsx/index.js +2 -2
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +2 -2
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +44 -43
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/requiredMarking.native.js.map +1 -1
- package/dist/jsx/shared/TimeColumn.native.js +1 -1
- package/dist/jsx/shared/TimeColumn.native.js.map +1 -1
- package/dist/jsx/shared/capabilityPreflight.native.js.map +1 -1
- package/dist/jsx/shared/colorRamps.native.js.map +1 -1
- package/dist/jsx/shared/devWarn.native.js.map +1 -1
- package/dist/jsx/shared/floatingList.native.js +1 -1
- package/dist/jsx/shared/floatingList.native.js.map +1 -1
- package/dist/jsx/shared/focusManagement.native.js.map +1 -1
- package/dist/jsx/shared/groupContext.native.js.map +1 -1
- package/dist/jsx/shared/i18n.native.js.map +1 -1
- package/dist/jsx/shared/t.native.js.map +1 -1
- package/dist/jsx/shared/tableCellContext.native.js.map +1 -1
- package/dist/jsx/shared/useDragScroll.native.js.map +1 -1
- package/dist/jsx/shared/useKeyboardInset.native.js.map +1 -1
- package/dist/jsx/shared/useSheetEscapeDismiss.native.js.map +1 -1
- package/dist/jsx/shared/useWheelIncrement.native.js.map +1 -1
- package/dist/jsx/shared/utils.native.js +1 -1
- package/dist/jsx/shared/utils.native.js.map +1 -1
- package/dist/jsx/shared/zIndex.native.js.map +1 -1
- package/dist/jsx/themedPrimitives.mjs +5 -0
- package/dist/jsx/themedPrimitives.mjs.map +1 -1
- package/dist/jsx/themedPrimitives.native.js +5 -0
- package/dist/jsx/themedPrimitives.native.js.map +1 -1
- package/dist/jsx/types.native.js.map +1 -1
- package/dist/jsx/utils/LinkCell.native.js.map +1 -1
- package/package.json +12 -9
- package/src/Button/Button.labelInk.spec.tsx +1 -1
- package/src/Button/Button.sizeLadder.spec.tsx +124 -0
- package/src/Button/Button.spec.tsx +7 -17
- package/src/Button/Button.stories.tsx +14 -0
- package/src/Button/index.tsx +24 -4
- package/src/Chip/Chip.spec.tsx +15 -0
- package/src/Chip/Chip.stories.tsx +251 -0
- package/src/Chip/index.tsx +5 -1
- package/src/ContextualSaveBar/ContextualSaveBar.spec.tsx +51 -0
- package/src/ContextualSaveBar/ContextualSaveBar.stories.tsx +42 -23
- package/src/ContextualSaveBar/UnsavedChangesDialog.spec.tsx +167 -0
- package/src/ContextualSaveBar/UnsavedChangesDialog.stories.tsx +118 -0
- package/src/ContextualSaveBar/index.tsx +14 -5
- package/src/ContextualSaveBar/unsavedChangesDialogStories.spec.tsx +79 -0
- package/src/DescriptionList/DescriptionList.spec.tsx +19 -1
- package/src/DescriptionList/DescriptionList.stories.tsx +5 -1
- package/src/DescriptionList/index.tsx +60 -20
- package/src/ErrorSummary.stories.tsx +197 -0
- package/src/ErrorSummary.tsx +5 -2
- package/src/FloatingPanel/panelWidthContract.spec.ts +2 -2
- package/src/FloatingPanel/useFloatingPanel.spec.tsx +199 -1
- package/src/FloatingPanel/useFloatingPanel.ts +45 -3
- package/src/InputParts/InputParts.stories.tsx +230 -0
- package/src/InputParts/index.tsx +56 -2
- package/src/InputParts/inputPartsStories.spec.tsx +122 -0
- package/src/Skeleton/Skeleton.stories.tsx +148 -0
- package/src/Skeleton/skeletonStories.spec.tsx +107 -0
- package/src/Spinner/SpinnerGlyph.spec.tsx +132 -0
- package/src/Wheel/Wheel.stories.tsx +232 -0
- package/src/Wheel/WheelEdgeFade.spec.tsx +141 -0
- package/src/Wheel/wheelStories.spec.tsx +143 -0
- package/src/errorSummaryStories.spec.tsx +114 -0
- package/src/fields/Checkbox/Checkbox.spec.tsx +24 -0
- package/src/fields/Checkbox/Checkbox.tsx +8 -3
- package/src/fields/Checkbox/CheckboxBox.spec.tsx +395 -0
- package/src/fields/Checkbox/CheckboxCard.spec.tsx +197 -0
- package/src/fields/Checkbox/CheckboxFieldFrame.spec.tsx +116 -0
- package/src/fields/Checkbox/CheckboxGroup.stories.tsx +15 -0
- package/src/fields/Checkbox/CheckboxGroup.tsx +77 -70
- package/src/fields/Checkbox/checkboxGroupContext.ts +12 -0
- package/src/fields/DatePicker/Calendar.spec.tsx +6 -5
- package/src/fields/DatePicker/DatePicker.stories.tsx +13 -0
- package/src/fields/DatePicker/DatetimePicker.catalog.tsx +586 -0
- package/src/fields/DatePicker/DatetimePicker.native.tsx +243 -0
- package/src/fields/DatePicker/DatetimePicker.tsx +2 -584
- package/src/fields/DatePicker/catalog.tsx +450 -0
- package/src/fields/DatePicker/index.native.tsx +261 -0
- package/src/fields/DatePicker/index.tsx +20 -448
- package/src/fields/DatePicker/parts.tsx +11 -6
- package/src/fields/Duration/Duration.spec.tsx +50 -0
- package/src/fields/Duration/Duration.stories.tsx +21 -0
- package/src/fields/Duration/index.tsx +43 -5
- package/src/fields/FileUpload/index.tsx +5 -1
- package/src/fields/Input/Input.spec.tsx +3 -1
- package/src/fields/PhoneInput/PhoneInput.spec.tsx +16 -63
- package/src/fields/PhoneInput/PhoneInput.tvalue-source.spec.ts +23 -0
- package/src/fields/PhoneInput/index.tsx +10 -3
- package/src/fields/Rating/index.tsx +9 -1
- package/src/fields/SearchInput/SearchInput.spec.tsx +20 -0
- package/src/fields/SearchInput/index.tsx +6 -0
- package/src/fields/Select/Select.stories.tsx +23 -1
- package/src/fields/Select/index.tsx +87 -1
- package/src/fields/Signature/Signature.spec.tsx +22 -3
- package/src/fields/Signature/index.tsx +16 -7
- package/src/fields/Slider/index.tsx +4 -1
- package/src/fields/Switch/index.tsx +14 -12
- package/src/fields/TextArea/TextArea.spec.tsx +68 -0
- package/src/fields/TextArea/index.tsx +23 -5
- package/src/fields/TimePicker/TimePicker.stories.tsx +13 -0
- package/src/fields/TimePicker/catalog.tsx +265 -0
- package/src/fields/TimePicker/index.native.tsx +229 -0
- package/src/fields/TimePicker/index.tsx +6 -261
- package/src/fields/TimeRangeScrubber/TimeRangeScrubber.spec.tsx +36 -0
- package/src/fields/TimeRangeScrubber/geometry.ts +13 -0
- package/src/fields/TimeRangeScrubber/index.tsx +49 -8
- package/src/fields/nativeDateTime/OsDateTimeSheet.spec.ts +12 -0
- package/src/fields/nativeDateTime/OsDateTimeSheet.tsx +197 -0
- package/src/fields/nativeDateTime/osDateTimeIosDisplay.ts +4 -0
- package/src/fields/nativeSelect.spec.ts +28 -0
- package/src/fields/nativeSelect.ts +13 -0
- package/src/index.ts +2 -2
- package/src/themedPrimitives.tsx +10 -6
- package/types/Button/index.d.ts +3 -2
- package/types/Button/index.d.ts.map +1 -1
- package/types/Chip/index.d.ts.map +1 -1
- package/types/ContextualSaveBar/index.d.ts.map +1 -1
- package/types/DescriptionList/index.d.ts.map +1 -1
- package/types/ErrorSummary.d.ts.map +1 -1
- package/types/FloatingPanel/useFloatingPanel.d.ts +13 -0
- package/types/FloatingPanel/useFloatingPanel.d.ts.map +1 -1
- package/types/InputParts/index.d.ts.map +1 -1
- package/types/fields/Checkbox/Checkbox.d.ts.map +1 -1
- package/types/fields/Checkbox/CheckboxGroup.d.ts.map +1 -1
- package/types/fields/Checkbox/checkboxGroupContext.d.ts +8 -0
- package/types/fields/Checkbox/checkboxGroupContext.d.ts.map +1 -0
- package/types/fields/DatePicker/DatetimePicker.catalog.d.ts +35 -0
- package/types/fields/DatePicker/DatetimePicker.catalog.d.ts.map +1 -0
- package/types/fields/DatePicker/DatetimePicker.d.ts +2 -32
- package/types/fields/DatePicker/DatetimePicker.d.ts.map +1 -1
- package/types/fields/DatePicker/DatetimePicker.native.d.ts +26 -0
- package/types/fields/DatePicker/DatetimePicker.native.d.ts.map +1 -0
- package/types/fields/DatePicker/catalog.d.ts +42 -0
- package/types/fields/DatePicker/catalog.d.ts.map +1 -0
- package/types/fields/DatePicker/index.d.ts +2 -39
- package/types/fields/DatePicker/index.d.ts.map +1 -1
- package/types/fields/DatePicker/index.native.d.ts +40 -0
- package/types/fields/DatePicker/index.native.d.ts.map +1 -0
- package/types/fields/DatePicker/parts.d.ts.map +1 -1
- package/types/fields/Duration/index.d.ts +2 -0
- package/types/fields/Duration/index.d.ts.map +1 -1
- package/types/fields/FileUpload/index.d.ts.map +1 -1
- package/types/fields/PhoneInput/index.d.ts.map +1 -1
- package/types/fields/Rating/index.d.ts.map +1 -1
- package/types/fields/SearchInput/index.d.ts.map +1 -1
- package/types/fields/Select/index.d.ts +6 -1
- package/types/fields/Select/index.d.ts.map +1 -1
- package/types/fields/Signature/index.d.ts.map +1 -1
- package/types/fields/Slider/index.d.ts.map +1 -1
- package/types/fields/Switch/index.d.ts.map +1 -1
- package/types/fields/TextArea/index.d.ts.map +1 -1
- package/types/fields/TimePicker/catalog.d.ts +41 -0
- package/types/fields/TimePicker/catalog.d.ts.map +1 -0
- package/types/fields/TimePicker/index.d.ts +2 -38
- package/types/fields/TimePicker/index.d.ts.map +1 -1
- package/types/fields/TimePicker/index.native.d.ts +31 -0
- package/types/fields/TimePicker/index.native.d.ts.map +1 -0
- package/types/fields/TimeRangeScrubber/geometry.d.ts +8 -0
- package/types/fields/TimeRangeScrubber/geometry.d.ts.map +1 -1
- package/types/fields/TimeRangeScrubber/index.d.ts +1 -1
- package/types/fields/TimeRangeScrubber/index.d.ts.map +1 -1
- package/types/fields/nativeDateTime/OsDateTimeSheet.d.ts +12 -0
- package/types/fields/nativeDateTime/OsDateTimeSheet.d.ts.map +1 -0
- package/types/fields/nativeDateTime/osDateTimeIosDisplay.d.ts +3 -0
- package/types/fields/nativeDateTime/osDateTimeIosDisplay.d.ts.map +1 -0
- package/types/fields/nativeSelect.d.ts +12 -0
- package/types/fields/nativeSelect.d.ts.map +1 -0
- package/types/index.d.ts +2 -2
- package/types/index.d.ts.map +1 -1
- package/types/themedPrimitives.d.ts.map +1 -1
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CheckboxBox — the painted glyph and the geometry rules around it (MPO-143).
|
|
3
|
+
*
|
|
4
|
+
* Checkbox.spec.tsx already covers the two headline radius helpers through the
|
|
5
|
+
* package barrel. What had no coverage at all is everything else this module
|
|
6
|
+
* exports: the WCAG hit-target constant, the three size/border derivations,
|
|
7
|
+
* the LC-71 "the 44px frame paints nothing" prop bag, the keyboard-modality
|
|
8
|
+
* focus handlers, and the glyph box itself. Those are the parts that regress
|
|
9
|
+
* silently — nothing today would notice if the hit target grew a wash or the
|
|
10
|
+
* glyph started stealing the press.
|
|
11
|
+
*/
|
|
12
|
+
import { cleanup } from "@testing-library/react";
|
|
13
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
14
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
15
|
+
import {
|
|
16
|
+
CHECKBOX_GLYPH_MAX_RADIUS_TOKEN,
|
|
17
|
+
CHECKBOX_TARGET_PX,
|
|
18
|
+
CheckboxGlyphBox,
|
|
19
|
+
checkboxKbFocusHandlers,
|
|
20
|
+
checkboxTargetFrameProps,
|
|
21
|
+
clampCheckboxGlyphRadius,
|
|
22
|
+
getCheckboxBoxBorderWidth,
|
|
23
|
+
getCheckboxGlyphSize,
|
|
24
|
+
getCheckboxIconSize,
|
|
25
|
+
isCircularCheckboxRadius,
|
|
26
|
+
} from "./CheckboxBox";
|
|
27
|
+
|
|
28
|
+
afterEach(cleanup);
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Modality is the ONE thing here that has to be stood in for. The real tracker
|
|
32
|
+
* (`@multiplatform.one/theme/keyboardFocusRing`) installs global document
|
|
33
|
+
* listeners lazily and never flips under this test environment - a dispatched
|
|
34
|
+
* keydown, on the document or on a real element, leaves `wasKeyboardFocus()`
|
|
35
|
+
* false - so driving it would assert the environment, not the component.
|
|
36
|
+
* Everything else in the module stays real: only this one function is
|
|
37
|
+
* replaced, over `importActual`.
|
|
38
|
+
*/
|
|
39
|
+
let keyboardModality = false;
|
|
40
|
+
vi.mock("@multiplatform.one/theme", async (importOriginal) => {
|
|
41
|
+
const actual = await importOriginal<typeof import("@multiplatform.one/theme")>();
|
|
42
|
+
return { ...actual, wasKeyboardFocus: () => keyboardModality };
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
function pressKey() {
|
|
46
|
+
keyboardModality = true;
|
|
47
|
+
}
|
|
48
|
+
function pressPointer() {
|
|
49
|
+
keyboardModality = false;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
afterEach(() => {
|
|
53
|
+
keyboardModality = false;
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
function glyph(container: HTMLElement): HTMLElement {
|
|
57
|
+
const node = container.querySelector("[data-checkbox-box='true']");
|
|
58
|
+
if (!node) throw new Error("CheckboxGlyphBox did not render");
|
|
59
|
+
return node as HTMLElement;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** Tamagui paints through atomic classes, so read both channels. */
|
|
63
|
+
function cssOf(node: HTMLElement, prop: string): string {
|
|
64
|
+
const inline = node.style.getPropertyValue(prop);
|
|
65
|
+
if (inline) return inline;
|
|
66
|
+
return getComputedStyle(node).getPropertyValue(prop) || "";
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function classesOf(node: HTMLElement): string {
|
|
70
|
+
return Array.from(node.classList).join(" ");
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
describe("CheckboxBox — the target is 44px and the glyph is smaller", () => {
|
|
74
|
+
it("pins the WCAG 2.5.5 pressable floor at 44px", () => {
|
|
75
|
+
expect(CHECKBOX_TARGET_PX).toBe(44);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it("derives the glyph at 45% of the size token, rounded", () => {
|
|
79
|
+
// $4 resolves to 44 on the house size scale in this config, so the glyph
|
|
80
|
+
// is derived, never hardcoded: whatever the token resolves to, the glyph
|
|
81
|
+
// is round(0.45 x) and strictly smaller than the 44px target.
|
|
82
|
+
for (const token of ["$2", "$3", "$4", "$5"] as const) {
|
|
83
|
+
const size = getCheckboxGlyphSize(token);
|
|
84
|
+
expect(Number.isInteger(size)).toBe(true);
|
|
85
|
+
expect(size).toBeGreaterThan(0);
|
|
86
|
+
expect(size).toBeLessThan(CHECKBOX_TARGET_PX);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it("grows the glyph monotonically with the size token", () => {
|
|
91
|
+
const small = getCheckboxGlyphSize("$2");
|
|
92
|
+
const large = getCheckboxGlyphSize("$5");
|
|
93
|
+
expect(large).toBeGreaterThan(small);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
describe("CheckboxBox — the empty box's edge is the shape (DF-06)", () => {
|
|
98
|
+
it("floors the border at 2px whatever the knob says", () => {
|
|
99
|
+
expect(getCheckboxBoxBorderWidth(1)).toBe(2);
|
|
100
|
+
expect(getCheckboxBoxBorderWidth(0)).toBe(2);
|
|
101
|
+
expect(getCheckboxBoxBorderWidth(undefined)).toBe(2);
|
|
102
|
+
expect(getCheckboxBoxBorderWidth(Number.NaN)).toBe(2);
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it("honours a thicker knob instead of clamping it down", () => {
|
|
106
|
+
expect(getCheckboxBoxBorderWidth(3)).toBe(3);
|
|
107
|
+
expect(getCheckboxBoxBorderWidth(6)).toBe(6);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
it("keeps the check mark at 70% of the glyph but never under 10px", () => {
|
|
111
|
+
expect(getCheckboxIconSize(20)).toBe(14);
|
|
112
|
+
expect(getCheckboxIconSize(30)).toBe(21);
|
|
113
|
+
// The floor bites on the small end: 0.7 x 10 = 7 would be unreadable.
|
|
114
|
+
expect(getCheckboxIconSize(10)).toBe(10);
|
|
115
|
+
expect(getCheckboxIconSize(4)).toBe(10);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
describe("CheckboxBox — the radius law (DG-RAD-05 / R2)", () => {
|
|
120
|
+
it("caps every token stop at $2, which is the documented maximum", () => {
|
|
121
|
+
expect(CHECKBOX_GLYPH_MAX_RADIUS_TOKEN).toBe(2);
|
|
122
|
+
expect(clampCheckboxGlyphRadius("$1")).toBe("$1");
|
|
123
|
+
expect(clampCheckboxGlyphRadius("$2")).toBe("$2");
|
|
124
|
+
for (const token of ["$3", "$4", "$6", "$8", "$10", "$12"]) {
|
|
125
|
+
expect(clampCheckboxGlyphRadius(token), token).toBe("$2");
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
it("goes hard-angled for pointy and for $0, and pointy wins over any stop", () => {
|
|
130
|
+
expect(clampCheckboxGlyphRadius("$0")).toBe(0);
|
|
131
|
+
expect(clampCheckboxGlyphRadius("$12", { pointy: true })).toBe(0);
|
|
132
|
+
expect(clampCheckboxGlyphRadius("$1", { pointy: true })).toBe(0);
|
|
133
|
+
expect(clampCheckboxGlyphRadius(undefined, { pointy: true })).toBe(0);
|
|
134
|
+
// pointy:false is not pointy — it must not swallow the stop.
|
|
135
|
+
expect(clampCheckboxGlyphRadius("$1", { pointy: false })).toBe("$1");
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
it("passes a non-token value through untouched", () => {
|
|
139
|
+
expect(clampCheckboxGlyphRadius("4px")).toBe("4px");
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
it("RULE GAP: an absent token falls back to $4, above the documented $2 cap", () => {
|
|
143
|
+
// This is the module's own shared clamp fallback (clampRadius(..., "$4")),
|
|
144
|
+
// and it contradicts the comment three lines above it in CheckboxBox.tsx:
|
|
145
|
+
// "$4 (9) already paints as a circle on that box". Asserted as OBSERVED
|
|
146
|
+
// behaviour, deliberately not "fixed" here — which of the two is right is
|
|
147
|
+
// Clay's call, and it is recorded on MPO-143 rather than guessed at.
|
|
148
|
+
expect(clampCheckboxGlyphRadius(undefined)).toBe("$4");
|
|
149
|
+
// The live caller always passes a resolved knob token, so the gap is in
|
|
150
|
+
// the exported contract, not in what the Checkbox renders today.
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
it("calls a radius circular exactly at half the side, not before", () => {
|
|
154
|
+
expect(isCircularCheckboxRadius(9, 20)).toBe(false);
|
|
155
|
+
expect(isCircularCheckboxRadius(10, 20)).toBe(true);
|
|
156
|
+
expect(isCircularCheckboxRadius(11, 20)).toBe(true);
|
|
157
|
+
expect(isCircularCheckboxRadius(0, 20)).toBe(false);
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
it("refuses to answer for a zero or negative side", () => {
|
|
161
|
+
expect(isCircularCheckboxRadius(10, 0)).toBe(false);
|
|
162
|
+
expect(isCircularCheckboxRadius(10, -20)).toBe(false);
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
it("keeps the capped stop non-circular on a real glyph, which is the point of the cap", () => {
|
|
166
|
+
// $2 = 5px on the house radius scale, glyph ~20px: 5 < 10, so square.
|
|
167
|
+
expect(isCircularCheckboxRadius(5, 20)).toBe(false);
|
|
168
|
+
// $4 = 9px would not be, which is why the cap exists.
|
|
169
|
+
expect(isCircularCheckboxRadius(9, 18)).toBe(true);
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
describe("CheckboxBox — LC-71: the 44px frame paints nothing", () => {
|
|
174
|
+
it("is a 44px square with no border, no radius and no fill", () => {
|
|
175
|
+
expect(checkboxTargetFrameProps.width).toBe(CHECKBOX_TARGET_PX);
|
|
176
|
+
expect(checkboxTargetFrameProps.height).toBe(CHECKBOX_TARGET_PX);
|
|
177
|
+
expect(checkboxTargetFrameProps.minWidth).toBe(CHECKBOX_TARGET_PX);
|
|
178
|
+
expect(checkboxTargetFrameProps.minHeight).toBe(CHECKBOX_TARGET_PX);
|
|
179
|
+
expect(checkboxTargetFrameProps.borderWidth).toBe(0);
|
|
180
|
+
expect(checkboxTargetFrameProps.borderRadius).toBe(0);
|
|
181
|
+
expect(checkboxTargetFrameProps.padding).toBe(0);
|
|
182
|
+
expect(checkboxTargetFrameProps.backgroundColor).toBe("transparent");
|
|
183
|
+
expect(checkboxTargetFrameProps.outlineWidth).toBe(0);
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
it("keeps every interaction channel transparent, so no wash can wrap the label", () => {
|
|
187
|
+
for (const state of [
|
|
188
|
+
"hoverStyle",
|
|
189
|
+
"pressStyle",
|
|
190
|
+
"focusStyle",
|
|
191
|
+
"focusVisibleStyle",
|
|
192
|
+
"activeStyle",
|
|
193
|
+
] as const) {
|
|
194
|
+
const bag = checkboxTargetFrameProps[state] as Record<string, unknown>;
|
|
195
|
+
expect(bag.backgroundColor, state).toBe("transparent");
|
|
196
|
+
expect(bag.borderColor, state).toBe("transparent");
|
|
197
|
+
}
|
|
198
|
+
expect(checkboxTargetFrameProps.focusStyle.outlineWidth).toBe(0);
|
|
199
|
+
expect(checkboxTargetFrameProps.focusVisibleStyle.outlineWidth).toBe(0);
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
describe("CheckboxBox — keyboard-modality focus handlers", () => {
|
|
204
|
+
it("raises kbFocus on a focus that followed a key press", () => {
|
|
205
|
+
const setKbFocus = vi.fn();
|
|
206
|
+
const handlers = checkboxKbFocusHandlers(setKbFocus, vi.fn());
|
|
207
|
+
pressKey();
|
|
208
|
+
handlers.onFocus({});
|
|
209
|
+
expect(setKbFocus).toHaveBeenCalledWith(true);
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
it("stays quiet on a focus that followed a pointer press", () => {
|
|
213
|
+
const setKbFocus = vi.fn();
|
|
214
|
+
const handlers = checkboxKbFocusHandlers(setKbFocus, vi.fn());
|
|
215
|
+
pressPointer();
|
|
216
|
+
handlers.onFocus({});
|
|
217
|
+
expect(setKbFocus).not.toHaveBeenCalled();
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
it("always clears kbFocus on blur, whatever the modality was", () => {
|
|
221
|
+
const setKbFocus = vi.fn();
|
|
222
|
+
const handlers = checkboxKbFocusHandlers(setKbFocus, vi.fn());
|
|
223
|
+
pressPointer();
|
|
224
|
+
handlers.onBlur({});
|
|
225
|
+
expect(setKbFocus).toHaveBeenCalledWith(false);
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
it("tracks hover in and out", () => {
|
|
229
|
+
const setHovered = vi.fn();
|
|
230
|
+
const handlers = checkboxKbFocusHandlers(vi.fn(), setHovered);
|
|
231
|
+
handlers.onHoverIn({});
|
|
232
|
+
expect(setHovered).toHaveBeenLastCalledWith(true);
|
|
233
|
+
handlers.onHoverOut({});
|
|
234
|
+
expect(setHovered).toHaveBeenLastCalledWith(false);
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
it("forwards the caller's own handlers instead of swallowing them", () => {
|
|
238
|
+
const rest = {
|
|
239
|
+
onFocus: vi.fn(),
|
|
240
|
+
onBlur: vi.fn(),
|
|
241
|
+
onHoverIn: vi.fn(),
|
|
242
|
+
onHoverOut: vi.fn(),
|
|
243
|
+
};
|
|
244
|
+
const handlers = checkboxKbFocusHandlers(vi.fn(), vi.fn(), rest);
|
|
245
|
+
const event = { id: 1 };
|
|
246
|
+
handlers.onFocus(event);
|
|
247
|
+
handlers.onBlur(event);
|
|
248
|
+
handlers.onHoverIn(event);
|
|
249
|
+
handlers.onHoverOut(event);
|
|
250
|
+
expect(rest.onFocus).toHaveBeenCalledWith(event);
|
|
251
|
+
expect(rest.onBlur).toHaveBeenCalledWith(event);
|
|
252
|
+
expect(rest.onHoverIn).toHaveBeenCalledWith(event);
|
|
253
|
+
expect(rest.onHoverOut).toHaveBeenCalledWith(event);
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
it("survives a caller that passes no handlers at all", () => {
|
|
257
|
+
const handlers = checkboxKbFocusHandlers(vi.fn(), vi.fn());
|
|
258
|
+
expect(() => {
|
|
259
|
+
handlers.onFocus({});
|
|
260
|
+
handlers.onBlur({});
|
|
261
|
+
handlers.onHoverIn({});
|
|
262
|
+
handlers.onHoverOut({});
|
|
263
|
+
}).not.toThrow();
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
describe("CheckboxGlyphBox — the painted box", () => {
|
|
268
|
+
it("marks itself so the boards and the other specs can find it", () => {
|
|
269
|
+
const { container } = renderWithProviders(
|
|
270
|
+
<CheckboxGlyphBox
|
|
271
|
+
glyphSize={20}
|
|
272
|
+
isMarked={false}
|
|
273
|
+
kbFocus={false}
|
|
274
|
+
borderWidth={2}
|
|
275
|
+
borderRadius={5}
|
|
276
|
+
/>,
|
|
277
|
+
);
|
|
278
|
+
expect(glyph(container)).toBeTruthy();
|
|
279
|
+
});
|
|
280
|
+
|
|
281
|
+
it("never takes the press, so the 44px frame keeps the responder", () => {
|
|
282
|
+
const { container } = renderWithProviders(
|
|
283
|
+
<CheckboxGlyphBox
|
|
284
|
+
glyphSize={20}
|
|
285
|
+
isMarked={false}
|
|
286
|
+
kbFocus={false}
|
|
287
|
+
borderWidth={2}
|
|
288
|
+
borderRadius={5}
|
|
289
|
+
/>,
|
|
290
|
+
);
|
|
291
|
+
expect(cssOf(glyph(container), "pointer-events")).toBe("none");
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
it("publishes the focus-ring flag only while kbFocus is true", () => {
|
|
295
|
+
const off = renderWithProviders(
|
|
296
|
+
<CheckboxGlyphBox
|
|
297
|
+
glyphSize={20}
|
|
298
|
+
isMarked={false}
|
|
299
|
+
kbFocus={false}
|
|
300
|
+
borderWidth={2}
|
|
301
|
+
borderRadius={5}
|
|
302
|
+
/>,
|
|
303
|
+
);
|
|
304
|
+
expect(glyph(off.container).getAttribute("data-focus-ring")).toBeNull();
|
|
305
|
+
cleanup();
|
|
306
|
+
const on = renderWithProviders(
|
|
307
|
+
<CheckboxGlyphBox glyphSize={20} isMarked={false} kbFocus borderWidth={2} borderRadius={5} />,
|
|
308
|
+
);
|
|
309
|
+
expect(glyph(on.container).getAttribute("data-focus-ring")).toBe("true");
|
|
310
|
+
});
|
|
311
|
+
|
|
312
|
+
it("is an empty box when idle and drops that transparency when marked", () => {
|
|
313
|
+
const unmarked = renderWithProviders(
|
|
314
|
+
<CheckboxGlyphBox
|
|
315
|
+
glyphSize={20}
|
|
316
|
+
isMarked={false}
|
|
317
|
+
kbFocus={false}
|
|
318
|
+
borderWidth={2}
|
|
319
|
+
borderRadius={5}
|
|
320
|
+
/>,
|
|
321
|
+
);
|
|
322
|
+
expect(classesOf(glyph(unmarked.container))).toContain("_bg-transparent");
|
|
323
|
+
cleanup();
|
|
324
|
+
const marked = renderWithProviders(
|
|
325
|
+
<CheckboxGlyphBox glyphSize={20} isMarked kbFocus={false} borderWidth={2} borderRadius={5} />,
|
|
326
|
+
);
|
|
327
|
+
// Checked paints the MARK channel (formSelectedColors.mark), so the
|
|
328
|
+
// transparent fill is gone. The mark token is an accent value the test
|
|
329
|
+
// config does not resolve, which is exactly why this asserts the absence
|
|
330
|
+
// of the idle fill rather than a colour literal.
|
|
331
|
+
expect(classesOf(glyph(marked.container))).not.toContain("_bg-transparent");
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
it("takes the checked border off the boundary ramp entirely, so it is a fill and not a second outline", () => {
|
|
335
|
+
const { container } = renderWithProviders(
|
|
336
|
+
<CheckboxGlyphBox glyphSize={20} isMarked kbFocus={false} borderWidth={2} borderRadius={5} />,
|
|
337
|
+
);
|
|
338
|
+
const painted = classesOf(glyph(container));
|
|
339
|
+
expect(painted).not.toContain("_btc-color10");
|
|
340
|
+
expect(painted).not.toContain("_btc-color11");
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
it("moves the idle border from the boundary tier to the press tier on hover", () => {
|
|
344
|
+
// formControlColors.boundary = $color10 (DF-06: the edge that carries the
|
|
345
|
+
// shape, >=3:1), thumb.press = $color11.
|
|
346
|
+
const idle = renderWithProviders(
|
|
347
|
+
<CheckboxGlyphBox
|
|
348
|
+
glyphSize={20}
|
|
349
|
+
isMarked={false}
|
|
350
|
+
kbFocus={false}
|
|
351
|
+
borderWidth={2}
|
|
352
|
+
borderRadius={5}
|
|
353
|
+
/>,
|
|
354
|
+
);
|
|
355
|
+
expect(classesOf(glyph(idle.container))).toContain("_btc-color10");
|
|
356
|
+
cleanup();
|
|
357
|
+
const hovered = renderWithProviders(
|
|
358
|
+
<CheckboxGlyphBox
|
|
359
|
+
glyphSize={20}
|
|
360
|
+
isMarked={false}
|
|
361
|
+
kbFocus={false}
|
|
362
|
+
hovered
|
|
363
|
+
borderWidth={2}
|
|
364
|
+
borderRadius={5}
|
|
365
|
+
/>,
|
|
366
|
+
);
|
|
367
|
+
expect(classesOf(glyph(hovered.container))).toContain("_btc-color11");
|
|
368
|
+
});
|
|
369
|
+
|
|
370
|
+
it("takes its geometry from the props rather than a hardcoded box", () => {
|
|
371
|
+
const { container } = renderWithProviders(
|
|
372
|
+
<CheckboxGlyphBox
|
|
373
|
+
glyphSize={26}
|
|
374
|
+
isMarked={false}
|
|
375
|
+
kbFocus={false}
|
|
376
|
+
borderWidth={3}
|
|
377
|
+
borderRadius={7}
|
|
378
|
+
/>,
|
|
379
|
+
);
|
|
380
|
+
const node = glyph(container);
|
|
381
|
+
expect(cssOf(node, "width")).toBe("26px");
|
|
382
|
+
expect(cssOf(node, "height")).toBe("26px");
|
|
383
|
+
expect(cssOf(node, "border-top-width")).toBe("3px");
|
|
384
|
+
expect(classesOf(node)).toContain("_btlr-7px");
|
|
385
|
+
});
|
|
386
|
+
|
|
387
|
+
it("renders the check mark it is handed", () => {
|
|
388
|
+
const { container } = renderWithProviders(
|
|
389
|
+
<CheckboxGlyphBox glyphSize={20} isMarked kbFocus={false} borderWidth={2} borderRadius={5}>
|
|
390
|
+
<span data-mark>x</span>
|
|
391
|
+
</CheckboxGlyphBox>,
|
|
392
|
+
);
|
|
393
|
+
expect(container.querySelector("[data-mark]")).toBeTruthy();
|
|
394
|
+
});
|
|
395
|
+
});
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CheckboxCard — the SELECTION-CARD anatomy (LC-22) and its two derivations
|
|
3
|
+
* (MPO-143).
|
|
4
|
+
*
|
|
5
|
+
* These five parts are shared by `Checkboxes.Card`, `CheckboxGroup card` and
|
|
6
|
+
* `RadioGroup card`, so a change here moves three surfaces at once and nothing
|
|
7
|
+
* checked it. The two rules worth pinning are LC-71's "selected = fill, not an
|
|
8
|
+
* extra border" and T-HELPER's "the description is one step under the field
|
|
9
|
+
* size" — both are one-line edits away from silently regressing.
|
|
10
|
+
*/
|
|
11
|
+
import { cleanup } from "@testing-library/react";
|
|
12
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
13
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
14
|
+
import {
|
|
15
|
+
CheckboxCardContent,
|
|
16
|
+
CheckboxCardDescription,
|
|
17
|
+
CheckboxCardFrame,
|
|
18
|
+
CheckboxCardLabel,
|
|
19
|
+
getCardDescriptionSize,
|
|
20
|
+
getCheckboxCardLayout,
|
|
21
|
+
} from "./CheckboxCard";
|
|
22
|
+
|
|
23
|
+
afterEach(cleanup);
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The styled parts paint through Tamagui atomic classes, so the class list is
|
|
27
|
+
* the honest read; `getComputedStyle` only resolves the subset whose CSS this
|
|
28
|
+
* environment injects.
|
|
29
|
+
*/
|
|
30
|
+
function classesOf(node: Element | null): string {
|
|
31
|
+
if (!node) throw new Error("expected a rendered node");
|
|
32
|
+
return Array.from(node.classList).join(" ");
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function painted(container: HTMLElement, marker: string): string {
|
|
36
|
+
return classesOf(container.querySelector(`[class*='${marker}']`));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
describe("getCardDescriptionSize — T-HELPER is one step under the field", () => {
|
|
40
|
+
it("maps each field size onto its helper tier", () => {
|
|
41
|
+
expect(getCardDescriptionSize("$1")).toBe("$1");
|
|
42
|
+
expect(getCardDescriptionSize("$2")).toBe("$1");
|
|
43
|
+
expect(getCardDescriptionSize("$3")).toBe("$2");
|
|
44
|
+
expect(getCardDescriptionSize("$4")).toBe("$3");
|
|
45
|
+
expect(getCardDescriptionSize("$5")).toBe("$4");
|
|
46
|
+
expect(getCardDescriptionSize("$6")).toBe("$5");
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it("treats $true as the default field size, not as an unknown", () => {
|
|
50
|
+
expect(getCardDescriptionSize("$true" as never)).toBe("$3");
|
|
51
|
+
expect(getCardDescriptionSize("$true" as never)).toBe(getCardDescriptionSize("$4"));
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it("falls back to $2 for no size and for a size off the ladder", () => {
|
|
55
|
+
expect(getCardDescriptionSize(undefined)).toBe("$2");
|
|
56
|
+
expect(getCardDescriptionSize("$9" as never)).toBe("$2");
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it("never returns a helper size at or above its own field size", () => {
|
|
60
|
+
for (const [field, helper] of [
|
|
61
|
+
["$3", "$2"],
|
|
62
|
+
["$4", "$3"],
|
|
63
|
+
["$5", "$4"],
|
|
64
|
+
["$6", "$5"],
|
|
65
|
+
] as const) {
|
|
66
|
+
expect(getCardDescriptionSize(field), field).toBe(helper);
|
|
67
|
+
expect(Number(String(helper).slice(1))).toBeLessThan(Number(field.slice(1)));
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
describe("getCheckboxCardLayout — compact metrics off the space knob", () => {
|
|
73
|
+
it("gives each space stop its own padding and gap", () => {
|
|
74
|
+
expect(getCheckboxCardLayout("none")).toEqual({
|
|
75
|
+
paddingVertical: "$2.5",
|
|
76
|
+
paddingHorizontal: "$3",
|
|
77
|
+
gap: "$2.5",
|
|
78
|
+
});
|
|
79
|
+
expect(getCheckboxCardLayout("large")).toEqual({
|
|
80
|
+
paddingVertical: "$3.5",
|
|
81
|
+
paddingHorizontal: "$4",
|
|
82
|
+
gap: "$3.5",
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it("makes small and medium deliberately identical", () => {
|
|
87
|
+
expect(getCheckboxCardLayout("small")).toEqual(getCheckboxCardLayout("medium"));
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it("falls back to medium for an unknown stop rather than throwing", () => {
|
|
91
|
+
expect(getCheckboxCardLayout("enormous")).toEqual(getCheckboxCardLayout("medium"));
|
|
92
|
+
expect(getCheckboxCardLayout("")).toEqual(getCheckboxCardLayout("medium"));
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it("grows monotonically from none to large", () => {
|
|
96
|
+
const stops = ["none", "small", "large"].map((s) => getCheckboxCardLayout(s));
|
|
97
|
+
const num = (token: string) => Number(token.replace("$", ""));
|
|
98
|
+
expect(num(stops[0].paddingVertical)).toBeLessThanOrEqual(num(stops[1].paddingVertical));
|
|
99
|
+
expect(num(stops[1].paddingVertical)).toBeLessThan(num(stops[2].paddingVertical));
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
describe("CheckboxCardFrame — control leading, whole card interactive", () => {
|
|
104
|
+
it("lays the control out in a row, top-aligned with the first label line", () => {
|
|
105
|
+
const { container } = renderWithProviders(<CheckboxCardFrame />);
|
|
106
|
+
const card = painted(container, "_fd-row");
|
|
107
|
+
expect(card).toContain("_fd-row");
|
|
108
|
+
expect(card).toContain("_ai-flex-start");
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
it("reads as pressable across the whole card", () => {
|
|
112
|
+
const { container } = renderWithProviders(<CheckboxCardFrame />);
|
|
113
|
+
expect(painted(container, "_fd-row")).toContain("_cur-pointer");
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it("carries exactly one border at rest, on the $color6 seam", () => {
|
|
117
|
+
const { container } = renderWithProviders(<CheckboxCardFrame />);
|
|
118
|
+
const card = painted(container, "_fd-row");
|
|
119
|
+
expect(card).toContain("_btw-1px");
|
|
120
|
+
expect(card).toContain("_btc-color6");
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
it("moves the border one step up the ramp on hover, and only on hover", () => {
|
|
124
|
+
const { container } = renderWithProviders(<CheckboxCardFrame />);
|
|
125
|
+
const card = painted(container, "_fd-row");
|
|
126
|
+
expect(card).toContain("_btc-0hover-color7");
|
|
127
|
+
expect(card).toContain("_btc-color6");
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
it("LC-71: active changes the FILL and leaves the border exactly where it was", () => {
|
|
131
|
+
const rest = renderWithProviders(<CheckboxCardFrame />);
|
|
132
|
+
const restCard = painted(rest.container, "_fd-row");
|
|
133
|
+
expect(restCard).toContain("_bg-color2");
|
|
134
|
+
cleanup();
|
|
135
|
+
const active = renderWithProviders(<CheckboxCardFrame active />);
|
|
136
|
+
const activeCard = painted(active.container, "_fd-row");
|
|
137
|
+
expect(activeCard).toContain("_bg-color3");
|
|
138
|
+
expect(activeCard).not.toContain("_bg-color2");
|
|
139
|
+
// the border is untouched: same width, same colour, no second outline
|
|
140
|
+
expect(activeCard).toContain("_btw-1px");
|
|
141
|
+
expect(activeCard).toContain("_btc-color6");
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
it("renders the control and the text column it is given", () => {
|
|
145
|
+
const { container } = renderWithProviders(
|
|
146
|
+
<CheckboxCardFrame>
|
|
147
|
+
<span data-control />
|
|
148
|
+
<CheckboxCardContent>
|
|
149
|
+
<CheckboxCardLabel>Ship it</CheckboxCardLabel>
|
|
150
|
+
<CheckboxCardDescription>Sends the release out</CheckboxCardDescription>
|
|
151
|
+
</CheckboxCardContent>
|
|
152
|
+
</CheckboxCardFrame>,
|
|
153
|
+
);
|
|
154
|
+
expect(container.querySelector("[data-control]")).toBeTruthy();
|
|
155
|
+
expect(container.textContent).toContain("Ship it");
|
|
156
|
+
expect(container.textContent).toContain("Sends the release out");
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
describe("CheckboxCardContent — the text column", () => {
|
|
161
|
+
it("stacks the label over the description and can shrink under a long word", () => {
|
|
162
|
+
const { container } = renderWithProviders(<CheckboxCardContent />);
|
|
163
|
+
const column = painted(container, "_miw-0px");
|
|
164
|
+
expect(column).toContain("_fd-column");
|
|
165
|
+
expect(column).toContain("_miw-0px");
|
|
166
|
+
expect(column).toContain("_fg-1");
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
describe("CheckboxCardLabel and CheckboxCardDescription", () => {
|
|
171
|
+
it("makes the label the bold, full-contrast first line", () => {
|
|
172
|
+
const { container } = renderWithProviders(<CheckboxCardLabel>Label</CheckboxCardLabel>);
|
|
173
|
+
const label = classesOf(container.querySelector("p"));
|
|
174
|
+
expect(label).toContain("_fow-600");
|
|
175
|
+
expect(label).toContain("_lh-20px");
|
|
176
|
+
expect(label).toContain("_col-color12");
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
it("paints the description one ramp step down, in the muted tier", () => {
|
|
180
|
+
const label = renderWithProviders(<CheckboxCardLabel>Label</CheckboxCardLabel>);
|
|
181
|
+
expect(classesOf(label.container.querySelector("p"))).toContain("_col-color12");
|
|
182
|
+
cleanup();
|
|
183
|
+
const description = renderWithProviders(
|
|
184
|
+
<CheckboxCardDescription>Helper</CheckboxCardDescription>,
|
|
185
|
+
);
|
|
186
|
+
const muted = classesOf(description.container.querySelector("p"));
|
|
187
|
+
expect(muted).toContain("_col-color11");
|
|
188
|
+
expect(muted).not.toContain("_col-color12");
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
it("leaves the description at the normal weight, so only the label is bold", () => {
|
|
192
|
+
const { container } = renderWithProviders(
|
|
193
|
+
<CheckboxCardDescription>Helper</CheckboxCardDescription>,
|
|
194
|
+
);
|
|
195
|
+
expect(classesOf(container.querySelector("p"))).not.toContain("_fow-600");
|
|
196
|
+
});
|
|
197
|
+
});
|