@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
package/Picker/Picker.js
ADDED
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = exports.PickerBase = exports.Picker = void 0;
|
|
7
|
+
var _classnames2 = _interopRequireDefault(require("classnames"));
|
|
8
|
+
var _kind = _interopRequireDefault(require("@enact/core/kind"));
|
|
9
|
+
var _util = require("@enact/core/util");
|
|
10
|
+
var _Changeable = _interopRequireDefault(require("@enact/ui/Changeable"));
|
|
11
|
+
var _Pure = _interopRequireDefault(require("@enact/ui/internal/Pure"));
|
|
12
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
+
var _react = require("react");
|
|
14
|
+
var _Heading = _interopRequireDefault(require("../Heading"));
|
|
15
|
+
var _Picker = _interopRequireWildcard(require("../internal/Picker"));
|
|
16
|
+
var _validators = require("../internal/validators");
|
|
17
|
+
var _Marquee = require("../Marquee");
|
|
18
|
+
var _PickerModule = _interopRequireDefault(require("./Picker.module.css"));
|
|
19
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
20
|
+
var _excluded = ["children", "css", "inlineTitle", "max", "title", "value", "voiceLabel"];
|
|
21
|
+
/**
|
|
22
|
+
* A component for selecting values from a list of values.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* <Picker>
|
|
26
|
+
* {['A', 'B', 'C']}
|
|
27
|
+
* </Picker>
|
|
28
|
+
*
|
|
29
|
+
* @module limestone/Picker
|
|
30
|
+
* @exports Picker
|
|
31
|
+
* @exports PickerBase
|
|
32
|
+
*/
|
|
33
|
+
/**
|
|
34
|
+
* The base `Picker` component.
|
|
35
|
+
*
|
|
36
|
+
* This version is not {@link spotlight/Spottable.Spottable|spottable}.
|
|
37
|
+
*
|
|
38
|
+
* @class PickerBase
|
|
39
|
+
* @memberof limestone/Picker
|
|
40
|
+
* @ui
|
|
41
|
+
* @public
|
|
42
|
+
*/
|
|
43
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
44
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
45
|
+
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; }
|
|
46
|
+
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; }
|
|
47
|
+
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; }
|
|
48
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
49
|
+
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); }
|
|
50
|
+
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; }
|
|
51
|
+
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; }
|
|
52
|
+
var PickerBase = exports.PickerBase = (0, _kind["default"])({
|
|
53
|
+
name: 'Picker',
|
|
54
|
+
propTypes: /** @lends limestone/Picker.PickerBase.prototype */{
|
|
55
|
+
/**
|
|
56
|
+
* Picker value list.
|
|
57
|
+
*
|
|
58
|
+
* @type {Node}
|
|
59
|
+
* @required
|
|
60
|
+
* @public
|
|
61
|
+
*/
|
|
62
|
+
children: _propTypes["default"].node.isRequired,
|
|
63
|
+
/**
|
|
64
|
+
* The `aria-valuetext` for the picker.
|
|
65
|
+
*
|
|
66
|
+
* By default, `aria-valuetext` is set to the current selected child text.
|
|
67
|
+
*
|
|
68
|
+
* @type {String}
|
|
69
|
+
* @memberof limestone/Picker.PickerBase.prototype
|
|
70
|
+
* @public
|
|
71
|
+
*/
|
|
72
|
+
'aria-valuetext': _propTypes["default"].string,
|
|
73
|
+
/**
|
|
74
|
+
* Determines which key to adjust the picker's value for the joined horizontal one.
|
|
75
|
+
*
|
|
76
|
+
* * `'enter'` allows the user to use the enter key to adjust the picker's value
|
|
77
|
+
* * `'arrow'` allows the user to use the left or right keys to adjust the picker's value.
|
|
78
|
+
*
|
|
79
|
+
* The default value for joined horizontal picker is `'enter'`.
|
|
80
|
+
* If {@link limestone/Picker.PickerBase.orientation|orientation} is `'vertical'` or
|
|
81
|
+
* {@link limestone/Picker.PickerBase.joined|joined} is undefined or is `false`, this prop is ignored.
|
|
82
|
+
*
|
|
83
|
+
* @type {('enter'|'arrow')}
|
|
84
|
+
* @public
|
|
85
|
+
*/
|
|
86
|
+
changedBy: _propTypes["default"].oneOf(['enter', 'arrow']),
|
|
87
|
+
/**
|
|
88
|
+
* Customizes the component by mapping the supplied collection of CSS class names to the
|
|
89
|
+
* corresponding internal elements and states of this component.
|
|
90
|
+
*
|
|
91
|
+
* The following classes are supported:
|
|
92
|
+
*
|
|
93
|
+
* * `title` - The title component class
|
|
94
|
+
* * `inlineTitle` - The title component class when `inlineTitle` is true
|
|
95
|
+
*
|
|
96
|
+
* @type {Object}
|
|
97
|
+
* @public
|
|
98
|
+
*/
|
|
99
|
+
css: _propTypes["default"].object,
|
|
100
|
+
/**
|
|
101
|
+
* The voice control labels for the `children`.
|
|
102
|
+
*
|
|
103
|
+
* By default, `data-webos-voice-labels-ext` is generated from `children`. However, if
|
|
104
|
+
* `children` is not an array of numbers or strings, `data-webos-voice-labels-ext` should be
|
|
105
|
+
* set to an array of labels.
|
|
106
|
+
*
|
|
107
|
+
* @type {Number[]|String[]}
|
|
108
|
+
* @memberof limestone/Picker.PickerBase.prototype
|
|
109
|
+
* @public
|
|
110
|
+
*/
|
|
111
|
+
'data-webos-voice-labels-ext': _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].number), _propTypes["default"].arrayOf(_propTypes["default"].string)]),
|
|
112
|
+
/**
|
|
113
|
+
* A custom icon for the decrementer.
|
|
114
|
+
*
|
|
115
|
+
* All strings supported by {@link limestone/Icon.Icon|Icon} are supported. Without a
|
|
116
|
+
* custom icon, the default is used, and is automatically changed when the
|
|
117
|
+
* {@link limestone/Picker.PickerBase.orientation|orientation} is changed.
|
|
118
|
+
*
|
|
119
|
+
* @type {String}
|
|
120
|
+
* @public
|
|
121
|
+
*/
|
|
122
|
+
decrementIcon: _propTypes["default"].string,
|
|
123
|
+
/**
|
|
124
|
+
* Disables the picker.
|
|
125
|
+
*
|
|
126
|
+
* @type {Boolean}
|
|
127
|
+
* @public
|
|
128
|
+
*/
|
|
129
|
+
disabled: _propTypes["default"].bool,
|
|
130
|
+
/**
|
|
131
|
+
* A custom icon for the incrementer.
|
|
132
|
+
*
|
|
133
|
+
* All strings supported by {@link limestone/Icon.Icon|Icon} are supported. Without a
|
|
134
|
+
* custom icon, the default is used, and is automatically changed when the
|
|
135
|
+
* {@link limestone/Picker.PickerBase.orientation|orientation} is changed.
|
|
136
|
+
*
|
|
137
|
+
* @type {String}
|
|
138
|
+
* @public
|
|
139
|
+
*/
|
|
140
|
+
incrementIcon: _propTypes["default"].string,
|
|
141
|
+
/**
|
|
142
|
+
* Applies inline styling to the title.
|
|
143
|
+
*
|
|
144
|
+
* @type {Boolean}
|
|
145
|
+
* @public
|
|
146
|
+
*/
|
|
147
|
+
inlineTitle: _propTypes["default"].bool,
|
|
148
|
+
/**
|
|
149
|
+
* Allows the user to use the arrow keys or enter key to adjust the picker's value.
|
|
150
|
+
*
|
|
151
|
+
* Key presses are captured in the directions of the increment and decrement buttons but
|
|
152
|
+
* others are unaffected. A non-joined Picker allows navigation in any direction, but
|
|
153
|
+
* requires individual ENTER presses on the incrementer and decrementer buttons. Pointer
|
|
154
|
+
* interaction is the same for both formats.
|
|
155
|
+
*
|
|
156
|
+
* @type {Boolean}
|
|
157
|
+
* @public
|
|
158
|
+
*/
|
|
159
|
+
joined: _propTypes["default"].bool,
|
|
160
|
+
/**
|
|
161
|
+
* Disables marqueeing of items.
|
|
162
|
+
*
|
|
163
|
+
* By default, each picker item is wrapped by a
|
|
164
|
+
* {@link limestone/Marquee.Marquee|Marquee}. When this is set, the items will
|
|
165
|
+
* not be wrapped.
|
|
166
|
+
*
|
|
167
|
+
* @type {Boolean}
|
|
168
|
+
* @public
|
|
169
|
+
*/
|
|
170
|
+
marqueeDisabled: _propTypes["default"].bool,
|
|
171
|
+
/**
|
|
172
|
+
* Disables transition animation.
|
|
173
|
+
*
|
|
174
|
+
* @type {Boolean}
|
|
175
|
+
* @public
|
|
176
|
+
*/
|
|
177
|
+
noAnimation: _propTypes["default"].bool,
|
|
178
|
+
/**
|
|
179
|
+
* Called when the `value` changes.
|
|
180
|
+
*
|
|
181
|
+
* @type {Function}
|
|
182
|
+
* @public
|
|
183
|
+
*/
|
|
184
|
+
onChange: _propTypes["default"].func,
|
|
185
|
+
/**
|
|
186
|
+
* Orientation of the picker.
|
|
187
|
+
*
|
|
188
|
+
* Controls whether the buttons are arranged horizontally or vertically around the value.
|
|
189
|
+
*
|
|
190
|
+
* @type {('horizontal'|'vertical')}
|
|
191
|
+
* @public
|
|
192
|
+
*/
|
|
193
|
+
orientation: _propTypes["default"].oneOf(['horizontal', 'vertical']),
|
|
194
|
+
/**
|
|
195
|
+
* When `true`, the picker buttons operate in the reverse direction such that pressing
|
|
196
|
+
* up/left decrements the value and down/right increments the value. This is more natural
|
|
197
|
+
* for vertical lists of text options where "up" implies a spatial change rather than
|
|
198
|
+
* incrementing the value.
|
|
199
|
+
*
|
|
200
|
+
* If this prop is omitted, it will be determined by `orientation`.
|
|
201
|
+
* For example, if `orientation` is `vertical`, `reverse` is `true`.
|
|
202
|
+
* Conversely, if `orientation` is `horizontal`, `reverse` is `false`.
|
|
203
|
+
*
|
|
204
|
+
* @type {Boolean}
|
|
205
|
+
* @public
|
|
206
|
+
*/
|
|
207
|
+
reverse: _propTypes["default"].bool,
|
|
208
|
+
/**
|
|
209
|
+
* The primary text of the `Picker`.
|
|
210
|
+
*
|
|
211
|
+
* The screen readers read out the title text when the `joined` prop is false
|
|
212
|
+
*
|
|
213
|
+
* @type {String}
|
|
214
|
+
* @public
|
|
215
|
+
*/
|
|
216
|
+
title: _propTypes["default"].string,
|
|
217
|
+
/**
|
|
218
|
+
* The type of picker. It determines the aria-label for the next and previous buttons.
|
|
219
|
+
*
|
|
220
|
+
* Depending on the `type`, `joined`, `decrementAriaLabel`, and `incrementAriaLabel`,
|
|
221
|
+
* the screen readers read out differently when Spotlight is on the next button, the previous button,
|
|
222
|
+
* or the picker itself.
|
|
223
|
+
*
|
|
224
|
+
* For example, if Spotlight is on the next button, the `joined` prop is false,
|
|
225
|
+
* and aria label props(`decrementAriaLabel` and `incrementAriaLabel`) are not defined,
|
|
226
|
+
* then the screen readers read out as follows.
|
|
227
|
+
* `'string'` type: `'next item'`
|
|
228
|
+
* `'number'` type: `'press ok button to increase the value'`
|
|
229
|
+
*
|
|
230
|
+
* @type {('number'|'string')}
|
|
231
|
+
* @default 'string'
|
|
232
|
+
* @public
|
|
233
|
+
*/
|
|
234
|
+
type: _propTypes["default"].oneOf(['number', 'string']),
|
|
235
|
+
/**
|
|
236
|
+
* Index of the selected child.
|
|
237
|
+
*
|
|
238
|
+
* @type {Number}
|
|
239
|
+
* @default 0
|
|
240
|
+
* @public
|
|
241
|
+
*/
|
|
242
|
+
value: _propTypes["default"].number,
|
|
243
|
+
/**
|
|
244
|
+
* The width of the picker.
|
|
245
|
+
*
|
|
246
|
+
* A number can be used to set the minimum number of characters to be shown. Setting a
|
|
247
|
+
* number to less than the number of characters in the longest value will cause the width to
|
|
248
|
+
* grow for the longer values.
|
|
249
|
+
*
|
|
250
|
+
* A string can be used to select from pre-defined widths:
|
|
251
|
+
* * `'small'` - numeric values
|
|
252
|
+
* * `'medium'` - single or short words
|
|
253
|
+
* * `'large'` - maximum-sized pickers taking full width of its parent
|
|
254
|
+
*
|
|
255
|
+
* By default, the picker will size according to the longest valid value.
|
|
256
|
+
*
|
|
257
|
+
* @type {('small'|'medium'|'large'|Number)}
|
|
258
|
+
* @public
|
|
259
|
+
*/
|
|
260
|
+
width: _propTypes["default"].oneOfType([_propTypes["default"].oneOf([null, 'small', 'medium', 'large']), _propTypes["default"].number]),
|
|
261
|
+
/**
|
|
262
|
+
* Allows picker to continue from the start of the list after it reaches the end and
|
|
263
|
+
* vice versa.
|
|
264
|
+
*
|
|
265
|
+
* @type {Boolean}
|
|
266
|
+
* @public
|
|
267
|
+
*/
|
|
268
|
+
wrap: _propTypes["default"].bool
|
|
269
|
+
},
|
|
270
|
+
defaultProps: {
|
|
271
|
+
type: 'string',
|
|
272
|
+
value: 0
|
|
273
|
+
},
|
|
274
|
+
styles: {
|
|
275
|
+
css: _PickerModule["default"],
|
|
276
|
+
publicClassNames: ['inlineTitle', 'title']
|
|
277
|
+
},
|
|
278
|
+
computed: {
|
|
279
|
+
max: function max(_ref) {
|
|
280
|
+
var children = _ref.children;
|
|
281
|
+
return children && children.length ? children.length - 1 : 0;
|
|
282
|
+
},
|
|
283
|
+
reverse: function reverse(_ref2) {
|
|
284
|
+
var orientation = _ref2.orientation,
|
|
285
|
+
_reverse = _ref2.reverse;
|
|
286
|
+
return typeof _reverse === 'boolean' ? _reverse : orientation === 'vertical';
|
|
287
|
+
},
|
|
288
|
+
children: function children(_ref3) {
|
|
289
|
+
var _children = _ref3.children,
|
|
290
|
+
disabled = _ref3.disabled,
|
|
291
|
+
joined = _ref3.joined,
|
|
292
|
+
marqueeDisabled = _ref3.marqueeDisabled;
|
|
293
|
+
return _react.Children.map(_children, function (child) {
|
|
294
|
+
var focusOrHover = !disabled && joined ? 'focus' : 'hover';
|
|
295
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Picker.PickerItem, {
|
|
296
|
+
marqueeDisabled: marqueeDisabled,
|
|
297
|
+
marqueeOn: focusOrHover,
|
|
298
|
+
children: child
|
|
299
|
+
});
|
|
300
|
+
});
|
|
301
|
+
},
|
|
302
|
+
disabled: function disabled(_ref4) {
|
|
303
|
+
var children = _ref4.children,
|
|
304
|
+
_disabled = _ref4.disabled;
|
|
305
|
+
return _react.Children.count(children) > 1 ? _disabled : true;
|
|
306
|
+
},
|
|
307
|
+
value: function value(_ref5) {
|
|
308
|
+
var _value = _ref5.value,
|
|
309
|
+
children = _ref5.children;
|
|
310
|
+
var max = children && children.length ? children.length - 1 : 0;
|
|
311
|
+
if (process.env.NODE_ENV !== "production") {
|
|
312
|
+
(0, _validators.validateRange)(_value, 0, max, 'Picker', 'value', 'min', 'max index');
|
|
313
|
+
}
|
|
314
|
+
return (0, _util.clamp)(0, max, _value);
|
|
315
|
+
},
|
|
316
|
+
voiceLabel: function voiceLabel(_ref6) {
|
|
317
|
+
var children = _ref6.children,
|
|
318
|
+
voiceLabelsExt = _ref6['data-webos-voice-labels-ext'];
|
|
319
|
+
var voiceLabel;
|
|
320
|
+
if (voiceLabelsExt) {
|
|
321
|
+
voiceLabel = voiceLabelsExt;
|
|
322
|
+
} else {
|
|
323
|
+
voiceLabel = _react.Children.map(children, function (child) {
|
|
324
|
+
return typeof child === 'number' || typeof child === 'string' ? child : '';
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
return JSON.stringify(voiceLabel);
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
render: function render(_ref7) {
|
|
331
|
+
var children = _ref7.children,
|
|
332
|
+
css = _ref7.css,
|
|
333
|
+
inlineTitle = _ref7.inlineTitle,
|
|
334
|
+
max = _ref7.max,
|
|
335
|
+
title = _ref7.title,
|
|
336
|
+
value = _ref7.value,
|
|
337
|
+
voiceLabel = _ref7.voiceLabel,
|
|
338
|
+
rest = _objectWithoutProperties(_ref7, _excluded);
|
|
339
|
+
delete rest.marqueeDisabled;
|
|
340
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
341
|
+
children: [title ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Heading["default"], {
|
|
342
|
+
css: css,
|
|
343
|
+
className: (0, _classnames2["default"])(css.title, _defineProperty({}, css.inlineTitle, inlineTitle)),
|
|
344
|
+
marqueeOn: "hover",
|
|
345
|
+
children: title
|
|
346
|
+
}) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_Picker["default"], _objectSpread(_objectSpread({}, rest), {}, {
|
|
347
|
+
"data-webos-voice-labels-ext": voiceLabel,
|
|
348
|
+
min: 0,
|
|
349
|
+
max: max,
|
|
350
|
+
index: value,
|
|
351
|
+
step: 1,
|
|
352
|
+
title: title,
|
|
353
|
+
value: value,
|
|
354
|
+
children: children
|
|
355
|
+
}))]
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* A Picker component that allows selecting values from a list of values.
|
|
362
|
+
*
|
|
363
|
+
* By default, `Picker` maintains the state of its `value` property. Supply the `defaultValue`
|
|
364
|
+
* property to control its initial value. If you wish to directly control updates to the component,
|
|
365
|
+
* supply a value to `value` at creation time and update it in response to `onChange` events.
|
|
366
|
+
*
|
|
367
|
+
* @class Picker
|
|
368
|
+
* @memberof limestone/Picker
|
|
369
|
+
* @extends limestone/Picker.PickerBase
|
|
370
|
+
* @mixes ui/Changeable.Changeable
|
|
371
|
+
* @mixes limestone/Marquee.MarqueeController
|
|
372
|
+
* @ui
|
|
373
|
+
* @public
|
|
374
|
+
*/
|
|
375
|
+
var Picker = exports.Picker = (0, _Pure["default"])((0, _Changeable["default"])((0, _Marquee.MarqueeController)({
|
|
376
|
+
marqueeOnFocus: true
|
|
377
|
+
}, PickerBase)));
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* Default index of the selected child.
|
|
381
|
+
*
|
|
382
|
+
* *Note*: Changing `defaultValue` after initial render has no effect.
|
|
383
|
+
*
|
|
384
|
+
* @name defaultValue
|
|
385
|
+
* @memberof limestone/Picker.Picker.prototype
|
|
386
|
+
* @type {Number}
|
|
387
|
+
* @public
|
|
388
|
+
*/
|
|
389
|
+
var _default = exports["default"] = Picker;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
.title {
|
|
2
|
+
margin-left: 1.875rem;
|
|
3
|
+
margin-right: var(--primitive-spacing-24);
|
|
4
|
+
}
|
|
5
|
+
:global(.enact-locale-right-to-left) .title {
|
|
6
|
+
margin-left: var(--primitive-spacing-24);
|
|
7
|
+
margin-right: 1.875rem;
|
|
8
|
+
}
|
|
9
|
+
.title.inlineTitle {
|
|
10
|
+
display: inline-block;
|
|
11
|
+
max-width: 10rem;
|
|
12
|
+
line-height: 1.5rem;
|
|
13
|
+
padding-bottom: 0;
|
|
14
|
+
margin-bottom: 0;
|
|
15
|
+
}
|
|
16
|
+
.heading:global(.neutral).tiny {
|
|
17
|
+
color: var(--semantic-color-on-background-main);
|
|
18
|
+
}
|
|
19
|
+
:global(.enact-a11y-high-contrast) .heading:global(.neutral):global(.highContrast).tiny {
|
|
20
|
+
color: var(--semantic-color-on-background-main);
|
|
21
|
+
}
|
|
22
|
+
.heading:global(.light).tiny {
|
|
23
|
+
color: var(--semantic-color-on-background-main);
|
|
24
|
+
}
|
|
25
|
+
.heading:global(.game) {
|
|
26
|
+
--semantic-color-surface-default: #2d224c;
|
|
27
|
+
--semantic-color-surface-default-focused: #6d2fa1;
|
|
28
|
+
--semantic-color-on-surface-main-focused: #e6e6e6;
|
|
29
|
+
}
|
|
30
|
+
.heading:global(.game).tiny {
|
|
31
|
+
color: var(--semantic-color-on-background-main);
|
|
32
|
+
}
|
|
33
|
+
:global(.green) .heading:global(.game) {
|
|
34
|
+
--semantic-color-surface-default: #1F2C24;
|
|
35
|
+
--semantic-color-surface-default-focused: #3ea07d;
|
|
36
|
+
}
|
|
37
|
+
:global(.green) .heading:global(.game).tiny {
|
|
38
|
+
color: var(--semantic-color-on-background-main);
|
|
39
|
+
}
|
|
40
|
+
:global(.orange) .heading:global(.game) {
|
|
41
|
+
--semantic-color-surface-default: #422923;
|
|
42
|
+
--semantic-color-surface-default-focused: #b85f23;
|
|
43
|
+
}
|
|
44
|
+
:global(.orange) .heading:global(.game).tiny {
|
|
45
|
+
color: var(--semantic-color-on-background-main);
|
|
46
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("@testing-library/jest-dom");
|
|
4
|
+
var _react = require("@testing-library/react");
|
|
5
|
+
var _Picker = require("../Picker");
|
|
6
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
7
|
+
describe('Picker Specs', function () {
|
|
8
|
+
test('should render selected child wrapped with <PickerItem/>', function () {
|
|
9
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Picker.Picker, {
|
|
10
|
+
value: 1,
|
|
11
|
+
children: [1, 2, 3, 4]
|
|
12
|
+
}));
|
|
13
|
+
var pickerText = _react.screen.getByText('2').parentElement.parentElement;
|
|
14
|
+
var expected = 'item';
|
|
15
|
+
expect(pickerText).toHaveClass(expected);
|
|
16
|
+
});
|
|
17
|
+
test('should set the max of <Picker> to be one less than the number of children', function () {
|
|
18
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Picker.Picker, {
|
|
19
|
+
value: 3,
|
|
20
|
+
children: [1, 2, 3, 4]
|
|
21
|
+
}));
|
|
22
|
+
var arrowForward = _react.screen.getAllByRole('button')[0];
|
|
23
|
+
var expectedValue = 'true';
|
|
24
|
+
var expectedAttribute = 'aria-disabled';
|
|
25
|
+
expect(arrowForward).toHaveAttribute(expectedAttribute, expectedValue);
|
|
26
|
+
});
|
|
27
|
+
test('should be disabled when empty', function () {
|
|
28
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Picker.PickerBase, {
|
|
29
|
+
"data-testid": "picker",
|
|
30
|
+
children: []
|
|
31
|
+
}));
|
|
32
|
+
var picker = _react.screen.getByTestId('picker');
|
|
33
|
+
var expected = 'disabled';
|
|
34
|
+
expect(picker).toHaveAttribute(expected);
|
|
35
|
+
});
|
|
36
|
+
test('should set \'data-webos-voice-disabled\' to decrement button when voice control is disabled', function () {
|
|
37
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Picker.PickerBase, {
|
|
38
|
+
"data-webos-voice-disabled": true,
|
|
39
|
+
children: [1, 2, 3, 4]
|
|
40
|
+
}));
|
|
41
|
+
var decrementButton = _react.screen.getAllByRole('button')[1];
|
|
42
|
+
var expected = 'data-webos-voice-disabled';
|
|
43
|
+
expect(decrementButton).toHaveAttribute(expected);
|
|
44
|
+
});
|
|
45
|
+
test('should set \'data-webos-voice-disabled\' to increment button when voice control is disabled', function () {
|
|
46
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Picker.PickerBase, {
|
|
47
|
+
"data-webos-voice-disabled": true,
|
|
48
|
+
children: [1, 2, 3, 4]
|
|
49
|
+
}));
|
|
50
|
+
var incrementButton = _react.screen.getAllByRole('button')[0];
|
|
51
|
+
var expected = 'data-webos-voice-disabled';
|
|
52
|
+
expect(incrementButton).toHaveAttribute(expected);
|
|
53
|
+
});
|
|
54
|
+
test('should have a heading element when \'title\'', function () {
|
|
55
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Picker.PickerBase, {
|
|
56
|
+
title: "title text",
|
|
57
|
+
children: [1, 2, 3, 4]
|
|
58
|
+
}));
|
|
59
|
+
var heading = _react.screen.getByText('title text');
|
|
60
|
+
var expected = 'heading';
|
|
61
|
+
var actual = heading.parentElement.parentElement;
|
|
62
|
+
expect(heading).toBeInTheDocument();
|
|
63
|
+
expect(actual).toHaveClass(expected);
|
|
64
|
+
});
|
|
65
|
+
test('should have a heading element with inline class when \'title\' and \'inlineTitle\'', function () {
|
|
66
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Picker.PickerBase, {
|
|
67
|
+
inlineTitle: true,
|
|
68
|
+
title: "title text",
|
|
69
|
+
children: [1, 2, 3, 4]
|
|
70
|
+
}));
|
|
71
|
+
var heading = _react.screen.getByText('title text');
|
|
72
|
+
var expectedInline = 'inlineTitle';
|
|
73
|
+
var expectedHeader = 'heading';
|
|
74
|
+
var actual = heading.parentElement.parentElement;
|
|
75
|
+
expect(heading).toBeInTheDocument();
|
|
76
|
+
expect(actual).toHaveClass(expectedInline);
|
|
77
|
+
expect(actual).toHaveClass(expectedHeader);
|
|
78
|
+
});
|
|
79
|
+
test('should stringify custom voice control labels and set to \'data-webos-voice-labels-ext\'', function () {
|
|
80
|
+
var options = ['Option 1', 'The second one', 'This is the third option', '4'];
|
|
81
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Picker.Picker, {
|
|
82
|
+
"data-webos-voice-labels-ext": options,
|
|
83
|
+
inlineTitle: true,
|
|
84
|
+
title: "title text",
|
|
85
|
+
children: [1, 2, 3, 4]
|
|
86
|
+
}));
|
|
87
|
+
var picker = _react.screen.getAllByRole('button')[0].parentElement;
|
|
88
|
+
var expected = "[\"Option 1\",\"The second one\",\"This is the third option\",\"4\"]";
|
|
89
|
+
expect(picker).toHaveAttribute('data-webos-voice-labels-ext', expected);
|
|
90
|
+
});
|
|
91
|
+
});
|