@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,470 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "ContentContainerDecorator", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _ContentContainerDecorator.ContentContainerDecorator;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
exports["default"] = exports.ScrollerBase = exports.Scroller = void 0;
|
|
13
|
+
var _util = require("@enact/core/util");
|
|
14
|
+
var _I18nDecorator = require("@enact/i18n/I18nDecorator");
|
|
15
|
+
var _SpotlightContainerDecorator = _interopRequireDefault(require("@enact/spotlight/SpotlightContainerDecorator"));
|
|
16
|
+
var _Spottable = _interopRequireDefault(require("@enact/spotlight/Spottable"));
|
|
17
|
+
var _Resizable = require("@enact/ui/Resizable");
|
|
18
|
+
var _Scroller = require("@enact/ui/Scroller");
|
|
19
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
20
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
21
|
+
var _react = require("react");
|
|
22
|
+
var _useScroll2 = _interopRequireDefault(require("../useScroll"));
|
|
23
|
+
var _HoverToScroll = _interopRequireDefault(require("../useScroll/HoverToScroll"));
|
|
24
|
+
var _Scrollbar = _interopRequireDefault(require("../useScroll/Scrollbar"));
|
|
25
|
+
var _ScrollbarPlaceholder = _interopRequireDefault(require("../useScroll/ScrollbarPlaceholder"));
|
|
26
|
+
var _Skinnable = _interopRequireDefault(require("../Skinnable"));
|
|
27
|
+
var _ContentContainerDecorator = require("./ContentContainerDecorator");
|
|
28
|
+
var _EditableWrapper = require("./EditableWrapper");
|
|
29
|
+
var _useThemeScroller2 = _interopRequireDefault(require("./useThemeScroller"));
|
|
30
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
31
|
+
var _excluded = ["aria-label", "hoverToScroll"],
|
|
32
|
+
_excluded2 = ["className"];
|
|
33
|
+
/**
|
|
34
|
+
* Provides Limestone-themed scroller components and behaviors.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* <Scroller>
|
|
38
|
+
* <div style={{height: '300px'}}>
|
|
39
|
+
* <p>San Francisco</p>
|
|
40
|
+
* <p>Seoul</p>
|
|
41
|
+
* <p>Bangalore</p>
|
|
42
|
+
* <p>New York</p>
|
|
43
|
+
* <p>London</p>
|
|
44
|
+
* </div>
|
|
45
|
+
* </Scroller>
|
|
46
|
+
*
|
|
47
|
+
* @module limestone/Scroller
|
|
48
|
+
* @exports Scroller
|
|
49
|
+
* @exports ScrollerBase
|
|
50
|
+
*/
|
|
51
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
52
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
53
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
54
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
55
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
56
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
57
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
58
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
59
|
+
var nop = function nop() {};
|
|
60
|
+
var SpottableDiv = (0, _Spottable["default"])('div');
|
|
61
|
+
var scrollerId = 0;
|
|
62
|
+
var scrollerDefaultProps = {
|
|
63
|
+
'data-spotlight-container-disabled': false,
|
|
64
|
+
cbScrollTo: nop,
|
|
65
|
+
direction: 'both',
|
|
66
|
+
fadeOut: false,
|
|
67
|
+
focusableScrollbar: false,
|
|
68
|
+
horizontalScrollbar: 'auto',
|
|
69
|
+
noScrollByDrag: false,
|
|
70
|
+
noScrollByWheel: false,
|
|
71
|
+
onScroll: nop,
|
|
72
|
+
onScrollStart: nop,
|
|
73
|
+
onScrollStop: nop,
|
|
74
|
+
overscrollEffectOn: {
|
|
75
|
+
arrowKey: false,
|
|
76
|
+
drag: true,
|
|
77
|
+
pageKey: false,
|
|
78
|
+
track: false,
|
|
79
|
+
wheel: true
|
|
80
|
+
},
|
|
81
|
+
scrollMode: 'native',
|
|
82
|
+
verticalScrollbar: 'auto'
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* A Limestone-styled Scroller, useScroll applied.
|
|
87
|
+
*
|
|
88
|
+
* Usage:
|
|
89
|
+
* ```
|
|
90
|
+
* <Scroller>Scroll me.</Scroller>
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* @class Scroller
|
|
94
|
+
* @memberof limestone/Scroller
|
|
95
|
+
* @extends ui/Scroller.ScrollerBasic
|
|
96
|
+
* @ui
|
|
97
|
+
* @public
|
|
98
|
+
*/
|
|
99
|
+
var Scroller = exports.Scroller = function Scroller(props) {
|
|
100
|
+
var scrollerProps = (0, _util.setDefaultProps)(props, scrollerDefaultProps);
|
|
101
|
+
if (typeof ENACT_PACK_NO_ANIMATION !== 'undefined' && ENACT_PACK_NO_ANIMATION) {
|
|
102
|
+
scrollerProps.overscrollEffectOn = {
|
|
103
|
+
arrowKey: false,
|
|
104
|
+
drag: false,
|
|
105
|
+
pageKey: false,
|
|
106
|
+
track: false,
|
|
107
|
+
wheel: false
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
var ariaLabel = scrollerProps['aria-label'],
|
|
111
|
+
hoverToScroll = scrollerProps.hoverToScroll,
|
|
112
|
+
rest = _objectWithoutProperties(scrollerProps, _excluded);
|
|
113
|
+
var id = "scroller_".concat(++scrollerId, "_content");
|
|
114
|
+
|
|
115
|
+
// Hooks
|
|
116
|
+
|
|
117
|
+
var _useScroll = (0, _useScroll2["default"])(_objectSpread(_objectSpread({}, rest), {}, {
|
|
118
|
+
scrollToContentContainerOnFocus: true
|
|
119
|
+
})),
|
|
120
|
+
ScrollContentWrapper = _useScroll.scrollContentWrapper,
|
|
121
|
+
scrollContentHandle = _useScroll.scrollContentHandle,
|
|
122
|
+
isHorizontalScrollbarVisible = _useScroll.isHorizontalScrollbarVisible,
|
|
123
|
+
isVerticalScrollbarVisible = _useScroll.isVerticalScrollbarVisible,
|
|
124
|
+
resizeContextProps = _useScroll.resizeContextProps,
|
|
125
|
+
scrollContainerProps = _useScroll.scrollContainerProps,
|
|
126
|
+
scrollContentWrapperProps = _useScroll.scrollContentWrapperProps,
|
|
127
|
+
scrollContentProps = _useScroll.scrollContentProps,
|
|
128
|
+
horizontalScrollbarProps = _useScroll.horizontalScrollbarProps,
|
|
129
|
+
verticalScrollbarProps = _useScroll.verticalScrollbarProps,
|
|
130
|
+
hoverToScrollProps = _useScroll.hoverToScrollProps;
|
|
131
|
+
var className = scrollContentWrapperProps.className,
|
|
132
|
+
scrollContentWrapperRest = _objectWithoutProperties(scrollContentWrapperProps, _excluded2);
|
|
133
|
+
var _useThemeScroller = (0, _useThemeScroller2["default"])(rest, _objectSpread(_objectSpread({}, scrollContentProps), {}, {
|
|
134
|
+
className: (0, _classnames["default"])(className, scrollContentProps.className)
|
|
135
|
+
}), id, isHorizontalScrollbarVisible, isVerticalScrollbarVisible),
|
|
136
|
+
editableWrapperProps = _useThemeScroller.editableWrapperProps,
|
|
137
|
+
focusableBodyProps = _useThemeScroller.focusableBodyProps,
|
|
138
|
+
themeScrollContentProps = _useThemeScroller.themeScrollContentProps;
|
|
139
|
+
var children = rest.children,
|
|
140
|
+
direction = rest.direction,
|
|
141
|
+
editable = rest.editable;
|
|
142
|
+
|
|
143
|
+
// To apply spotlight navigableFilter, SpottableDiv should be in scrollContainer.
|
|
144
|
+
var ScrollBody = rest.focusableScrollbar === 'byEnter' ? SpottableDiv : _react.Fragment;
|
|
145
|
+
|
|
146
|
+
// Render
|
|
147
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Resizable.ResizeContext, _objectSpread(_objectSpread({}, resizeContextProps), {}, {
|
|
148
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ScrollContentWrapper, _objectSpread(_objectSpread(_objectSpread({}, scrollContainerProps), scrollContentWrapperRest), {}, {
|
|
149
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(ScrollBody, _objectSpread(_objectSpread({}, focusableBodyProps), {}, {
|
|
150
|
+
children: [rest.focusableScrollbar ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ScrollbarPlaceholder["default"], {}) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_Scroller.ScrollerBasic, _objectSpread(_objectSpread({}, themeScrollContentProps), {}, {
|
|
151
|
+
"aria-label": ariaLabel,
|
|
152
|
+
id: id,
|
|
153
|
+
ref: scrollContentHandle,
|
|
154
|
+
children: editable && direction === 'horizontal' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_EditableWrapper.EditableWrapper, _objectSpread({}, editableWrapperProps)) : children
|
|
155
|
+
})), isVerticalScrollbarVisible ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Scrollbar["default"], _objectSpread({}, verticalScrollbarProps)) : null, isHorizontalScrollbarVisible ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Scrollbar["default"], _objectSpread({}, horizontalScrollbarProps)) : null, hoverToScroll ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_HoverToScroll["default"], _objectSpread({}, hoverToScrollProps)) : null]
|
|
156
|
+
}))
|
|
157
|
+
}))
|
|
158
|
+
}));
|
|
159
|
+
};
|
|
160
|
+
Scroller.displayName = 'Scroller';
|
|
161
|
+
Scroller.propTypes = /** @lends limestone/Scroller.Scroller.prototype */{
|
|
162
|
+
/**
|
|
163
|
+
* The "aria-label" for the Scroller.
|
|
164
|
+
*
|
|
165
|
+
* When `aria-label` is set and `focusableScrollbar` is `byEnter`, it will be used
|
|
166
|
+
* instead to provide an accessibility label for the Scroller.
|
|
167
|
+
*
|
|
168
|
+
* @type {String}
|
|
169
|
+
* @public
|
|
170
|
+
*/
|
|
171
|
+
'aria-label': _propTypes["default"].string,
|
|
172
|
+
/**
|
|
173
|
+
* A callback function that receives a reference to the `scrollTo` feature.
|
|
174
|
+
*
|
|
175
|
+
* Once received, the `scrollTo` method can be called as an imperative interface.
|
|
176
|
+
*
|
|
177
|
+
* - {position: {x, y}} - Pixel value for x and/or y position
|
|
178
|
+
* - {align} - Where the scroll area should be aligned. Values are:
|
|
179
|
+
* `'left'`, `'right'`, `'top'`, `'bottom'`,
|
|
180
|
+
* `'topleft'`, `'topright'`, `'bottomleft'`, and `'bottomright'`.
|
|
181
|
+
* - {node} - Node to scroll into view
|
|
182
|
+
* - {animate} - When `true`, scroll occurs with animation. When `false`, no
|
|
183
|
+
* animation occurs.
|
|
184
|
+
* - {focus} - When `true`, attempts to focus item after scroll. Only valid when scrolling
|
|
185
|
+
* by `node`.
|
|
186
|
+
* > Note: Only specify one of: `position`, `align`, `node`
|
|
187
|
+
*
|
|
188
|
+
* Example:
|
|
189
|
+
* ```
|
|
190
|
+
* // If you set cbScrollTo prop like below;
|
|
191
|
+
* cbScrollTo: (fn) => {this.scrollTo = fn;}
|
|
192
|
+
* // You can simply call like below;
|
|
193
|
+
* this.scrollTo({align: 'top'}); // scroll to the top
|
|
194
|
+
* ```
|
|
195
|
+
*
|
|
196
|
+
* @type {Function}
|
|
197
|
+
* @public
|
|
198
|
+
*/
|
|
199
|
+
cbScrollTo: _propTypes["default"].func,
|
|
200
|
+
/**
|
|
201
|
+
* This is set to `true` by SpotlightContainerDecorator
|
|
202
|
+
*
|
|
203
|
+
* @type {Boolean}
|
|
204
|
+
* @private
|
|
205
|
+
*/
|
|
206
|
+
'data-spotlight-container': _propTypes["default"].bool,
|
|
207
|
+
/**
|
|
208
|
+
* `false` if the content of the scroller could get focus
|
|
209
|
+
*
|
|
210
|
+
* @type {Boolean}
|
|
211
|
+
* @default false
|
|
212
|
+
* @private
|
|
213
|
+
*/
|
|
214
|
+
'data-spotlight-container-disabled': _propTypes["default"].bool,
|
|
215
|
+
/**
|
|
216
|
+
* This is passed onto the wrapped component to allow
|
|
217
|
+
* it to customize the spotlight container for its use case.
|
|
218
|
+
*
|
|
219
|
+
* @type {String}
|
|
220
|
+
* @private
|
|
221
|
+
*/
|
|
222
|
+
'data-spotlight-id': _propTypes["default"].string,
|
|
223
|
+
/**
|
|
224
|
+
* Disable voice control feature of component.
|
|
225
|
+
*
|
|
226
|
+
* @type {Boolean}
|
|
227
|
+
* @public
|
|
228
|
+
*/
|
|
229
|
+
'data-webos-voice-disabled': _propTypes["default"].bool,
|
|
230
|
+
/**
|
|
231
|
+
* Activates the component for voice control.
|
|
232
|
+
*
|
|
233
|
+
* @type {Boolean}
|
|
234
|
+
* @public
|
|
235
|
+
*/
|
|
236
|
+
'data-webos-voice-focused': _propTypes["default"].bool,
|
|
237
|
+
/**
|
|
238
|
+
* The voice control group label.
|
|
239
|
+
*
|
|
240
|
+
* @type {String}
|
|
241
|
+
* @public
|
|
242
|
+
*/
|
|
243
|
+
'data-webos-voice-group-label': _propTypes["default"].string,
|
|
244
|
+
/**
|
|
245
|
+
* Direction of the scroller.
|
|
246
|
+
*
|
|
247
|
+
* @type {('both'|'horizontal'|'vertical')}
|
|
248
|
+
* @default 'both'
|
|
249
|
+
* @public
|
|
250
|
+
*/
|
|
251
|
+
direction: _propTypes["default"].oneOf(['both', 'horizontal', 'vertical']),
|
|
252
|
+
/**
|
|
253
|
+
* Enables editing items in the scroller.
|
|
254
|
+
* You can specify props for editable scroller as an object.
|
|
255
|
+
* See the details in {@link limestone/Scroller.EditableShape|EditableShape}
|
|
256
|
+
*
|
|
257
|
+
* @type {limestone/Scroller.EditableShape}
|
|
258
|
+
* @public
|
|
259
|
+
*/
|
|
260
|
+
editable: _EditableWrapper.EditableShape,
|
|
261
|
+
/**
|
|
262
|
+
* Adds fade-out effect on the scroller.
|
|
263
|
+
*
|
|
264
|
+
* Set this to `true` only if the content has no spottable but text.
|
|
265
|
+
* > Note: Fade-out effect will not show if the `direction` is set to `both`.
|
|
266
|
+
*
|
|
267
|
+
* @type {Boolean}
|
|
268
|
+
* @default false
|
|
269
|
+
* @public
|
|
270
|
+
*/
|
|
271
|
+
fadeOut: _propTypes["default"].bool,
|
|
272
|
+
/**
|
|
273
|
+
* Allows 5-way navigation to the scroll thumb.
|
|
274
|
+
*
|
|
275
|
+
* By default, 5-way will not move focus to the scroll thumb.
|
|
276
|
+
* If `true`, the scroll thumb will get focus by directional keys.
|
|
277
|
+
* If `'byEnter'`, scroll thumb will get focus first by directional keys,
|
|
278
|
+
* then the scroll body will get focus by enter key or back key pressed on scroll thumb.
|
|
279
|
+
*
|
|
280
|
+
* @type {Boolean|'byEnter'}
|
|
281
|
+
* @default false
|
|
282
|
+
* @public
|
|
283
|
+
*/
|
|
284
|
+
focusableScrollbar: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].oneOf(['byEnter'])]),
|
|
285
|
+
/**
|
|
286
|
+
* Specifies how to show horizontal scrollbar.
|
|
287
|
+
*
|
|
288
|
+
* @type {('auto'|'visible'|'hidden')}
|
|
289
|
+
* @default 'auto'
|
|
290
|
+
* @public
|
|
291
|
+
*/
|
|
292
|
+
horizontalScrollbar: _propTypes["default"].oneOf(['auto', 'visible', 'hidden']),
|
|
293
|
+
/**
|
|
294
|
+
* Sets the hint string read when focusing the scroll thumb in the horizontal scroll bar.
|
|
295
|
+
*
|
|
296
|
+
* @type {String}
|
|
297
|
+
* @default $L('scroll up or down with up down button')
|
|
298
|
+
* @public
|
|
299
|
+
*/
|
|
300
|
+
horizontalScrollThumbAriaLabel: _propTypes["default"].string,
|
|
301
|
+
/**
|
|
302
|
+
* Enables scroll by hover on edges in scroll direction.
|
|
303
|
+
*
|
|
304
|
+
* @type {Boolean}
|
|
305
|
+
* @public
|
|
306
|
+
*/
|
|
307
|
+
hoverToScroll: _propTypes["default"].bool,
|
|
308
|
+
/**
|
|
309
|
+
* Unique identifier for the component.
|
|
310
|
+
*
|
|
311
|
+
* When defined and when the `Scroller` is within a {@link limestone/Panels.Panel|Panel}, the
|
|
312
|
+
* `Scroller` will store its scroll position and restore that position when returning to the
|
|
313
|
+
* `Panel`.
|
|
314
|
+
*
|
|
315
|
+
* @type {String}
|
|
316
|
+
* @public
|
|
317
|
+
*/
|
|
318
|
+
id: _propTypes["default"].string,
|
|
319
|
+
/**
|
|
320
|
+
* Prevents scroll by dragging or flicking on the scroller.
|
|
321
|
+
*
|
|
322
|
+
* @type {Boolean}
|
|
323
|
+
* @default false
|
|
324
|
+
* @private
|
|
325
|
+
*/
|
|
326
|
+
noScrollByDrag: _propTypes["default"].bool,
|
|
327
|
+
/**
|
|
328
|
+
* Prevents scroll by wheeling on the scroller.
|
|
329
|
+
*
|
|
330
|
+
* @type {Boolean}
|
|
331
|
+
* @default false
|
|
332
|
+
* @public
|
|
333
|
+
*/
|
|
334
|
+
noScrollByWheel: _propTypes["default"].bool,
|
|
335
|
+
/**
|
|
336
|
+
* Called when scrolling.
|
|
337
|
+
*
|
|
338
|
+
* Passes `scrollLeft`, `scrollTop`.
|
|
339
|
+
* It is not recommended to set this prop since it can cause performance degradation.
|
|
340
|
+
* Use `onScrollStart` or `onScrollStop` instead.
|
|
341
|
+
*
|
|
342
|
+
* @type {Function}
|
|
343
|
+
* @param {Object} event
|
|
344
|
+
* @param {Number} event.scrollLeft Scroll left value.
|
|
345
|
+
* @param {Number} event.scrollTop Scroll top value.
|
|
346
|
+
* @public
|
|
347
|
+
*/
|
|
348
|
+
onScroll: _propTypes["default"].func,
|
|
349
|
+
/**
|
|
350
|
+
* Called when scroll starts.
|
|
351
|
+
*
|
|
352
|
+
* Passes `scrollLeft` and `scrollTop`.
|
|
353
|
+
*
|
|
354
|
+
* Example:
|
|
355
|
+
* ```
|
|
356
|
+
* onScrollStart = ({scrollLeft, scrollTop}) => {
|
|
357
|
+
* // do something with scrollLeft and scrollTop
|
|
358
|
+
* }
|
|
359
|
+
*
|
|
360
|
+
* render = () => (
|
|
361
|
+
* <Scroller
|
|
362
|
+
* ...
|
|
363
|
+
* onScrollStart={this.onScrollStart}
|
|
364
|
+
* ...
|
|
365
|
+
* />
|
|
366
|
+
* )
|
|
367
|
+
* ```
|
|
368
|
+
*
|
|
369
|
+
* @type {Function}
|
|
370
|
+
* @param {Object} event
|
|
371
|
+
* @param {Number} event.scrollLeft Scroll left value.
|
|
372
|
+
* @param {Number} event.scrollTop Scroll top value.
|
|
373
|
+
* @public
|
|
374
|
+
*/
|
|
375
|
+
onScrollStart: _propTypes["default"].func,
|
|
376
|
+
/**
|
|
377
|
+
* Called when scroll stops.
|
|
378
|
+
*
|
|
379
|
+
* Passes `scrollLeft` and `scrollTop`.
|
|
380
|
+
*
|
|
381
|
+
* Example:
|
|
382
|
+
* ```
|
|
383
|
+
* onScrollStop = ({scrollLeft, scrollTop}) => {
|
|
384
|
+
* // do something with scrollLeft and scrollTop
|
|
385
|
+
* }
|
|
386
|
+
*
|
|
387
|
+
* render = () => (
|
|
388
|
+
* <Scroller
|
|
389
|
+
* ...
|
|
390
|
+
* onScrollStop={this.onScrollStop}
|
|
391
|
+
* ...
|
|
392
|
+
* />
|
|
393
|
+
* )
|
|
394
|
+
* ```
|
|
395
|
+
*
|
|
396
|
+
* @type {Function}
|
|
397
|
+
* @param {Object} event
|
|
398
|
+
* @param {Number} event.scrollLeft Scroll left value.
|
|
399
|
+
* @param {Number} event.scrollTop Scroll top value.
|
|
400
|
+
* @public
|
|
401
|
+
*/
|
|
402
|
+
onScrollStop: _propTypes["default"].func,
|
|
403
|
+
/**
|
|
404
|
+
* Specifies overscroll effects shows on which type of inputs.
|
|
405
|
+
*
|
|
406
|
+
* @type {Object}
|
|
407
|
+
* @default {
|
|
408
|
+
* arrowKey: false,
|
|
409
|
+
* drag: true,
|
|
410
|
+
* pageKey: false,
|
|
411
|
+
* track: false,
|
|
412
|
+
* wheel: true
|
|
413
|
+
* }
|
|
414
|
+
* @private
|
|
415
|
+
*/
|
|
416
|
+
overscrollEffectOn: _propTypes["default"].shape({
|
|
417
|
+
arrowKey: _propTypes["default"].bool,
|
|
418
|
+
drag: _propTypes["default"].bool,
|
|
419
|
+
pageKey: _propTypes["default"].bool,
|
|
420
|
+
track: _propTypes["default"].bool,
|
|
421
|
+
wheel: _propTypes["default"].bool
|
|
422
|
+
}),
|
|
423
|
+
/**
|
|
424
|
+
* Customizes the component by mapping the supplied collection of CSS class names to the
|
|
425
|
+
* corresponding internal elements and states of this component.
|
|
426
|
+
*
|
|
427
|
+
* The following classes are supported:
|
|
428
|
+
*
|
|
429
|
+
* * `scrollbarTrack` - The scrollbarTrack component class
|
|
430
|
+
* * `thumb` - The scrollbar thumb component class
|
|
431
|
+
*
|
|
432
|
+
* @type {Object}
|
|
433
|
+
* @public
|
|
434
|
+
*/
|
|
435
|
+
scrollbarTrackCss: _propTypes["default"].object,
|
|
436
|
+
/**
|
|
437
|
+
* Specifies how to scroll.
|
|
438
|
+
*
|
|
439
|
+
* @type {('native'|'translate')}
|
|
440
|
+
* @default 'native'
|
|
441
|
+
* @public
|
|
442
|
+
*/
|
|
443
|
+
scrollMode: _propTypes["default"].oneOf(['native', 'translate']),
|
|
444
|
+
/**
|
|
445
|
+
* Specifies how to show vertical scrollbar.
|
|
446
|
+
*
|
|
447
|
+
* @type {('auto'|'visible'|'hidden')}
|
|
448
|
+
* @default 'auto'
|
|
449
|
+
* @public
|
|
450
|
+
*/
|
|
451
|
+
verticalScrollbar: _propTypes["default"].oneOf(['auto', 'visible', 'hidden']),
|
|
452
|
+
/**
|
|
453
|
+
* Sets the hint string read when focusing the scroll thumb in the vertical scroll bar.
|
|
454
|
+
*
|
|
455
|
+
* @type {String}
|
|
456
|
+
* @default $L('scroll left or right with left right button')
|
|
457
|
+
* @public
|
|
458
|
+
*/
|
|
459
|
+
verticalScrollThumbAriaLabel: _propTypes["default"].string
|
|
460
|
+
};
|
|
461
|
+
var ScrollerBase = exports.ScrollerBase = Scroller;
|
|
462
|
+
exports.Scroller = Scroller = (0, _Skinnable["default"])((0, _SpotlightContainerDecorator["default"])({
|
|
463
|
+
overflow: true,
|
|
464
|
+
preserveId: true,
|
|
465
|
+
restrict: 'self-first'
|
|
466
|
+
}, (0, _I18nDecorator.I18nContextDecorator)({
|
|
467
|
+
rtlProp: 'rtl'
|
|
468
|
+
}, Scroller)));
|
|
469
|
+
Scroller.defaultPropValues = scrollerDefaultProps;
|
|
470
|
+
var _default = exports["default"] = Scroller;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
.focusableBody {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
width: 100%;
|
|
5
|
+
height: 100%;
|
|
6
|
+
overflow: inherit;
|
|
7
|
+
}
|
|
8
|
+
.focusableBody::before {
|
|
9
|
+
content: '';
|
|
10
|
+
position: absolute;
|
|
11
|
+
top: 0;
|
|
12
|
+
right: 0;
|
|
13
|
+
bottom: 0;
|
|
14
|
+
left: 0;
|
|
15
|
+
border-radius: 0.25rem;
|
|
16
|
+
opacity: 0;
|
|
17
|
+
}
|
|
18
|
+
:global(.spotlight-input-key):global(.spotlight-input-key) .focusableBody:global(.spottable):focus::before,
|
|
19
|
+
:global(.spotlight-input-key):global(.spotlight-input-mouse) .focusableBody:global(.spottable):focus::before {
|
|
20
|
+
background-color: color(from var(--semantic-color-surface-default-focused) srgb r g b / 0.1);
|
|
21
|
+
opacity: 1;
|
|
22
|
+
}
|
|
23
|
+
:global(.spotlight-input-key):global(.spotlight-input-touch) .focusableBody:global(.spottable):active::before {
|
|
24
|
+
background-color: color(from var(--semantic-color-surface-default-focused) srgb r g b / 0.1);
|
|
25
|
+
opacity: 1;
|
|
26
|
+
}
|
|
27
|
+
.verticalFadeout {
|
|
28
|
+
padding: 1rem 0;
|
|
29
|
+
mask-image: linear-gradient(transparent, #000 1rem, #000 calc(100% - 1rem), transparent 100%);
|
|
30
|
+
}
|
|
31
|
+
.focusableBody .verticalFadeout {
|
|
32
|
+
padding: 1.5rem 1rem 1.5rem 1.875rem;
|
|
33
|
+
mask-image: linear-gradient(transparent 0.5rem, #000 calc(0.5rem + 1rem), #000 calc(100% - 1rem - 0.5rem), transparent calc(100% - 0.5rem));
|
|
34
|
+
}
|
|
35
|
+
:global(.enact-locale-right-to-left) .focusableBody .verticalFadeout {
|
|
36
|
+
padding: 1.5rem 1.875rem 1.5rem 1rem;
|
|
37
|
+
}
|
|
38
|
+
.horizontalFadeout {
|
|
39
|
+
padding: 0 1rem;
|
|
40
|
+
mask-image: linear-gradient(to right, transparent, #000 1rem, #000 calc(100% - 1rem), transparent 100%);
|
|
41
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("@testing-library/jest-dom");
|
|
4
|
+
var _container = require("@enact/spotlight/src/container");
|
|
5
|
+
var _react = require("@testing-library/react");
|
|
6
|
+
var _Scroller = require("../Scroller");
|
|
7
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
8
|
+
describe('ContentContainerDecorator', function () {
|
|
9
|
+
test('should set \'positionTargetOnFocus\' container config to true', function () {
|
|
10
|
+
var Container = (0, _Scroller.ContentContainerDecorator)('div');
|
|
11
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Container, {
|
|
12
|
+
"data-testid": "container-id"
|
|
13
|
+
}));
|
|
14
|
+
var containerId = (0, _container.getContainerId)(_react.screen.getByTestId('container-id'));
|
|
15
|
+
var containerConfig = (0, _container.getContainerConfig)(containerId);
|
|
16
|
+
var actual = containerConfig.positionTargetOnFocus;
|
|
17
|
+
var expected = true;
|
|
18
|
+
expect(actual).toBe(expected);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _spotlight = _interopRequireDefault(require("@enact/spotlight"));
|
|
4
|
+
var _SpotlightContainerDecorator = _interopRequireDefault(require("@enact/spotlight/SpotlightContainerDecorator"));
|
|
5
|
+
require("@testing-library/jest-dom");
|
|
6
|
+
var _react = require("@testing-library/react");
|
|
7
|
+
var _Button = _interopRequireDefault(require("../../Button"));
|
|
8
|
+
var _IconItem = _interopRequireDefault(require("../../IconItem"));
|
|
9
|
+
var _Scroller = _interopRequireDefault(require("../Scroller"));
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
12
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
15
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
16
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
17
|
+
var keyDownUp = function keyDownUp(keyCode) {
|
|
18
|
+
return function (elm) {
|
|
19
|
+
_react.fireEvent.keyDown(elm, {
|
|
20
|
+
keyCode: keyCode
|
|
21
|
+
});
|
|
22
|
+
return _react.fireEvent.keyUp(elm, {
|
|
23
|
+
keyCode: keyCode
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
var pressEnterKey = keyDownUp(13);
|
|
28
|
+
var populateItems = function populateItems(_ref) {
|
|
29
|
+
var index = _ref.index;
|
|
30
|
+
var iconItemProps = {
|
|
31
|
+
background: '#ffffff',
|
|
32
|
+
bordered: true,
|
|
33
|
+
disabled: false,
|
|
34
|
+
label: "Icon ".concat(index)
|
|
35
|
+
};
|
|
36
|
+
return {
|
|
37
|
+
index: index,
|
|
38
|
+
iconItemProps: iconItemProps
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
var ContainerDivWithLeaveForConfig = (0, _SpotlightContainerDecorator["default"])({
|
|
42
|
+
leaveFor: {
|
|
43
|
+
left: '',
|
|
44
|
+
right: ''
|
|
45
|
+
}
|
|
46
|
+
}, 'div');
|
|
47
|
+
describe('Editable Scroller', function () {
|
|
48
|
+
var items;
|
|
49
|
+
var editableScrollerContents;
|
|
50
|
+
beforeEach(function () {
|
|
51
|
+
items = [];
|
|
52
|
+
for (var i = 0; i < 20; i++) {
|
|
53
|
+
items.push(populateItems({
|
|
54
|
+
index: i
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
editableScrollerContents = items.map(function (item, index) {
|
|
58
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
59
|
+
"aria-label": "Icon ".concat(item.index),
|
|
60
|
+
"data-index": item.index,
|
|
61
|
+
style: {
|
|
62
|
+
order: index + 1
|
|
63
|
+
},
|
|
64
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(ContainerDivWithLeaveForConfig, {
|
|
65
|
+
children: [item.disabled ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
|
|
66
|
+
"aria-label": "Delete",
|
|
67
|
+
icon: "trash"
|
|
68
|
+
}), item.disabled ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
|
|
69
|
+
"aria-label": "Hide",
|
|
70
|
+
icon: "minus"
|
|
71
|
+
}), item.disabled ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
|
|
72
|
+
"aria-label": "Show",
|
|
73
|
+
icon: "plus"
|
|
74
|
+
}) : null]
|
|
75
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconItem["default"], _objectSpread(_objectSpread({}, item.iconItemProps), {}, {
|
|
76
|
+
disabled: item.iconItemProps['disabled'] || item.hidden
|
|
77
|
+
}))]
|
|
78
|
+
}, item.index);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
afterEach(function () {
|
|
82
|
+
items = null;
|
|
83
|
+
editableScrollerContents = null;
|
|
84
|
+
});
|
|
85
|
+
describe('Select Item', function () {
|
|
86
|
+
test('should have selected class and custom selected class when item is selected', function () {
|
|
87
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Scroller["default"], {
|
|
88
|
+
direction: "horizontal",
|
|
89
|
+
editable: {
|
|
90
|
+
css: {
|
|
91
|
+
'selected': 'customSelected'
|
|
92
|
+
},
|
|
93
|
+
onComplete: jest.fn(),
|
|
94
|
+
removeItemFuncRef: jest.fn(),
|
|
95
|
+
hideItemFuncRef: jest.fn(),
|
|
96
|
+
showItemFuncRef: jest.fn(),
|
|
97
|
+
focusItemFuncRef: jest.fn(),
|
|
98
|
+
selectItemBy: 'press'
|
|
99
|
+
},
|
|
100
|
+
children: editableScrollerContents
|
|
101
|
+
}));
|
|
102
|
+
var item = _react.screen.getByLabelText('Icon 0');
|
|
103
|
+
pressEnterKey(item);
|
|
104
|
+
expect(item).toHaveClass('selected');
|
|
105
|
+
expect(item).toHaveClass('customSelected');
|
|
106
|
+
});
|
|
107
|
+
test('should not have selected class and custom selected class and should have custom focused class when item is unselected', function () {
|
|
108
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Scroller["default"], {
|
|
109
|
+
direction: "horizontal",
|
|
110
|
+
editable: {
|
|
111
|
+
css: {
|
|
112
|
+
'selected': 'customSelected',
|
|
113
|
+
'focused': 'customFocused'
|
|
114
|
+
},
|
|
115
|
+
onComplete: jest.fn(),
|
|
116
|
+
removeItemFuncRef: jest.fn(),
|
|
117
|
+
hideItemFuncRef: jest.fn(),
|
|
118
|
+
showItemFuncRef: jest.fn(),
|
|
119
|
+
focusItemFuncRef: jest.fn(),
|
|
120
|
+
selectItemBy: 'press'
|
|
121
|
+
},
|
|
122
|
+
children: editableScrollerContents
|
|
123
|
+
}));
|
|
124
|
+
_spotlight["default"].setPointerMode(false);
|
|
125
|
+
var item = _react.screen.getByLabelText('Icon 0');
|
|
126
|
+
pressEnterKey(item);
|
|
127
|
+
pressEnterKey(item);
|
|
128
|
+
expect(item).not.toHaveClass('selected');
|
|
129
|
+
expect(item).not.toHaveClass('customSelected');
|
|
130
|
+
expect(item).toHaveClass('customFocused');
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
});
|