@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,931 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = exports.VirtualList = exports.VirtualGridList = void 0;
|
|
7
|
+
var _util = require("@enact/core/util");
|
|
8
|
+
var _I18nDecorator = require("@enact/i18n/I18nDecorator");
|
|
9
|
+
var _SpotlightContainerDecorator = _interopRequireDefault(require("@enact/spotlight/SpotlightContainerDecorator"));
|
|
10
|
+
var _Resizable = require("@enact/ui/Resizable");
|
|
11
|
+
var _VirtualList = require("@enact/ui/VirtualList");
|
|
12
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
14
|
+
var _warning = _interopRequireDefault(require("warning"));
|
|
15
|
+
var _useScroll3 = _interopRequireDefault(require("../useScroll"));
|
|
16
|
+
var _HoverToScroll = _interopRequireDefault(require("../useScroll/HoverToScroll"));
|
|
17
|
+
var _Scrollbar = _interopRequireDefault(require("../useScroll/Scrollbar"));
|
|
18
|
+
var _Skinnable = _interopRequireDefault(require("../Skinnable"));
|
|
19
|
+
var _useThemeVirtualList = require("./useThemeVirtualList");
|
|
20
|
+
var _VirtualListModule = _interopRequireDefault(require("./VirtualList.module.css"));
|
|
21
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
22
|
+
var _excluded = ["itemSize", "hoverToScroll"],
|
|
23
|
+
_excluded2 = ["className"],
|
|
24
|
+
_excluded3 = ["hoverToScroll"],
|
|
25
|
+
_excluded4 = ["className"];
|
|
26
|
+
/**
|
|
27
|
+
* Provides Limestone-themed virtual list components and behaviors.
|
|
28
|
+
*
|
|
29
|
+
* @module limestone/VirtualList
|
|
30
|
+
* @exports VirtualGridList
|
|
31
|
+
* @exports VirtualList
|
|
32
|
+
*/
|
|
33
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
34
|
+
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; }
|
|
35
|
+
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; }
|
|
36
|
+
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; }
|
|
37
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
38
|
+
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); }
|
|
39
|
+
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; }
|
|
40
|
+
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; }
|
|
41
|
+
var nop = function nop() {};
|
|
42
|
+
var virtualListDefaultProps = {
|
|
43
|
+
'data-spotlight-container-disabled': false,
|
|
44
|
+
cbScrollTo: nop,
|
|
45
|
+
direction: 'vertical',
|
|
46
|
+
horizontalScrollbar: 'auto',
|
|
47
|
+
noAffordance: false,
|
|
48
|
+
noScrollByDrag: false,
|
|
49
|
+
noScrollByWheel: false,
|
|
50
|
+
onScroll: nop,
|
|
51
|
+
onScrollStart: nop,
|
|
52
|
+
onScrollStop: nop,
|
|
53
|
+
overscrollEffectOn: {
|
|
54
|
+
arrowKey: false,
|
|
55
|
+
drag: true,
|
|
56
|
+
pageKey: false,
|
|
57
|
+
track: false,
|
|
58
|
+
wheel: true
|
|
59
|
+
},
|
|
60
|
+
pageScroll: false,
|
|
61
|
+
role: 'list',
|
|
62
|
+
scrollMode: 'native',
|
|
63
|
+
verticalScrollbar: 'auto',
|
|
64
|
+
wrap: false
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* A Limestone-styled scrollable and spottable virtual list component.
|
|
69
|
+
*
|
|
70
|
+
* @class VirtualList
|
|
71
|
+
* @memberof limestone/VirtualList
|
|
72
|
+
* @extends ui/VirtualList.VirtualListBasic
|
|
73
|
+
* @ui
|
|
74
|
+
* @public
|
|
75
|
+
*/
|
|
76
|
+
var VirtualList = exports.VirtualList = function VirtualList(props) {
|
|
77
|
+
var virtualListProps = (0, _util.setDefaultProps)(props, virtualListDefaultProps);
|
|
78
|
+
if (typeof ENACT_PACK_NO_ANIMATION !== 'undefined' && ENACT_PACK_NO_ANIMATION) {
|
|
79
|
+
virtualListProps.overscrollEffectOn = {
|
|
80
|
+
arrowKey: false,
|
|
81
|
+
drag: false,
|
|
82
|
+
pageKey: false,
|
|
83
|
+
track: false,
|
|
84
|
+
wheel: false
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
var itemSize = virtualListProps.itemSize,
|
|
88
|
+
hoverToScroll = virtualListProps.hoverToScroll,
|
|
89
|
+
rest = _objectWithoutProperties(virtualListProps, _excluded);
|
|
90
|
+
var itemSizeProps = itemSize && itemSize.minSize ? {
|
|
91
|
+
itemSize: itemSize.minSize,
|
|
92
|
+
itemSizes: itemSize.size
|
|
93
|
+
} : {
|
|
94
|
+
itemSize: itemSize
|
|
95
|
+
};
|
|
96
|
+
process.env.NODE_ENV !== "production" ? (0, _warning["default"])(!itemSizeProps.itemSizes || !rest.cbScrollTo, 'VirtualList with `minSize` in `itemSize` prop does not support `cbScrollTo` prop') : void 0;
|
|
97
|
+
|
|
98
|
+
// Hooks
|
|
99
|
+
|
|
100
|
+
var _useScroll = (0, _useScroll3["default"])(_objectSpread(_objectSpread({}, rest), itemSizeProps)),
|
|
101
|
+
ScrollContentWrapper = _useScroll.scrollContentWrapper,
|
|
102
|
+
scrollContentHandle = _useScroll.scrollContentHandle,
|
|
103
|
+
isHorizontalScrollbarVisible = _useScroll.isHorizontalScrollbarVisible,
|
|
104
|
+
isVerticalScrollbarVisible = _useScroll.isVerticalScrollbarVisible,
|
|
105
|
+
resizeContextProps = _useScroll.resizeContextProps,
|
|
106
|
+
scrollContainerProps = _useScroll.scrollContainerProps,
|
|
107
|
+
scrollContentWrapperProps = _useScroll.scrollContentWrapperProps,
|
|
108
|
+
scrollContentProps = _useScroll.scrollContentProps,
|
|
109
|
+
horizontalScrollbarProps = _useScroll.horizontalScrollbarProps,
|
|
110
|
+
verticalScrollbarProps = _useScroll.verticalScrollbarProps,
|
|
111
|
+
hoverToScrollProps = _useScroll.hoverToScrollProps;
|
|
112
|
+
var className = scrollContentWrapperProps.className,
|
|
113
|
+
scrollContentWrapperRest = _objectWithoutProperties(scrollContentWrapperProps, _excluded2);
|
|
114
|
+
var themeScrollContainerProps = _objectSpread(_objectSpread({}, scrollContainerProps), {}, {
|
|
115
|
+
className: (0, _classnames["default"])(_VirtualListModule["default"].scrollContainer, scrollContainerProps.className)
|
|
116
|
+
});
|
|
117
|
+
var themeScrollContentProps = (0, _useThemeVirtualList.useThemeVirtualList)(_objectSpread(_objectSpread({}, scrollContentProps), {}, {
|
|
118
|
+
className: (0, _classnames["default"])(className, scrollContentProps.className)
|
|
119
|
+
}));
|
|
120
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Resizable.ResizeContext, _objectSpread(_objectSpread({}, resizeContextProps), {}, {
|
|
121
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(ScrollContentWrapper, _objectSpread(_objectSpread(_objectSpread({}, themeScrollContainerProps), scrollContentWrapperRest), {}, {
|
|
122
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_VirtualList.VirtualListBasic, _objectSpread(_objectSpread({}, themeScrollContentProps), {}, {
|
|
123
|
+
ref: scrollContentHandle
|
|
124
|
+
})), 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]
|
|
125
|
+
}))
|
|
126
|
+
}));
|
|
127
|
+
};
|
|
128
|
+
VirtualList.displayName = 'VirtualList';
|
|
129
|
+
VirtualList.propTypes = /** @lends limestone/VirtualList.VirtualList.prototype */{
|
|
130
|
+
/**
|
|
131
|
+
* Size of an item for the VirtualList; valid value is a number generally.
|
|
132
|
+
* For different item size, value is an object that has `minSize`
|
|
133
|
+
* and `size` as properties.
|
|
134
|
+
* If the direction for the list is vertical, itemSize means the height of an item.
|
|
135
|
+
* For horizontal, it means the width of an item.
|
|
136
|
+
*
|
|
137
|
+
* Usage:
|
|
138
|
+
* ```
|
|
139
|
+
* <VirtualList itemSize={ri.scale(144)} />
|
|
140
|
+
* ```
|
|
141
|
+
*
|
|
142
|
+
* @type {Number|ui/VirtualList.itemSizesShape}
|
|
143
|
+
* @required
|
|
144
|
+
* @public
|
|
145
|
+
*/
|
|
146
|
+
itemSize: _propTypes["default"].oneOfType([_propTypes["default"].number, _VirtualList.itemSizesShape]).isRequired,
|
|
147
|
+
/**
|
|
148
|
+
* A callback function that receives a reference to the `scrollTo` feature.
|
|
149
|
+
*
|
|
150
|
+
* Once received, the `scrollTo` method can be called as an imperative interface.
|
|
151
|
+
*
|
|
152
|
+
* The `scrollTo` function accepts the following parameters:
|
|
153
|
+
* - {position: {x, y}} - Pixel value for x and/or y position
|
|
154
|
+
* - {align} - Where the scroll area should be aligned. Values are:
|
|
155
|
+
* `'left'`, `'right'`, `'top'`, `'bottom'`,
|
|
156
|
+
* `'topleft'`, `'topright'`, `'bottomleft'`, and `'bottomright'`.
|
|
157
|
+
* - {index} - Index of specific item. (`0` or positive integer)
|
|
158
|
+
* This option is available for only `VirtualList` kind.
|
|
159
|
+
* - {node} - Node to scroll into view
|
|
160
|
+
* - {animate} - When `true`, scroll occurs with animation. When `false`, no
|
|
161
|
+
* animation occurs.
|
|
162
|
+
* - {focus} - When `true`, attempts to focus item after scroll. Only valid when scrolling
|
|
163
|
+
* by `index` or `node`.
|
|
164
|
+
* > Note: Only specify one of: `position`, `align`, `index` or `node`
|
|
165
|
+
*
|
|
166
|
+
* Example:
|
|
167
|
+
* ```
|
|
168
|
+
* // If you set cbScrollTo prop like below;
|
|
169
|
+
* cbScrollTo: (fn) => {this.scrollTo = fn;}
|
|
170
|
+
* // You can simply call like below;
|
|
171
|
+
* this.scrollTo({align: 'top'}); // scroll to the top
|
|
172
|
+
* ```
|
|
173
|
+
*
|
|
174
|
+
* @type {Function}
|
|
175
|
+
* @public
|
|
176
|
+
*/
|
|
177
|
+
cbScrollTo: _propTypes["default"].func,
|
|
178
|
+
/**
|
|
179
|
+
* This is set to `true` by SpotlightContainerDecorator
|
|
180
|
+
*
|
|
181
|
+
* @type {Boolean}
|
|
182
|
+
* @private
|
|
183
|
+
*/
|
|
184
|
+
'data-spotlight-container': _propTypes["default"].bool,
|
|
185
|
+
/**
|
|
186
|
+
* `false` if the content of the list could get focus
|
|
187
|
+
*
|
|
188
|
+
* @type {Boolean}
|
|
189
|
+
* @default false
|
|
190
|
+
* @private
|
|
191
|
+
*/
|
|
192
|
+
'data-spotlight-container-disabled': _propTypes["default"].bool,
|
|
193
|
+
/**
|
|
194
|
+
* This is passed onto the wrapped component to allow
|
|
195
|
+
* it to customize the spotlight container for its use case.
|
|
196
|
+
*
|
|
197
|
+
* @type {String}
|
|
198
|
+
* @private
|
|
199
|
+
*/
|
|
200
|
+
'data-spotlight-id': _propTypes["default"].string,
|
|
201
|
+
/**
|
|
202
|
+
* Disable voice control feature of component.
|
|
203
|
+
*
|
|
204
|
+
* @type {Boolean}
|
|
205
|
+
* @public
|
|
206
|
+
*/
|
|
207
|
+
'data-webos-voice-disabled': _propTypes["default"].bool,
|
|
208
|
+
/**
|
|
209
|
+
* Activates the component for voice control.
|
|
210
|
+
*
|
|
211
|
+
* @type {Boolean}
|
|
212
|
+
* @public
|
|
213
|
+
*/
|
|
214
|
+
'data-webos-voice-focused': _propTypes["default"].bool,
|
|
215
|
+
/**
|
|
216
|
+
* The voice control group label.
|
|
217
|
+
*
|
|
218
|
+
* @type {String}
|
|
219
|
+
* @public
|
|
220
|
+
*/
|
|
221
|
+
'data-webos-voice-group-label': _propTypes["default"].string,
|
|
222
|
+
/**
|
|
223
|
+
* The layout direction of the list.
|
|
224
|
+
*
|
|
225
|
+
* @type {('horizontal'|'vertical')}
|
|
226
|
+
* @default 'vertical'
|
|
227
|
+
* @public
|
|
228
|
+
*/
|
|
229
|
+
direction: _propTypes["default"].oneOf(['horizontal', 'vertical']),
|
|
230
|
+
/**
|
|
231
|
+
* Specifies how to show horizontal scrollbar.
|
|
232
|
+
*
|
|
233
|
+
* @type {('auto'|'visible'|'hidden')}
|
|
234
|
+
* @default 'auto'
|
|
235
|
+
* @public
|
|
236
|
+
*/
|
|
237
|
+
horizontalScrollbar: _propTypes["default"].oneOf(['auto', 'visible', 'hidden']),
|
|
238
|
+
/**
|
|
239
|
+
* Sets the hint string read when focusing the scroll thumb in the horizontal scroll bar.
|
|
240
|
+
*
|
|
241
|
+
* @type {String}
|
|
242
|
+
* @default $L('scroll up or down with up down button')
|
|
243
|
+
* @public
|
|
244
|
+
*/
|
|
245
|
+
horizontalScrollThumbAriaLabel: _propTypes["default"].string,
|
|
246
|
+
/**
|
|
247
|
+
* Enables scroll by hover on edges in scroll direction.
|
|
248
|
+
*
|
|
249
|
+
* @type {Boolean}
|
|
250
|
+
* @public
|
|
251
|
+
*/
|
|
252
|
+
hoverToScroll: _propTypes["default"].bool,
|
|
253
|
+
/**
|
|
254
|
+
* Unique identifier for the component.
|
|
255
|
+
*
|
|
256
|
+
* When defined and when the `VirtualList` is within a {@link limestone/Panels.Panel|Panel},
|
|
257
|
+
* the `VirtualList` will store its scroll position and restore that position when returning to
|
|
258
|
+
* the `Panel`.
|
|
259
|
+
*
|
|
260
|
+
* @type {String}
|
|
261
|
+
* @public
|
|
262
|
+
*/
|
|
263
|
+
id: _propTypes["default"].string,
|
|
264
|
+
/**
|
|
265
|
+
* Prop to check if horizontal Scrollbar exists or not.
|
|
266
|
+
*
|
|
267
|
+
* @type {Boolean}
|
|
268
|
+
* @private
|
|
269
|
+
*/
|
|
270
|
+
isHorizontalScrollbarVisible: _propTypes["default"].bool,
|
|
271
|
+
/**
|
|
272
|
+
* Prop to check if vertical Scrollbar exists or not.
|
|
273
|
+
*
|
|
274
|
+
* @type {Boolean}
|
|
275
|
+
* @private
|
|
276
|
+
*/
|
|
277
|
+
isVerticalScrollbarVisible: _propTypes["default"].bool,
|
|
278
|
+
/**
|
|
279
|
+
* The array for individually sized items.
|
|
280
|
+
*
|
|
281
|
+
* @type {Number[]}
|
|
282
|
+
* @private
|
|
283
|
+
*/
|
|
284
|
+
itemSizes: _propTypes["default"].arrayOf(_propTypes["default"].number),
|
|
285
|
+
/**
|
|
286
|
+
* Removes affordance area on the list.
|
|
287
|
+
*
|
|
288
|
+
* @type {Boolean}
|
|
289
|
+
* @default false
|
|
290
|
+
* @private
|
|
291
|
+
*/
|
|
292
|
+
noAffordance: _propTypes["default"].bool,
|
|
293
|
+
/**
|
|
294
|
+
* Prevents scroll by dragging or flicking on the list.
|
|
295
|
+
*
|
|
296
|
+
* @type {Boolean}
|
|
297
|
+
* @default false
|
|
298
|
+
* @private
|
|
299
|
+
*/
|
|
300
|
+
noScrollByDrag: _propTypes["default"].bool,
|
|
301
|
+
/**
|
|
302
|
+
* Prevents scroll by wheeling on the list.
|
|
303
|
+
*
|
|
304
|
+
* @type {Boolean}
|
|
305
|
+
* @default false
|
|
306
|
+
* @public
|
|
307
|
+
*/
|
|
308
|
+
noScrollByWheel: _propTypes["default"].bool,
|
|
309
|
+
/**
|
|
310
|
+
* Called when scrolling.
|
|
311
|
+
*
|
|
312
|
+
* Passes `scrollLeft`, `scrollTop`, and `moreInfo`.
|
|
313
|
+
* It is not recommended to set this prop since it can cause performance degradation.
|
|
314
|
+
* Use `onScrollStart` or `onScrollStop` instead.
|
|
315
|
+
*
|
|
316
|
+
* @type {Function}
|
|
317
|
+
* @param {Object} event
|
|
318
|
+
* @param {Number} event.scrollLeft Scroll left value.
|
|
319
|
+
* @param {Number} event.scrollTop Scroll top value.
|
|
320
|
+
* @param {Object} event.moreInfo The object including `firstVisibleIndex` and `lastVisibleIndex` properties.
|
|
321
|
+
* @public
|
|
322
|
+
*/
|
|
323
|
+
onScroll: _propTypes["default"].func,
|
|
324
|
+
/**
|
|
325
|
+
* Called when scroll starts.
|
|
326
|
+
*
|
|
327
|
+
* Passes `scrollLeft`, `scrollTop`, and `moreInfo`.
|
|
328
|
+
* You can get firstVisibleIndex and lastVisibleIndex from VirtualList with `moreInfo`.
|
|
329
|
+
*
|
|
330
|
+
* Example:
|
|
331
|
+
* ```
|
|
332
|
+
* onScrollStart = ({scrollLeft, scrollTop, moreInfo}) => {
|
|
333
|
+
* const {firstVisibleIndex, lastVisibleIndex} = moreInfo;
|
|
334
|
+
* // do something with firstVisibleIndex and lastVisibleIndex
|
|
335
|
+
* }
|
|
336
|
+
*
|
|
337
|
+
* render = () => (
|
|
338
|
+
* <VirtualList
|
|
339
|
+
* ...
|
|
340
|
+
* onScrollStart={this.onScrollStart}
|
|
341
|
+
* ...
|
|
342
|
+
* />
|
|
343
|
+
* )
|
|
344
|
+
* ```
|
|
345
|
+
*
|
|
346
|
+
* @type {Function}
|
|
347
|
+
* @param {Object} event
|
|
348
|
+
* @param {Number} event.scrollLeft Scroll left value.
|
|
349
|
+
* @param {Number} event.scrollTop Scroll top value.
|
|
350
|
+
* @param {Object} event.moreInfo The object including `firstVisibleIndex` and `lastVisibleIndex` properties.
|
|
351
|
+
* @public
|
|
352
|
+
*/
|
|
353
|
+
onScrollStart: _propTypes["default"].func,
|
|
354
|
+
/**
|
|
355
|
+
* Called when scroll stops.
|
|
356
|
+
*
|
|
357
|
+
* Passes `scrollLeft`, `scrollTop`, and `moreInfo`.
|
|
358
|
+
* You can get firstVisibleIndex and lastVisibleIndex from VirtualList with `moreInfo`.
|
|
359
|
+
*
|
|
360
|
+
* Example:
|
|
361
|
+
* ```
|
|
362
|
+
* onScrollStop = ({scrollLeft, scrollTop, moreInfo}) => {
|
|
363
|
+
* const {firstVisibleIndex, lastVisibleIndex} = moreInfo;
|
|
364
|
+
* // do something with firstVisibleIndex and lastVisibleIndex
|
|
365
|
+
* }
|
|
366
|
+
*
|
|
367
|
+
* render = () => (
|
|
368
|
+
* <VirtualList
|
|
369
|
+
* ...
|
|
370
|
+
* onScrollStop={this.onScrollStop}
|
|
371
|
+
* ...
|
|
372
|
+
* />
|
|
373
|
+
* )
|
|
374
|
+
* ```
|
|
375
|
+
*
|
|
376
|
+
* @type {Function}
|
|
377
|
+
* @param {Object} event
|
|
378
|
+
* @param {Number} event.scrollLeft Scroll left value.
|
|
379
|
+
* @param {Number} event.scrollTop Scroll top value.
|
|
380
|
+
* @param {Object} event.moreInfo The object including `firstVisibleIndex` and `lastVisibleIndex` properties.
|
|
381
|
+
* @public
|
|
382
|
+
*/
|
|
383
|
+
onScrollStop: _propTypes["default"].func,
|
|
384
|
+
/**
|
|
385
|
+
* Specifies overscroll effects shows on which type of inputs.
|
|
386
|
+
*
|
|
387
|
+
* @type {Object}
|
|
388
|
+
* @default {
|
|
389
|
+
* arrowKey: false,
|
|
390
|
+
* drag: true,
|
|
391
|
+
* pageKey: false,
|
|
392
|
+
* track: false,
|
|
393
|
+
* wheel: true
|
|
394
|
+
* }
|
|
395
|
+
* @private
|
|
396
|
+
*/
|
|
397
|
+
overscrollEffectOn: _propTypes["default"].shape({
|
|
398
|
+
arrowKey: _propTypes["default"].bool,
|
|
399
|
+
drag: _propTypes["default"].bool,
|
|
400
|
+
pageKey: _propTypes["default"].bool,
|
|
401
|
+
track: _propTypes["default"].bool,
|
|
402
|
+
wheel: _propTypes["default"].bool
|
|
403
|
+
}),
|
|
404
|
+
/**
|
|
405
|
+
* When `true`, the list will scroll by page. Otherwise, the list will scroll by item.
|
|
406
|
+
*
|
|
407
|
+
* @type {Boolean}
|
|
408
|
+
* @default false
|
|
409
|
+
* @private
|
|
410
|
+
*/
|
|
411
|
+
pageScroll: _propTypes["default"].bool,
|
|
412
|
+
/**
|
|
413
|
+
* The ARIA role for the list.
|
|
414
|
+
*
|
|
415
|
+
* @type {String}
|
|
416
|
+
* @default 'list'
|
|
417
|
+
* @public
|
|
418
|
+
*/
|
|
419
|
+
role: _propTypes["default"].string,
|
|
420
|
+
/**
|
|
421
|
+
* Specifies how to scroll.
|
|
422
|
+
*
|
|
423
|
+
* Valid values are:
|
|
424
|
+
* * `'translate'`,
|
|
425
|
+
* * `'native'`.
|
|
426
|
+
*
|
|
427
|
+
* @type {String}
|
|
428
|
+
* @default 'native'
|
|
429
|
+
* @public
|
|
430
|
+
*/
|
|
431
|
+
scrollMode: _propTypes["default"].string,
|
|
432
|
+
/**
|
|
433
|
+
* The container id for {@link spotlight/SpotlightContainerDecorator/#SpotlightContainerDecorator.spotlightId|Spotlight container}.
|
|
434
|
+
*
|
|
435
|
+
* It is a required prop to restore focus after remounting `VirtualList`.
|
|
436
|
+
*
|
|
437
|
+
* For example, with this prop specified, when a `VirtualList` is used in a {@link limestone/Panels.Panel|Panel},
|
|
438
|
+
* the `Spotlight` will store the last focus information based on `SpotlightId` while navigating to another Panel.
|
|
439
|
+
* And the `VirtualList` will restore the focus when it remounts while the navigation returns to the `Panel`.
|
|
440
|
+
*
|
|
441
|
+
* @type {String}
|
|
442
|
+
* @public
|
|
443
|
+
*/
|
|
444
|
+
spotlightId: _propTypes["default"].string,
|
|
445
|
+
/**
|
|
446
|
+
* Specifies how to show vertical scrollbar.
|
|
447
|
+
*
|
|
448
|
+
* Valid values are:
|
|
449
|
+
* * `'auto'`,
|
|
450
|
+
* * `'visible'`, and
|
|
451
|
+
* * `'hidden'`.
|
|
452
|
+
*
|
|
453
|
+
* @type {('auto'|'visible'|'hidden')}
|
|
454
|
+
* @default 'auto'
|
|
455
|
+
* @public
|
|
456
|
+
*/
|
|
457
|
+
verticalScrollbar: _propTypes["default"].oneOf(['auto', 'visible', 'hidden']),
|
|
458
|
+
/**
|
|
459
|
+
* Sets the hint string read when focusing the scroll thumb in the vertical scroll bar.
|
|
460
|
+
*
|
|
461
|
+
* @type {String}
|
|
462
|
+
* @default $L('scroll left or right with left right button')
|
|
463
|
+
* @public
|
|
464
|
+
*/
|
|
465
|
+
verticalScrollThumbAriaLabel: _propTypes["default"].string,
|
|
466
|
+
/**
|
|
467
|
+
* When it's `true` and the spotlight focus cannot move to the given direction anymore by 5-way keys,
|
|
468
|
+
* a list is scrolled with an animation to the other side and the spotlight focus moves in wraparound manner.
|
|
469
|
+
*
|
|
470
|
+
* When it's `'noAnimation'`, the spotlight focus moves in wraparound manner as same as when it's `true`
|
|
471
|
+
* except that a list is scrolled without an animation.
|
|
472
|
+
*
|
|
473
|
+
* Valid values are:
|
|
474
|
+
* * `false`,
|
|
475
|
+
* * `true`, and
|
|
476
|
+
* * `'noAnimation'`
|
|
477
|
+
* @type {Boolean|'noAnimation'}
|
|
478
|
+
* @default false
|
|
479
|
+
* @public
|
|
480
|
+
*/
|
|
481
|
+
wrap: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].oneOf(['noAnimation'])])
|
|
482
|
+
};
|
|
483
|
+
exports.VirtualList = VirtualList = (0, _Skinnable["default"])((0, _SpotlightContainerDecorator["default"])({
|
|
484
|
+
overflow: true,
|
|
485
|
+
preserveId: true,
|
|
486
|
+
restrict: 'self-first'
|
|
487
|
+
}, (0, _I18nDecorator.I18nContextDecorator)({
|
|
488
|
+
rtlProp: 'rtl'
|
|
489
|
+
}, VirtualList)));
|
|
490
|
+
VirtualList.defaultPropValues = virtualListDefaultProps;
|
|
491
|
+
var virtualGridListDefaultProps = {
|
|
492
|
+
'data-spotlight-container-disabled': false,
|
|
493
|
+
cbScrollTo: nop,
|
|
494
|
+
direction: 'vertical',
|
|
495
|
+
horizontalScrollbar: 'auto',
|
|
496
|
+
noAffordance: false,
|
|
497
|
+
noScrollByDrag: false,
|
|
498
|
+
noScrollByWheel: false,
|
|
499
|
+
onScroll: nop,
|
|
500
|
+
onScrollStart: nop,
|
|
501
|
+
onScrollStop: nop,
|
|
502
|
+
overscrollEffectOn: {
|
|
503
|
+
arrowKey: false,
|
|
504
|
+
drag: true,
|
|
505
|
+
pageKey: false,
|
|
506
|
+
track: false,
|
|
507
|
+
wheel: true
|
|
508
|
+
},
|
|
509
|
+
pageScroll: false,
|
|
510
|
+
role: 'list',
|
|
511
|
+
scrollMode: 'native',
|
|
512
|
+
verticalScrollbar: 'auto',
|
|
513
|
+
wrap: false
|
|
514
|
+
};
|
|
515
|
+
|
|
516
|
+
/**
|
|
517
|
+
* A Limestone-styled scrollable and spottable virtual grid list component.
|
|
518
|
+
*
|
|
519
|
+
* @class VirtualGridList
|
|
520
|
+
* @memberof limestone/VirtualList
|
|
521
|
+
* @extends ui/VirtualList.VirtualListBasic
|
|
522
|
+
* @ui
|
|
523
|
+
* @public
|
|
524
|
+
*/
|
|
525
|
+
var VirtualGridList = exports.VirtualGridList = function VirtualGridList(props) {
|
|
526
|
+
var virtualGridListProps = (0, _util.setDefaultProps)(props, virtualGridListDefaultProps);
|
|
527
|
+
if (typeof ENACT_PACK_NO_ANIMATION !== 'undefined' && ENACT_PACK_NO_ANIMATION) {
|
|
528
|
+
virtualGridListProps.overscrollEffectOn = {
|
|
529
|
+
arrowKey: false,
|
|
530
|
+
drag: false,
|
|
531
|
+
pageKey: false,
|
|
532
|
+
track: false,
|
|
533
|
+
wheel: false
|
|
534
|
+
};
|
|
535
|
+
}
|
|
536
|
+
var hoverToScroll = virtualGridListProps.hoverToScroll,
|
|
537
|
+
rest = _objectWithoutProperties(virtualGridListProps, _excluded3);
|
|
538
|
+
var _useScroll2 = (0, _useScroll3["default"])(rest),
|
|
539
|
+
ScrollContentWrapper = _useScroll2.scrollContentWrapper,
|
|
540
|
+
scrollContentHandle = _useScroll2.scrollContentHandle,
|
|
541
|
+
isHorizontalScrollbarVisible = _useScroll2.isHorizontalScrollbarVisible,
|
|
542
|
+
isVerticalScrollbarVisible = _useScroll2.isVerticalScrollbarVisible,
|
|
543
|
+
resizeContextProps = _useScroll2.resizeContextProps,
|
|
544
|
+
scrollContainerProps = _useScroll2.scrollContainerProps,
|
|
545
|
+
scrollContentWrapperProps = _useScroll2.scrollContentWrapperProps,
|
|
546
|
+
scrollContentProps = _useScroll2.scrollContentProps,
|
|
547
|
+
horizontalScrollbarProps = _useScroll2.horizontalScrollbarProps,
|
|
548
|
+
verticalScrollbarProps = _useScroll2.verticalScrollbarProps,
|
|
549
|
+
hoverToScrollProps = _useScroll2.hoverToScrollProps;
|
|
550
|
+
var className = scrollContentWrapperProps.className,
|
|
551
|
+
scrollContentWrapperRest = _objectWithoutProperties(scrollContentWrapperProps, _excluded4);
|
|
552
|
+
var themeScrollContentProps = (0, _useThemeVirtualList.useThemeVirtualList)(_objectSpread(_objectSpread({}, scrollContentProps), {}, {
|
|
553
|
+
className: (0, _classnames["default"])(className, scrollContentProps.className)
|
|
554
|
+
}));
|
|
555
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Resizable.ResizeContext, _objectSpread(_objectSpread({}, resizeContextProps), {}, {
|
|
556
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(ScrollContentWrapper, _objectSpread(_objectSpread(_objectSpread({}, scrollContainerProps), scrollContentWrapperRest), {}, {
|
|
557
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_VirtualList.VirtualListBasic, _objectSpread(_objectSpread({}, themeScrollContentProps), {}, {
|
|
558
|
+
ref: scrollContentHandle
|
|
559
|
+
})), 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]
|
|
560
|
+
}))
|
|
561
|
+
}));
|
|
562
|
+
};
|
|
563
|
+
VirtualGridList.displayName = 'VirtualGridList';
|
|
564
|
+
VirtualGridList.propTypes = /** @lends limestone/VirtualList.VirtualGridList.prototype */{
|
|
565
|
+
/**
|
|
566
|
+
* Size of an item for the VirtualGridList; valid value is an object that has `minWidth`
|
|
567
|
+
* and `minHeight` as properties.
|
|
568
|
+
*
|
|
569
|
+
* Usage:
|
|
570
|
+
* ```
|
|
571
|
+
* <VirtualGridList
|
|
572
|
+
* itemSize={{
|
|
573
|
+
* minWidth: ri.scale(360),
|
|
574
|
+
* minHeight: ri.scale(540)
|
|
575
|
+
* }}
|
|
576
|
+
* />
|
|
577
|
+
* ```
|
|
578
|
+
*
|
|
579
|
+
* @type {ui/VirtualList.gridListItemSizeShape}
|
|
580
|
+
* @required
|
|
581
|
+
* @public
|
|
582
|
+
*/
|
|
583
|
+
itemSize: _VirtualList.gridListItemSizeShape.isRequired,
|
|
584
|
+
/**
|
|
585
|
+
* A callback function that receives a reference to the `scrollTo` feature.
|
|
586
|
+
*
|
|
587
|
+
* Once received, the `scrollTo` method can be called as an imperative interface.
|
|
588
|
+
*
|
|
589
|
+
* The `scrollTo` function accepts the following parameters:
|
|
590
|
+
* - {position: {x, y}} - Pixel value for x and/or y position
|
|
591
|
+
* - {align} - Where the scroll area should be aligned. Values are:
|
|
592
|
+
* `'left'`, `'right'`, `'top'`, `'bottom'`,
|
|
593
|
+
* `'topleft'`, `'topright'`, `'bottomleft'`, and `'bottomright'`.
|
|
594
|
+
* - {index} - Index of specific item. (`0` or positive integer)
|
|
595
|
+
* This option is available for only `VirtualList` kind.
|
|
596
|
+
* - {node} - Node to scroll into view
|
|
597
|
+
* - {animate} - When `true`, scroll occurs with animation. When `false`, no
|
|
598
|
+
* animation occurs.
|
|
599
|
+
* - {focus} - When `true`, attempts to focus item after scroll. Only valid when scrolling
|
|
600
|
+
* by `index` or `node`.
|
|
601
|
+
* > Note: Only specify one of: `position`, `align`, `index` or `node`
|
|
602
|
+
*
|
|
603
|
+
* Example:
|
|
604
|
+
* ```
|
|
605
|
+
* // If you set cbScrollTo prop like below;
|
|
606
|
+
* cbScrollTo: (fn) => {this.scrollTo = fn;}
|
|
607
|
+
* // You can simply call like below;
|
|
608
|
+
* this.scrollTo({align: 'top'}); // scroll to the top
|
|
609
|
+
* ```
|
|
610
|
+
*
|
|
611
|
+
* @type {Function}
|
|
612
|
+
* @public
|
|
613
|
+
*/
|
|
614
|
+
cbScrollTo: _propTypes["default"].func,
|
|
615
|
+
/**
|
|
616
|
+
* This is set to `true` by SpotlightContainerDecorator
|
|
617
|
+
*
|
|
618
|
+
* @type {Boolean}
|
|
619
|
+
* @private
|
|
620
|
+
*/
|
|
621
|
+
'data-spotlight-container': _propTypes["default"].bool,
|
|
622
|
+
/**
|
|
623
|
+
* `false` if the content of the list could get focus
|
|
624
|
+
*
|
|
625
|
+
* @type {Boolean}
|
|
626
|
+
* @default false
|
|
627
|
+
* @private
|
|
628
|
+
*/
|
|
629
|
+
'data-spotlight-container-disabled': _propTypes["default"].bool,
|
|
630
|
+
/**
|
|
631
|
+
* This is passed onto the wrapped component to allow
|
|
632
|
+
* it to customize the spotlight container for its use case.
|
|
633
|
+
*
|
|
634
|
+
* @type {String}
|
|
635
|
+
* @private
|
|
636
|
+
*/
|
|
637
|
+
'data-spotlight-id': _propTypes["default"].string,
|
|
638
|
+
/**
|
|
639
|
+
* Disable voice control feature of component.
|
|
640
|
+
*
|
|
641
|
+
* @type {Boolean}
|
|
642
|
+
* @public
|
|
643
|
+
*/
|
|
644
|
+
'data-webos-voice-disabled': _propTypes["default"].bool,
|
|
645
|
+
/**
|
|
646
|
+
* Activates the component for voice control.
|
|
647
|
+
*
|
|
648
|
+
* @type {Boolean}
|
|
649
|
+
* @public
|
|
650
|
+
*/
|
|
651
|
+
'data-webos-voice-focused': _propTypes["default"].bool,
|
|
652
|
+
/**
|
|
653
|
+
* The voice control group label.
|
|
654
|
+
*
|
|
655
|
+
* @type {String}
|
|
656
|
+
* @public
|
|
657
|
+
*/
|
|
658
|
+
'data-webos-voice-group-label': _propTypes["default"].string,
|
|
659
|
+
/**
|
|
660
|
+
* The layout direction of the list.
|
|
661
|
+
*
|
|
662
|
+
* @type {('horizontal'|'vertical')}
|
|
663
|
+
* @default 'vertical'
|
|
664
|
+
* @public
|
|
665
|
+
*/
|
|
666
|
+
direction: _propTypes["default"].oneOf(['horizontal', 'vertical']),
|
|
667
|
+
/**
|
|
668
|
+
* Specifies how to show horizontal scrollbar.
|
|
669
|
+
*
|
|
670
|
+
* @type {('auto'|'visible'|'hidden')}
|
|
671
|
+
* @default 'auto'
|
|
672
|
+
* @public
|
|
673
|
+
*/
|
|
674
|
+
horizontalScrollbar: _propTypes["default"].oneOf(['auto', 'visible', 'hidden']),
|
|
675
|
+
/**
|
|
676
|
+
* Sets the hint string read when focusing the scroll thumb in the horizontal scroll bar.
|
|
677
|
+
*
|
|
678
|
+
* @type {String}
|
|
679
|
+
* @default $L('scroll up or down with up down button')
|
|
680
|
+
* @public
|
|
681
|
+
*/
|
|
682
|
+
horizontalScrollThumbAriaLabel: _propTypes["default"].string,
|
|
683
|
+
/**
|
|
684
|
+
* Enables scroll by hover on edges in scroll direction.
|
|
685
|
+
*
|
|
686
|
+
* @type {Boolean}
|
|
687
|
+
* @public
|
|
688
|
+
*/
|
|
689
|
+
hoverToScroll: _propTypes["default"].bool,
|
|
690
|
+
/**
|
|
691
|
+
* Unique identifier for the component.
|
|
692
|
+
*
|
|
693
|
+
* When defined and when the `VirtualGridList` is within a {@link limestone/Panels.Panel|Panel},
|
|
694
|
+
* the `VirtualGridList` will store its scroll position and restore that position when returning to
|
|
695
|
+
* the `Panel`.
|
|
696
|
+
*
|
|
697
|
+
* @type {String}
|
|
698
|
+
* @public
|
|
699
|
+
*/
|
|
700
|
+
id: _propTypes["default"].string,
|
|
701
|
+
/**
|
|
702
|
+
* Prop to check if horizontal Scrollbar exists or not.
|
|
703
|
+
*
|
|
704
|
+
* @type {Boolean}
|
|
705
|
+
* @private
|
|
706
|
+
*/
|
|
707
|
+
isHorizontalScrollbarVisible: _propTypes["default"].bool,
|
|
708
|
+
/**
|
|
709
|
+
* Prop to check if vertical Scrollbar exists or not.
|
|
710
|
+
*
|
|
711
|
+
* @type {Boolean}
|
|
712
|
+
* @private
|
|
713
|
+
*/
|
|
714
|
+
isVerticalScrollbarVisible: _propTypes["default"].bool,
|
|
715
|
+
/**
|
|
716
|
+
* Removes affordance area on the list.
|
|
717
|
+
* Set this to `true` only if the item needs to stick to the bottom for vertical direction,
|
|
718
|
+
* to the right for horizontal direction, when scrolling by keys.
|
|
719
|
+
*
|
|
720
|
+
* @type {Boolean}
|
|
721
|
+
* @default false
|
|
722
|
+
* @public
|
|
723
|
+
*/
|
|
724
|
+
noAffordance: _propTypes["default"].bool,
|
|
725
|
+
/**
|
|
726
|
+
* Prevents scroll by dragging or flicking on the list.
|
|
727
|
+
*
|
|
728
|
+
* @type {Boolean}
|
|
729
|
+
* @default false
|
|
730
|
+
* @private
|
|
731
|
+
*/
|
|
732
|
+
noScrollByDrag: _propTypes["default"].bool,
|
|
733
|
+
/**
|
|
734
|
+
* Prevents scroll by wheeling on the list.
|
|
735
|
+
*
|
|
736
|
+
* @type {Boolean}
|
|
737
|
+
* @default false
|
|
738
|
+
* @public
|
|
739
|
+
*/
|
|
740
|
+
noScrollByWheel: _propTypes["default"].bool,
|
|
741
|
+
/**
|
|
742
|
+
* Called when scrolling.
|
|
743
|
+
*
|
|
744
|
+
* Passes `scrollLeft`, `scrollTop`, and `moreInfo`.
|
|
745
|
+
* It is not recommended to set this prop since it can cause performance degradation.
|
|
746
|
+
* Use `onScrollStart` or `onScrollStop` instead.
|
|
747
|
+
*
|
|
748
|
+
* @type {Function}
|
|
749
|
+
* @param {Object} event
|
|
750
|
+
* @param {Number} event.scrollLeft Scroll left value.
|
|
751
|
+
* @param {Number} event.scrollTop Scroll top value.
|
|
752
|
+
* @param {Object} event.moreInfo The object including `firstVisibleIndex` and `lastVisibleIndex` properties.
|
|
753
|
+
* @public
|
|
754
|
+
*/
|
|
755
|
+
onScroll: _propTypes["default"].func,
|
|
756
|
+
/**
|
|
757
|
+
* Called when scroll starts.
|
|
758
|
+
*
|
|
759
|
+
* Passes `scrollLeft`, `scrollTop`, and `moreInfo`.
|
|
760
|
+
* You can get firstVisibleIndex and lastVisibleIndex from VirtualGridList with `moreInfo`.
|
|
761
|
+
*
|
|
762
|
+
* Example:
|
|
763
|
+
* ```
|
|
764
|
+
* onScrollStart = ({scrollLeft, scrollTop, moreInfo}) => {
|
|
765
|
+
* const {firstVisibleIndex, lastVisibleIndex} = moreInfo;
|
|
766
|
+
* // do something with firstVisibleIndex and lastVisibleIndex
|
|
767
|
+
* }
|
|
768
|
+
*
|
|
769
|
+
* render = () => (
|
|
770
|
+
* <VirtualGridList
|
|
771
|
+
* ...
|
|
772
|
+
* onScrollStart={this.onScrollStart}
|
|
773
|
+
* ...
|
|
774
|
+
* />
|
|
775
|
+
* )
|
|
776
|
+
* ```
|
|
777
|
+
*
|
|
778
|
+
* @type {Function}
|
|
779
|
+
* @param {Object} event
|
|
780
|
+
* @param {Number} event.scrollLeft Scroll left value.
|
|
781
|
+
* @param {Number} event.scrollTop Scroll top value.
|
|
782
|
+
* @param {Object} event.moreInfo The object including `firstVisibleIndex` and `lastVisibleIndex` properties.
|
|
783
|
+
* @public
|
|
784
|
+
*/
|
|
785
|
+
onScrollStart: _propTypes["default"].func,
|
|
786
|
+
/**
|
|
787
|
+
* Called when scroll stops.
|
|
788
|
+
*
|
|
789
|
+
* Passes `scrollLeft`, `scrollTop`, and `moreInfo`.
|
|
790
|
+
* You can get firstVisibleIndex and lastVisibleIndex from VirtualGridList with `moreInfo`.
|
|
791
|
+
*
|
|
792
|
+
* Example:
|
|
793
|
+
* ```
|
|
794
|
+
* onScrollStop = ({scrollLeft, scrollTop, moreInfo}) => {
|
|
795
|
+
* const {firstVisibleIndex, lastVisibleIndex} = moreInfo;
|
|
796
|
+
* // do something with firstVisibleIndex and lastVisibleIndex
|
|
797
|
+
* }
|
|
798
|
+
*
|
|
799
|
+
* render = () => (
|
|
800
|
+
* <VirtualGridList
|
|
801
|
+
* ...
|
|
802
|
+
* onScrollStop={this.onScrollStop}
|
|
803
|
+
* ...
|
|
804
|
+
* />
|
|
805
|
+
* )
|
|
806
|
+
* ```
|
|
807
|
+
*
|
|
808
|
+
* @type {Function}
|
|
809
|
+
* @param {Object} event
|
|
810
|
+
* @param {Number} event.scrollLeft Scroll left value.
|
|
811
|
+
* @param {Number} event.scrollTop Scroll top value.
|
|
812
|
+
* @param {Object} event.moreInfo The object including `firstVisibleIndex` and `lastVisibleIndex` properties.
|
|
813
|
+
* @public
|
|
814
|
+
*/
|
|
815
|
+
onScrollStop: _propTypes["default"].func,
|
|
816
|
+
/**
|
|
817
|
+
* Specifies overscroll effects shows on which type of inputs.
|
|
818
|
+
*
|
|
819
|
+
* @type {Object}
|
|
820
|
+
* @default {
|
|
821
|
+
* arrowKey: false,
|
|
822
|
+
* drag: true,
|
|
823
|
+
* pageKey: false,
|
|
824
|
+
* track: false,
|
|
825
|
+
* wheel: true
|
|
826
|
+
* }
|
|
827
|
+
* @private
|
|
828
|
+
*/
|
|
829
|
+
overscrollEffectOn: _propTypes["default"].shape({
|
|
830
|
+
arrowKey: _propTypes["default"].bool,
|
|
831
|
+
drag: _propTypes["default"].bool,
|
|
832
|
+
pageKey: _propTypes["default"].bool,
|
|
833
|
+
track: _propTypes["default"].bool,
|
|
834
|
+
wheel: _propTypes["default"].bool
|
|
835
|
+
}),
|
|
836
|
+
/**
|
|
837
|
+
* When `true`, the list will scroll by page. Otherwise, the list will scroll by item.
|
|
838
|
+
*
|
|
839
|
+
* @type {Boolean}
|
|
840
|
+
* @default false
|
|
841
|
+
* @private
|
|
842
|
+
*/
|
|
843
|
+
pageScroll: _propTypes["default"].bool,
|
|
844
|
+
/**
|
|
845
|
+
* The ARIA role for the list.
|
|
846
|
+
*
|
|
847
|
+
* @type {String}
|
|
848
|
+
* @default 'list'
|
|
849
|
+
* @public
|
|
850
|
+
*/
|
|
851
|
+
role: _propTypes["default"].string,
|
|
852
|
+
/**
|
|
853
|
+
* Specifies how to scroll.
|
|
854
|
+
*
|
|
855
|
+
* Valid values are:
|
|
856
|
+
* * `'translate'`,
|
|
857
|
+
* * `'native'`.
|
|
858
|
+
*
|
|
859
|
+
* @type {String}
|
|
860
|
+
* @default 'native'
|
|
861
|
+
* @public
|
|
862
|
+
*/
|
|
863
|
+
scrollMode: _propTypes["default"].string,
|
|
864
|
+
/**
|
|
865
|
+
* When it's true, the item snaps to center.
|
|
866
|
+
*
|
|
867
|
+
* @type {Boolean}
|
|
868
|
+
* @public
|
|
869
|
+
*/
|
|
870
|
+
snapToCenter: _propTypes["default"].bool,
|
|
871
|
+
/**
|
|
872
|
+
* The container id for {@link spotlight/SpotlightContainerDecorator/#SpotlightContainerDecorator.spotlightId|Spotlight container}.
|
|
873
|
+
*
|
|
874
|
+
* It is a required prop to restore focus after remounting `VirtualGridList`.
|
|
875
|
+
*
|
|
876
|
+
* For example, with this prop specified, when a `VirtualGridList` is used in a {@link limestone/Panels.Panel|Panel},
|
|
877
|
+
* the `Spotlight` will store the last focus information based on `SpotlightId` while navigating to another Panel.
|
|
878
|
+
* And the `VirtualGridList` will restore the focus when it remounts while the navigation returns to the `Panel`.
|
|
879
|
+
*
|
|
880
|
+
* @type {String}
|
|
881
|
+
* @public
|
|
882
|
+
*/
|
|
883
|
+
spotlightId: _propTypes["default"].string,
|
|
884
|
+
/**
|
|
885
|
+
* Specifies how to show vertical scrollbar.
|
|
886
|
+
*
|
|
887
|
+
* Valid values are:
|
|
888
|
+
* * `'auto'`,
|
|
889
|
+
* * `'visible'`, and
|
|
890
|
+
* * `'hidden'`.
|
|
891
|
+
*
|
|
892
|
+
* @type {('auto'|'visible'|'hidden')}
|
|
893
|
+
* @default 'auto'
|
|
894
|
+
* @public
|
|
895
|
+
*/
|
|
896
|
+
verticalScrollbar: _propTypes["default"].oneOf(['auto', 'visible', 'hidden']),
|
|
897
|
+
/**
|
|
898
|
+
* Sets the hint string read when focusing the scroll thumb in the vertical scroll bar.
|
|
899
|
+
*
|
|
900
|
+
* @type {String}
|
|
901
|
+
* @default $L('scroll left or right with left right button')
|
|
902
|
+
* @public
|
|
903
|
+
*/
|
|
904
|
+
verticalScrollThumbAriaLabel: _propTypes["default"].string,
|
|
905
|
+
/**
|
|
906
|
+
* When it's `true` and the spotlight focus cannot move to the given direction anymore by 5-way keys,
|
|
907
|
+
* a list is scrolled with an animation to the other side and the spotlight focus moves in wraparound manner.
|
|
908
|
+
*
|
|
909
|
+
* When it's `'noAnimation'`, the spotlight focus moves in wraparound manner as same as when it's `true`
|
|
910
|
+
* except that a list is scrolled without an animation.
|
|
911
|
+
*
|
|
912
|
+
* Valid values are:
|
|
913
|
+
* * `false`,
|
|
914
|
+
* * `true`, and
|
|
915
|
+
* * `'noAnimation'`
|
|
916
|
+
*
|
|
917
|
+
* @type {Boolean|'noAnimation'}
|
|
918
|
+
* @default false
|
|
919
|
+
* @public
|
|
920
|
+
*/
|
|
921
|
+
wrap: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].oneOf(['noAnimation'])])
|
|
922
|
+
};
|
|
923
|
+
exports.VirtualGridList = VirtualGridList = (0, _Skinnable["default"])((0, _SpotlightContainerDecorator["default"])({
|
|
924
|
+
overflow: true,
|
|
925
|
+
preserveId: true,
|
|
926
|
+
restrict: 'self-first'
|
|
927
|
+
}, (0, _I18nDecorator.I18nContextDecorator)({
|
|
928
|
+
rtlProp: 'rtl'
|
|
929
|
+
}, VirtualGridList)));
|
|
930
|
+
VirtualGridList.defaultPropValues = virtualGridListDefaultProps;
|
|
931
|
+
var _default = exports["default"] = VirtualList;
|