@astryxdesign/core 0.7.6-canary.f73623d → 0.7.6-canary.f899313
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/Badge/Badge.d.ts.map +1 -1
- package/dist/Badge/Badge.js +2 -1
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +8 -2
- package/dist/DateInput/MonthScroller.d.ts.map +1 -1
- package/dist/DateInput/MonthScroller.js +17 -18
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +8 -4
- package/dist/DropdownMenu/DropdownMenuGroup.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuGroup.js +2 -1
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +27 -2
- package/dist/FieldStatus/FieldStatus.d.ts +3 -0
- package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
- package/dist/FieldStatus/FieldStatus.js +1 -0
- package/dist/FileInput/FileInput.d.ts +3 -0
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +59 -33
- package/dist/Layer/useTouchTrigger.d.ts +9 -0
- package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
- package/dist/Layer/useTouchTrigger.js +1 -1
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +10 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +19 -9
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +11 -15
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +9 -6
- package/dist/Selector/hooks.js +2 -2
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +82 -10
- package/dist/Token/Token.d.ts +1 -1
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +15 -0
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +16 -1
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +10 -3
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +36 -10
- package/dist/astryx.css +1 -1
- package/dist/i18n/useListFormatter.d.ts +9 -0
- package/dist/i18n/useListFormatter.d.ts.map +1 -0
- package/dist/i18n/useListFormatter.js +41 -0
- package/package.json +18 -5
- package/src/Badge/Badge.tsx +2 -1
- package/src/Chat/ChatMessage.spec.md +64 -65
- package/src/Citation/Citation.spec.md +60 -47
- package/src/ComplexSelector/ComplexSelector.tsx +19 -2
- package/src/DateInput/DateInput.spec.md +74 -57
- package/src/DateInput/MonthScroller.tsx +15 -17
- package/src/DateRangeInput/DateRangeInput.tsx +18 -3
- package/src/DropdownMenu/DropdownMenuGroup.tsx +2 -1
- package/src/Field/Field.doc.mjs +2 -1
- package/src/Field/FieldLabel.doc.mjs +4 -2
- package/src/Field/FieldLabel.spec.md +30 -21
- package/src/Field/FieldLabel.tsx +37 -3
- package/src/FieldStatus/FieldStatus.tsx +7 -0
- package/src/FileInput/FileInput.tsx +69 -28
- package/src/FormLayout/FormLayout.spec.md +11 -19
- package/src/Layer/useTouchTrigger.ts +1 -1
- package/src/Lightbox/Lightbox.spec.md +249 -61
- package/src/Link/Link.tsx +9 -2
- package/src/MultiSelector/MultiSelector.spec.md +121 -114
- package/src/MultiSelector/MultiSelector.tsx +19 -5
- package/src/NumberInput/NumberInput.tsx +11 -18
- package/src/ProgressBar/ProgressBar.spec.md +143 -119
- package/src/Selector/Selector.tsx +16 -6
- package/src/Selector/hooks.ts +2 -2
- package/src/Slider/Slider.spec.md +18 -16
- package/src/Slider/Slider.tsx +101 -9
- package/src/Token/Token.spec.md +24 -23
- package/src/Token/Token.tsx +15 -0
- package/src/Tokenizer/Tokenizer.tsx +10 -0
- package/src/Typeahead/BaseTypeahead.tsx +18 -2
- package/src/Typeahead/Typeahead.tsx +40 -9
- package/src/i18n/useListFormatter.ts +42 -0
- package/dist/Item/ItemMarkerColumns.a11y.chromium.spec.d.ts +0 -2
- package/dist/Item/ItemMarkerColumns.a11y.chromium.spec.js +0 -132
- package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.d.ts +0 -2
- package/dist/Lightbox/LightboxKeyboard.a11y.browser.spec.js +0 -78
- package/dist/Lightbox/LightboxViewport.a11y.browser.spec.d.ts +0 -2
- package/dist/Lightbox/LightboxViewport.a11y.browser.spec.js +0 -66
- package/dist/List/ListMarkers.a11y.chromium.spec.d.ts +0 -2
- package/dist/List/ListMarkers.a11y.chromium.spec.js +0 -677
- package/dist/Markdown/Markdown.fr23.bench.d.ts +0 -2
- package/dist/Markdown/Markdown.fr23.bench.d.ts.map +0 -1
- package/dist/Markdown/Markdown.fr23.bench.js +0 -152
- package/dist/Markdown/MarkdownTable.a11y.chromium.spec.d.ts +0 -2
- package/dist/Markdown/MarkdownTable.a11y.chromium.spec.js +0 -590
- package/dist/Markdown/plugins/headingLinks.a11y.chromium.spec.d.ts +0 -2
- package/dist/Markdown/plugins/headingLinks.a11y.chromium.spec.js +0 -657
- package/dist/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.d.ts +0 -2
- package/dist/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.js +0 -153
- package/dist/MultiSelector/CreateRow.a11y.chromium.spec.d.ts +0 -2
- package/dist/MultiSelector/CreateRow.a11y.chromium.spec.js +0 -117
- package/dist/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.d.ts +0 -2
- package/dist/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.js +0 -49
- package/dist/MultiSelector/OptionActions.a11y.chromium.spec.d.ts +0 -2
- package/dist/MultiSelector/OptionActions.a11y.chromium.spec.js +0 -273
- package/dist/Outline/OutlineFocus.a11y.chromium.spec.d.ts +0 -2
- package/dist/Outline/OutlineFocus.a11y.chromium.spec.js +0 -421
- package/dist/Typeahead/BaseTypeahead.emptyState.a11y.chromium.spec.d.ts +0 -2
- package/dist/Typeahead/BaseTypeahead.emptyState.a11y.chromium.spec.js +0 -118
- package/dist/reset.a11y.chromium.spec.d.ts +0 -2
- package/dist/reset.a11y.chromium.spec.js +0 -231
- package/dist/reset.until-found.a11y.browser.spec.d.ts +0 -2
- package/dist/reset.until-found.a11y.browser.spec.js +0 -72
- package/src/AlertDialog/AlertDialog.test.tsx +0 -519
- package/src/AlertDialog/__tests__/AlertDialog.a11y.chromium.spec.ts +0 -128
- package/src/AlertDialog/__tests__/AlertDialog.a11y.renders.tsx +0 -52
- package/src/AlertDialog/__tests__/AlertDialog.a11y.states.ts +0 -68
- package/src/AlertDialog/__tests__/AlertDialog.a11y.test.tsx +0 -144
- package/src/AlertDialog/useImperativeAlertDialog.test.tsx +0 -163
- package/src/AppShell/AppShell.test.tsx +0 -1310
- package/src/AppShell/__tests__/AppShellMainKeyboard.a11y.browser.spec.ts +0 -534
- package/src/AppShell/observeMainOverflow.test.ts +0 -173
- package/src/AspectRatio/AspectRatio.test.tsx +0 -398
- package/src/AspectRatio/__tests__/AspectRatioFitLayers.a11y.browser.spec.ts +0 -158
- package/src/Avatar/Avatar.test.tsx +0 -867
- package/src/Avatar/AvatarStatusDot.test.tsx +0 -306
- package/src/Avatar/__tests__/AvatarForcedColors.a11y.chromium.spec.ts +0 -126
- package/src/AvatarGroup/AvatarGroup.test.tsx +0 -313
- package/src/AvatarGroup/AvatarGroupOverflow.test.tsx +0 -263
- package/src/Badge/Badge.test.tsx +0 -125
- package/src/Badge/__tests__/BadgeLargerText.a11y.chromium.spec.ts +0 -260
- package/src/Banner/Banner.test.tsx +0 -879
- package/src/Blockquote/Blockquote.test.tsx +0 -121
- package/src/BottomSheet/BottomSheet.test.tsx +0 -3154
- package/src/BottomSheet/BottomSheetEdgeTint.test.tsx +0 -248
- package/src/BottomSheet/BottomSheetKeyboard.test.tsx +0 -195
- package/src/BottomSheet/BottomSheetPanel.test.tsx +0 -549
- package/src/BottomSheet/BottomSheetReplace.test.tsx +0 -1638
- package/src/BottomSheet/BottomSheetStacking.announce.test.tsx +0 -246
- package/src/BottomSheet/BottomSheetStacking.test.tsx +0 -3184
- package/src/BottomSheet/BottomSheetSwitcher.test.tsx +0 -2010
- package/src/BottomSheet/__tests__/BottomSheetDrag.a11y.chromium.spec.ts +0 -129
- package/src/BottomSheet/__tests__/BottomSheetFocusReturn.a11y.browser.spec.ts +0 -97
- package/src/BottomSheet/__tests__/BottomSheetKeyboard.a11y.browser.spec.ts +0 -415
- package/src/BottomSheet/__tests__/BottomSheetNativeModal.a11y.browser.spec.ts +0 -462
- package/src/BottomSheet/__tests__/BottomSheetPinchZoom.a11y.chromium.spec.ts +0 -247
- package/src/BottomSheet/__tests__/BottomSheetToastOutlet.a11y.chromium.spec.ts +0 -83
- package/src/BottomSheet/snapOffsets.test.ts +0 -254
- package/src/BottomSheet/useSheetGestures.test.ts +0 -1690
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +0 -921
- package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.chromium.spec.ts +0 -132
- package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.renders.tsx +0 -45
- package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.states.ts +0 -81
- package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.test.tsx +0 -125
- package/src/Button/Button.test.tsx +0 -864
- package/src/Button/__tests__/Button.a11y.chromium.spec.ts +0 -355
- package/src/Button/__tests__/Button.a11y.harnesses.tsx +0 -47
- package/src/Button/__tests__/Button.a11y.known-failures.ts +0 -25
- package/src/Button/__tests__/Button.a11y.renders.tsx +0 -139
- package/src/Button/__tests__/Button.a11y.states.ts +0 -317
- package/src/Button/__tests__/Button.a11y.test.tsx +0 -187
- package/src/ButtonGroup/ButtonGroup.test.tsx +0 -1025
- package/src/Calendar/Calendar.test.tsx +0 -2186
- package/src/Calendar/__tests__/Calendar.a11y.chromium.spec.ts +0 -141
- package/src/Calendar/__tests__/Calendar.a11y.known-failures.ts +0 -12
- package/src/Calendar/__tests__/Calendar.a11y.renders.tsx +0 -57
- package/src/Calendar/__tests__/Calendar.a11y.states.ts +0 -139
- package/src/Calendar/__tests__/Calendar.a11y.test.tsx +0 -137
- package/src/Calendar/dayCellUtils.test.ts +0 -520
- package/src/Calendar/getInitialFocusDate.test.ts +0 -94
- package/src/Calendar/getStandaloneShortWeekdayNames.test.ts +0 -54
- package/src/Calendar/hooks/useCalendarConstraints.test.ts +0 -153
- package/src/Calendar/hooks/useCalendarDays.test.ts +0 -265
- package/src/Calendar/hooks/useCalendarNavigation.test.ts +0 -252
- package/src/Card/Card.test.tsx +0 -202
- package/src/Carousel/Carousel.test.tsx +0 -1036
- package/src/Carousel/__tests__/Carousel.a11y.chromium.spec.ts +0 -207
- package/src/Carousel/__tests__/Carousel.a11y.known-failures.ts +0 -12
- package/src/Carousel/__tests__/Carousel.a11y.renders.tsx +0 -39
- package/src/Carousel/__tests__/Carousel.a11y.states.ts +0 -139
- package/src/Carousel/__tests__/Carousel.a11y.test.tsx +0 -127
- package/src/Center/Center.test.tsx +0 -406
- package/src/Chat/ChatComposer.test.tsx +0 -364
- package/src/Chat/ChatComposerDrawer.test.tsx +0 -130
- package/src/Chat/ChatComposerInput.test.tsx +0 -2136
- package/src/Chat/ChatComposerTokenElement.test.tsx +0 -85
- package/src/Chat/ChatDictationButton.test.tsx +0 -108
- package/src/Chat/ChatLayout.test.tsx +0 -311
- package/src/Chat/ChatLayoutScrollButton.test.tsx +0 -99
- package/src/Chat/ChatMessage.test.tsx +0 -344
- package/src/Chat/ChatMessageBubble.test.tsx +0 -294
- package/src/Chat/ChatMessageList.test.tsx +0 -198
- package/src/Chat/ChatMessageMetadata.test.tsx +0 -66
- package/src/Chat/ChatPastedTextToken.test.tsx +0 -71
- package/src/Chat/ChatSendButton.test.tsx +0 -309
- package/src/Chat/ChatSystemMessage.test.tsx +0 -189
- package/src/Chat/ChatTokenizedText.test.tsx +0 -163
- package/src/Chat/ChatToolCalls.test.tsx +0 -413
- package/src/Chat/__tests__/ChatLayoutScrollButton.a11y.chromium.spec.ts +0 -577
- package/src/Chat/__tests__/ChatLayoutScrollButtonSurface.a11y.chromium.spec.ts +0 -740
- package/src/Chat/__tests__/ChatMessageBubble.a11y.chromium.spec.ts +0 -457
- package/src/Chat/__tests__/ChatMessageBubble.auditProvenance.test.ts +0 -91
- package/src/Chat/__tests__/ChatMessageBubble.auditProvenance.ts +0 -91
- package/src/Chat/__tests__/ChatMessageList.a11y.chromium.spec.ts +0 -465
- package/src/Chat/__tests__/ChatMessageMetadata.a11y.chromium.spec.ts +0 -416
- package/src/Chat/__tests__/ChatSendButton.a11y.chromium.spec.ts +0 -1523
- package/src/Chat/__tests__/ChatSystemMessage.a11y.chromium.spec.ts +0 -1004
- package/src/Chat/__tests__/ChatTokenizedText.a11y.chromium.spec.ts +0 -574
- package/src/Chat/__tests__/useChatStreamScroll.a11y.chromium.spec.ts +0 -263
- package/src/Chat/__tests__/useChatStreamScroll.fixture.tsx +0 -61
- package/src/Chat/useChatDictation.test.tsx +0 -369
- package/src/Chat/useChatNewMessages.test.tsx +0 -209
- package/src/Chat/useChatPasteAsToken.test.ts +0 -191
- package/src/Chat/useChatStreamScroll.test.tsx +0 -381
- package/src/Chat/useTriggerMenu.test.tsx +0 -994
- package/src/CheckboxInput/CheckboxInput.test.tsx +0 -926
- package/src/CheckboxInput/__tests__/Checkbox.a11y.chromium.spec.ts +0 -354
- package/src/CheckboxInput/__tests__/Checkbox.a11y.known-failures.ts +0 -54
- package/src/CheckboxInput/__tests__/Checkbox.a11y.renders.tsx +0 -310
- package/src/CheckboxInput/__tests__/Checkbox.a11y.states.ts +0 -404
- package/src/CheckboxInput/__tests__/Checkbox.a11y.test.tsx +0 -128
- package/src/CheckboxList/CheckboxList.fr10.test.tsx +0 -51
- package/src/CheckboxList/CheckboxList.test.tsx +0 -1159
- package/src/CheckboxList/__tests__/CheckboxList.a11y.chromium.spec.ts +0 -1998
- package/src/Citation/Citation.test.tsx +0 -361
- package/src/ClickableCard/ClickableCard.test.tsx +0 -382
- package/src/Code/Code.test.tsx +0 -75
- package/src/CodeBlock/CodeBlock.highlightStyles.test.tsx +0 -87
- package/src/CodeBlock/CodeBlock.test.tsx +0 -752
- package/src/CodeBlock/CodeLanguage.test.tsx +0 -173
- package/src/CodeBlock/__tests__/CodeBlockCopyClearance.a11y.chromium.spec.ts +0 -325
- package/src/CodeBlock/__tests__/CodeBlockLanguages.a11y.chromium.spec.ts +0 -64
- package/src/CodeBlock/__tests__/CodeBlockOverflowStop.a11y.chromium.spec.ts +0 -126
- package/src/CodeBlock/__tests__/DiffRowPaint.a11y.chromium.spec.ts +0 -94
- package/src/CodeBlock/highlightRanges.test.ts +0 -253
- package/src/CodeBlock/languages.test.ts +0 -402
- package/src/CodeBlock/tokenizer.test.ts +0 -280
- package/src/CodeBlock/tokenizerBudget.test.ts +0 -112
- package/src/Collapsible/Collapsible.test.tsx +0 -620
- package/src/Collapsible/CollapsibleGroup.test.tsx +0 -656
- package/src/Collapsible/__tests__/Collapsible.a11y.chromium.spec.ts +0 -194
- package/src/Collapsible/__tests__/Collapsible.a11y.states.ts +0 -117
- package/src/Collapsible/__tests__/Collapsible.a11y.test.tsx +0 -140
- package/src/Collapsible/__tests__/CollapsibleGroup.a11y.chromium.spec.ts +0 -559
- package/src/Collapsible/__tests__/CollapsibleGroup.a11y.renders.tsx +0 -45
- package/src/Collapsible/__tests__/CollapsibleGroup.a11y.states.ts +0 -139
- package/src/Collapsible/__tests__/CollapsibleGroup.a11y.test.tsx +0 -135
- package/src/Collapsible/__tests__/CollapsibleGroupAccordion.a11y.chromium.spec.ts +0 -141
- package/src/Collapsible/useCollapsible.test.tsx +0 -236
- package/src/CommandPalette/CommandPalette.perf.test.ts +0 -100
- package/src/CommandPalette/CommandPalette.test.tsx +0 -750
- package/src/CommandPalette/CommandPaletteEmpty.test.tsx +0 -101
- package/src/CommandPalette/CommandPaletteFooter.test.tsx +0 -122
- package/src/CommandPalette/CommandPaletteGroup.test.tsx +0 -129
- package/src/CommandPalette/CommandPaletteInput.test.tsx +0 -539
- package/src/CommandPalette/CommandPaletteItem.test.tsx +0 -417
- package/src/CommandPalette/CommandPaletteList.test.tsx +0 -184
- package/src/CommandPalette/__tests__/CommandPalette.a11y.chromium.spec.ts +0 -600
- package/src/CommandPalette/__tests__/CommandPaletteEmptyAudit.a11y.chromium.spec.ts +0 -715
- package/src/CommandPalette/__tests__/CommandPaletteFooter.a11y.chromium.spec.ts +0 -582
- package/src/CommandPalette/__tests__/CommandPaletteInputAudit.a11y.chromium.spec.ts +0 -336
- package/src/CommandPalette/__tests__/CommandPaletteItemAudit.a11y.chromium.spec.ts +0 -523
- package/src/ComplexSelector/ComplexSelector.focusableDisabled.test.tsx +0 -76
- package/src/ComplexSelector/ComplexSelector.fr10.test.tsx +0 -262
- package/src/ComplexSelector/ComplexSelector.test.tsx +0 -1171
- package/src/ComplexSelector/__tests__/ComplexSelector.a11y.chromium.spec.ts +0 -965
- package/src/ContextMenu/ContextMenu.test.tsx +0 -1617
- package/src/ContextMenu/ContextMenu.triggerProps.test.tsx +0 -54
- package/src/ContextMenu/__tests__/ContextMenuAudit.a11y.chromium.spec.ts +0 -439
- package/src/ContextMenu/__tests__/ContextMenuCursorAnchor.a11y.browser.spec.ts +0 -154
- package/src/ContextMenu/__tests__/ContextMenuLongPress.a11y.chromium.spec.ts +0 -117
- package/src/DateInput/DateInput.fr10.test.tsx +0 -283
- package/src/DateInput/DateInput.test.tsx +0 -1571
- package/src/DateInput/DateInputTouch.test.tsx +0 -2948
- package/src/DateInput/MonthScrollerSettle.test.tsx +0 -165
- package/src/DateInput/NativeDateField.test.tsx +0 -741
- package/src/DateInput/Presentation.test.tsx +0 -121
- package/src/DateInput/__tests__/DateInputAudit.a11y.chromium.spec.ts +0 -577
- package/src/DateInput/__tests__/MonthScrollerSteps.interaction.browser.spec.ts +0 -312
- package/src/DateInput/__tests__/WheelPinchZoom.a11y.chromium.spec.ts +0 -171
- package/src/DateRangeInput/DateRangeInput.fr10.test.tsx +0 -165
- package/src/DateRangeInput/DateRangeInput.test.tsx +0 -1151
- package/src/DateTimeInput/DateTimeInput.fr10.test.tsx +0 -319
- package/src/DateTimeInput/DateTimeInput.test.tsx +0 -2656
- package/src/DateTimeInput/DateTimeInputTouch.test.tsx +0 -1071
- package/src/DateTimeInput/NativePickerSegments.test.tsx +0 -657
- package/src/DateTimeInput/Presentation.test.tsx +0 -89
- package/src/Dialog/Dialog.source-build.test.mjs +0 -43
- package/src/Dialog/Dialog.test.tsx +0 -1599
- package/src/Dialog/DialogHeader.test.tsx +0 -477
- package/src/Dialog/__tests__/Dialog.a11y.browser.spec.ts +0 -111
- package/src/Dialog/__tests__/Dialog.a11y.chromium.spec.ts +0 -218
- package/src/Dialog/__tests__/Dialog.a11y.known-failures.ts +0 -28
- package/src/Dialog/__tests__/Dialog.a11y.renders.tsx +0 -107
- package/src/Dialog/__tests__/Dialog.a11y.states.ts +0 -104
- package/src/Dialog/__tests__/Dialog.a11y.test.tsx +0 -102
- package/src/Dialog/__tests__/Dialog.reduced-motion.a11y.browser.spec.ts +0 -252
- package/src/Dialog/__tests__/DialogSecondDocument.a11y.browser.spec.ts +0 -202
- package/src/Dialog/useImperativeDialog.test.tsx +0 -78
- package/src/Divider/Divider.test.tsx +0 -155
- package/src/Drawer/Drawer.test.tsx +0 -1335
- package/src/Drawer/DrawerDirection.test.tsx +0 -127
- package/src/Drawer/DrawerHeader.test.tsx +0 -102
- package/src/Drawer/__tests__/DrawerAudit.a11y.chromium.spec.ts +0 -402
- package/src/Drawer/__tests__/DrawerHeaderAudit.a11y.chromium.spec.ts +0 -298
- package/src/Drawer/__tests__/DrawerNonModalPageScroll.a11y.chromium.spec.ts +0 -267
- package/src/DropdownMenu/DropdownMenu.ssr.test.tsx +0 -93
- package/src/DropdownMenu/DropdownMenu.test.tsx +0 -4498
- package/src/DropdownMenu/DropdownMenuContext.public.test.ts +0 -22
- package/src/DropdownMenu/DropdownMenuLazySheet.test.tsx +0 -126
- package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +0 -635
- package/src/DropdownMenu/DropdownMenuSheetFirstOpen.test.tsx +0 -72
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +0 -2442
- package/src/DropdownMenu/__tests__/DropdownMenuDividerAudit.a11y.chromium.spec.ts +0 -281
- package/src/DropdownMenu/__tests__/DropdownMenuDrillIn.a11y.chromium.spec.ts +0 -175
- package/src/DropdownMenu/__tests__/DropdownMenuFocusReturn.a11y.browser.spec.ts +0 -74
- package/src/DropdownMenu/__tests__/DropdownMenuGroupAudit.a11y.chromium.spec.ts +0 -335
- package/src/DropdownMenu/__tests__/DropdownMenuItemAudit.a11y.chromium.spec.ts +0 -367
- package/src/DropdownMenu/__tests__/DropdownMenuRadioGroupAudit.a11y.chromium.spec.ts +0 -328
- package/src/DropdownMenu/__tests__/DropdownMenuRadioItemAudit.a11y.chromium.spec.ts +0 -540
- package/src/DropdownMenu/__tests__/DropdownMenuSubMenuAudit.a11y.chromium.spec.ts +0 -671
- package/src/DropdownMenu/__tests__/Menu.a11y.chromium.spec.ts +0 -158
- package/src/DropdownMenu/__tests__/Menu.a11y.known-failures.ts +0 -26
- package/src/DropdownMenu/__tests__/Menu.a11y.renders.tsx +0 -65
- package/src/DropdownMenu/__tests__/Menu.a11y.states.ts +0 -138
- package/src/DropdownMenu/__tests__/Menu.a11y.test.tsx +0 -136
- package/src/DropdownMenu/__tests__/MenuButton.a11y.chromium.spec.ts +0 -149
- package/src/DropdownMenu/__tests__/MenuButton.a11y.known-failures.ts +0 -12
- package/src/DropdownMenu/__tests__/MenuButton.a11y.renders.tsx +0 -67
- package/src/DropdownMenu/__tests__/MenuButton.a11y.states.ts +0 -141
- package/src/DropdownMenu/__tests__/MenuButton.a11y.test.tsx +0 -138
- package/src/DropdownMenu/__tests__/MenuHeaderFooter.a11y.chromium.spec.ts +0 -231
- package/src/DropdownMenu/__tests__/MenuHoverFocus.a11y.chromium.spec.ts +0 -238
- package/src/DropdownMenu/__tests__/MenuPinchZoom.a11y.chromium.spec.ts +0 -173
- package/src/DropdownMenu/__tests__/MenuPress.a11y.chromium.spec.ts +0 -503
- package/src/DropdownMenu/__tests__/SubMenuHeaderFooter.a11y.chromium.spec.ts +0 -268
- package/src/DropdownMenu/__tests__/warmMenuBottomSheet.tsx +0 -43
- package/src/DropdownMenu/lazyMenuBottomSheet.test.ts +0 -60
- package/src/EmptyState/EmptyState.announce.test.tsx +0 -227
- package/src/EmptyState/EmptyState.test.tsx +0 -284
- package/src/Field/Field.test.tsx +0 -800
- package/src/Field/FieldLabel.test.tsx +0 -244
- package/src/Field/InputClearButton.test.tsx +0 -395
- package/src/Field/__tests__/FieldLabelAudit.a11y.chromium.spec.ts +0 -297
- package/src/Field/fieldInputFamily.test.tsx +0 -160
- package/src/FieldStatus/FieldStatus.test.tsx +0 -482
- package/src/FieldStatus/__tests__/StatusMessage.a11y.chromium.spec.ts +0 -206
- package/src/FieldStatus/__tests__/StatusMessage.a11y.known-failures.ts +0 -13
- package/src/FieldStatus/__tests__/StatusMessage.a11y.renders.tsx +0 -287
- package/src/FieldStatus/__tests__/StatusMessage.a11y.states.ts +0 -302
- package/src/FieldStatus/__tests__/StatusMessage.a11y.test.tsx +0 -154
- package/src/FileInput/FileInput.fr10.test.tsx +0 -21
- package/src/FileInput/FileInput.test.tsx +0 -1291
- package/src/FormLayout/FormLayout.test.tsx +0 -444
- package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +0 -46
- package/src/Grid/Grid.test.tsx +0 -509
- package/src/HStack/HStack.test.tsx +0 -129
- package/src/Heading/Heading.test.tsx +0 -328
- package/src/HoverCard/HoverCard.test.tsx +0 -1339
- package/src/Icon/Icon.test.tsx +0 -990
- package/src/Icon/globalIconRegistry.test.tsx +0 -613
- package/src/IconButton/IconButton.test.tsx +0 -156
- package/src/Indicator/Indicator.test.tsx +0 -389
- package/src/Indicator/indicatorRegistry.test.tsx +0 -106
- package/src/InputGroup/InputGroup.test.tsx +0 -502
- package/src/InteractiveRoleContext/InteractiveRoleContext.test.tsx +0 -185
- package/src/Item/Item.source-build.test.mjs +0 -88
- package/src/Item/Item.swipeLayer.test.tsx +0 -74
- package/src/Item/Item.test.tsx +0 -1515
- package/src/Item/ItemMarkerColumns.a11y.chromium.spec.ts +0 -211
- package/src/Item/__tests__/ItemSwipeActions.a11y.chromium.spec.ts +0 -337
- package/src/Item/__tests__/ItemSwipePinchZoom.a11y.chromium.spec.ts +0 -186
- package/src/Kbd/Kbd.test.tsx +0 -299
- package/src/Layer/LayerProvider.test.tsx +0 -143
- package/src/Layer/__tests__/LayerBrowserHide.a11y.chromium.spec.ts +0 -126
- package/src/Layer/__tests__/LayerReducedMotion.a11y.chromium.spec.ts +0 -176
- package/src/Layer/__tests__/TouchTrigger.a11y.chromium.spec.ts +0 -200
- package/src/Layer/anchorName.test.ts +0 -146
- package/src/Layer/layerDismissalFamilies.test.tsx +0 -487
- package/src/Layer/layerDismissalInvariants.test.tsx +0 -501
- package/src/Layer/layerHost.test.ts +0 -117
- package/src/Layer/layerScopedContext.test.tsx +0 -499
- package/src/Layer/layerViewportInset.source-build.test.mjs +0 -90
- package/src/Layer/layerViewportInset.test.ts +0 -120
- package/src/Layer/popoverOperations.test.ts +0 -205
- package/src/Layer/useLayer.test.tsx +0 -2845
- package/src/Layer/useLayerDismissal.test.tsx +0 -580
- package/src/Layer/useTouchTrigger.test.ts +0 -70
- package/src/Layout/Layout.test.tsx +0 -375
- package/src/Layout/LayoutSlots.test.tsx +0 -376
- package/src/Layout/__tests__/Layout.a11y.chromium.spec.ts +0 -134
- package/src/Layout/__tests__/Layout.a11y.renders.tsx +0 -110
- package/src/Layout/__tests__/Layout.a11y.states.ts +0 -93
- package/src/Layout/__tests__/Layout.a11y.test.tsx +0 -142
- package/src/Layout/__tests__/childrenAsContent.test.tsx +0 -59
- package/src/Layout/__tests__/contentWidth.test.tsx +0 -303
- package/src/Layout/__tests__/edgeCompensation.test.tsx +0 -191
- package/src/Layout/__tests__/nestedPadding.test.tsx +0 -264
- package/src/Layout/overlayPaddingReset.test.tsx +0 -224
- package/src/Lightbox/Lightbox.test.tsx +0 -837
- package/src/Lightbox/LightboxKeyboard.a11y.browser.spec.ts +0 -78
- package/src/Lightbox/LightboxViewport.a11y.browser.spec.ts +0 -74
- package/src/Lightbox/useLightbox.test.tsx +0 -263
- package/src/Link/Link.test.tsx +0 -457
- package/src/Link/__tests__/Link.a11y.chromium.spec.ts +0 -153
- package/src/Link/__tests__/Link.a11y.renders.tsx +0 -97
- package/src/Link/__tests__/Link.a11y.states.ts +0 -104
- package/src/Link/__tests__/Link.a11y.test.tsx +0 -127
- package/src/Link/__tests__/Link.navigation.a11y.chromium.spec.ts +0 -262
- package/src/Link/__tests__/Link.truncation.a11y.chromium.spec.ts +0 -58
- package/src/Link/useLinkComponent.test.tsx +0 -572
- package/src/Link/useLinkify.test.tsx +0 -146
- package/src/List/List.test.tsx +0 -1052
- package/src/List/ListItem.source-build.test.mjs +0 -41
- package/src/List/ListMarkers.a11y.chromium.spec.ts +0 -904
- package/src/Markdown/Markdown.codeLanguages.test.tsx +0 -137
- package/src/Markdown/Markdown.fr23.bench.ts +0 -176
- package/src/Markdown/Markdown.fr23.perf.test.ts +0 -484
- package/src/Markdown/Markdown.helpers.perf.test.ts +0 -495
- package/src/Markdown/Markdown.public.test.ts +0 -309
- package/src/Markdown/Markdown.renderBoundary.test.tsx +0 -72
- package/src/Markdown/Markdown.rerender.test.tsx +0 -143
- package/src/Markdown/Markdown.test.tsx +0 -1383
- package/src/Markdown/MarkdownTable.a11y.chromium.spec.ts +0 -727
- package/src/Markdown/__tests__/MarkdownNesting.a11y.chromium.spec.ts +0 -102
- package/src/Markdown/angleDestinations.test.tsx +0 -104
- package/src/Markdown/ast.test.ts +0 -374
- package/src/Markdown/atxHeadingIndentation.test.tsx +0 -53
- package/src/Markdown/blockNesting.test.tsx +0 -124
- package/src/Markdown/blockquoteMarkers.test.tsx +0 -69
- package/src/Markdown/characterReferences.test.ts +0 -47
- package/src/Markdown/codeSpans.test.tsx +0 -65
- package/src/Markdown/emphasis.test.tsx +0 -214
- package/src/Markdown/fenceInfo.test.tsx +0 -47
- package/src/Markdown/imageAlt.test.tsx +0 -84
- package/src/Markdown/incremental.test.ts +0 -1198
- package/src/Markdown/incrementalIndentation.test.tsx +0 -36
- package/src/Markdown/indentedFences.test.tsx +0 -374
- package/src/Markdown/indentedTables.test.tsx +0 -53
- package/src/Markdown/linkBrackets.test.tsx +0 -116
- package/src/Markdown/linkDestinationLinear.test.tsx +0 -54
- package/src/Markdown/linkDestinations.test.tsx +0 -127
- package/src/Markdown/linkTextCode.test.tsx +0 -65
- package/src/Markdown/listBullets.test.tsx +0 -55
- package/src/Markdown/listContinuation.test.tsx +0 -94
- package/src/Markdown/listThematicBreak.test.tsx +0 -49
- package/src/Markdown/longLinkLabels.test.tsx +0 -49
- package/src/Markdown/openFenceFinalNewline.test.tsx +0 -85
- package/src/Markdown/parser.perf.test.ts +0 -398
- package/src/Markdown/parser.public.test.ts +0 -144
- package/src/Markdown/parser.test.ts +0 -1925
- package/src/Markdown/plugin-renderer/MarkdownPluginNodeRenderer.test.tsx +0 -300
- package/src/Markdown/plugins/frontmatter.test.tsx +0 -150
- package/src/Markdown/plugins/headingLinks.a11y.chromium.spec.ts +0 -856
- package/src/Markdown/plugins/headingLinks.ssr.test.tsx +0 -143
- package/src/Markdown/plugins/headingLinks.test.tsx +0 -637
- package/src/Markdown/plugins/protocol.test.tsx +0 -1083
- package/src/Markdown/plugins/semanticFence.test.tsx +0 -655
- package/src/Markdown/plugins/softBreaks.test.tsx +0 -172
- package/src/Markdown/plugins/sourceDecoration.test.tsx +0 -799
- package/src/Markdown/plugins/sourceLines.test.tsx +0 -715
- package/src/Markdown/plugins/textTransform.test.ts +0 -467
- package/src/Markdown/remark.test.tsx +0 -1877
- package/src/Markdown/streaming.test.ts +0 -148
- package/src/Markdown/streamingListShapes.test.tsx +0 -93
- package/src/Markdown/trailingSpaces.test.tsx +0 -45
- package/src/MetadataList/MetadataList.test.tsx +0 -383
- package/src/MobileNav/MobileNav.test.tsx +0 -296
- package/src/MobileNav/MobileNavCloseEdgeCases.test.tsx +0 -584
- package/src/MobileNav/MobileNavCloseTiming.test.ts +0 -58
- package/src/MobileNav/MobileNavCloseVisibility.test.tsx +0 -172
- package/src/MobileNav/MobileNavEntryAnimation.test.tsx +0 -212
- package/src/MobileNav/MobileNavFocus.test.tsx +0 -553
- package/src/MobileNav/MobileNavPinchZoom.a11y.chromium.spec.ts +0 -147
- package/src/MobileNav/MobileNavReopen.test.tsx +0 -118
- package/src/MobileNav/MobileNavScrollbarGutter.test.tsx +0 -109
- package/src/MobileNav/MobileNavToggle.test.tsx +0 -179
- package/src/MobileNav/__tests__/MobileNavHeader.a11y.chromium.spec.ts +0 -89
- package/src/MobileNav/__tests__/MobileNavWidth.a11y.chromium.spec.ts +0 -103
- package/src/MoreMenu/MoreMenu.test.tsx +0 -367
- package/src/MultiSelector/CreateRow.a11y.chromium.spec.ts +0 -148
- package/src/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.ts +0 -72
- package/src/MultiSelector/MultiSelector.focusableDisabled.test.tsx +0 -121
- package/src/MultiSelector/MultiSelector.fr10.test.tsx +0 -221
- package/src/MultiSelector/MultiSelector.test.tsx +0 -4971
- package/src/MultiSelector/OptionActions.a11y.chromium.spec.ts +0 -310
- package/src/MultiSelector/__tests__/MultiSelector.a11y.chromium.spec.ts +0 -46
- package/src/MultiSelector/__tests__/MultiSelector.listbox.a11y.test.tsx +0 -135
- package/src/NavIcon/NavIcon.test.tsx +0 -41
- package/src/NavMenu/NavHeadingMenu.test.tsx +0 -714
- package/src/NavMenu/__tests__/NavMenusSlideSelection.a11y.chromium.spec.ts +0 -137
- package/src/NumberInput/NumberInput.fr10.test.tsx +0 -21
- package/src/NumberInput/NumberInput.test.tsx +0 -2697
- package/src/NumberInput/__tests__/NumberInput.a11y.chromium.spec.ts +0 -124
- package/src/NumberInput/__tests__/NumberInput.a11y.known-failures.ts +0 -26
- package/src/NumberInput/__tests__/NumberInput.a11y.renders.tsx +0 -77
- package/src/NumberInput/__tests__/NumberInput.a11y.states.ts +0 -116
- package/src/NumberInput/__tests__/NumberInput.a11y.test.tsx +0 -154
- package/src/NumberInput/__tests__/NumberInput.coarse-pointer.a11y.chromium.spec.ts +0 -102
- package/src/NumberInput/numberInputCommit.test.ts +0 -72
- package/src/NumberInput/numberParser.docblock.test.ts +0 -234
- package/src/NumberInput/numberParser.test.ts +0 -222
- package/src/Outline/Outline.test.tsx +0 -1134
- package/src/Outline/OutlineFocus.a11y.chromium.spec.ts +0 -551
- package/src/Outline/parseOutlineFromMarkdown.test.ts +0 -104
- package/src/OverflowList/OverflowList.test.tsx +0 -1073
- package/src/Overlay/Overlay.test.tsx +0 -424
- package/src/Pagination/Pagination.test.tsx +0 -1754
- package/src/Popover/Popover.test.tsx +0 -1508
- package/src/Popover/PopoverPresentation.test.tsx +0 -952
- package/src/Popover/__tests__/PopoverSecondDocument.a11y.chromium.spec.ts +0 -267
- package/src/PowerSearch/PowerSearch.test.tsx +0 -1027
- package/src/PowerSearch/PowerSearchEditPopover.test.tsx +0 -1190
- package/src/PowerSearch/PowerSearchFilterEditor.test.tsx +0 -377
- package/src/PowerSearch/PowerSearchToken.test.tsx +0 -230
- package/src/PowerSearch/PowerSearchValueEditor.test.tsx +0 -754
- package/src/PowerSearch/formatFilterValue.test.ts +0 -339
- package/src/PowerSearch/resolveDateTimeRangePart.test.ts +0 -40
- package/src/PowerSearch/usePowerSearchConfig.test.ts +0 -832
- package/src/PowerSearch/usePowerSearchSource.test.ts +0 -621
- package/src/ProgressBar/ProgressBar.test.tsx +0 -928
- package/src/ProgressBar/__tests__/ProgressBar.a11y.chromium.spec.ts +0 -127
- package/src/ProgressBar/__tests__/ProgressBar.a11y.known-failures.ts +0 -12
- package/src/ProgressBar/__tests__/ProgressBar.a11y.renders.tsx +0 -38
- package/src/ProgressBar/__tests__/ProgressBar.a11y.states.ts +0 -123
- package/src/ProgressBar/__tests__/ProgressBar.a11y.test.tsx +0 -107
- package/src/ProgressBar/__tests__/ProgressBarMotion.a11y.chromium.spec.ts +0 -831
- package/src/RadioList/RadioList.fr10.test.tsx +0 -67
- package/src/RadioList/RadioList.test.tsx +0 -1051
- package/src/RadioList/RadioListItem.press.source-build.test.mjs +0 -80
- package/src/RadioList/__tests__/RadioGroup.a11y.chromium.spec.ts +0 -274
- package/src/RadioList/__tests__/RadioGroup.a11y.known-failures.ts +0 -12
- package/src/RadioList/__tests__/RadioGroup.a11y.renders.tsx +0 -232
- package/src/RadioList/__tests__/RadioGroup.a11y.states.ts +0 -503
- package/src/RadioList/__tests__/RadioGroup.a11y.test.tsx +0 -217
- package/src/Resizable/ResizeHandle.test.tsx +0 -1067
- package/src/Resizable/__tests__/ResizeHandle.a11y.chromium.spec.ts +0 -127
- package/src/Resizable/__tests__/ResizeHandle.a11y.known-failures.ts +0 -39
- package/src/Resizable/__tests__/ResizeHandle.a11y.renders.tsx +0 -80
- package/src/Resizable/__tests__/ResizeHandle.a11y.states.ts +0 -197
- package/src/Resizable/__tests__/ResizeHandle.a11y.test.tsx +0 -123
- package/src/Resizable/shippedDirections.test.ts +0 -462
- package/src/Resizable/useResizable.test.ts +0 -1725
- package/src/Resizable/utils.test.ts +0 -74
- package/src/ScrollableArea/ScrollableArea.test.tsx +0 -304
- package/src/Section/Section.test.tsx +0 -376
- package/src/SegmentedControl/SegmentedControl.test.tsx +0 -981
- package/src/SelectableCard/SelectableCard.test.tsx +0 -216
- package/src/Selector/Selector.focusableDisabled.test.tsx +0 -127
- package/src/Selector/Selector.fr10.test.tsx +0 -149
- package/src/Selector/Selector.sheetActiveDescendant.test.tsx +0 -95
- package/src/Selector/Selector.source-build.test.mjs +0 -79
- package/src/Selector/Selector.test.tsx +0 -5117
- package/src/Selector/__tests__/Combobox.a11y.known-failures.ts +0 -27
- package/src/Selector/__tests__/Combobox.a11y.states.ts +0 -145
- package/src/Selector/__tests__/ComboboxField.a11y.chromium.spec.ts +0 -458
- package/src/Selector/__tests__/EmptyStateAnnouncement.a11y.chromium.spec.ts +0 -91
- package/src/Selector/__tests__/Listbox.a11y.chromium.spec.ts +0 -131
- package/src/Selector/__tests__/Listbox.a11y.dom.ts +0 -38
- package/src/Selector/__tests__/Listbox.a11y.inventory.test.ts +0 -63
- package/src/Selector/__tests__/Listbox.a11y.known-failures.ts +0 -12
- package/src/Selector/__tests__/Listbox.a11y.states.ts +0 -232
- package/src/Selector/__tests__/Selector.a11y.chromium.spec.ts +0 -46
- package/src/Selector/__tests__/Selector.combobox.a11y.chromium.spec.ts +0 -109
- package/src/Selector/__tests__/Selector.combobox.a11y.test.tsx +0 -133
- package/src/Selector/__tests__/Selector.listbox.a11y.test.tsx +0 -128
- package/src/Selector/useCombobox.public.test.tsx +0 -89
- package/src/Selector/useCombobox.test.tsx +0 -444
- package/src/SideNav/SideNav.test.tsx +0 -4275
- package/src/SideNav/SideNavRailMotion.test.tsx +0 -620
- package/src/SideNav/__tests__/SideNavRailMotion.interaction.browser.spec.ts +0 -542
- package/src/SizeContext/SizeContext.test.tsx +0 -226
- package/src/Skeleton/Skeleton.test.tsx +0 -148
- package/src/Slider/Slider.fr10.test.tsx +0 -93
- package/src/Slider/Slider.test.tsx +0 -1661
- package/src/Slider/__tests__/Slider.a11y.chromium.spec.ts +0 -125
- package/src/Slider/__tests__/Slider.a11y.known-failures.ts +0 -12
- package/src/Slider/__tests__/Slider.a11y.renders.tsx +0 -42
- package/src/Slider/__tests__/Slider.a11y.states.ts +0 -106
- package/src/Slider/__tests__/Slider.a11y.test.tsx +0 -105
- package/src/Spinner/Spinner.test.tsx +0 -484
- package/src/Stack/Stack.test.tsx +0 -473
- package/src/Stack/StackItem.test.tsx +0 -105
- package/src/StatusDot/StatusDot.test.tsx +0 -213
- package/src/Stepper/Stepper.public.test.ts +0 -91
- package/src/Stepper/Stepper.test.tsx +0 -2130
- package/src/Switch/Switch.focusRing.source-build.test.mjs +0 -81
- package/src/Switch/Switch.test.tsx +0 -1136
- package/src/Switch/__tests__/Switch.a11y.chromium.spec.ts +0 -211
- package/src/Switch/__tests__/Switch.a11y.known-failures.ts +0 -28
- package/src/Switch/__tests__/Switch.a11y.states.ts +0 -275
- package/src/Switch/__tests__/Switch.a11y.test.tsx +0 -144
- package/src/TabList/TabList.test.tsx +0 -1755
- package/src/TabList/__tests__/TabListOverflow.interaction.browser.spec.ts +0 -99
- package/src/TabList/__tests__/TabPressPointer.interaction.browser.spec.ts +0 -163
- package/src/TabList/__tests__/Tabs.a11y.chromium.spec.ts +0 -199
- package/src/TabList/__tests__/Tabs.a11y.known-failures.ts +0 -12
- package/src/TabList/__tests__/Tabs.a11y.renders.tsx +0 -92
- package/src/TabList/__tests__/Tabs.a11y.states.ts +0 -247
- package/src/TabList/__tests__/Tabs.a11y.test.tsx +0 -153
- package/src/Table/Table.perf.test.tsx +0 -569
- package/src/Table/Table.test.tsx +0 -1883
- package/src/Table/TableHeaderCell.test.tsx +0 -291
- package/src/Table/TableSelectionToolbar.test.tsx +0 -109
- package/src/Table/__tests__/Table.a11y.chromium.spec.ts +0 -141
- package/src/Table/__tests__/Table.a11y.contracts.ts +0 -35
- package/src/Table/__tests__/Table.a11y.renders.tsx +0 -112
- package/src/Table/__tests__/Table.a11y.states.ts +0 -136
- package/src/Table/__tests__/Table.a11y.test.tsx +0 -198
- package/src/Table/__tests__/TableMinWidth.a11y.chromium.spec.ts +0 -75
- package/src/Table/__tests__/TableRowGlide.a11y.browser.spec.ts +0 -382
- package/src/Table/__tests__/TableScroll.a11y.chromium.spec.ts +0 -138
- package/src/Table/__tests__/TableStickyDividers.a11y.browser.spec.ts +0 -560
- package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +0 -941
- package/src/Table/plugins/columnSettings/useTableColumnSettings.test.tsx +0 -175
- package/src/Table/plugins/columnSettings/useTableColumnSettingsState.test.tsx +0 -296
- package/src/Table/plugins/filtering/useTableFilterState.test.tsx +0 -143
- package/src/Table/plugins/filtering/useTableFiltering.test.tsx +0 -357
- package/src/Table/plugins/groupedRows/useTableGroupedRows-perf.test.tsx +0 -112
- package/src/Table/plugins/groupedRows/useTableGroupedRows.test.tsx +0 -409
- package/src/Table/plugins/pagination/useTablePagination-perf.test.tsx +0 -232
- package/src/Table/plugins/pagination/useTablePagination.test.tsx +0 -666
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.glide.test.tsx +0 -280
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +0 -681
- package/src/Table/plugins/rowIndex/useTableRowIndex.test.tsx +0 -132
- package/src/Table/plugins/rowStatus/useTableRowStatus.public.test.ts +0 -92
- package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +0 -519
- package/src/Table/plugins/selection/useTableSelection-perf.test.tsx +0 -258
- package/src/Table/plugins/selection/useTableSelection.test.tsx +0 -424
- package/src/Table/plugins/selection/useTableSelectionState.test.tsx +0 -451
- package/src/Table/plugins/sortable/__tests__/useTableSortable.a11y.test.tsx +0 -174
- package/src/Table/plugins/sortable/__tests__/useTableSortable.a11y.ts +0 -86
- package/src/Table/plugins/sortable/useTableSortable.test.tsx +0 -786
- package/src/Table/plugins/sortable/useTableSortableState.test.tsx +0 -580
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.test.tsx +0 -334
- package/src/Table/plugins/tree/useTableTreeData-perf.test.tsx +0 -163
- package/src/Table/plugins/tree/useTableTreeData.test.tsx +0 -992
- package/src/Table/plugins/tree/useTableTreeState.test.tsx +0 -740
- package/src/Table/tableContextMenu.test.tsx +0 -208
- package/src/Text/Text.test.tsx +0 -405
- package/src/Text/useTruncation.test.tsx +0 -196
- package/src/TextArea/TextArea.fr10.test.tsx +0 -21
- package/src/TextArea/TextArea.test.tsx +0 -1317
- package/src/TextInput/TextInput.fr10.test.tsx +0 -21
- package/src/TextInput/TextInput.test.tsx +0 -1280
- package/src/TextInput/__tests__/TextInput.a11y.chromium.spec.ts +0 -214
- package/src/TextInput/__tests__/TextInput.a11y.known-failures.ts +0 -40
- package/src/TextInput/__tests__/TextInput.a11y.renders.tsx +0 -202
- package/src/TextInput/__tests__/TextInput.a11y.states.ts +0 -384
- package/src/TextInput/__tests__/TextInput.a11y.test.tsx +0 -130
- package/src/Thumbnail/Thumbnail.test.tsx +0 -384
- package/src/TimeInput/NativeTimeInput.test.tsx +0 -343
- package/src/TimeInput/Presentation.test.tsx +0 -192
- package/src/TimeInput/TimeInput.fr10.test.tsx +0 -312
- package/src/TimeInput/TimeInput.test.tsx +0 -907
- package/src/Timer/Timer.test.tsx +0 -302
- package/src/Timestamp/Timestamp.test.tsx +0 -1661
- package/src/Timestamp/tooltipEntries.test.ts +0 -566
- package/src/Toast/ToastViewport.modalHost.test.tsx +0 -891
- package/src/Toast/ToastViewport.test.tsx +0 -3130
- package/src/Toast/useToast.test.tsx +0 -258
- package/src/ToggleButton/ToggleButton.test.tsx +0 -1000
- package/src/ToggleButton/__tests__/ToggleButton.a11y.chromium.spec.ts +0 -177
- package/src/ToggleButton/__tests__/ToggleButton.a11y.renders.tsx +0 -133
- package/src/ToggleButton/__tests__/ToggleButton.a11y.states.ts +0 -167
- package/src/ToggleButton/__tests__/ToggleButton.a11y.test.tsx +0 -103
- package/src/Token/Token.test.tsx +0 -707
- package/src/Token/__tests__/TokenRemoveTarget.a11y.chromium.spec.ts +0 -87
- package/src/Tokenizer/Tokenizer.fr10.test.tsx +0 -28
- package/src/Tokenizer/Tokenizer.props-type.test.tsx +0 -126
- package/src/Tokenizer/Tokenizer.ssr.test.tsx +0 -196
- package/src/Tokenizer/Tokenizer.test.tsx +0 -2216
- package/src/Tokenizer/TokenizerBottomSheet.test.tsx +0 -2738
- package/src/Tokenizer/__tests__/TokenizerEndLane.a11y.chromium.spec.ts +0 -505
- package/src/Toolbar/Toolbar.test.tsx +0 -600
- package/src/Toolbar/__tests__/Toolbar.a11y.chromium.spec.ts +0 -176
- package/src/Toolbar/__tests__/Toolbar.a11y.renders.tsx +0 -63
- package/src/Toolbar/__tests__/Toolbar.a11y.states.ts +0 -142
- package/src/Toolbar/__tests__/Toolbar.a11y.test.tsx +0 -126
- package/src/Tooltip/Tooltip.test.tsx +0 -819
- package/src/Tooltip/__tests__/Tooltip.a11y.chromium.spec.ts +0 -141
- package/src/Tooltip/__tests__/Tooltip.a11y.renders.tsx +0 -86
- package/src/Tooltip/__tests__/Tooltip.a11y.states.ts +0 -132
- package/src/Tooltip/__tests__/Tooltip.a11y.test.tsx +0 -126
- package/src/Tooltip/__tests__/TooltipFocusReturn.a11y.chromium.spec.ts +0 -130
- package/src/Tooltip/__tests__/TooltipHoverBridge.a11y.chromium.spec.ts +0 -75
- package/src/Tooltip/__tests__/TooltipTallContent.a11y.browser.spec.ts +0 -673
- package/src/Tooltip/__tests__/TooltipTallContentTracking.a11y.browser.spec.ts +0 -1162
- package/src/Tooltip/useTooltip.test.tsx +0 -483
- package/src/TopNav/TopNav.test.tsx +0 -863
- package/src/TopNav/TopNavMegaMenu.reduced-motion.source-build.test.mjs +0 -83
- package/src/TopNav/TopNavMegaMenu.test.tsx +0 -1153
- package/src/TopNav/TopNavMenu.test.tsx +0 -502
- package/src/TopNav/__tests__/TopNavMobileLongHeading.a11y.chromium.spec.ts +0 -75
- package/src/TreeList/TreeList.test.tsx +0 -1737
- package/src/TreeList/__tests__/TreeList.a11y.chromium.spec.ts +0 -138
- package/src/TreeList/__tests__/TreeList.a11y.renders.tsx +0 -44
- package/src/TreeList/__tests__/TreeList.a11y.states.ts +0 -164
- package/src/TreeList/__tests__/TreeList.a11y.test.tsx +0 -138
- package/src/TreeList/__tests__/TreeListGuideAlignment.interaction.browser.spec.ts +0 -127
- package/src/TreeList/__tests__/TreeListRowNames.a11y.chromium.spec.ts +0 -83
- package/src/Typeahead/BaseTypeahead.emptyState.a11y.chromium.spec.ts +0 -138
- package/src/Typeahead/BaseTypeahead.test.tsx +0 -553
- package/src/Typeahead/Typeahead.fr10.test.tsx +0 -28
- package/src/Typeahead/Typeahead.test.tsx +0 -2984
- package/src/Typeahead/TypeaheadItem.test.tsx +0 -134
- package/src/VStack/VStack.test.tsx +0 -128
- package/src/VisuallyHidden/VisuallyHidden.test.tsx +0 -115
- package/src/__tests__/BusyOwnerAnnouncement.test.tsx +0 -853
- package/src/__tests__/CardPress.a11y.chromium.spec.ts +0 -353
- package/src/__tests__/DisabledTriggerFocus.a11y.chromium.spec.ts +0 -87
- package/src/__tests__/PressModality.a11y.chromium.spec.ts +0 -392
- package/src/__tests__/PressedState.a11y.chromium.spec.ts +0 -814
- package/src/__tests__/TestIcon.tsx +0 -26
- package/src/__tests__/babelPluginAddExtensions.test.ts +0 -190
- package/src/__tests__/fastRoleQueries.ts +0 -66
- package/src/__tests__/forcedColors.ts +0 -60
- package/src/__tests__/internalModulesNotExperimental.test.ts +0 -88
- package/src/__tests__/pressState.ts +0 -216
- package/src/__tests__/stubMatchMedia.test.ts +0 -79
- package/src/__tests__/stubMatchMedia.ts +0 -95
- package/src/__tests__/stylexDeclarations.ts +0 -51
- package/src/__tests__/unthemedLength.ts +0 -34
- package/src/docPropLiterals.test.ts +0 -964
- package/src/docPropReferences.test.ts +0 -178
- package/src/docs-script.test.mjs +0 -55
- package/src/gestures/__tests__/GestureHost.test.ts +0 -2136
- package/src/gestures/__tests__/LongPressGestureRecognizer.test.ts +0 -141
- package/src/gestures/__tests__/PanGestureRecognizer.test.ts +0 -327
- package/src/gestures/__tests__/PinchGestureRecognizer.test.ts +0 -74
- package/src/gestures/__tests__/PressTracker.test.ts +0 -275
- package/src/gestures/__tests__/ScreenEdgePanGestureRecognizer.test.ts +0 -498
- package/src/gestures/__tests__/SwipeGestureRecognizer.test.ts +0 -108
- package/src/gestures/__tests__/TapGestureRecognizer.test.ts +0 -154
- package/src/gestures/__tests__/VelocityTracker.streams.test.ts +0 -243
- package/src/gestures/__tests__/VelocityTracker.test.ts +0 -261
- package/src/gestures/__tests__/arena.test.ts +0 -864
- package/src/gestures/__tests__/arenaContinuous.test.ts +0 -207
- package/src/gestures/__tests__/arenaPinchSwipeEdge.test.ts +0 -193
- package/src/gestures/__tests__/arenaTapLongPress.test.ts +0 -211
- package/src/gestures/__tests__/browser/build-fixture.mjs +0 -46
- package/src/gestures/__tests__/browser/fixture.ts +0 -307
- package/src/gestures/__tests__/browser/gestures.interaction.browser.spec.ts +0 -1137
- package/src/gestures/__tests__/browserNegotiation.test.ts +0 -293
- package/src/gestures/__tests__/fixtures/pointer-streams/README.md +0 -82
- package/src/gestures/__tests__/fixtures/pointer-streams/android-chromium-fling.json +0 -130
- package/src/gestures/__tests__/fixtures/pointer-streams/android-chromium-slow.json +0 -860
- package/src/gestures/__tests__/fixtures/pointer-streams/android-chromium-stop-release.json +0 -357
- package/src/gestures/__tests__/fixtures/pointer-streams/android-firefox-fling.json +0 -66
- package/src/gestures/__tests__/fixtures/pointer-streams/android-firefox-slow.json +0 -268
- package/src/gestures/__tests__/fixtures/pointer-streams/android-firefox-stop-release.json +0 -128
- package/src/gestures/__tests__/fixtures/pointer-streams/capture.html +0 -123
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-mouse-fling.json +0 -64
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-mouse-slow.json +0 -268
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-mouse-stop-release.json +0 -124
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-pen-fling.json +0 -64
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-pen-slow.json +0 -268
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-pen-stop-release.json +0 -124
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-touch-fling.json +0 -84
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-touch-slow.json +0 -381
- package/src/gestures/__tests__/fixtures/pointer-streams/desktop-chromium-touch-stop-release.json +0 -171
- package/src/gestures/__tests__/fixtures/pointer-streams/ios-safari-fling.json +0 -45
- package/src/gestures/__tests__/fixtures/pointer-streams/ios-safari-slow.json +0 -101
- package/src/gestures/__tests__/fixtures/pointer-streams/ios-safari-stop-release.json +0 -130
- package/src/gestures/__tests__/haptics.test.ts +0 -187
- package/src/gestures/__tests__/harness.ts +0 -252
- package/src/gestures/__tests__/pressTrackerFactory.test.ts +0 -59
- package/src/gestures/__tests__/recognizerKind.test.ts +0 -78
- package/src/gestures/__tests__/touchActionRule.test.ts +0 -54
- package/src/gestures/__tests__/useGestureRecognizer.test.tsx +0 -570
- package/src/hooks/__tests__/MenuPressShadowRoot.a11y.chromium.spec.ts +0 -144
- package/src/hooks/__tests__/menuLinkClicks.ts +0 -71
- package/src/hooks/actionGroupTracker.exports.test.ts +0 -28
- package/src/hooks/actionGroupTracker.test.ts +0 -510
- package/src/hooks/computeOverflow.test.ts +0 -422
- package/src/hooks/deprecatedApis.public.test.ts +0 -33
- package/src/hooks/menuPressGesture.test.ts +0 -253
- package/src/hooks/scrollKeyboardDelegation.test.ts +0 -188
- package/src/hooks/scrollbarGutter.test.ts +0 -167
- package/src/hooks/useAnnounce.modal.test.tsx +0 -1291
- package/src/hooks/useAnnounce.replace.test.tsx +0 -516
- package/src/hooks/useAnnounce.test.tsx +0 -293
- package/src/hooks/useAnnounceRenderedText.adopters.test.tsx +0 -235
- package/src/hooks/useAutoMediaMode.test.ts +0 -109
- package/src/hooks/useBusyAnnouncement.adopters.test.tsx +0 -69
- package/src/hooks/useBusyAnnouncement.test.tsx +0 -112
- package/src/hooks/useClickableContainer.test.tsx +0 -236
- package/src/hooks/useClipboard.test.tsx +0 -151
- package/src/hooks/useContainerReveal.test.tsx +0 -163
- package/src/hooks/useDevWarning.test.tsx +0 -45
- package/src/hooks/useEntryAnimation.ssr.test.tsx +0 -143
- package/src/hooks/useFocusTrap.test.tsx +0 -635
- package/src/hooks/useFocusTrapEscapeShim.test.tsx +0 -166
- package/src/hooks/useGridFocus.test.tsx +0 -165
- package/src/hooks/useHotkeys.test.ts +0 -265
- package/src/hooks/useImageMode.test.ts +0 -133
- package/src/hooks/useInputContainer.test.tsx +0 -180
- package/src/hooks/useInputStatusIcon.test.tsx +0 -240
- package/src/hooks/useIsHydrating.test.tsx +0 -70
- package/src/hooks/useKeyboardHint.test.tsx +0 -92
- package/src/hooks/useListFocus.test.tsx +0 -664
- package/src/hooks/useLongPress.test.tsx +0 -152
- package/src/hooks/useMediaQuery.test.ts +0 -165
- package/src/hooks/useMenuHover.test.tsx +0 -536
- package/src/hooks/useMenuPress.test.tsx +0 -565
- package/src/hooks/useMergedRefs.test.tsx +0 -62
- package/src/hooks/useOverflow.test.ts +0 -504
- package/src/hooks/useRenamedProp.test.tsx +0 -95
- package/src/hooks/useScrollLock.test.ts +0 -248
- package/src/hooks/useScrollOverflow.test.tsx +0 -323
- package/src/hooks/useScrollableArea.test.tsx +0 -836
- package/src/hooks/useStreamingText.test.ts +0 -237
- package/src/hooks/useTreeFocus.test.tsx +0 -351
- package/src/hooks/useTypeahead.test.tsx +0 -351
- package/src/i18n/__tests__/InternationalizationProvider.test.tsx +0 -128
- package/src/i18n/__tests__/e2e-pagination.test.tsx +0 -172
- package/src/i18n/__tests__/e2e-powersearch.test.tsx +0 -166
- package/src/i18n/__tests__/getLocaleDirection.test.ts +0 -40
- package/src/i18n/__tests__/resolve.test.ts +0 -325
- package/src/i18n/__tests__/useCollator.test.tsx +0 -115
- package/src/i18n/__tests__/useDirection.test.tsx +0 -66
- package/src/i18n/__tests__/useLocale.test.tsx +0 -52
- package/src/i18n/useTranslator.test.tsx +0 -267
- package/src/inputFontFloor.test.ts +0 -106
- package/src/internal/tokenizer-presentation.test.ts +0 -29
- package/src/internal/touch.test.ts +0 -44
- package/src/motion/__tests__/animatedLayout.interaction.browser.spec.ts +0 -1613
- package/src/motion/__tests__/animatedLayoutAdopters.interaction.browser.spec.ts +0 -217
- package/src/motion/__tests__/animatedLayoutBundle.ts +0 -17
- package/src/motion/__tests__/animator.interaction.browser.spec.ts +0 -843
- package/src/motion/__tests__/motionBundle.ts +0 -14
- package/src/motion/animatedLayout.boundary.test.ts +0 -155
- package/src/motion/animatedLayout.swap.test.ts +0 -827
- package/src/motion/animatedLayout.test.ts +0 -1154
- package/src/motion/animatedLayoutAdopters.test.tsx +0 -500
- package/src/motion/animator.test.ts +0 -3746
- package/src/motion/bezier.test.ts +0 -52
- package/src/motion/coast.test.ts +0 -99
- package/src/motion/decay.test.ts +0 -120
- package/src/motion/projection.test.ts +0 -107
- package/src/motion/reducedMotion.test.ts +0 -129
- package/src/motion/reducedMotionPlan.test.ts +0 -208
- package/src/motion/resolveMotion.test.ts +0 -123
- package/src/motion/resolveSnapPoint.test.ts +0 -189
- package/src/motion/roles.test.ts +0 -273
- package/src/motion/rubberBand.test.ts +0 -88
- package/src/motion/selectPage.test.ts +0 -31
- package/src/motion/spring.test.ts +0 -650
- package/src/motion/uikit/gestures.test.ts +0 -89
- package/src/motion/uikit/springRows.test.ts +0 -71
- package/src/motion/uikit/tableImports.test.ts +0 -293
- package/src/motion/uikit/uikit.test.ts +0 -364
- package/src/motion/uikit/values.test.ts +0 -121
- package/src/naming.test.ts +0 -44
- package/src/postinstall.test.mjs +0 -216
- package/src/reset.a11y.chromium.spec.ts +0 -238
- package/src/reset.test.ts +0 -205
- package/src/reset.until-found.a11y.browser.spec.ts +0 -76
- package/src/reset.until-found.test.ts +0 -32
- package/src/serverSafeComponents.test.ts +0 -675
- package/src/stylexValidation.source-build.test.mjs +0 -42
- package/src/tailwind-theme.test.ts +0 -153
- package/src/theme/MediaTheme.dom.test.tsx +0 -97
- package/src/theme/Theme.test.tsx +0 -337
- package/src/theme/__tests__/SpacingRootFontSize.a11y.chromium.spec.ts +0 -199
- package/src/theme/contrast.test.ts +0 -94
- package/src/theme/declarationBoundary.test.ts +0 -126
- package/src/theme/defineTheme.test.ts +0 -2028
- package/src/theme/derivedVarRegistry.test.ts +0 -592
- package/src/theme/expandColorScale.test.ts +0 -651
- package/src/theme/expandMotionScale.test.ts +0 -145
- package/src/theme/expandRadiusScale.test.ts +0 -59
- package/src/theme/expandTypeScale.test.ts +0 -351
- package/src/theme/extensibleAxes.test.ts +0 -432
- package/src/theme/generateThemeRules.test.ts +0 -1870
- package/src/theme/hct.test.ts +0 -93
- package/src/theme/onMediaTokens.test.ts +0 -431
- package/src/theme/publicThemeHelperContract.test.ts +0 -67
- package/src/theme/syntax/defineSyntaxTheme.diff.test.ts +0 -91
- package/src/theme/syntax/serverSafeSyntax.test.ts +0 -68
- package/src/theme/syntax/useSyntaxTheme.diff.test.tsx +0 -40
- package/src/theme/themeAdaptations.test.ts +0 -1795
- package/src/theme/themeMotion.test.ts +0 -620
- package/src/theme/themeRegistry.test.ts +0 -59
- package/src/theme/themingTargets.test.ts +0 -589
- package/src/theme/tokenValueCompat.test.ts +0 -204
- package/src/theme/tokens.test.ts +0 -441
- package/src/theme/useTheme.test.tsx +0 -322
- package/src/unicodePropertyEscapes.source-build.test.mjs +0 -69
- package/src/utils/chainEventHandlers.test.ts +0 -39
- package/src/utils/characters.test.ts +0 -141
- package/src/utils/color.test.ts +0 -233
- package/src/utils/composeEventHandlers.test.ts +0 -71
- package/src/utils/customPropertyArmLayering.test.ts +0 -131
- package/src/utils/dateParser.test.ts +0 -402
- package/src/utils/dateTypes.test.ts +0 -40
- package/src/utils/devWarning.test.ts +0 -56
- package/src/utils/edgeAutoscroll.test.ts +0 -192
- package/src/utils/focusReturn.test.ts +0 -119
- package/src/utils/getKey.test.ts +0 -25
- package/src/utils/getNodeText.test.ts +0 -24
- package/src/utils/hitArea.test.ts +0 -628
- package/src/utils/ime.test.ts +0 -32
- package/src/utils/inputAria.test.ts +0 -39
- package/src/utils/interactionModality.test.ts +0 -144
- package/src/utils/isApplePlatform.test.ts +0 -61
- package/src/utils/mergeProps.test.ts +0 -166
- package/src/utils/mergeRefs.test.ts +0 -48
- package/src/utils/parseStyleKey.test.ts +0 -56
- package/src/utils/plainDate.test.ts +0 -938
- package/src/utils/presentation.test.ts +0 -380
- package/src/utils/pressFeedback.test.ts +0 -1012
- package/src/utils/pressGesture.test.ts +0 -332
- package/src/utils/pressPaintPriority.test.ts +0 -80
- package/src/utils/pressPaintSource.test.ts +0 -65
- package/src/utils/pressableCoverage.test.ts +0 -192
- package/src/utils/primaryClick.test.ts +0 -38
- package/src/utils/safeUrl.test.ts +0 -101
- package/src/utils/sharedMutationObserver.test.ts +0 -106
- package/src/utils/sharedResizeObserver.test.ts +0 -283
- package/src/utils/themeProps.test.ts +0 -62
- package/src/utils/timeFormat.test.ts +0 -204
- package/src/utils/timeParser.test.ts +0 -295
- package/src/utils/touchPresentation.test.ts +0 -462
- package/src/utils/unicodeDigits.test.ts +0 -44
|
@@ -1,928 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @file ProgressBar.test.tsx
|
|
5
|
-
* @input Uses Vitest, Testing Library, and ProgressBar
|
|
6
|
-
* @output DOM regressions for values, labels, themes, and external mark triggers
|
|
7
|
-
* @position Colocated unit tests; mark geometry is checked in Storybook
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import {describe, it, expect, beforeAll} from 'vitest';
|
|
11
|
-
import {render, screen, waitFor} from '@testing-library/react';
|
|
12
|
-
import {ProgressBar} from './ProgressBar';
|
|
13
|
-
import {getForcedColorsRules} from '../__tests__/forcedColors';
|
|
14
|
-
|
|
15
|
-
// A labeled mark wraps the tick in a lazily-loaded Tooltip (React.lazy +
|
|
16
|
-
// Suspense). Preload that chunk once so the Tooltip (and its
|
|
17
|
-
// aria-describedby) is present synchronously on first render, keeping these
|
|
18
|
-
// tests deterministic rather than racing the dynamic import's default 1s
|
|
19
|
-
// Suspense timeout.
|
|
20
|
-
beforeAll(async () => {
|
|
21
|
-
await import('./ProgressBarMarkTooltip');
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
describe('ProgressBar', () => {
|
|
25
|
-
it('renders visible label by default', () => {
|
|
26
|
-
render(<ProgressBar value={50} label="Storage used" />);
|
|
27
|
-
expect(screen.getByText('Storage used')).toBeInTheDocument();
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it('hides label visually when isLabelHidden is true', () => {
|
|
31
|
-
render(<ProgressBar value={50} label="Hidden label" isLabelHidden />);
|
|
32
|
-
const label = screen.getByText('Hidden label');
|
|
33
|
-
expect(label).toBeInTheDocument();
|
|
34
|
-
const progressbar = screen.getByRole('progressbar');
|
|
35
|
-
expect(progressbar).toHaveAttribute('aria-labelledby');
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it('shows value label when hasValueLabel is true', () => {
|
|
39
|
-
render(<ProgressBar value={75} label="Upload" hasValueLabel />);
|
|
40
|
-
expect(screen.getByText('75%')).toBeInTheDocument();
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it('uses custom formatValueLabel', () => {
|
|
44
|
-
render(
|
|
45
|
-
<ProgressBar
|
|
46
|
-
value={3}
|
|
47
|
-
max={5}
|
|
48
|
-
label="Disk"
|
|
49
|
-
hasValueLabel
|
|
50
|
-
formatValueLabel={(v, m) => `${v} GB / ${m} GB`}
|
|
51
|
-
/>,
|
|
52
|
-
);
|
|
53
|
-
expect(screen.getByText('3 GB / 5 GB')).toBeInTheDocument();
|
|
54
|
-
const progressbar = screen.getByRole('progressbar');
|
|
55
|
-
expect(progressbar).toHaveAttribute('aria-valuetext', '3 GB / 5 GB');
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
it('sets aria-valuetext from formatValueLabel', () => {
|
|
59
|
-
render(<ProgressBar value={50} label="Progress" />);
|
|
60
|
-
const progressbar = screen.getByRole('progressbar');
|
|
61
|
-
expect(progressbar).toHaveAttribute('aria-valuetext', '50%');
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
it('clamps value to [0, max]', () => {
|
|
65
|
-
const {rerender} = render(
|
|
66
|
-
<ProgressBar value={150} max={100} label="Over" />,
|
|
67
|
-
);
|
|
68
|
-
let progressbar = screen.getByRole('progressbar');
|
|
69
|
-
expect(progressbar).toHaveAttribute('aria-valuenow', '100');
|
|
70
|
-
|
|
71
|
-
rerender(<ProgressBar value={-10} max={100} label="Under" />);
|
|
72
|
-
progressbar = screen.getByRole('progressbar');
|
|
73
|
-
expect(progressbar).toHaveAttribute('aria-valuenow', '0');
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
it('forwards ref to outer container', () => {
|
|
77
|
-
const ref = {current: null as HTMLDivElement | null};
|
|
78
|
-
render(<ProgressBar ref={ref} value={50} label="Test" />);
|
|
79
|
-
expect(ref.current).toBeInstanceOf(HTMLDivElement);
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
it('passes data-testid', () => {
|
|
83
|
-
render(<ProgressBar value={50} label="Test" data-testid="my-progress" />);
|
|
84
|
-
expect(screen.getByTestId('my-progress')).toBeInTheDocument();
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
it('renders with all variant options', () => {
|
|
88
|
-
const variants = [
|
|
89
|
-
'accent',
|
|
90
|
-
'success',
|
|
91
|
-
'warning',
|
|
92
|
-
'error',
|
|
93
|
-
'neutral',
|
|
94
|
-
] as const;
|
|
95
|
-
for (const variant of variants) {
|
|
96
|
-
const {unmount} = render(
|
|
97
|
-
<ProgressBar value={50} label={variant} variant={variant} />,
|
|
98
|
-
);
|
|
99
|
-
expect(screen.getByRole('progressbar')).toBeInTheDocument();
|
|
100
|
-
unmount();
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
it('renders at fixed 8px track height', () => {
|
|
105
|
-
render(<ProgressBar value={50} label="Progress" />);
|
|
106
|
-
expect(screen.getByRole('progressbar')).toBeInTheDocument();
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
it('shows value label with hidden label', () => {
|
|
110
|
-
render(
|
|
111
|
-
<ProgressBar value={60} label="Hidden" isLabelHidden hasValueLabel />,
|
|
112
|
-
);
|
|
113
|
-
expect(screen.getByText('60%')).toBeInTheDocument();
|
|
114
|
-
expect(screen.getByText('Hidden')).toBeInTheDocument();
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
it('renders no visible value label when isLabelHidden without hasValueLabel', () => {
|
|
118
|
-
// Mirrors the intended "accessible label only" composition: the text
|
|
119
|
-
// label is kept for assistive tech (visually hidden) while no extra
|
|
120
|
-
// visible value label is surfaced.
|
|
121
|
-
render(<ProgressBar value={42} label="Context usage" isLabelHidden />);
|
|
122
|
-
expect(screen.queryByText('42%')).not.toBeInTheDocument();
|
|
123
|
-
const label = screen.getByText('Context usage');
|
|
124
|
-
expect(label).toBeInTheDocument();
|
|
125
|
-
const progressbar = screen.getByRole('progressbar');
|
|
126
|
-
expect(progressbar).toHaveAttribute('aria-labelledby', label.id);
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
it('handles zero max gracefully', () => {
|
|
130
|
-
render(<ProgressBar value={0} max={0} label="Empty" />);
|
|
131
|
-
const progressbar = screen.getByRole('progressbar');
|
|
132
|
-
expect(progressbar).toHaveAttribute('aria-valuenow', '0');
|
|
133
|
-
expect(progressbar).toHaveAttribute('aria-valuemax', '0');
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
it('treats a NaN value as empty progress instead of leaking "NaN"', () => {
|
|
137
|
-
// e.g. an upstream `loaded / total * 100` where total is still 0.
|
|
138
|
-
render(<ProgressBar value={NaN} label="Upload" hasValueLabel />);
|
|
139
|
-
const progressbar = screen.getByRole('progressbar');
|
|
140
|
-
expect(progressbar).toHaveAttribute('aria-valuenow', '0');
|
|
141
|
-
expect(progressbar.getAttribute('aria-valuetext')).toBe('0%');
|
|
142
|
-
expect(screen.queryByText(/NaN/)).not.toBeInTheDocument();
|
|
143
|
-
// The filled share must be a real percentage, not "NaN%".
|
|
144
|
-
const fill = progressbar.firstElementChild as HTMLElement;
|
|
145
|
-
expect(fill.style.getPropertyValue('--_progress-bar-fill')).toBe('0%');
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
it('treats a NaN max as an empty range instead of leaking "NaN"', () => {
|
|
149
|
-
render(<ProgressBar value={5} max={NaN} label="Steps" hasValueLabel />);
|
|
150
|
-
const progressbar = screen.getByRole('progressbar');
|
|
151
|
-
expect(progressbar).toHaveAttribute('aria-valuenow', '0');
|
|
152
|
-
expect(progressbar).toHaveAttribute('aria-valuemax', '0');
|
|
153
|
-
expect(screen.queryByText(/NaN/)).not.toBeInTheDocument();
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
it('does not render NaN in the value label when max is zero', () => {
|
|
157
|
-
render(<ProgressBar value={0} max={0} label="Empty" hasValueLabel />);
|
|
158
|
-
expect(screen.queryByText(/NaN|Infinity/)).not.toBeInTheDocument();
|
|
159
|
-
const progressbar = screen.getByRole('progressbar');
|
|
160
|
-
expect(progressbar.getAttribute('aria-valuetext') ?? '').not.toMatch(
|
|
161
|
-
/NaN|Infinity/,
|
|
162
|
-
);
|
|
163
|
-
expect(screen.getByText('0%')).toBeInTheDocument();
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
// Disabled state
|
|
167
|
-
describe('disabled state', () => {
|
|
168
|
-
it('renders with isDisabled', () => {
|
|
169
|
-
render(
|
|
170
|
-
<ProgressBar value={50} label="Canceled" isDisabled hasValueLabel />,
|
|
171
|
-
);
|
|
172
|
-
expect(screen.getByRole('progressbar')).toBeInTheDocument();
|
|
173
|
-
expect(screen.getByText('50%')).toBeInTheDocument();
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
it('still renders label when disabled', () => {
|
|
177
|
-
render(<ProgressBar value={50} label="Canceled upload" isDisabled />);
|
|
178
|
-
expect(screen.getByText('Canceled upload')).toBeInTheDocument();
|
|
179
|
-
});
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
// Indeterminate mode tests
|
|
183
|
-
describe('indeterminate mode', () => {
|
|
184
|
-
it('omits authored value attributes while the value is indeterminate', () => {
|
|
185
|
-
render(<ProgressBar isIndeterminate label="Loading" />);
|
|
186
|
-
const progressbar = screen.getByRole('progressbar');
|
|
187
|
-
expect(progressbar).not.toHaveAttribute('aria-valuenow');
|
|
188
|
-
expect(progressbar).not.toHaveAttribute('aria-valuemin');
|
|
189
|
-
expect(progressbar).not.toHaveAttribute('aria-valuemax');
|
|
190
|
-
expect(progressbar).not.toHaveAttribute('aria-valuetext');
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
it('still renders label when indeterminate', () => {
|
|
194
|
-
render(<ProgressBar isIndeterminate label="Processing" />);
|
|
195
|
-
expect(screen.getByText('Processing')).toBeInTheDocument();
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
it('hides value label when indeterminate even if hasValueLabel is true', () => {
|
|
199
|
-
render(
|
|
200
|
-
<ProgressBar
|
|
201
|
-
isIndeterminate
|
|
202
|
-
label="Loading"
|
|
203
|
-
value={50}
|
|
204
|
-
hasValueLabel
|
|
205
|
-
/>,
|
|
206
|
-
);
|
|
207
|
-
expect(screen.queryByText('50%')).not.toBeInTheDocument();
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
it('is labelled via aria-labelledby when indeterminate', () => {
|
|
211
|
-
render(<ProgressBar isIndeterminate label="Loading data" />);
|
|
212
|
-
const progressbar = screen.getByRole('progressbar');
|
|
213
|
-
expect(progressbar).toHaveAttribute('aria-labelledby');
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
it('renders with all variants in indeterminate mode', () => {
|
|
217
|
-
const variants = [
|
|
218
|
-
'accent',
|
|
219
|
-
'success',
|
|
220
|
-
'warning',
|
|
221
|
-
'error',
|
|
222
|
-
'neutral',
|
|
223
|
-
] as const;
|
|
224
|
-
for (const variant of variants) {
|
|
225
|
-
const {unmount} = render(
|
|
226
|
-
<ProgressBar isIndeterminate label={variant} variant={variant} />,
|
|
227
|
-
);
|
|
228
|
-
expect(screen.getByRole('progressbar')).toBeInTheDocument();
|
|
229
|
-
unmount();
|
|
230
|
-
}
|
|
231
|
-
});
|
|
232
|
-
|
|
233
|
-
it('drives a direction-aware indeterminate slide (mirrored keyframe under RTL)', () => {
|
|
234
|
-
// StyleX injects the keyframes + the atomic rule that swaps the
|
|
235
|
-
// animation-name under `[dir="rtl"]`. Scan the injected CSS so we can
|
|
236
|
-
// assert the RTL branch exists without relying on jsdom animation.
|
|
237
|
-
function injectedCss(): string {
|
|
238
|
-
let out = '';
|
|
239
|
-
for (const sheet of Array.from(document.styleSheets)) {
|
|
240
|
-
try {
|
|
241
|
-
for (const rule of Array.from(sheet.cssRules)) {
|
|
242
|
-
out += rule.cssText + '\n';
|
|
243
|
-
}
|
|
244
|
-
} catch {
|
|
245
|
-
// ignore cross-origin sheets
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
out += Array.from(document.querySelectorAll('style'))
|
|
249
|
-
.map(s => s.textContent || '')
|
|
250
|
-
.join('\n');
|
|
251
|
-
return out;
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
render(<ProgressBar isIndeterminate label="Loading" />);
|
|
255
|
-
const css = injectedCss();
|
|
256
|
-
// LTR keyframe slides physically left → right (−100% → 250%).
|
|
257
|
-
expect(css).toMatch(/translateX\(-100%\)/);
|
|
258
|
-
expect(css).toMatch(/translateX\(250%\)/);
|
|
259
|
-
// RTL keyframe mirrors it (100% → −250%) so the bar travels along the
|
|
260
|
-
// reading flow (inline-start → inline-end, i.e. right → left).
|
|
261
|
-
expect(css).toMatch(/translateX\(100%\)/);
|
|
262
|
-
expect(css).toMatch(/translateX\(-250%\)/);
|
|
263
|
-
// The animation-name is swapped specifically under `[dir="rtl"]`.
|
|
264
|
-
expect(css).toMatch(/:is\(\[dir="rtl"\][^)]*\)[^{]*\{\s*animation-name:/);
|
|
265
|
-
});
|
|
266
|
-
});
|
|
267
|
-
|
|
268
|
-
// Target marks
|
|
269
|
-
describe('target marks', () => {
|
|
270
|
-
const MARK = '.astryx-progress-bar-mark';
|
|
271
|
-
|
|
272
|
-
// The StyleX atomic classes on an element, without the stable astryx-*
|
|
273
|
-
// theme classes and the bare variant/placement tokens — so a comparison
|
|
274
|
-
// reflects the resolved styles, not the reflected props.
|
|
275
|
-
function styleClasses(el: HTMLElement): string {
|
|
276
|
-
return Array.from(el.classList)
|
|
277
|
-
.filter(c => /^x[a-z0-9]+$/.test(c))
|
|
278
|
-
.sort()
|
|
279
|
-
.join(' ');
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
it('renders no mark elements when marks is omitted', () => {
|
|
283
|
-
const {container} = render(<ProgressBar value={50} label="Progress" />);
|
|
284
|
-
expect(container.querySelectorAll(MARK)).toHaveLength(0);
|
|
285
|
-
});
|
|
286
|
-
|
|
287
|
-
it('renders no mark elements for an empty marks array', () => {
|
|
288
|
-
const {container} = render(
|
|
289
|
-
<ProgressBar value={50} label="Progress" marks={[]} />,
|
|
290
|
-
);
|
|
291
|
-
expect(container.querySelectorAll(MARK)).toHaveLength(0);
|
|
292
|
-
});
|
|
293
|
-
|
|
294
|
-
it('renders a mark at the position matching its value', () => {
|
|
295
|
-
const {container} = render(
|
|
296
|
-
<ProgressBar
|
|
297
|
-
value={40}
|
|
298
|
-
label="Progress"
|
|
299
|
-
marks={[{value: 80, label: 'M'}]}
|
|
300
|
-
/>,
|
|
301
|
-
);
|
|
302
|
-
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
303
|
-
expect(marks).toHaveLength(1);
|
|
304
|
-
// value 80 of max 100 -> 80% along the track (RTL-safe logical property).
|
|
305
|
-
expect(marks[0].style.insetInlineStart).toBe('80%');
|
|
306
|
-
});
|
|
307
|
-
|
|
308
|
-
it('positions marks relative to a custom max', () => {
|
|
309
|
-
const {container} = render(
|
|
310
|
-
<ProgressBar
|
|
311
|
-
value={1}
|
|
312
|
-
max={5}
|
|
313
|
-
label="Steps"
|
|
314
|
-
marks={[{value: 4, label: 'M'}]}
|
|
315
|
-
/>,
|
|
316
|
-
);
|
|
317
|
-
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
318
|
-
// value 4 of max 5 -> 80%.
|
|
319
|
-
expect(marks[0].style.insetInlineStart).toBe('80%');
|
|
320
|
-
});
|
|
321
|
-
|
|
322
|
-
it('keeps a mark past the current value visible', () => {
|
|
323
|
-
// A mark beyond the fill still renders — it layers above the fill.
|
|
324
|
-
const {container} = render(
|
|
325
|
-
<ProgressBar
|
|
326
|
-
value={20}
|
|
327
|
-
label="Progress"
|
|
328
|
-
marks={[{value: 90, label: 'M'}]}
|
|
329
|
-
/>,
|
|
330
|
-
);
|
|
331
|
-
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
332
|
-
expect(marks).toHaveLength(1);
|
|
333
|
-
expect(marks[0].style.insetInlineStart).toBe('90%');
|
|
334
|
-
});
|
|
335
|
-
|
|
336
|
-
it('renders multiple marks', () => {
|
|
337
|
-
const {container} = render(
|
|
338
|
-
<ProgressBar
|
|
339
|
-
value={50}
|
|
340
|
-
label="Progress"
|
|
341
|
-
marks={[
|
|
342
|
-
{value: 25, label: 'M'},
|
|
343
|
-
{value: 50, label: 'M'},
|
|
344
|
-
{value: 80, label: 'M'},
|
|
345
|
-
]}
|
|
346
|
-
/>,
|
|
347
|
-
);
|
|
348
|
-
expect(container.querySelectorAll(MARK)).toHaveLength(3);
|
|
349
|
-
});
|
|
350
|
-
|
|
351
|
-
it('clamps out-of-range mark positions to the track edges', () => {
|
|
352
|
-
const {container} = render(
|
|
353
|
-
<ProgressBar
|
|
354
|
-
value={50}
|
|
355
|
-
label="Progress"
|
|
356
|
-
marks={[
|
|
357
|
-
{value: -10, label: 'M'},
|
|
358
|
-
{value: 150, label: 'M'},
|
|
359
|
-
]}
|
|
360
|
-
/>,
|
|
361
|
-
);
|
|
362
|
-
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
363
|
-
expect(marks).toHaveLength(2);
|
|
364
|
-
expect(marks[0].style.insetInlineStart).toBe('0%');
|
|
365
|
-
expect(marks[1].style.insetInlineStart).toBe('100%');
|
|
366
|
-
});
|
|
367
|
-
|
|
368
|
-
it('drops non-finite mark values', () => {
|
|
369
|
-
const {container} = render(
|
|
370
|
-
<ProgressBar
|
|
371
|
-
value={50}
|
|
372
|
-
label="Progress"
|
|
373
|
-
marks={[
|
|
374
|
-
{value: NaN, label: 'M'},
|
|
375
|
-
{value: Infinity, label: 'M'},
|
|
376
|
-
{value: 60, label: 'M'},
|
|
377
|
-
]}
|
|
378
|
-
/>,
|
|
379
|
-
);
|
|
380
|
-
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
381
|
-
expect(marks).toHaveLength(1);
|
|
382
|
-
expect(marks[0].style.insetInlineStart).toBe('60%');
|
|
383
|
-
});
|
|
384
|
-
|
|
385
|
-
it('does not render marks in indeterminate mode', () => {
|
|
386
|
-
const {container} = render(
|
|
387
|
-
<ProgressBar
|
|
388
|
-
isIndeterminate
|
|
389
|
-
label="Loading"
|
|
390
|
-
marks={[{value: 80, label: 'M'}]}
|
|
391
|
-
/>,
|
|
392
|
-
);
|
|
393
|
-
expect(container.querySelectorAll(MARK)).toHaveLength(0);
|
|
394
|
-
});
|
|
395
|
-
|
|
396
|
-
// Mark color follows what the mark sits on: inside the filled area it
|
|
397
|
-
// takes the fill variant's on-color, out on the bare track it takes the
|
|
398
|
-
// primary text color. The choice is reflected as `data-placement`
|
|
399
|
-
// (plus `data-variant`, mirroring the fill) so themes can target it and
|
|
400
|
-
// tests can assert it without reading atomic class names.
|
|
401
|
-
it('marks the ticks inside the filled area as placed on the fill', () => {
|
|
402
|
-
const {container} = render(
|
|
403
|
-
<ProgressBar
|
|
404
|
-
value={60}
|
|
405
|
-
label="Progress"
|
|
406
|
-
marks={[
|
|
407
|
-
{value: 25, label: 'Behind'},
|
|
408
|
-
{value: 90, label: 'Ahead'},
|
|
409
|
-
]}
|
|
410
|
-
/>,
|
|
411
|
-
);
|
|
412
|
-
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
413
|
-
expect(marks[0]).toHaveAttribute('data-placement', 'fill');
|
|
414
|
-
expect(marks[1]).toHaveAttribute('data-placement', 'track');
|
|
415
|
-
// Different placements resolve to different color styles.
|
|
416
|
-
expect(styleClasses(marks[0])).not.toBe(styleClasses(marks[1]));
|
|
417
|
-
});
|
|
418
|
-
|
|
419
|
-
it('treats a mark exactly at the current value as on the fill', () => {
|
|
420
|
-
const {container} = render(
|
|
421
|
-
<ProgressBar
|
|
422
|
-
value={70}
|
|
423
|
-
label="Progress"
|
|
424
|
-
marks={[{value: 70, label: 'Goal'}]}
|
|
425
|
-
/>,
|
|
426
|
-
);
|
|
427
|
-
expect(container.querySelector(MARK)).toHaveAttribute(
|
|
428
|
-
'data-placement',
|
|
429
|
-
'fill',
|
|
430
|
-
);
|
|
431
|
-
});
|
|
432
|
-
|
|
433
|
-
it('places every mark on the track at zero progress', () => {
|
|
434
|
-
// With no fill drawn, even a mark at 0 sits on the bare track.
|
|
435
|
-
const {container} = render(
|
|
436
|
-
<ProgressBar
|
|
437
|
-
value={0}
|
|
438
|
-
label="Progress"
|
|
439
|
-
marks={[
|
|
440
|
-
{value: 0, label: 'Start'},
|
|
441
|
-
{value: 50, label: 'Goal'},
|
|
442
|
-
]}
|
|
443
|
-
/>,
|
|
444
|
-
);
|
|
445
|
-
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
446
|
-
expect(marks[0]).toHaveAttribute('data-placement', 'track');
|
|
447
|
-
expect(marks[1]).toHaveAttribute('data-placement', 'track');
|
|
448
|
-
expect(styleClasses(marks[0])).toBe(styleClasses(marks[1]));
|
|
449
|
-
});
|
|
450
|
-
|
|
451
|
-
it('mirrors the fill variant on marks so the on-color matches the bar', () => {
|
|
452
|
-
const {container} = render(
|
|
453
|
-
<ProgressBar
|
|
454
|
-
value={80}
|
|
455
|
-
variant="warning"
|
|
456
|
-
label="Budget used"
|
|
457
|
-
marks={[
|
|
458
|
-
{value: 50, label: 'Half'},
|
|
459
|
-
{value: 95, label: 'Cap'},
|
|
460
|
-
]}
|
|
461
|
-
/>,
|
|
462
|
-
);
|
|
463
|
-
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
464
|
-
expect(marks[0]).toHaveAttribute('data-variant', 'warning');
|
|
465
|
-
expect(marks[0]).toHaveAttribute('data-placement', 'fill');
|
|
466
|
-
expect(marks[1]).toHaveAttribute('data-variant', 'warning');
|
|
467
|
-
expect(marks[1]).toHaveAttribute('data-placement', 'track');
|
|
468
|
-
});
|
|
469
|
-
|
|
470
|
-
it('uses the disabled variant for marks when the bar is disabled', () => {
|
|
471
|
-
const {container} = render(
|
|
472
|
-
<ProgressBar
|
|
473
|
-
value={80}
|
|
474
|
-
variant="error"
|
|
475
|
-
isDisabled
|
|
476
|
-
label="Canceled"
|
|
477
|
-
marks={[{value: 50, label: 'Half'}]}
|
|
478
|
-
/>,
|
|
479
|
-
);
|
|
480
|
-
expect(container.querySelector(MARK)).toHaveAttribute(
|
|
481
|
-
'data-variant',
|
|
482
|
-
'disabled',
|
|
483
|
-
);
|
|
484
|
-
});
|
|
485
|
-
|
|
486
|
-
it('keeps one plain foreground on both sides for neutral and disabled bars', () => {
|
|
487
|
-
// The neutral/disabled fill is the muted gray — it carries no semantic
|
|
488
|
-
// weight and has no on-token, so a mark on it takes the same plain
|
|
489
|
-
// foreground it would have out on the track.
|
|
490
|
-
for (const props of [
|
|
491
|
-
{variant: 'neutral'} as const,
|
|
492
|
-
{isDisabled: true} as const,
|
|
493
|
-
]) {
|
|
494
|
-
const {container, unmount} = render(
|
|
495
|
-
<ProgressBar
|
|
496
|
-
value={60}
|
|
497
|
-
label="Progress"
|
|
498
|
-
{...props}
|
|
499
|
-
marks={[
|
|
500
|
-
{value: 20, label: 'On fill'},
|
|
501
|
-
{value: 90, label: 'On track'},
|
|
502
|
-
]}
|
|
503
|
-
/>,
|
|
504
|
-
);
|
|
505
|
-
const marks = container.querySelectorAll<HTMLElement>(MARK);
|
|
506
|
-
expect(marks[0]).toHaveAttribute('data-placement', 'fill');
|
|
507
|
-
expect(marks[1]).toHaveAttribute('data-placement', 'track');
|
|
508
|
-
expect(styleClasses(marks[0])).toBe(styleClasses(marks[1]));
|
|
509
|
-
unmount();
|
|
510
|
-
}
|
|
511
|
-
});
|
|
512
|
-
|
|
513
|
-
it("dims a disabled bar's marks below a live one's", () => {
|
|
514
|
-
// A disabled bar is deliberately low-emphasis (its label and value text
|
|
515
|
-
// drop to muted colors), so its marks step down to the secondary
|
|
516
|
-
// foreground on both sides rather than shouting over the grayed-out
|
|
517
|
-
// bar. A live neutral bar — same muted gray fill — keeps the
|
|
518
|
-
// full-contrast primary foreground.
|
|
519
|
-
const MARKS = [
|
|
520
|
-
{value: 20, label: 'On fill'},
|
|
521
|
-
{value: 90, label: 'On track'},
|
|
522
|
-
];
|
|
523
|
-
const {container: live} = render(
|
|
524
|
-
<ProgressBar value={60} variant="neutral" label="A" marks={MARKS} />,
|
|
525
|
-
);
|
|
526
|
-
const {container: off} = render(
|
|
527
|
-
<ProgressBar value={60} isDisabled label="B" marks={MARKS} />,
|
|
528
|
-
);
|
|
529
|
-
const liveMarks = live.querySelectorAll<HTMLElement>(MARK);
|
|
530
|
-
const offMarks = off.querySelectorAll<HTMLElement>(MARK);
|
|
531
|
-
expect(styleClasses(offMarks[0])).not.toBe(styleClasses(liveMarks[0]));
|
|
532
|
-
expect(styleClasses(offMarks[1])).not.toBe(styleClasses(liveMarks[1]));
|
|
533
|
-
});
|
|
534
|
-
|
|
535
|
-
it('recolors marks per variant when they sit on the fill', () => {
|
|
536
|
-
// Two bars at the same progress with different variants give their
|
|
537
|
-
// on-fill marks different colors (different atomic classes), while
|
|
538
|
-
// their on-track marks stay the same divider color.
|
|
539
|
-
const {container: accent} = render(
|
|
540
|
-
<ProgressBar
|
|
541
|
-
value={60}
|
|
542
|
-
variant="accent"
|
|
543
|
-
label="A"
|
|
544
|
-
marks={[
|
|
545
|
-
{value: 20, label: 'On fill'},
|
|
546
|
-
{value: 90, label: 'On track'},
|
|
547
|
-
]}
|
|
548
|
-
/>,
|
|
549
|
-
);
|
|
550
|
-
const {container: error} = render(
|
|
551
|
-
<ProgressBar
|
|
552
|
-
value={60}
|
|
553
|
-
variant="error"
|
|
554
|
-
label="B"
|
|
555
|
-
marks={[
|
|
556
|
-
{value: 20, label: 'On fill'},
|
|
557
|
-
{value: 90, label: 'On track'},
|
|
558
|
-
]}
|
|
559
|
-
/>,
|
|
560
|
-
);
|
|
561
|
-
const accentMarks = accent.querySelectorAll<HTMLElement>(MARK);
|
|
562
|
-
const errorMarks = error.querySelectorAll<HTMLElement>(MARK);
|
|
563
|
-
expect(styleClasses(accentMarks[0])).not.toBe(
|
|
564
|
-
styleClasses(errorMarks[0]),
|
|
565
|
-
);
|
|
566
|
-
expect(styleClasses(accentMarks[1])).toBe(styleClasses(errorMarks[1]));
|
|
567
|
-
});
|
|
568
|
-
|
|
569
|
-
it('renders every mark as a focusable trigger (label is required, never decorative)', () => {
|
|
570
|
-
const {container} = render(
|
|
571
|
-
<ProgressBar
|
|
572
|
-
value={50}
|
|
573
|
-
label="Progress"
|
|
574
|
-
marks={[{value: 80, label: 'Goal'}]}
|
|
575
|
-
/>,
|
|
576
|
-
);
|
|
577
|
-
const mark = container.querySelector<HTMLElement>(MARK)!;
|
|
578
|
-
// A mark always stands for something meaningful, so it is never
|
|
579
|
-
// aria-hidden and is always keyboard-focusable to reveal its label.
|
|
580
|
-
expect(mark).not.toHaveAttribute('aria-hidden');
|
|
581
|
-
expect(mark).toHaveAttribute('tabindex', '0');
|
|
582
|
-
// The name comes from the Tooltip (aria-describedby), not a role/label on
|
|
583
|
-
// the tick itself, so the progressbar's own subtree stays clean.
|
|
584
|
-
expect(mark).not.toHaveAttribute('role');
|
|
585
|
-
expect(mark).not.toHaveAttribute('aria-label');
|
|
586
|
-
});
|
|
587
|
-
|
|
588
|
-
it('reveals a labeled mark via a focusable Tooltip trigger', async () => {
|
|
589
|
-
const {container} = render(
|
|
590
|
-
<ProgressBar
|
|
591
|
-
value={50}
|
|
592
|
-
label="Progress"
|
|
593
|
-
marks={[{value: 80, label: 'Goal'}]}
|
|
594
|
-
/>,
|
|
595
|
-
);
|
|
596
|
-
// Focusable so keyboard users can reveal the label; named via the
|
|
597
|
-
// Tooltip's aria-describedby rather than a labeled child of the bar.
|
|
598
|
-
// The Tooltip loads lazily (Suspense), so re-query the live element and
|
|
599
|
-
// wait for it to attach aria-describedby.
|
|
600
|
-
const mark0 = container.querySelector<HTMLElement>(MARK)!;
|
|
601
|
-
expect(mark0).toHaveAttribute('tabindex', '0');
|
|
602
|
-
expect(mark0).not.toHaveAttribute('aria-hidden');
|
|
603
|
-
await waitFor(() =>
|
|
604
|
-
expect(container.querySelector(MARK)).toHaveAttribute(
|
|
605
|
-
'aria-describedby',
|
|
606
|
-
),
|
|
607
|
-
);
|
|
608
|
-
const mark = container.querySelector<HTMLElement>(MARK)!;
|
|
609
|
-
const tip = document.getElementById(
|
|
610
|
-
mark.getAttribute('aria-describedby')!,
|
|
611
|
-
);
|
|
612
|
-
expect(tip).toHaveTextContent('Goal');
|
|
613
|
-
});
|
|
614
|
-
|
|
615
|
-
it('keeps the progressbar element free of role="img"/aria-label children', () => {
|
|
616
|
-
// Marks stay outside the progressbar's presentational subtree; their
|
|
617
|
-
// Tooltip descriptions must not change the bar's own semantics.
|
|
618
|
-
const {container} = render(
|
|
619
|
-
<ProgressBar
|
|
620
|
-
value={50}
|
|
621
|
-
label="Progress"
|
|
622
|
-
marks={[{value: 80, label: 'Goal'}]}
|
|
623
|
-
/>,
|
|
624
|
-
);
|
|
625
|
-
const progressbar = screen.getByRole('progressbar');
|
|
626
|
-
expect(progressbar.querySelector('[role="img"]')).toBeNull();
|
|
627
|
-
expect(progressbar.querySelector('[aria-label]')).toBeNull();
|
|
628
|
-
expect(container.querySelectorAll(MARK)).toHaveLength(1);
|
|
629
|
-
});
|
|
630
|
-
|
|
631
|
-
it('does not add mark info to the progressbar aria-valuetext', () => {
|
|
632
|
-
render(
|
|
633
|
-
<ProgressBar
|
|
634
|
-
value={50}
|
|
635
|
-
label="Progress"
|
|
636
|
-
marks={[{value: 80, label: 'Goal'}]}
|
|
637
|
-
/>,
|
|
638
|
-
);
|
|
639
|
-
const progressbar = screen.getByRole('progressbar');
|
|
640
|
-
expect(progressbar.getAttribute('aria-valuetext')).toBe('50%');
|
|
641
|
-
});
|
|
642
|
-
|
|
643
|
-
it('keeps the fill as the progressbar child when marks are rendered', () => {
|
|
644
|
-
// Only the fill belongs to the semantic track. That the focusable marks
|
|
645
|
-
// stay outside its presentational subtree is the progressbar contract's
|
|
646
|
-
// target-marks state (progressbar.subtree.no-focusable-descendants).
|
|
647
|
-
const {container} = render(
|
|
648
|
-
<ProgressBar
|
|
649
|
-
value={50}
|
|
650
|
-
label="Progress"
|
|
651
|
-
marks={[{value: 80, label: 'M'}]}
|
|
652
|
-
/>,
|
|
653
|
-
);
|
|
654
|
-
const progressbar = screen.getByRole('progressbar');
|
|
655
|
-
const fill = progressbar.firstElementChild as HTMLElement;
|
|
656
|
-
expect(fill.style.getPropertyValue('--_progress-bar-fill')).toBe('50%');
|
|
657
|
-
expect(fill.classList.contains('astryx-progress-bar-mark')).toBe(false);
|
|
658
|
-
expect(container.querySelectorAll(MARK)).toHaveLength(1);
|
|
659
|
-
});
|
|
660
|
-
|
|
661
|
-
it('keeps marks outside the clipping track, so a themed tall mark can still overhang', () => {
|
|
662
|
-
// The track clips its fill to the rounded rail. Marks sit beside the
|
|
663
|
-
// track in its unclipped container, never inside it, so a theme that
|
|
664
|
-
// makes a mark taller than the bar still sees it overhang both edges.
|
|
665
|
-
const {container} = render(
|
|
666
|
-
<ProgressBar
|
|
667
|
-
value={50}
|
|
668
|
-
label="Progress"
|
|
669
|
-
marks={[{value: 80, label: 'M'}]}
|
|
670
|
-
/>,
|
|
671
|
-
);
|
|
672
|
-
const progressbar = screen.getByRole('progressbar');
|
|
673
|
-
const marks = Array.from(container.querySelectorAll<HTMLElement>(MARK));
|
|
674
|
-
expect(marks).toHaveLength(1);
|
|
675
|
-
let css = '';
|
|
676
|
-
for (const sheet of Array.from(document.styleSheets)) {
|
|
677
|
-
for (const rule of Array.from(sheet.cssRules)) {
|
|
678
|
-
css += rule.cssText + '\n';
|
|
679
|
-
}
|
|
680
|
-
}
|
|
681
|
-
const clips = (el: Element) =>
|
|
682
|
-
Array.from(el.classList).some(cls =>
|
|
683
|
-
new RegExp(`\\.${cls}\\b[^{]*\\{[^}]*overflow:\\s*hidden`, 'i').test(
|
|
684
|
-
css,
|
|
685
|
-
),
|
|
686
|
-
);
|
|
687
|
-
for (const mark of marks) {
|
|
688
|
-
expect(progressbar.contains(mark)).toBe(false);
|
|
689
|
-
// No ancestor between the mark and the bar's root clips it.
|
|
690
|
-
let node = mark.parentElement;
|
|
691
|
-
while (node != null && node !== container) {
|
|
692
|
-
expect(clips(node)).toBe(false);
|
|
693
|
-
node = node.parentElement;
|
|
694
|
-
}
|
|
695
|
-
}
|
|
696
|
-
});
|
|
697
|
-
|
|
698
|
-
it('clips the track in determinate mode (the fill slides in from the start)', () => {
|
|
699
|
-
// The determinate fill spans the whole track and is moved back by the
|
|
700
|
-
// unfilled share; the track's clip keeps the moved-out part hidden.
|
|
701
|
-
render(<ProgressBar value={30} label="Progress" />);
|
|
702
|
-
const progressbar = screen.getByRole('progressbar');
|
|
703
|
-
let css = '';
|
|
704
|
-
for (const sheet of Array.from(document.styleSheets)) {
|
|
705
|
-
try {
|
|
706
|
-
for (const rule of Array.from(sheet.cssRules)) {
|
|
707
|
-
css += rule.cssText + '\n';
|
|
708
|
-
}
|
|
709
|
-
} catch {
|
|
710
|
-
// ignore cross-origin sheets
|
|
711
|
-
}
|
|
712
|
-
}
|
|
713
|
-
const trackHasOverflowHidden = Array.from(progressbar.classList).some(
|
|
714
|
-
cls =>
|
|
715
|
-
new RegExp(`\\.${cls}\\b[^{]*\\{[^}]*overflow:\\s*hidden`, 'i').test(
|
|
716
|
-
css,
|
|
717
|
-
),
|
|
718
|
-
);
|
|
719
|
-
expect(trackHasOverflowHidden).toBe(true);
|
|
720
|
-
});
|
|
721
|
-
|
|
722
|
-
it('moves the determinate fill with a transform, not its width, except under forced colors', () => {
|
|
723
|
-
// A width transition lays out and repaints on the main thread every
|
|
724
|
-
// frame, so it stalls while a script runs; a transform transition runs
|
|
725
|
-
// on the compositor. The fill spans the track and its leading edge sits
|
|
726
|
-
// at the filled share, mirrored in RTL.
|
|
727
|
-
render(<ProgressBar value={30} label="Progress" />);
|
|
728
|
-
const fill = screen.getByRole('progressbar')
|
|
729
|
-
.firstElementChild as HTMLElement;
|
|
730
|
-
// The stylesheet's rules, apart and under forced colors.
|
|
731
|
-
let css = '';
|
|
732
|
-
let forcedCss = '';
|
|
733
|
-
const collect = (rules: CSSRuleList, forced: boolean) => {
|
|
734
|
-
for (const rule of Array.from(rules)) {
|
|
735
|
-
if ('cssRules' in rule && 'conditionText' in rule) {
|
|
736
|
-
collect(
|
|
737
|
-
(rule as CSSMediaRule).cssRules,
|
|
738
|
-
forced ||
|
|
739
|
-
/forced-colors:\s*active/.test(
|
|
740
|
-
(rule as CSSMediaRule).conditionText,
|
|
741
|
-
),
|
|
742
|
-
);
|
|
743
|
-
} else if (forced) {
|
|
744
|
-
forcedCss += rule.cssText + '\n';
|
|
745
|
-
} else {
|
|
746
|
-
css += rule.cssText + '\n';
|
|
747
|
-
}
|
|
748
|
-
}
|
|
749
|
-
};
|
|
750
|
-
for (const sheet of Array.from(document.styleSheets)) {
|
|
751
|
-
collect(sheet.cssRules, false);
|
|
752
|
-
}
|
|
753
|
-
const declarationsIn = (text: string) =>
|
|
754
|
-
Array.from(fill.classList)
|
|
755
|
-
.flatMap(cls =>
|
|
756
|
-
Array.from(
|
|
757
|
-
text.matchAll(new RegExp(`\\.${cls}\\b[^{]*\\{([^}]*)\\}`, 'g')),
|
|
758
|
-
m => m[1].trim(),
|
|
759
|
-
),
|
|
760
|
-
)
|
|
761
|
-
.join('\n');
|
|
762
|
-
const joined = declarationsIn(css);
|
|
763
|
-
expect(fill.style.width).toBe('');
|
|
764
|
-
expect(fill.style.getPropertyValue('--_progress-bar-fill')).toBe('30%');
|
|
765
|
-
expect(joined).toMatch(/width:\s*100%/);
|
|
766
|
-
expect(joined).toMatch(/transition-property:\s*transform/);
|
|
767
|
-
expect(joined).not.toMatch(/transition-property:\s*width/);
|
|
768
|
-
expect(joined).toMatch(/will-change:\s*transform/);
|
|
769
|
-
expect(joined).toMatch(
|
|
770
|
-
/transform:\s*translateX\(calc\(var\(--_progress-bar-fill,\s*0%\) - 100%\)\)/,
|
|
771
|
-
);
|
|
772
|
-
expect(css).toMatch(
|
|
773
|
-
// The bar's own direction (`:dir(rtl)`), not any RTL ancestor.
|
|
774
|
-
/:dir\(rtl\)[^{]*\{[^}]*transform:\s*translateX\(calc\(100% - var\(--_progress-bar-fill,\s*0%\)\)\)/,
|
|
775
|
-
);
|
|
776
|
-
// Under forced colors the fill is sized to the value instead, so the
|
|
777
|
-
// track's clip never cuts its CanvasText outline (theme-tokens INV11);
|
|
778
|
-
// the Chromium spec checks the drawn outline.
|
|
779
|
-
const forced = declarationsIn(forcedCss);
|
|
780
|
-
expect(forced).toMatch(/width:\s*var\(--_progress-bar-fill,\s*0%\)/);
|
|
781
|
-
expect(forced).toMatch(/transform:\s*none/);
|
|
782
|
-
expect(forced).toMatch(/transition-property:\s*width/);
|
|
783
|
-
expect(forced).toMatch(/will-change:\s*auto/);
|
|
784
|
-
});
|
|
785
|
-
|
|
786
|
-
it('clips the track in indeterminate mode (the sliding fill must not escape)', () => {
|
|
787
|
-
// Regression: the indeterminate fill slides from translateX -100% to
|
|
788
|
-
// 250%, deliberately overshooting the track, and relies on the track
|
|
789
|
-
// clipping it to the visible window.
|
|
790
|
-
render(<ProgressBar isIndeterminate label="Loading" />);
|
|
791
|
-
const progressbar = screen.getByRole('progressbar');
|
|
792
|
-
let css = '';
|
|
793
|
-
for (const sheet of Array.from(document.styleSheets)) {
|
|
794
|
-
try {
|
|
795
|
-
for (const rule of Array.from(sheet.cssRules)) {
|
|
796
|
-
css += rule.cssText + '\n';
|
|
797
|
-
}
|
|
798
|
-
} catch {
|
|
799
|
-
// ignore cross-origin sheets
|
|
800
|
-
}
|
|
801
|
-
}
|
|
802
|
-
css += Array.from(document.querySelectorAll('style'))
|
|
803
|
-
.map(s => s.textContent || '')
|
|
804
|
-
.join('\n');
|
|
805
|
-
const trackHasOverflowHidden = Array.from(progressbar.classList).some(
|
|
806
|
-
cls => {
|
|
807
|
-
const re = new RegExp(
|
|
808
|
-
`\\.${cls}\\b[^{]*\\{[^}]*overflow:\\s*hidden`,
|
|
809
|
-
'i',
|
|
810
|
-
);
|
|
811
|
-
return re.test(css);
|
|
812
|
-
},
|
|
813
|
-
);
|
|
814
|
-
expect(trackHasOverflowHidden).toBe(true);
|
|
815
|
-
});
|
|
816
|
-
|
|
817
|
-
it('sizes the mark through the derived vars, so a theme override cannot lose the cascade', () => {
|
|
818
|
-
// width/height are declared as `var(--_progressbar-mark-*)` and nothing
|
|
819
|
-
// else declares those vars, so the value a theme sets on the
|
|
820
|
-
// `progress-bar-mark` target lands even in a consumer whose StyleX is
|
|
821
|
-
// unlayered and would otherwise outrank `@layer astryx-theme`.
|
|
822
|
-
const {container} = render(
|
|
823
|
-
<ProgressBar
|
|
824
|
-
value={50}
|
|
825
|
-
label="Progress"
|
|
826
|
-
marks={[{value: 80, label: 'M'}]}
|
|
827
|
-
/>,
|
|
828
|
-
);
|
|
829
|
-
const mark = container.querySelector<HTMLElement>(MARK)!;
|
|
830
|
-
let css = '';
|
|
831
|
-
for (const sheet of Array.from(document.styleSheets)) {
|
|
832
|
-
try {
|
|
833
|
-
for (const rule of Array.from(sheet.cssRules)) {
|
|
834
|
-
css += rule.cssText + '\n';
|
|
835
|
-
}
|
|
836
|
-
} catch {
|
|
837
|
-
// ignore cross-origin sheets
|
|
838
|
-
}
|
|
839
|
-
}
|
|
840
|
-
css += Array.from(document.querySelectorAll('style'))
|
|
841
|
-
.map(s => s.textContent || '')
|
|
842
|
-
.join('\n');
|
|
843
|
-
const markRules = Array.from(mark.classList)
|
|
844
|
-
.filter(cls => /^x[a-z0-9]+$/.test(cls))
|
|
845
|
-
.flatMap(
|
|
846
|
-
cls =>
|
|
847
|
-
css.match(new RegExp(`\\.${cls}\\b[^{]*\\{[^}]*\\}`, 'g')) ?? [],
|
|
848
|
-
);
|
|
849
|
-
expect(markRules.join('\n')).toMatch(
|
|
850
|
-
/width:\s*var\(--_progressbar-mark-width,\s*2px\)/,
|
|
851
|
-
);
|
|
852
|
-
expect(markRules.join('\n')).toMatch(
|
|
853
|
-
/height:\s*var\(--_progressbar-mark-height,\s*8px\)/,
|
|
854
|
-
);
|
|
855
|
-
});
|
|
856
|
-
|
|
857
|
-
it('renders the mark on the stable progress-bar-mark target, centered for symmetric overhang', () => {
|
|
858
|
-
// The mark's width/height/color are directly overridable via the
|
|
859
|
-
// `progress-bar-mark` theme target. It is centered
|
|
860
|
-
// on the track (translate -50%,-50%) so a themed taller tick overhangs the
|
|
861
|
-
// bar symmetrically above and below without being clipped.
|
|
862
|
-
const {container} = render(
|
|
863
|
-
<ProgressBar
|
|
864
|
-
value={50}
|
|
865
|
-
label="Progress"
|
|
866
|
-
marks={[{value: 80, label: 'M'}]}
|
|
867
|
-
/>,
|
|
868
|
-
);
|
|
869
|
-
const mark = container.querySelector<HTMLElement>(MARK)!;
|
|
870
|
-
expect(mark.className).toContain('astryx-progress-bar-mark');
|
|
871
|
-
let css = '';
|
|
872
|
-
for (const sheet of Array.from(document.styleSheets)) {
|
|
873
|
-
try {
|
|
874
|
-
for (const rule of Array.from(sheet.cssRules)) {
|
|
875
|
-
css += rule.cssText + '\n';
|
|
876
|
-
}
|
|
877
|
-
} catch {
|
|
878
|
-
// ignore cross-origin sheets
|
|
879
|
-
}
|
|
880
|
-
}
|
|
881
|
-
css += Array.from(document.querySelectorAll('style'))
|
|
882
|
-
.map(s => s.textContent || '')
|
|
883
|
-
.join('\n');
|
|
884
|
-
// Centered so any themed overhang stays symmetric.
|
|
885
|
-
expect(css).toMatch(/translate\(-50%,\s*-50%\)/);
|
|
886
|
-
expect(container.querySelectorAll(MARK)).toHaveLength(1);
|
|
887
|
-
});
|
|
888
|
-
});
|
|
889
|
-
});
|
|
890
|
-
|
|
891
|
-
describe('ProgressBar theme target names', () => {
|
|
892
|
-
it('renders only the canonical target classes', () => {
|
|
893
|
-
const {container} = render(
|
|
894
|
-
<ProgressBar
|
|
895
|
-
value={50}
|
|
896
|
-
label="Progress"
|
|
897
|
-
marks={[{value: 80, label: 'M'}]}
|
|
898
|
-
/>,
|
|
899
|
-
);
|
|
900
|
-
expect(container.querySelector('.astryx-progress-bar')).toHaveClass(
|
|
901
|
-
'astryx-progress-bar',
|
|
902
|
-
);
|
|
903
|
-
expect(container.querySelector('.astryx-progress-bar-track')).toHaveClass(
|
|
904
|
-
'astryx-progress-bar-track',
|
|
905
|
-
);
|
|
906
|
-
expect(container.querySelector('.astryx-progress-bar-fill')).toHaveClass(
|
|
907
|
-
'astryx-progress-bar-fill',
|
|
908
|
-
);
|
|
909
|
-
expect(container.querySelector('.astryx-progress-bar-mark')).toHaveClass(
|
|
910
|
-
'astryx-progress-bar-mark',
|
|
911
|
-
);
|
|
912
|
-
expect(container.querySelector('.astryx-progressbar')).toBeNull();
|
|
913
|
-
expect(container.querySelector('.astryx-progressbar-track')).toBeNull();
|
|
914
|
-
expect(container.querySelector('.astryx-progressbar-fill')).toBeNull();
|
|
915
|
-
expect(container.querySelector('.astryx-progressbar-mark')).toBeNull();
|
|
916
|
-
});
|
|
917
|
-
});
|
|
918
|
-
|
|
919
|
-
// jsdom cannot emulate forced colors, so this asserts the compiled rule the
|
|
920
|
-
// status fill relies on (architecture:theme-tokens INV11).
|
|
921
|
-
describe('ProgressBar forced colors', () => {
|
|
922
|
-
it('keeps a visible boundary on the status fill', () => {
|
|
923
|
-
render(<ProgressBar value={40} variant="error" label="Upload" />);
|
|
924
|
-
const css = getForcedColorsRules();
|
|
925
|
-
expect(css).toContain('outline-style: solid;');
|
|
926
|
-
expect(css).toContain('outline-color: canvastext;');
|
|
927
|
-
});
|
|
928
|
-
});
|