@enact/limestone 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/PULL_REQUEST_TEMPLATE.md +28 -0
- package/.github/workflows/update-copyright-years.yml +25 -0
- package/.travis.yml +40 -0
- package/ActionGuide/ActionGuide.d.ts +73 -0
- package/ActionGuide/ActionGuide.js +164 -0
- package/ActionGuide/ActionGuide.module.css +73 -0
- package/ActionGuide/package.json +3 -0
- package/ActionGuide/tests/ActionGuide-specs.js +51 -0
- package/Alert/Alert.d.ts +155 -0
- package/Alert/Alert.js +313 -0
- package/Alert/Alert.module.css +190 -0
- package/Alert/AlertImage.js +102 -0
- package/Alert/AlertImage.module.css +15 -0
- package/Alert/package.json +3 -0
- package/Alert/tests/Alert-specs.js +204 -0
- package/BodyText/BodyText.d.ts +74 -0
- package/BodyText/BodyText.js +170 -0
- package/BodyText/BodyText.module.css +95 -0
- package/BodyText/package.json +3 -0
- package/BodyText/tests/BodyText-specs.js +55 -0
- package/Button/Button.d.ts +131 -0
- package/Button/Button.js +351 -0
- package/Button/Button.module.css +2518 -0
- package/Button/package.json +3 -0
- package/Button/tests/Button-specs.js +252 -0
- package/CHANGELOG.md +170 -0
- package/Card/Card.d.ts +138 -0
- package/Card/Card.js +396 -0
- package/Card/Card.module.css +1296 -0
- package/Card/package.json +3 -0
- package/Card/tests/Card-specs.js +65 -0
- package/Checkbox/Checkbox.d.ts +99 -0
- package/Checkbox/Checkbox.js +222 -0
- package/Checkbox/Checkbox.module.css +1395 -0
- package/Checkbox/package.json +3 -0
- package/Checkbox/tests/Checkbox-specs.js +79 -0
- package/CheckboxItem/CheckboxItem.d.ts +99 -0
- package/CheckboxItem/CheckboxItem.js +210 -0
- package/CheckboxItem/CheckboxItem.module.css +50 -0
- package/CheckboxItem/package.json +3 -0
- package/CheckboxItem/tests/CheckboxItem-specs.js +52 -0
- package/Chips/Chip.js +252 -0
- package/Chips/Chip.module.css +30 -0
- package/Chips/Chips.js +215 -0
- package/Chips/Chips.module.css +8 -0
- package/Chips/index.js +86 -0
- package/Chips/tests/Chip-specs.js +186 -0
- package/Chips/tests/Chips-specs.js +312 -0
- package/ColorPicker/ColorPicker.js +416 -0
- package/ColorPicker/ColorPicker.module.css +78 -0
- package/ColorPicker/package.json +3 -0
- package/ColorPicker/tests/ColorPicker-specs.js +225 -0
- package/ColorPicker/utils.js +135 -0
- package/ContextualMenuDecorator/ContextualMenuDecorator.d.ts +106 -0
- package/ContextualMenuDecorator/ContextualMenuDecorator.js +264 -0
- package/ContextualMenuDecorator/ContextualMenuDecorator.module.css +42 -0
- package/ContextualMenuDecorator/package.json +3 -0
- package/ContextualMenuDecorator/tests/ContextualMenuDecorator-specs.js +136 -0
- package/ContextualPopupDecorator/ContextualPopup.js +200 -0
- package/ContextualPopupDecorator/ContextualPopup.module.css +270 -0
- package/ContextualPopupDecorator/ContextualPopupDecorator.d.ts +182 -0
- package/ContextualPopupDecorator/ContextualPopupDecorator.js +867 -0
- package/ContextualPopupDecorator/ContextualPopupDecorator.module.css +3 -0
- package/ContextualPopupDecorator/HolePunchScrim.js +69 -0
- package/ContextualPopupDecorator/HolePunchScrim.module.css +38 -0
- package/ContextualPopupDecorator/package.json +3 -0
- package/ContextualPopupDecorator/tests/ContextualPopupDecorator-specs.js +621 -0
- package/DatePicker/DatePicker.d.ts +173 -0
- package/DatePicker/DatePicker.js +175 -0
- package/DatePicker/DatePicker.module.css +5 -0
- package/DatePicker/DatePickerBase.js +348 -0
- package/DatePicker/package.json +3 -0
- package/DatePicker/tests/DatePicker-specs.js +247 -0
- package/DayPicker/DayPicker.d.ts +92 -0
- package/DayPicker/DayPicker.js +188 -0
- package/DayPicker/DayPicker.module.css +35 -0
- package/DayPicker/DaySelectorDecorator.js +301 -0
- package/DayPicker/package.json +3 -0
- package/DayPicker/tests/DayPicker-specs.js +138 -0
- package/Dropdown/Dropdown.d.ts +135 -0
- package/Dropdown/Dropdown.js +460 -0
- package/Dropdown/Dropdown.module.css +160 -0
- package/Dropdown/DropdownList.js +360 -0
- package/Dropdown/package.json +3 -0
- package/Dropdown/tests/Dropdown-specs.js +267 -0
- package/FixedPopupPanels/FixedPopupPanels.d.ts +72 -0
- package/FixedPopupPanels/FixedPopupPanels.js +170 -0
- package/FixedPopupPanels/FixedPopupPanels.module.css +146 -0
- package/FixedPopupPanels/package.json +3 -0
- package/FixedPopupPanels/tests/FixedPopupPanels-specs.js +142 -0
- package/FlexiblePopupPanels/FlexiblePopupPanels.js +177 -0
- package/FlexiblePopupPanels/FlexiblePopupPanels.module.css +291 -0
- package/FlexiblePopupPanels/Header.js +110 -0
- package/FlexiblePopupPanels/Panel.js +256 -0
- package/FlexiblePopupPanels/index.d.ts +145 -0
- package/FlexiblePopupPanels/index.js +68 -0
- package/FlexiblePopupPanels/package.json +3 -0
- package/FlexiblePopupPanels/tests/FlexiblePopupPanels-specs.js +305 -0
- package/FlexiblePopupPanels/useNavButtonFocus.js +65 -0
- package/FormCheckboxItem/FormCheckboxItem.d.ts +87 -0
- package/FormCheckboxItem/FormCheckboxItem.js +200 -0
- package/FormCheckboxItem/FormCheckboxItem.module.css +374 -0
- package/FormCheckboxItem/package.json +3 -0
- package/FormCheckboxItem/tests/FormCheckboxItem-specs.js +164 -0
- package/Heading/Heading.d.ts +104 -0
- package/Heading/Heading.js +203 -0
- package/Heading/Heading.module.css +217 -0
- package/Heading/package.json +3 -0
- package/Heading/tests/Heading-specs.js +57 -0
- package/Icon/Icon.d.ts +377 -0
- package/Icon/Icon.js +503 -0
- package/Icon/Icon.module.css +121 -0
- package/Icon/IconList.js +611 -0
- package/Icon/package.json +3 -0
- package/Icon/tests/Icon-specs.js +131 -0
- package/IconItem/IconItem.d.ts +137 -0
- package/IconItem/IconItem.js +360 -0
- package/IconItem/IconItem.module.css +414 -0
- package/IconItem/package.json +3 -0
- package/IconItem/tests/IconItem-specs.js +106 -0
- package/Image/Image.d.ts +60 -0
- package/Image/Image.js +165 -0
- package/Image/Image.module.css +5 -0
- package/Image/package.json +3 -0
- package/Image/tests/Image-specs.js +62 -0
- package/ImageItem/ImageItem.d.ts +134 -0
- package/ImageItem/ImageItem.js +377 -0
- package/ImageItem/ImageItem.module.css +1079 -0
- package/ImageItem/package.json +3 -0
- package/ImageItem/tests/ImageItem-specs.js +223 -0
- package/Input/Input.js +715 -0
- package/Input/Input.module.css +699 -0
- package/Input/InputField.js +487 -0
- package/Input/InputField.module.css +763 -0
- package/Input/InputFieldDecoratorIcon.js +66 -0
- package/Input/InputFieldSpotlightDecorator.js +380 -0
- package/Input/Keypad.js +111 -0
- package/Input/NumberField.js +311 -0
- package/Input/index.d.ts +423 -0
- package/Input/index.js +87 -0
- package/Input/package.json +3 -0
- package/Input/pointer.js +103 -0
- package/Input/tests/Input-specs.js +537 -0
- package/Input/tests/InputField-specs.js +292 -0
- package/Input/tests/InputPopup-specs.js +56 -0
- package/Input/util.js +130 -0
- package/Item/Item.d.ts +108 -0
- package/Item/Item.js +360 -0
- package/Item/Item.module.css +665 -0
- package/Item/package.json +3 -0
- package/Item/tests/Item-specs.js +108 -0
- package/KeyGuide/KeyGuide.d.ts +103 -0
- package/KeyGuide/KeyGuide.js +254 -0
- package/KeyGuide/KeyGuide.module.css +431 -0
- package/KeyGuide/package.json +3 -0
- package/KeyGuide/tests/KeyGuide-specs.js +168 -0
- package/LICENSE +201 -0
- package/Marquee/Marquee.d.ts +42 -0
- package/Marquee/Marquee.js +45 -0
- package/Marquee/package.json +3 -0
- package/MediaOverlay/MediaOverlay.d.ts +134 -0
- package/MediaOverlay/MediaOverlay.js +304 -0
- package/MediaOverlay/MediaOverlay.module.css +292 -0
- package/MediaOverlay/package.json +3 -0
- package/MediaOverlay/tests/MediaOverlay-specs.js +127 -0
- package/MediaPlayer/MediaControls.js +934 -0
- package/MediaPlayer/MediaControls.module.css +86 -0
- package/MediaPlayer/MediaKnob.js +61 -0
- package/MediaPlayer/MediaSlider.js +131 -0
- package/MediaPlayer/MediaSlider.module.css +319 -0
- package/MediaPlayer/MediaSliderDecorator.js +245 -0
- package/MediaPlayer/Times.js +152 -0
- package/MediaPlayer/Times.module.css +34 -0
- package/MediaPlayer/index.d.ts +223 -0
- package/MediaPlayer/index.js +34 -0
- package/MediaPlayer/package.json +3 -0
- package/MediaPlayer/tests/MediaSlider-specs.js +126 -0
- package/MediaPlayer/tests/util-specs.js +114 -0
- package/MediaPlayer/util.js +83 -0
- package/PageViews/Page.js +77 -0
- package/PageViews/Page.module.css +3 -0
- package/PageViews/PageViews.js +440 -0
- package/PageViews/PageViews.module.css +175 -0
- package/PageViews/PageViewsRouter.js +150 -0
- package/PageViews/index.js +45 -0
- package/PageViews/tests/PageViews-specs.js +192 -0
- package/Panels/Header.js +599 -0
- package/Panels/Header.module.css +243 -0
- package/Panels/Panel.js +347 -0
- package/Panels/Panel.module.css +33 -0
- package/Panels/Panels.js +258 -0
- package/Panels/Panels.module.css +12 -0
- package/Panels/index.d.ts +376 -0
- package/Panels/index.js +66 -0
- package/Panels/package.json +3 -0
- package/Panels/tests/Header-specs.js +146 -0
- package/Panels/tests/Panels-specs.js +257 -0
- package/Picker/Picker.d.ts +193 -0
- package/Picker/Picker.js +389 -0
- package/Picker/Picker.module.css +46 -0
- package/Picker/package.json +3 -0
- package/Picker/tests/Picker-specs.js +91 -0
- package/Popup/Popup.d.ts +169 -0
- package/Popup/Popup.js +690 -0
- package/Popup/Popup.module.css +180 -0
- package/Popup/package.json +3 -0
- package/Popup/tests/Popup-specs.js +475 -0
- package/PopupTabLayout/PopupTabLayout.d.ts +196 -0
- package/PopupTabLayout/PopupTabLayout.js +605 -0
- package/PopupTabLayout/PopupTabLayout.module.css +226 -0
- package/PopupTabLayout/package.json +3 -0
- package/PopupTabLayout/tests/PopupTabLayout-specs.js +285 -0
- package/ProgressBar/ProgressBar.d.ts +171 -0
- package/ProgressBar/ProgressBar.js +223 -0
- package/ProgressBar/ProgressBar.module.css +264 -0
- package/ProgressBar/ProgressBarTooltip.js +359 -0
- package/ProgressBar/ProgressBarTooltip.module.css +86 -0
- package/ProgressBar/package.json +3 -0
- package/ProgressBar/tests/ProgressBar-specs.js +400 -0
- package/ProgressButton/ProgressButton.d.ts +57 -0
- package/ProgressButton/ProgressButton.js +143 -0
- package/ProgressButton/ProgressButton.module.css +147 -0
- package/ProgressButton/package.json +3 -0
- package/ProgressButton/tests/ProgressButton-specs.js +71 -0
- package/QuickGuidePanels/Panel.js +90 -0
- package/QuickGuidePanels/QuickGuidePanels.js +463 -0
- package/QuickGuidePanels/QuickGuidePanels.module.css +26 -0
- package/QuickGuidePanels/index.js +52 -0
- package/QuickGuidePanels/tests/QuickGuidePanels-specs.js +250 -0
- package/README.md +59 -0
- package/RadioItem/RadioItem.d.ts +59 -0
- package/RadioItem/RadioItem.js +146 -0
- package/RadioItem/RadioItem.module.css +233 -0
- package/RadioItem/package.json +3 -0
- package/RadioItem/tests/RadioItem-specs.js +62 -0
- package/RangePicker/RangePicker.d.ts +174 -0
- package/RangePicker/RangePicker.js +372 -0
- package/RangePicker/RangePicker.module.css +55 -0
- package/RangePicker/package.json +3 -0
- package/RangePicker/tests/RangePicker-specs.js +122 -0
- package/Region/Region.d.ts +33 -0
- package/Region/Region.js +91 -0
- package/Region/package.json +3 -0
- package/Region/tests/Region-specs.js +28 -0
- package/Scroller/ContentContainerDecorator.js +24 -0
- package/Scroller/EditableWrapper.js +1036 -0
- package/Scroller/EditableWrapper.module.css +22 -0
- package/Scroller/Scroller.d.ts +270 -0
- package/Scroller/Scroller.js +470 -0
- package/Scroller/Scroller.module.css +41 -0
- package/Scroller/package.json +3 -0
- package/Scroller/tests/ContentContainerDecorator-specs.js +20 -0
- package/Scroller/tests/EditableWrapper-specs.js +133 -0
- package/Scroller/tests/Scroller-specs.js +159 -0
- package/Scroller/useEvent.js +39 -0
- package/Scroller/useThemeScroller.js +410 -0
- package/Skinnable/Skinnable.d.ts +27 -0
- package/Skinnable/Skinnable.js +65 -0
- package/Skinnable/package.json +3 -0
- package/Slider/Slider.d.ts +218 -0
- package/Slider/Slider.js +441 -0
- package/Slider/Slider.module.css +880 -0
- package/Slider/SliderBehaviorDecorator.js +184 -0
- package/Slider/package.json +3 -0
- package/Slider/tests/Slider-specs.js +573 -0
- package/Slider/utils.js +114 -0
- package/Spinner/Spinner.d.ts +64 -0
- package/Spinner/Spinner.js +254 -0
- package/Spinner/Spinner.module.css +368 -0
- package/Spinner/package.json +3 -0
- package/Spinner/tests/Spinner-specs.js +70 -0
- package/Sprite/Sprite.d.ts +100 -0
- package/Sprite/Sprite.js +345 -0
- package/Sprite/Sprite.module.css +32 -0
- package/Sprite/package.json +3 -0
- package/Sprite/tests/Sprite-specs.js +59 -0
- package/Steps/Steps.d.ts +119 -0
- package/Steps/Steps.js +303 -0
- package/Steps/Steps.module.css +130 -0
- package/Steps/package.json +3 -0
- package/Steps/tests/Steps-specs.js +175 -0
- package/Switch/Switch.d.ts +54 -0
- package/Switch/Switch.js +143 -0
- package/Switch/Switch.module.css +714 -0
- package/Switch/package.json +3 -0
- package/Switch/tests/Switch-specs.js +54 -0
- package/SwitchItem/SwitchItem.d.ts +56 -0
- package/SwitchItem/SwitchItem.js +144 -0
- package/SwitchItem/SwitchItem.module.css +31 -0
- package/SwitchItem/package.json +3 -0
- package/SwitchItem/tests/SwitchItem-specs.js +49 -0
- package/TabLayout/RefocusDecorator.js +142 -0
- package/TabLayout/Tab.js +84 -0
- package/TabLayout/TabGroup.js +377 -0
- package/TabLayout/TabGroup.module.css +280 -0
- package/TabLayout/TabLayout.d.ts +161 -0
- package/TabLayout/TabLayout.js +661 -0
- package/TabLayout/TabLayout.module.css +101 -0
- package/TabLayout/package.json +3 -0
- package/TabLayout/tests/TabGroup-specs.js +214 -0
- package/TabLayout/tests/TabLayout-specs.js +740 -0
- package/ThemeDecorator/AccessibilityDecorator.js +151 -0
- package/ThemeDecorator/I18nFontDecorator.js +33 -0
- package/ThemeDecorator/ThemeDecorator.d.ts +143 -0
- package/ThemeDecorator/ThemeDecorator.js +307 -0
- package/ThemeDecorator/ThemeDecorator.module.css +1250 -0
- package/ThemeDecorator/fontGenerator.js +76 -0
- package/ThemeDecorator/package.json +3 -0
- package/ThemeDecorator/screenTypes.json +10 -0
- package/ThemeDecorator/tests/ThemeDecorator-specs.js +151 -0
- package/TimePicker/TimePicker.d.ts +147 -0
- package/TimePicker/TimePicker.js +255 -0
- package/TimePicker/TimePicker.module.css +61 -0
- package/TimePicker/TimePickerBase.js +396 -0
- package/TimePicker/package.json +3 -0
- package/TimePicker/tests/TimePicker-specs.js +248 -0
- package/TooltipDecorator/Tooltip.js +252 -0
- package/TooltipDecorator/Tooltip.module.css +496 -0
- package/TooltipDecorator/TooltipDecorator.d.ts +229 -0
- package/TooltipDecorator/TooltipDecorator.js +260 -0
- package/TooltipDecorator/TooltipLabel.js +117 -0
- package/TooltipDecorator/package.json +3 -0
- package/TooltipDecorator/tests/TooltipDecorator-specs.js +224 -0
- package/TooltipDecorator/tests/useTooltip-specs.js +266 -0
- package/TooltipDecorator/useTooltip.js +278 -0
- package/TooltipDecorator/util.js +273 -0
- package/VideoPlayer/Feedback.js +110 -0
- package/VideoPlayer/Feedback.module.css +55 -0
- package/VideoPlayer/FeedbackContent.js +99 -0
- package/VideoPlayer/FeedbackIcon.js +67 -0
- package/VideoPlayer/FeedbackIcons.js +76 -0
- package/VideoPlayer/FeedbackTooltip.js +242 -0
- package/VideoPlayer/FeedbackTooltip.module.css +160 -0
- package/VideoPlayer/MediaTitle.js +143 -0
- package/VideoPlayer/MediaTitle.module.css +95 -0
- package/VideoPlayer/Overlay.js +51 -0
- package/VideoPlayer/Video.js +345 -0
- package/VideoPlayer/VideoPlayer.d.ts +582 -0
- package/VideoPlayer/VideoPlayer.js +2116 -0
- package/VideoPlayer/VideoPlayer.module.css +164 -0
- package/VideoPlayer/package.json +3 -0
- package/VideoPlayer/tests/Video-specs.js +235 -0
- package/VideoPlayer/tests/VideoPlayer-specs.js +180 -0
- package/VirtualList/VirtualList.d.ts +411 -0
- package/VirtualList/VirtualList.js +931 -0
- package/VirtualList/VirtualList.module.css +52 -0
- package/VirtualList/package.json +3 -0
- package/VirtualList/tests/VirtualGridList-specs.js +289 -0
- package/VirtualList/tests/VirtualGridList-translate-specs.js +711 -0
- package/VirtualList/tests/VirtualList-specs.js +288 -0
- package/VirtualList/tests/VirtualList-translate-specs.js +704 -0
- package/VirtualList/tests/useEvent-specs.js +172 -0
- package/VirtualList/tests/useEvent-translate-specs.js +309 -0
- package/VirtualList/useEvent.js +324 -0
- package/VirtualList/usePreventScroll.js +31 -0
- package/VirtualList/useSpotlight.js +157 -0
- package/VirtualList/useThemeVirtualList.js +471 -0
- package/VirtualList/useThemeVirtualList.module.css +34 -0
- package/WizardPanels/Panel.js +99 -0
- package/WizardPanels/WizardPanels.js +501 -0
- package/WizardPanels/WizardPanels.module.css +15 -0
- package/WizardPanels/index.d.ts +182 -0
- package/WizardPanels/index.js +50 -0
- package/WizardPanels/package.json +3 -0
- package/WizardPanels/tests/WizardPanels-specs.js +713 -0
- package/codecov.yml +13 -0
- package/fonts/Limestone_Icons.ttf +0 -0
- package/fonts/Miso/LICENSE.txt +75 -0
- package/fonts/Miso/Miso-Bold.ttf +0 -0
- package/fonts/Miso/Miso-Light.ttf +0 -0
- package/fonts/Miso/Miso-Regular.ttf +0 -0
- package/fonts/MuseoSans/LICENSE.txt +75 -0
- package/fonts/MuseoSans/MuseoSans-Black.ttf +0 -0
- package/fonts/MuseoSans/MuseoSans-BlackItalic.ttf +0 -0
- package/fonts/MuseoSans/MuseoSans-Bold.ttf +0 -0
- package/fonts/MuseoSans/MuseoSans-BoldItalic.ttf +0 -0
- package/fonts/MuseoSans/MuseoSans-Light.ttf +0 -0
- package/fonts/MuseoSans/MuseoSans-Medium.ttf +0 -0
- package/fonts/MuseoSans/MuseoSans-MediumItalic.ttf +0 -0
- package/fonts/MuseoSans/MuseoSans-Thin.ttf +0 -0
- package/index.js +2 -0
- package/internal/$L/$L.d.ts +21 -0
- package/internal/$L/$L.js +97 -0
- package/internal/$L/package.json +3 -0
- package/internal/AsyncRenderChildren/AsyncRenderChildren.js +74 -0
- package/internal/AsyncRenderChildren/package.json +3 -0
- package/internal/AsyncRenderChildren/tests/AsyncRenderChildren-specs.js +49 -0
- package/internal/DateComponentPicker/DateComponentPicker.js +165 -0
- package/internal/DateComponentPicker/DateComponentPicker.module.css +53 -0
- package/internal/DateComponentPicker/DateComponentRangePicker.js +132 -0
- package/internal/DateComponentPicker/index.js +31 -0
- package/internal/DateComponentPicker/package.json +3 -0
- package/internal/DateTime/DateTime.js +83 -0
- package/internal/DateTime/DateTime.module.css +51 -0
- package/internal/DateTime/DateTimeDecorator.js +268 -0
- package/internal/DateTime/index.js +37 -0
- package/internal/DateTime/package.json +3 -0
- package/internal/DateTime/tests/DateTimeDecorator-specs.js +33 -0
- package/internal/DebounceDecorator/DebounceDecorator.js +125 -0
- package/internal/DebounceDecorator/package.json +3 -0
- package/internal/DebounceDecorator/tests/DebounceDecorator-specs.js +151 -0
- package/internal/Panels/Arrangers.js +248 -0
- package/internal/Panels/CancelDecorator.js +43 -0
- package/internal/Panels/FloatingLayerIdProvider.js +27 -0
- package/internal/Panels/NavigationButton.js +64 -0
- package/internal/Panels/NavigationButton.module.css +69 -0
- package/internal/Panels/PanelsRouter.js +223 -0
- package/internal/Panels/PopupDecorator.js +287 -0
- package/internal/Panels/TransitionDecorator.js +99 -0
- package/internal/Panels/Viewport.js +313 -0
- package/internal/Panels/Viewport.module.css +25 -0
- package/internal/Panels/captureKeys.js +48 -0
- package/internal/Panels/index.js +101 -0
- package/internal/Panels/package.json +3 -0
- package/internal/Panels/useAutoFocus.js +95 -0
- package/internal/Panels/useFocusOnTransition.js +45 -0
- package/internal/Panels/useToggleRole.js +30 -0
- package/internal/Panels/util.js +64 -0
- package/internal/Picker/Picker.js +942 -0
- package/internal/Picker/Picker.module.css +1145 -0
- package/internal/Picker/PickerButton.js +97 -0
- package/internal/Picker/PickerItem.js +38 -0
- package/internal/Picker/SpottablePicker.js +63 -0
- package/internal/Picker/package.json +3 -0
- package/internal/Picker/tests/Picker-specs.js +968 -0
- package/internal/SharedStateDecorator/SharedStateDecorator.js +167 -0
- package/internal/SharedStateDecorator/package.json +3 -0
- package/internal/SharedStateDecorator/tests/SharedStateDecorator-specs.js +277 -0
- package/internal/WindowEventable/WindowEventable.js +114 -0
- package/internal/WindowEventable/package.json +3 -0
- package/internal/util/package.json +3 -0
- package/internal/util/util.js +79 -0
- package/internal/validators/package.json +4 -0
- package/internal/validators/tests/validators-specs.js +80 -0
- package/internal/validators/validators.js +136 -0
- package/package.json +69 -0
- package/resources/ilibmanifest.json +3 -0
- package/styles/color-mixins.less +230 -0
- package/styles/colors-game-green.less +25 -0
- package/styles/colors-game-orange.less +25 -0
- package/styles/colors-game.less +56 -0
- package/styles/colors-highcontrast.less +21 -0
- package/styles/colors.less +435 -0
- package/styles/mixins.less +337 -0
- package/styles/skin.less +54 -0
- package/styles/variables-base.less +32 -0
- package/styles/variables-game.less +25 -0
- package/styles/variables.less +1182 -0
- package/useScroll/HoverToScroll.js +265 -0
- package/useScroll/HoverToScroll.module.css +38 -0
- package/useScroll/OverscrollEffect.module.css +14 -0
- package/useScroll/Scrollbar.js +171 -0
- package/useScroll/Scrollbar.module.css +19 -0
- package/useScroll/ScrollbarPlaceholder.js +64 -0
- package/useScroll/ScrollbarTrack.js +209 -0
- package/useScroll/ScrollbarTrack.module.css +136 -0
- package/useScroll/package.json +3 -0
- package/useScroll/useEvent.js +693 -0
- package/useScroll/useOverscrollEffect.js +105 -0
- package/useScroll/useScroll.js +523 -0
- package/useScroll/useScroll.module.css +49 -0
- package/useScroll/useSpotlight.js +32 -0
- package/useScroll/useThemeScrollContentHandle.js +32 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
.popupTabLayout.popup,
|
|
2
|
+
.popupTabLayout.optimized {
|
|
3
|
+
margin: 1.25rem auto 2.75rem 1.25rem;
|
|
4
|
+
max-height: calc(100vh - 4rem );
|
|
5
|
+
}
|
|
6
|
+
.popupTabLayout .tabLayout .tabs {
|
|
7
|
+
bottom: auto;
|
|
8
|
+
}
|
|
9
|
+
.popupTabLayout .tabLayout.collapsed {
|
|
10
|
+
/* Override TabLayout */
|
|
11
|
+
}
|
|
12
|
+
.popupTabLayout .tabLayout .tabGroup .tab.vertical.button.selected .bg {
|
|
13
|
+
/* Override TabLayout */
|
|
14
|
+
}
|
|
15
|
+
:global(.spotlight-input-key) .popupTabLayout .tabLayout .tabGroup .tab.vertical.button:global(.spottable):focus .bg,
|
|
16
|
+
:global(.spotlight-input-mouse) .popupTabLayout .tabLayout .tabGroup .tab.vertical.button:global(.spottable):focus .bg {
|
|
17
|
+
/* Override TabLayout */
|
|
18
|
+
}
|
|
19
|
+
:global(.spotlight-input-touch) .popupTabLayout .tabLayout .tabGroup .tab.vertical.button:global(.spottable):active .bg {
|
|
20
|
+
/* Override TabLayout */
|
|
21
|
+
}
|
|
22
|
+
.popupTabLayout .tabLayout .tabGroup .tab.vertical.collapsed.button.selected .bg {
|
|
23
|
+
/* Override TabLayout */
|
|
24
|
+
}
|
|
25
|
+
.popupTabLayout .tabs {
|
|
26
|
+
margin-right: var(--primitive-spacing-36);
|
|
27
|
+
}
|
|
28
|
+
.popupTabLayout .tabsExpanded {
|
|
29
|
+
/* Override TabLayout */
|
|
30
|
+
}
|
|
31
|
+
.popupTabLayout .content {
|
|
32
|
+
margin-top: 0;
|
|
33
|
+
height: 100%;
|
|
34
|
+
}
|
|
35
|
+
.popupTabLayout .panels::before {
|
|
36
|
+
content: "";
|
|
37
|
+
position: absolute;
|
|
38
|
+
top: 0;
|
|
39
|
+
right: 0;
|
|
40
|
+
bottom: 0;
|
|
41
|
+
left: 0;
|
|
42
|
+
}
|
|
43
|
+
.popupTabLayout:global(.neutral) {
|
|
44
|
+
background-color: transparent;
|
|
45
|
+
}
|
|
46
|
+
.popupTabLayout:global(.neutral) .tabs {
|
|
47
|
+
border-radius: var(--semantic-radius-container);
|
|
48
|
+
}
|
|
49
|
+
.popupTabLayout:global(.neutral) .content .panels::before {
|
|
50
|
+
border-radius: var(--semantic-radius-popup);
|
|
51
|
+
}
|
|
52
|
+
.popupTabLayout:global(.neutral) .tabs,
|
|
53
|
+
.popupTabLayout:global(.neutral) .content .panels::before {
|
|
54
|
+
background-color: var(--semantic-color-background-overlay-default);
|
|
55
|
+
box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
|
|
56
|
+
outline-color: var(--semantic-color-stroke-overlay-default);
|
|
57
|
+
outline-width: 0.021rem;
|
|
58
|
+
outline-style: solid;
|
|
59
|
+
outline-offset: -0.021rem;
|
|
60
|
+
}
|
|
61
|
+
:global(.noAnimation) .popupTabLayout:global(.neutral) .tabs,
|
|
62
|
+
:global(.noAnimation) .popupTabLayout:global(.neutral) .content .panels::before {
|
|
63
|
+
box-shadow: none;
|
|
64
|
+
}
|
|
65
|
+
:global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) {
|
|
66
|
+
background-color: transparent;
|
|
67
|
+
}
|
|
68
|
+
:global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .tabs {
|
|
69
|
+
border-radius: var(--semantic-radius-container);
|
|
70
|
+
}
|
|
71
|
+
:global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .content .panels::before {
|
|
72
|
+
border-radius: var(--semantic-radius-popup);
|
|
73
|
+
}
|
|
74
|
+
:global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .tabs,
|
|
75
|
+
:global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .content .panels::before {
|
|
76
|
+
background-color: var(--semantic-color-background-overlay-default);
|
|
77
|
+
box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
|
|
78
|
+
outline-color: #7c848b;
|
|
79
|
+
outline-width: 0.021rem;
|
|
80
|
+
outline-style: solid;
|
|
81
|
+
outline-offset: -0.021rem;
|
|
82
|
+
}
|
|
83
|
+
:global(.noAnimation) :global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .tabs,
|
|
84
|
+
:global(.noAnimation) :global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .content .panels::before {
|
|
85
|
+
box-shadow: none;
|
|
86
|
+
}
|
|
87
|
+
.popupTabLayout:global(.light) {
|
|
88
|
+
background-color: transparent;
|
|
89
|
+
}
|
|
90
|
+
.popupTabLayout:global(.light) .tabs {
|
|
91
|
+
border-radius: var(--semantic-radius-container);
|
|
92
|
+
}
|
|
93
|
+
.popupTabLayout:global(.light) .content .panels::before {
|
|
94
|
+
border-radius: var(--semantic-radius-popup);
|
|
95
|
+
}
|
|
96
|
+
.popupTabLayout:global(.light) .tabs,
|
|
97
|
+
.popupTabLayout:global(.light) .content .panels::before {
|
|
98
|
+
background-color: var(--semantic-color-background-overlay-default);
|
|
99
|
+
box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
|
|
100
|
+
outline-color: var(--semantic-color-stroke-overlay-default);
|
|
101
|
+
outline-width: 0.021rem;
|
|
102
|
+
outline-style: solid;
|
|
103
|
+
outline-offset: -0.021rem;
|
|
104
|
+
}
|
|
105
|
+
:global(.noAnimation) .popupTabLayout:global(.light) .tabs,
|
|
106
|
+
:global(.noAnimation) .popupTabLayout:global(.light) .content .panels::before {
|
|
107
|
+
box-shadow: none;
|
|
108
|
+
}
|
|
109
|
+
.popupTabLayout:global(.game) {
|
|
110
|
+
--semantic-color-surface-default: #2d224c;
|
|
111
|
+
--semantic-color-surface-default-focused: #6d2fa1;
|
|
112
|
+
--semantic-color-on-surface-main-focused: #e6e6e6;
|
|
113
|
+
background-color: transparent;
|
|
114
|
+
}
|
|
115
|
+
.popupTabLayout:global(.game) .tabs {
|
|
116
|
+
border-radius: var(--semantic-radius-container);
|
|
117
|
+
}
|
|
118
|
+
.popupTabLayout:global(.game) .content .panels::before {
|
|
119
|
+
border-radius: var(--semantic-radius-popup);
|
|
120
|
+
}
|
|
121
|
+
.popupTabLayout:global(.game) .tabs,
|
|
122
|
+
.popupTabLayout:global(.game) .content .panels::before {
|
|
123
|
+
background-color: var(--semantic-color-background-overlay-default);
|
|
124
|
+
box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
|
|
125
|
+
outline-color: var(--semantic-color-stroke-overlay-default);
|
|
126
|
+
outline-width: 0.021rem;
|
|
127
|
+
outline-style: solid;
|
|
128
|
+
outline-offset: -0.021rem;
|
|
129
|
+
}
|
|
130
|
+
:global(.noAnimation) .popupTabLayout:global(.game) .tabs,
|
|
131
|
+
:global(.noAnimation) .popupTabLayout:global(.game) .content .panels::before {
|
|
132
|
+
box-shadow: none;
|
|
133
|
+
}
|
|
134
|
+
:global(.green) .popupTabLayout:global(.game) {
|
|
135
|
+
--semantic-color-surface-default: #1F2C24;
|
|
136
|
+
--semantic-color-surface-default-focused: #3ea07d;
|
|
137
|
+
background-color: transparent;
|
|
138
|
+
}
|
|
139
|
+
:global(.green) .popupTabLayout:global(.game) .tabs {
|
|
140
|
+
border-radius: var(--semantic-radius-container);
|
|
141
|
+
}
|
|
142
|
+
:global(.green) .popupTabLayout:global(.game) .content .panels::before {
|
|
143
|
+
border-radius: var(--semantic-radius-popup);
|
|
144
|
+
}
|
|
145
|
+
:global(.green) .popupTabLayout:global(.game) .tabs,
|
|
146
|
+
:global(.green) .popupTabLayout:global(.game) .content .panels::before {
|
|
147
|
+
background-color: var(--semantic-color-background-overlay-default);
|
|
148
|
+
box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
|
|
149
|
+
outline-color: var(--semantic-color-stroke-overlay-default);
|
|
150
|
+
outline-width: 0.021rem;
|
|
151
|
+
outline-style: solid;
|
|
152
|
+
outline-offset: -0.021rem;
|
|
153
|
+
}
|
|
154
|
+
:global(.noAnimation) :global(.green) .popupTabLayout:global(.game) .tabs,
|
|
155
|
+
:global(.noAnimation) :global(.green) .popupTabLayout:global(.game) .content .panels::before {
|
|
156
|
+
box-shadow: none;
|
|
157
|
+
}
|
|
158
|
+
:global(.orange) .popupTabLayout:global(.game) {
|
|
159
|
+
--semantic-color-surface-default: #422923;
|
|
160
|
+
--semantic-color-surface-default-focused: #b85f23;
|
|
161
|
+
background-color: transparent;
|
|
162
|
+
}
|
|
163
|
+
:global(.orange) .popupTabLayout:global(.game) .tabs {
|
|
164
|
+
border-radius: var(--semantic-radius-container);
|
|
165
|
+
}
|
|
166
|
+
:global(.orange) .popupTabLayout:global(.game) .content .panels::before {
|
|
167
|
+
border-radius: var(--semantic-radius-popup);
|
|
168
|
+
}
|
|
169
|
+
:global(.orange) .popupTabLayout:global(.game) .tabs,
|
|
170
|
+
:global(.orange) .popupTabLayout:global(.game) .content .panels::before {
|
|
171
|
+
background-color: var(--semantic-color-background-overlay-default);
|
|
172
|
+
box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
|
|
173
|
+
outline-color: var(--semantic-color-stroke-overlay-default);
|
|
174
|
+
outline-width: 0.021rem;
|
|
175
|
+
outline-style: solid;
|
|
176
|
+
outline-offset: -0.021rem;
|
|
177
|
+
}
|
|
178
|
+
:global(.noAnimation) :global(.orange) .popupTabLayout:global(.game) .tabs,
|
|
179
|
+
:global(.noAnimation) :global(.orange) .popupTabLayout:global(.game) .content .panels::before {
|
|
180
|
+
box-shadow: none;
|
|
181
|
+
}
|
|
182
|
+
.popupTransitionContainer {
|
|
183
|
+
width: 100%;
|
|
184
|
+
}
|
|
185
|
+
.popup > .body {
|
|
186
|
+
position: relative;
|
|
187
|
+
padding: 0;
|
|
188
|
+
}
|
|
189
|
+
:global(.enact-locale-right-to-left) .popup > .body {
|
|
190
|
+
padding: 0;
|
|
191
|
+
}
|
|
192
|
+
.panels {
|
|
193
|
+
position: relative;
|
|
194
|
+
top: auto;
|
|
195
|
+
right: auto;
|
|
196
|
+
bottom: auto;
|
|
197
|
+
left: auto;
|
|
198
|
+
max-height: 100%;
|
|
199
|
+
}
|
|
200
|
+
.panels > .viewport {
|
|
201
|
+
position: static;
|
|
202
|
+
top: auto;
|
|
203
|
+
right: auto;
|
|
204
|
+
bottom: auto;
|
|
205
|
+
left: auto;
|
|
206
|
+
}
|
|
207
|
+
.panel {
|
|
208
|
+
padding: 0;
|
|
209
|
+
max-height: calc(100vh - 4rem );
|
|
210
|
+
}
|
|
211
|
+
.panel > .body {
|
|
212
|
+
display: flex;
|
|
213
|
+
flex-direction: column;
|
|
214
|
+
flex: 0 1 auto;
|
|
215
|
+
padding: var(--primitive-spacing-60);
|
|
216
|
+
}
|
|
217
|
+
.popup > .body,
|
|
218
|
+
.optimized {
|
|
219
|
+
pointer-events: none;
|
|
220
|
+
}
|
|
221
|
+
.popup > .body .tabs,
|
|
222
|
+
.optimized .tabs,
|
|
223
|
+
.popup > .body .content > .panels,
|
|
224
|
+
.optimized .content > .panels {
|
|
225
|
+
pointer-events: auto;
|
|
226
|
+
}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _FloatingLayer = require("@enact/ui/FloatingLayer");
|
|
4
|
+
require("@testing-library/jest-dom");
|
|
5
|
+
var _react = require("@testing-library/react");
|
|
6
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
7
|
+
var _Item = require("../../Item");
|
|
8
|
+
var _PopupTabLayout = require("../PopupTabLayout");
|
|
9
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
11
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
12
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
13
|
+
var FloatingLayerController = (0, _FloatingLayer.FloatingLayerDecorator)('div');
|
|
14
|
+
var keyDown = function keyDown(keyCode) {
|
|
15
|
+
return function (elm) {
|
|
16
|
+
return _react.fireEvent.keyDown(elm, {
|
|
17
|
+
keyCode: keyCode
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
var enterKeyDown = keyDown(13);
|
|
22
|
+
var escapeKeyDown = keyDown(27);
|
|
23
|
+
var leftKeyDown = keyDown(37);
|
|
24
|
+
var downKeyDown = keyDown(40);
|
|
25
|
+
var keyUp = function keyUp(keyCode) {
|
|
26
|
+
return function (elm) {
|
|
27
|
+
return _react.fireEvent.keyUp(elm, {
|
|
28
|
+
keyCode: keyCode
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
var enterKeyUp = keyUp(13);
|
|
33
|
+
var escapeKeyUp = keyUp(27);
|
|
34
|
+
var downKeyUp = keyUp(40);
|
|
35
|
+
describe('PopupTabLayout specs', function () {
|
|
36
|
+
test('should be rendered opened if open is set to true', function () {
|
|
37
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
38
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.PopupTabLayout, {
|
|
39
|
+
open: true,
|
|
40
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
41
|
+
children: "popupTabLayout"
|
|
42
|
+
})
|
|
43
|
+
})
|
|
44
|
+
}));
|
|
45
|
+
var popupTabLayout = _react.screen.getByText('popupTabLayout');
|
|
46
|
+
expect(popupTabLayout).toBeInTheDocument();
|
|
47
|
+
});
|
|
48
|
+
test('should not be rendered if open is set to false', function () {
|
|
49
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
50
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.PopupTabLayout, {
|
|
51
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
52
|
+
children: "popupTabLayout"
|
|
53
|
+
})
|
|
54
|
+
})
|
|
55
|
+
}));
|
|
56
|
+
var popupTabLayout = _react.screen.queryByText('popupTabLayout');
|
|
57
|
+
expect(popupTabLayout).toBeNull();
|
|
58
|
+
});
|
|
59
|
+
test('should apply \'ease-in-out\' class when noAnimation is false', function () {
|
|
60
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
61
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.PopupTabLayout, {
|
|
62
|
+
"data-testid": "popupTabLayout",
|
|
63
|
+
noAnimation: false,
|
|
64
|
+
open: true,
|
|
65
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
66
|
+
children: "popupTabLayout"
|
|
67
|
+
})
|
|
68
|
+
})
|
|
69
|
+
}));
|
|
70
|
+
var expected = 'ease-in-out';
|
|
71
|
+
var actual = _react.screen.getByTestId('popupTabLayout').parentElement.parentElement.parentElement.parentElement;
|
|
72
|
+
expect(actual).toHaveClass(expected);
|
|
73
|
+
});
|
|
74
|
+
test('should not apply \'ease-in-out\' class when noAnimation is true', function () {
|
|
75
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
76
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.PopupTabLayout, {
|
|
77
|
+
"data-testid": "popupTabLayout",
|
|
78
|
+
noAnimation: true,
|
|
79
|
+
open: true,
|
|
80
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
81
|
+
children: "popupTabLayout"
|
|
82
|
+
})
|
|
83
|
+
})
|
|
84
|
+
}));
|
|
85
|
+
var expected = 'ease-in-out';
|
|
86
|
+
var actual = _react.screen.getByTestId('popupTabLayout').parentElement.parentElement.parentElement.parentElement;
|
|
87
|
+
expect(actual).not.toHaveClass(expected);
|
|
88
|
+
});
|
|
89
|
+
test('should not close popupTabLayout on escape if noAutoDismiss is true', /*#__PURE__*/_asyncToGenerator(function* () {
|
|
90
|
+
var handleClose = jest.fn();
|
|
91
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
92
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.PopupTabLayout, {
|
|
93
|
+
noAutoDismiss: true,
|
|
94
|
+
onClose: handleClose,
|
|
95
|
+
open: true,
|
|
96
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
97
|
+
children: "popupTabLayout"
|
|
98
|
+
})
|
|
99
|
+
})
|
|
100
|
+
}));
|
|
101
|
+
_react.fireEvent.keyUp(_react.screen.getByText('popupTabLayout'), {
|
|
102
|
+
keyCode: 27
|
|
103
|
+
});
|
|
104
|
+
yield (0, _react.waitFor)(function () {
|
|
105
|
+
expect(handleClose).not.toHaveBeenCalled();
|
|
106
|
+
});
|
|
107
|
+
}));
|
|
108
|
+
test('should display items from second tab', /*#__PURE__*/_asyncToGenerator(function* () {
|
|
109
|
+
var user = _userEvent["default"].setup();
|
|
110
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
111
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.PopupTabLayout, {
|
|
112
|
+
open: true,
|
|
113
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.Tab, {
|
|
114
|
+
title: "First Tab Title",
|
|
115
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.TabPanels, {
|
|
116
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
|
|
117
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
118
|
+
children: "Item 1"
|
|
119
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
120
|
+
children: "Item 2"
|
|
121
|
+
})]
|
|
122
|
+
})
|
|
123
|
+
})
|
|
124
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.Tab, {
|
|
125
|
+
title: "Second Tab Title",
|
|
126
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.TabPanels, {
|
|
127
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
|
|
128
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
129
|
+
children: "Item 3"
|
|
130
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
131
|
+
children: "Item 4"
|
|
132
|
+
})]
|
|
133
|
+
})
|
|
134
|
+
})
|
|
135
|
+
})]
|
|
136
|
+
})
|
|
137
|
+
}));
|
|
138
|
+
var thirdItem = _react.screen.queryByText('Item 3');
|
|
139
|
+
var fourthItem = _react.screen.queryByText('Item 4');
|
|
140
|
+
expect(thirdItem).not.toBeInTheDocument();
|
|
141
|
+
expect(fourthItem).not.toBeInTheDocument();
|
|
142
|
+
var secondTab = _react.screen.getByText('Second Tab Title');
|
|
143
|
+
yield user.click(secondTab);
|
|
144
|
+
thirdItem = _react.screen.getByText('Item 3');
|
|
145
|
+
fourthItem = _react.screen.getByText('Item 4');
|
|
146
|
+
expect(thirdItem).toBeInTheDocument();
|
|
147
|
+
expect(fourthItem).toBeInTheDocument();
|
|
148
|
+
}));
|
|
149
|
+
test('should fire onTabClick event for 5-way Select on tab element', function () {
|
|
150
|
+
var onTabClick = jest.fn();
|
|
151
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
152
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.PopupTabLayout, {
|
|
153
|
+
open: true,
|
|
154
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.Tab, {
|
|
155
|
+
onTabClick: onTabClick,
|
|
156
|
+
title: "First Tab Title",
|
|
157
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.TabPanels, {
|
|
158
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
|
|
159
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
160
|
+
children: "Item 1"
|
|
161
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
162
|
+
children: "Item 2"
|
|
163
|
+
})]
|
|
164
|
+
})
|
|
165
|
+
})
|
|
166
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.Tab, {
|
|
167
|
+
title: "Second Tab Title",
|
|
168
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.TabPanels, {
|
|
169
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
|
|
170
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
171
|
+
children: "Item 3"
|
|
172
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
173
|
+
children: "Item 4"
|
|
174
|
+
})]
|
|
175
|
+
})
|
|
176
|
+
})
|
|
177
|
+
})]
|
|
178
|
+
})
|
|
179
|
+
}));
|
|
180
|
+
var firstTab = _react.screen.getByText('First Tab Title');
|
|
181
|
+
enterKeyDown(firstTab);
|
|
182
|
+
enterKeyUp(firstTab);
|
|
183
|
+
expect(onTabClick).toHaveBeenCalled();
|
|
184
|
+
});
|
|
185
|
+
test('should fire onBack event when returning to previous tab', function () {
|
|
186
|
+
var handleOnBack = jest.fn();
|
|
187
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
188
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.PopupTabLayout, {
|
|
189
|
+
open: true,
|
|
190
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.Tab, {
|
|
191
|
+
title: "Tab Title",
|
|
192
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanels, {
|
|
193
|
+
index: 1,
|
|
194
|
+
onBack: handleOnBack,
|
|
195
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
|
|
196
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
197
|
+
children: "Item 1"
|
|
198
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
199
|
+
children: "Item 2"
|
|
200
|
+
})]
|
|
201
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
|
|
202
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
203
|
+
children: "Item 3"
|
|
204
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
205
|
+
children: "Item 4"
|
|
206
|
+
})]
|
|
207
|
+
})]
|
|
208
|
+
})
|
|
209
|
+
})
|
|
210
|
+
})
|
|
211
|
+
}));
|
|
212
|
+
var tab = _react.screen.getByText('Tab Title');
|
|
213
|
+
escapeKeyDown(tab);
|
|
214
|
+
escapeKeyUp(tab);
|
|
215
|
+
expect(handleOnBack).toHaveBeenCalled();
|
|
216
|
+
});
|
|
217
|
+
test('should fire onKeyDown event for 5-way navigation inside Tab element', function () {
|
|
218
|
+
var onKeyDown = jest.fn();
|
|
219
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
220
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.PopupTabLayout, {
|
|
221
|
+
open: true,
|
|
222
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.Tab, {
|
|
223
|
+
title: "First Tab Title",
|
|
224
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.TabPanels, {
|
|
225
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
|
|
226
|
+
onKeyDown: onKeyDown,
|
|
227
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
228
|
+
children: "Item 1"
|
|
229
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
230
|
+
children: "Item 2"
|
|
231
|
+
})]
|
|
232
|
+
})
|
|
233
|
+
})
|
|
234
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.Tab, {
|
|
235
|
+
title: "Second Tab Title",
|
|
236
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.TabPanels, {
|
|
237
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
|
|
238
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
239
|
+
children: "Item 3"
|
|
240
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
241
|
+
children: "Item 4"
|
|
242
|
+
})]
|
|
243
|
+
})
|
|
244
|
+
})
|
|
245
|
+
})]
|
|
246
|
+
})
|
|
247
|
+
}));
|
|
248
|
+
var firstItem = _react.screen.getByText('Item 1');
|
|
249
|
+
downKeyDown(firstItem);
|
|
250
|
+
downKeyUp(firstItem);
|
|
251
|
+
expect(onKeyDown).toHaveBeenCalled();
|
|
252
|
+
});
|
|
253
|
+
test('should fire onBack event when left key pressed from the second TabPanel', function () {
|
|
254
|
+
var onBack = jest.fn();
|
|
255
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
256
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.PopupTabLayout, {
|
|
257
|
+
open: true,
|
|
258
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.Tab, {
|
|
259
|
+
title: "Tab Title",
|
|
260
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanels, {
|
|
261
|
+
index: 1,
|
|
262
|
+
onBack: onBack,
|
|
263
|
+
rtl: false,
|
|
264
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
|
|
265
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
266
|
+
children: "Item 1"
|
|
267
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
268
|
+
children: "Item 2"
|
|
269
|
+
})]
|
|
270
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
|
|
271
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
272
|
+
children: "Item 3"
|
|
273
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
|
|
274
|
+
children: "Item 4"
|
|
275
|
+
})]
|
|
276
|
+
})]
|
|
277
|
+
})
|
|
278
|
+
})
|
|
279
|
+
})
|
|
280
|
+
}));
|
|
281
|
+
var firstItem = _react.screen.getByText('Item 3');
|
|
282
|
+
leftKeyDown(firstItem);
|
|
283
|
+
expect(onBack).toHaveBeenCalled();
|
|
284
|
+
});
|
|
285
|
+
});
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
// Type definitions for limestone/ProgressBar
|
|
2
|
+
|
|
3
|
+
import { SkinnableProps as limestone_Skinnable_SkinnableProps } from "limestone/Skinnable";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
|
|
6
|
+
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
|
|
7
|
+
type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
|
|
8
|
+
|
|
9
|
+
export interface ProgressBarBaseProps {
|
|
10
|
+
/**
|
|
11
|
+
* The proportion of the loaded portion of the progress bar.
|
|
12
|
+
* * Valid values are between `0` and `1` .
|
|
13
|
+
*/
|
|
14
|
+
backgroundProgress?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Customizes the component by mapping the supplied collection of CSS class names to the
|
|
17
|
+
corresponding internal elements and states of this component.
|
|
18
|
+
*
|
|
19
|
+
* The following classes are supported:
|
|
20
|
+
* * `progressBar` - The root component class
|
|
21
|
+
* * `radial` - Applied when `orientation` is `'radial'`
|
|
22
|
+
*/
|
|
23
|
+
css?: object;
|
|
24
|
+
/**
|
|
25
|
+
* Highlights the filled portion.
|
|
26
|
+
*/
|
|
27
|
+
highlighted?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* The orientation of the slider.
|
|
30
|
+
*/
|
|
31
|
+
orientation?: "horizontal" | "vertical" | "radial";
|
|
32
|
+
/**
|
|
33
|
+
* A number between `0` and `1` indicating the proportion of the filled portion of the bar.
|
|
34
|
+
*/
|
|
35
|
+
progress?: number;
|
|
36
|
+
/**
|
|
37
|
+
* Displays an anchor at `progressAnchor` .
|
|
38
|
+
*/
|
|
39
|
+
showAnchor?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Enables the built-in tooltip.
|
|
42
|
+
*
|
|
43
|
+
* To customize the tooltip, pass either a custom tooltip component or an instance of
|
|
44
|
+
with additional
|
|
45
|
+
props configured.
|
|
46
|
+
*
|
|
47
|
+
* The provided component will receive the following props from `ProgressBar` :
|
|
48
|
+
* * `orientation` - The value of `orientation`
|
|
49
|
+
* * `percent` - Always `true` indicating the value should be presented as a percentage
|
|
50
|
+
rather than an absolute value
|
|
51
|
+
* * `progress` - The `value` as a proportion between `min` and `max`
|
|
52
|
+
* * `visible` - Always `true` indicating that the tooltip should be visible
|
|
53
|
+
*
|
|
54
|
+
* Usage:
|
|
55
|
+
* ```
|
|
56
|
+
<ProgressBar
|
|
57
|
+
tooltip={
|
|
58
|
+
<ProgressBarTooltip position="after" />
|
|
59
|
+
}
|
|
60
|
+
/>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
* The tooltip may also be passed as a child via the `"tooltip"` slot. See
|
|
64
|
+
for more information on how slots can be used.
|
|
65
|
+
*
|
|
66
|
+
* Usage:
|
|
67
|
+
* ```
|
|
68
|
+
<ProgressBar>
|
|
69
|
+
<ProgressBarTooltip position="after" />
|
|
70
|
+
</ProgressBar>
|
|
71
|
+
```
|
|
72
|
+
*/
|
|
73
|
+
tooltip?: boolean | React.ComponentType | JSX.Element;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Renders a limestone-styled progress bar.
|
|
77
|
+
*/
|
|
78
|
+
|
|
79
|
+
export class ProgressBarBase extends React.Component<
|
|
80
|
+
Merge<React.HTMLProps<HTMLElement>, ProgressBarBaseProps>
|
|
81
|
+
> {}
|
|
82
|
+
|
|
83
|
+
export interface ProgressBarTooltipProps {
|
|
84
|
+
/**
|
|
85
|
+
* Customizes the component by mapping the supplied collection of CSS class names to the
|
|
86
|
+
corresponding internal elements and states of this component.
|
|
87
|
+
*
|
|
88
|
+
* The following classes are supported:
|
|
89
|
+
* * `tooltip` - The root component class
|
|
90
|
+
*/
|
|
91
|
+
css?: object;
|
|
92
|
+
/**
|
|
93
|
+
* Sets the orientation of the tooltip based on the orientation of the bar.
|
|
94
|
+
*
|
|
95
|
+
* 'vertical' sends the tooltip to one of the sides, 'horizontal' positions it above the
|
|
96
|
+
bar, 'radial' can position it on all sides.
|
|
97
|
+
*/
|
|
98
|
+
orientation?: "horizontal" | "vertical" | "radial";
|
|
99
|
+
/**
|
|
100
|
+
* Displays the value as a percentage.
|
|
101
|
+
*/
|
|
102
|
+
percent?: boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Position of the tooltip with respect to the progress bar.
|
|
105
|
+
* * For `orientation="horizontal"` or `orientation="radial"` progress bars, the default value is `'above'` .
|
|
106
|
+
* * For `orientation="vertical"` progress bars, the default value is `'before'` .
|
|
107
|
+
*
|
|
108
|
+
* When using `'before'` or `'after'` alone or in any of the below combinations, `'before'`
|
|
109
|
+
will position the tooltip on the side of the current locale's text directionality. In LTR
|
|
110
|
+
locales, it will be on the left; in RTL locales, it will be on the right. Similarly,
|
|
111
|
+
`'after'` will position the tooltip on the opposite side: the right side for LTR and
|
|
112
|
+
left for RTL.
|
|
113
|
+
*
|
|
114
|
+
* Valid values when `orientation="horizontal"` or `orientation="radial"`
|
|
115
|
+
* _Value_ _Tooltip Direction_ `'above'` Above component, flowing to the nearest end `'above left'` Above component, flowing to the left `'above before'` Above component, flowing to the start of text `'above center'` Above component, flowing to the center `'above right'` Above component, flowing to the right `'above after'` Above component, flowing to the end of text `'below'` Below component, flowing to the nearest end `'below left'` Below component, flowing to the left `'below before'` Below component, flowing to the start of text `'below center'` Below component, flowing to the center `'below right'` Below component, flowing to the right `'below after'` Below component, flowing to the end of text
|
|
116
|
+
* Valid values when `orientation="vertical"` or `orientation="radial"`
|
|
117
|
+
* _Value_ _Tooltip Direction_ `'left'` Left of the component, contents middle aligned `'before'` Start of text side of the component, contents middle aligned `'right'` right of the component, contents middle aligned `'after'` End of text side of the component, contents middle aligned */
|
|
118
|
+
position?:
|
|
119
|
+
| "above"
|
|
120
|
+
| "above before"
|
|
121
|
+
| "above left"
|
|
122
|
+
| "above after"
|
|
123
|
+
| "above center"
|
|
124
|
+
| "above right"
|
|
125
|
+
| "below"
|
|
126
|
+
| "below left"
|
|
127
|
+
| "below before"
|
|
128
|
+
| "below center"
|
|
129
|
+
| "below right"
|
|
130
|
+
| "below after"
|
|
131
|
+
| "left"
|
|
132
|
+
| "before"
|
|
133
|
+
| "right"
|
|
134
|
+
| "after";
|
|
135
|
+
/**
|
|
136
|
+
* The proportion of the filled part of the bar.
|
|
137
|
+
* * Should be a number between 0 and 1.
|
|
138
|
+
*/
|
|
139
|
+
proportion?: number;
|
|
140
|
+
/**
|
|
141
|
+
* Visibility of the tooltip
|
|
142
|
+
*/
|
|
143
|
+
visible?: boolean;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* A specifically adapted for use with
|
|
147
|
+
or
|
|
148
|
+
.
|
|
149
|
+
*/
|
|
150
|
+
|
|
151
|
+
export class ProgressBarTooltip extends React.Component<
|
|
152
|
+
Merge<React.HTMLProps<HTMLElement>, ProgressBarTooltipProps>
|
|
153
|
+
> {}
|
|
154
|
+
|
|
155
|
+
export interface ProgressBarDecoratorProps
|
|
156
|
+
extends limestone_Skinnable_SkinnableProps {}
|
|
157
|
+
export function ProgressBarDecorator<P>(
|
|
158
|
+
Component: React.ComponentType<P> | string,
|
|
159
|
+
): React.ComponentType<P & ProgressBarDecoratorProps>;
|
|
160
|
+
|
|
161
|
+
export interface ProgressBarProps
|
|
162
|
+
extends Merge<ProgressBarBaseProps, ProgressBarDecoratorProps> {}
|
|
163
|
+
/**
|
|
164
|
+
* The ready-to-use Limestone-styled ProgressBar.
|
|
165
|
+
*/
|
|
166
|
+
|
|
167
|
+
export class ProgressBar extends React.Component<
|
|
168
|
+
Merge<React.HTMLProps<HTMLElement>, ProgressBarProps>
|
|
169
|
+
> {}
|
|
170
|
+
|
|
171
|
+
export default ProgressBar;
|