@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,292 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _spotlight = _interopRequireDefault(require("@enact/spotlight"));
|
|
4
|
+
require("@testing-library/jest-dom");
|
|
5
|
+
var _react = require("@testing-library/react");
|
|
6
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
7
|
+
var _ = require("../");
|
|
8
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
10
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
11
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
12
|
+
var isPaused = function isPaused() {
|
|
13
|
+
return _spotlight["default"].isPaused() ? 'paused' : 'not paused';
|
|
14
|
+
};
|
|
15
|
+
describe('InputField Specs', function () {
|
|
16
|
+
test('should have an input element', function () {
|
|
17
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {}));
|
|
18
|
+
var inputField = _react.screen.getByLabelText('Input field');
|
|
19
|
+
expect(inputField).toBeInTheDocument();
|
|
20
|
+
});
|
|
21
|
+
test('should include a placeholder if specified', function () {
|
|
22
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
23
|
+
placeholder: "hello"
|
|
24
|
+
}));
|
|
25
|
+
var inputField = _react.screen.getByLabelText('hello Input field');
|
|
26
|
+
var expected = 'hello';
|
|
27
|
+
var actual = inputField.textContent;
|
|
28
|
+
expect(actual).toBe(expected);
|
|
29
|
+
});
|
|
30
|
+
test('should callback onChange with `onChange` type when the text changes', /*#__PURE__*/_asyncToGenerator(function* () {
|
|
31
|
+
var handleChange = jest.fn();
|
|
32
|
+
var value = 'blah';
|
|
33
|
+
var user = _userEvent["default"].setup();
|
|
34
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
35
|
+
onChange: handleChange
|
|
36
|
+
}));
|
|
37
|
+
var inputField = _react.screen.getByPlaceholderText('');
|
|
38
|
+
yield user.type(inputField, value);
|
|
39
|
+
var expected = {
|
|
40
|
+
type: 'onChange'
|
|
41
|
+
};
|
|
42
|
+
var actual = handleChange.mock.calls.length && handleChange.mock.calls[0][0];
|
|
43
|
+
expect(handleChange).toHaveBeenCalled();
|
|
44
|
+
expect(actual).toMatchObject(expected);
|
|
45
|
+
}));
|
|
46
|
+
test('should forward an event with a stopPropagation method from onChange handler', function () {
|
|
47
|
+
var handleChange = jest.fn();
|
|
48
|
+
var value = 'blah';
|
|
49
|
+
var evt = {
|
|
50
|
+
target: {
|
|
51
|
+
value: value
|
|
52
|
+
},
|
|
53
|
+
stopPropagation: jest.fn()
|
|
54
|
+
};
|
|
55
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
56
|
+
onChange: handleChange
|
|
57
|
+
}));
|
|
58
|
+
var inputField = _react.screen.getByPlaceholderText('');
|
|
59
|
+
_react.fireEvent.change(inputField, evt);
|
|
60
|
+
var actual = typeof handleChange.mock.calls[0][0].stopPropagation === 'function';
|
|
61
|
+
expect(actual).toBeTruthy();
|
|
62
|
+
});
|
|
63
|
+
test('should not bubble the native event when stopPropagation from onChange is called', /*#__PURE__*/_asyncToGenerator(function* () {
|
|
64
|
+
var handleChange = jest.fn();
|
|
65
|
+
var value = 'smt';
|
|
66
|
+
function stop(ev) {
|
|
67
|
+
ev.stopPropagation();
|
|
68
|
+
}
|
|
69
|
+
var user = _userEvent["default"].setup();
|
|
70
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
71
|
+
onChange: handleChange,
|
|
72
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
73
|
+
onChange: stop
|
|
74
|
+
})
|
|
75
|
+
}));
|
|
76
|
+
var inputField = _react.screen.getByPlaceholderText('');
|
|
77
|
+
yield user.type(inputField, value);
|
|
78
|
+
expect(handleChange).not.toHaveBeenCalled();
|
|
79
|
+
}));
|
|
80
|
+
test('should callback onBeforeChange with `onBeforeChange` type before the text changes', /*#__PURE__*/_asyncToGenerator(function* () {
|
|
81
|
+
var handleBeforeChange = jest.fn();
|
|
82
|
+
var value = 'blah';
|
|
83
|
+
var user = _userEvent["default"].setup();
|
|
84
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
85
|
+
onBeforeChange: handleBeforeChange
|
|
86
|
+
}));
|
|
87
|
+
var inputField = _react.screen.getByPlaceholderText('');
|
|
88
|
+
yield user.type(inputField, value);
|
|
89
|
+
var expected = {
|
|
90
|
+
type: 'onBeforeChange'
|
|
91
|
+
};
|
|
92
|
+
var actual = handleBeforeChange.mock.calls.length && handleBeforeChange.mock.calls[0][0];
|
|
93
|
+
expect(handleBeforeChange).toHaveBeenCalled();
|
|
94
|
+
expect(actual).toMatchObject(expected);
|
|
95
|
+
}));
|
|
96
|
+
test('should prevent onChange if onBeforeChange prevents', /*#__PURE__*/_asyncToGenerator(function* () {
|
|
97
|
+
var handleBeforeChange = jest.fn(function (ev) {
|
|
98
|
+
return ev.preventDefault();
|
|
99
|
+
});
|
|
100
|
+
var handleChange = jest.fn();
|
|
101
|
+
var value = 'blah';
|
|
102
|
+
var user = _userEvent["default"].setup();
|
|
103
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
104
|
+
onBeforeChange: handleBeforeChange,
|
|
105
|
+
onChange: handleChange
|
|
106
|
+
}));
|
|
107
|
+
var inputField = _react.screen.getByPlaceholderText('');
|
|
108
|
+
yield user.type(inputField, value);
|
|
109
|
+
expect(handleChange).not.toHaveBeenCalled();
|
|
110
|
+
}));
|
|
111
|
+
test('should blur input on enter if dismissOnEnter', function () {
|
|
112
|
+
var handleChange = jest.fn();
|
|
113
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
114
|
+
onBlur: handleChange,
|
|
115
|
+
dismissOnEnter: true
|
|
116
|
+
}));
|
|
117
|
+
var inputField = _react.screen.getByPlaceholderText('');
|
|
118
|
+
_react.fireEvent.mouseDown(inputField);
|
|
119
|
+
_react.fireEvent.keyUp(inputField, {
|
|
120
|
+
which: 13,
|
|
121
|
+
keyCode: 13,
|
|
122
|
+
code: 13
|
|
123
|
+
});
|
|
124
|
+
expect(handleChange).toHaveBeenCalled();
|
|
125
|
+
});
|
|
126
|
+
test('should activate input on enter', function () {
|
|
127
|
+
var handleChange = jest.fn();
|
|
128
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
129
|
+
onActivate: handleChange
|
|
130
|
+
}));
|
|
131
|
+
var inputField = _react.screen.getByPlaceholderText('');
|
|
132
|
+
_react.fireEvent.keyDown(inputField, {
|
|
133
|
+
which: 13,
|
|
134
|
+
keyCode: 13,
|
|
135
|
+
code: 13
|
|
136
|
+
});
|
|
137
|
+
_react.fireEvent.keyUp(inputField, {
|
|
138
|
+
which: 13,
|
|
139
|
+
keyCode: 13,
|
|
140
|
+
code: 13
|
|
141
|
+
});
|
|
142
|
+
expect(handleChange).toHaveBeenCalled();
|
|
143
|
+
});
|
|
144
|
+
test('should not activate input on enter when disabled', function () {
|
|
145
|
+
var handleChange = jest.fn();
|
|
146
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
147
|
+
disabled: true,
|
|
148
|
+
onActivate: handleChange
|
|
149
|
+
}));
|
|
150
|
+
var inputField = _react.screen.getByPlaceholderText('');
|
|
151
|
+
_react.fireEvent.keyDown(inputField, {
|
|
152
|
+
which: 13,
|
|
153
|
+
keyCode: 13,
|
|
154
|
+
code: 13
|
|
155
|
+
});
|
|
156
|
+
_react.fireEvent.keyUp(inputField, {
|
|
157
|
+
which: 13,
|
|
158
|
+
keyCode: 13,
|
|
159
|
+
code: 13
|
|
160
|
+
});
|
|
161
|
+
expect(handleChange).not.toHaveBeenCalled();
|
|
162
|
+
});
|
|
163
|
+
test('should be able to be disabled', function () {
|
|
164
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
165
|
+
disabled: true
|
|
166
|
+
}));
|
|
167
|
+
var actual = _react.screen.getByLabelText('Input field');
|
|
168
|
+
var expected = 'disabled';
|
|
169
|
+
expect(actual).toHaveAttribute(expected);
|
|
170
|
+
});
|
|
171
|
+
test('should reflect the value if specified', function () {
|
|
172
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
173
|
+
value: "hello"
|
|
174
|
+
}));
|
|
175
|
+
var inputField = _react.screen.getByLabelText('hello Input field');
|
|
176
|
+
var actual = inputField.textContent;
|
|
177
|
+
var expected = 'hello';
|
|
178
|
+
expect(actual).toBe(expected);
|
|
179
|
+
});
|
|
180
|
+
test('should have dir equal to rtl when there is rtl text', function () {
|
|
181
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
182
|
+
value: "\u05E9\u05D5\u05E2\u05DC \u05D4\u05D7\u05D5\u05DD \u05D4\u05D6\u05E8\u05D9\u05D6 \u05E7\u05E4\u05E5 \u05DE\u05E2\u05DC \u05D4\u05DB\u05DC\u05D1 \u05D4\u05E2\u05E6\u05DC\u05DF.\u05E6\u05D9\u05E4\u05D5\u05E8 \u05E2\u05E4\u05D4 \u05D4\u05E9\u05E2\u05D5\u05E2\u05D9\u05EA \u05E2\u05DD \u05E9\u05E7\u05D9"
|
|
183
|
+
}));
|
|
184
|
+
var inputField = _react.screen.getByLabelText('שועל החום הזריז קפץ מעל הכלב העצלן.ציפור עפה השעועית עם שקי' + ' Input field').children.item(2);
|
|
185
|
+
var expectedAttribute = 'dir';
|
|
186
|
+
var expectedValue = 'rtl';
|
|
187
|
+
expect(inputField).toHaveAttribute(expectedAttribute, expectedValue);
|
|
188
|
+
});
|
|
189
|
+
test('should have dir equal to ltr when there is ltr text', function () {
|
|
190
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
191
|
+
value: "content"
|
|
192
|
+
}));
|
|
193
|
+
var inputField = _react.screen.getByPlaceholderText('');
|
|
194
|
+
var expectedAttribute = 'dir';
|
|
195
|
+
var expectedValue = 'ltr';
|
|
196
|
+
expect(inputField).toHaveAttribute(expectedAttribute, expectedValue);
|
|
197
|
+
});
|
|
198
|
+
test('should have dir equal to rtl when there is rtl text in the placeholder', function () {
|
|
199
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
200
|
+
placeholder: "\u05E9\u05D5\u05E2\u05DC \u05D4\u05D7\u05D5\u05DD \u05D4\u05D6\u05E8\u05D9\u05D6 \u05E7\u05E4\u05E5 \u05DE\u05E2\u05DC \u05D4\u05DB\u05DC\u05D1 \u05D4\u05E2\u05E6\u05DC\u05DF.\u05E6\u05D9\u05E4\u05D5\u05E8 \u05E2\u05E4\u05D4 \u05D4\u05E9\u05E2\u05D5\u05E2\u05D9\u05EA \u05E2\u05DD \u05E9\u05E7\u05D9"
|
|
201
|
+
}));
|
|
202
|
+
var inputField = _react.screen.getByPlaceholderText('שועל החום הזריז קפץ מעל הכלב העצלן.ציפור עפה השעועית עם שקי');
|
|
203
|
+
var expectedAttribute = 'dir';
|
|
204
|
+
var expectedValue = 'rtl';
|
|
205
|
+
expect(inputField).toHaveAttribute(expectedAttribute, expectedValue);
|
|
206
|
+
});
|
|
207
|
+
test('should have dir equal to ltr when there is ltr text in the placeholder', function () {
|
|
208
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
209
|
+
placeholder: "content"
|
|
210
|
+
}));
|
|
211
|
+
var inputField = _react.screen.getByPlaceholderText('content');
|
|
212
|
+
var expectedAttribute = 'dir';
|
|
213
|
+
var expectedValue = 'ltr';
|
|
214
|
+
expect(inputField).toHaveAttribute(expectedAttribute, expectedValue);
|
|
215
|
+
});
|
|
216
|
+
test('should have dir equal to rtl when there is ltr text in the placeholder, but rtl text in value', function () {
|
|
217
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
218
|
+
placeholder: "content",
|
|
219
|
+
value: "\u05E9\u05D5\u05E2\u05DC \u05D4\u05D7\u05D5\u05DD \u05D4\u05D6\u05E8\u05D9\u05D6 \u05E7\u05E4\u05E5 \u05DE\u05E2\u05DC \u05D4\u05DB\u05DC\u05D1 \u05D4\u05E2\u05E6\u05DC\u05DF.\u05E6\u05D9\u05E4\u05D5\u05E8 \u05E2\u05E4\u05D4 \u05D4\u05E9\u05E2\u05D5\u05E2\u05D9\u05EA \u05E2\u05DD \u05E9\u05E7\u05D9"
|
|
220
|
+
}));
|
|
221
|
+
var inputField = _react.screen.getByPlaceholderText('content');
|
|
222
|
+
var expectedAttribute = 'dir';
|
|
223
|
+
var expectedValue = 'rtl';
|
|
224
|
+
expect(inputField).toHaveAttribute(expectedAttribute, expectedValue);
|
|
225
|
+
});
|
|
226
|
+
test('should have dir equal to ltr when there is rtl text in the placeholder, but ltr text in value', function () {
|
|
227
|
+
var placeholder = 'שועל החום הזריז קפץ מעל הכלב העצלן.ציפור עפה השעועית עם שקי';
|
|
228
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
229
|
+
placeholder: placeholder,
|
|
230
|
+
value: "content"
|
|
231
|
+
}));
|
|
232
|
+
var inputField = _react.screen.getByPlaceholderText(placeholder);
|
|
233
|
+
var expectedAttribute = 'dir';
|
|
234
|
+
var expectedValue = 'ltr';
|
|
235
|
+
expect(inputField).toHaveAttribute(expectedAttribute, expectedValue);
|
|
236
|
+
});
|
|
237
|
+
test('should pause spotlight when input has focus', function () {
|
|
238
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {}));
|
|
239
|
+
var inputField = _react.screen.getByPlaceholderText('');
|
|
240
|
+
_react.fireEvent.mouseDown(inputField);
|
|
241
|
+
var expected = 'paused';
|
|
242
|
+
var actual = isPaused();
|
|
243
|
+
_spotlight["default"].resume();
|
|
244
|
+
expect(actual).toBe(expected);
|
|
245
|
+
});
|
|
246
|
+
test('should resume spotlight on unmount', function () {
|
|
247
|
+
var _render = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {})),
|
|
248
|
+
unmount = _render.unmount;
|
|
249
|
+
var inputField = _react.screen.getByPlaceholderText('');
|
|
250
|
+
_react.fireEvent.mouseDown(inputField);
|
|
251
|
+
unmount();
|
|
252
|
+
var expected = 'not paused';
|
|
253
|
+
var actual = isPaused();
|
|
254
|
+
_spotlight["default"].resume();
|
|
255
|
+
expect(actual).toBe(expected);
|
|
256
|
+
});
|
|
257
|
+
test('should display invalid message if it invalid and invalid message exists', function () {
|
|
258
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
259
|
+
invalid: true,
|
|
260
|
+
invalidMessage: "invalid message"
|
|
261
|
+
}));
|
|
262
|
+
var invalidText = _react.screen.getByText('invalid message').parentElement.parentElement;
|
|
263
|
+
var expected = 'tooltipLabel';
|
|
264
|
+
expect(invalidText).toBeInTheDocument();
|
|
265
|
+
expect(invalidText).toHaveClass(expected);
|
|
266
|
+
});
|
|
267
|
+
test('should not display invalid message if it is valid', function () {
|
|
268
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
269
|
+
invalidMessage: "invalid message"
|
|
270
|
+
}));
|
|
271
|
+
var actual = _react.screen.queryByText('invalid message');
|
|
272
|
+
expect(actual).toBeNull();
|
|
273
|
+
});
|
|
274
|
+
test('should set voice intent if specified', function () {
|
|
275
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
276
|
+
"data-webos-voice-intent": "Select"
|
|
277
|
+
}));
|
|
278
|
+
var inputField = _react.screen.getByPlaceholderText('');
|
|
279
|
+
var expectedAttribute = 'data-webos-voice-intent';
|
|
280
|
+
var expectedValue = 'Select';
|
|
281
|
+
expect(inputField).toHaveAttribute(expectedAttribute, expectedValue);
|
|
282
|
+
});
|
|
283
|
+
test('should set voice label if specified', function () {
|
|
284
|
+
var customLabel = 'input label';
|
|
285
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
|
|
286
|
+
"data-webos-voice-label": customLabel
|
|
287
|
+
}));
|
|
288
|
+
var inputField = _react.screen.getByPlaceholderText('');
|
|
289
|
+
var expectedAttribute = 'data-webos-voice-label';
|
|
290
|
+
expect(inputField).toHaveAttribute(expectedAttribute, customLabel);
|
|
291
|
+
});
|
|
292
|
+
});
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _FloatingLayer = require("@enact/ui/FloatingLayer");
|
|
4
|
+
require("@testing-library/jest-dom");
|
|
5
|
+
var _react = require("@testing-library/react");
|
|
6
|
+
var _Input = require("../Input");
|
|
7
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
8
|
+
var FloatingLayerController = (0, _FloatingLayer.FloatingLayerDecorator)('div');
|
|
9
|
+
describe('InputPopup Specs', function () {
|
|
10
|
+
test('should be rendered opened if open is set to true', function () {
|
|
11
|
+
var placeholder = 'InputPopup Placeholder';
|
|
12
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
13
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.InputPopup, {
|
|
14
|
+
open: true,
|
|
15
|
+
placeholder: placeholder
|
|
16
|
+
})
|
|
17
|
+
}));
|
|
18
|
+
var actual = _react.screen.getByPlaceholderText(placeholder);
|
|
19
|
+
expect(actual).toBeTruthy();
|
|
20
|
+
});
|
|
21
|
+
test('should set the input default value', function () {
|
|
22
|
+
var str = 'This is the default value';
|
|
23
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
24
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.InputPopup, {
|
|
25
|
+
defaultValue: str,
|
|
26
|
+
open: true
|
|
27
|
+
})
|
|
28
|
+
}));
|
|
29
|
+
var actual = _react.screen.getByDisplayValue(str);
|
|
30
|
+
expect(actual).toBeTruthy();
|
|
31
|
+
});
|
|
32
|
+
test('should set the input value', function () {
|
|
33
|
+
var str = 'This is the value';
|
|
34
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
35
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.InputPopup, {
|
|
36
|
+
open: true,
|
|
37
|
+
value: str
|
|
38
|
+
})
|
|
39
|
+
}));
|
|
40
|
+
var actual = _react.screen.getByDisplayValue(str);
|
|
41
|
+
expect(actual).toBeTruthy();
|
|
42
|
+
});
|
|
43
|
+
test('should set value instead defaultValue when both values are set', function () {
|
|
44
|
+
var strDefaultValue = 'This is the default value';
|
|
45
|
+
var strValue = 'This is the value';
|
|
46
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
47
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.InputPopup, {
|
|
48
|
+
defaultValue: strDefaultValue,
|
|
49
|
+
open: true,
|
|
50
|
+
value: strValue
|
|
51
|
+
})
|
|
52
|
+
}));
|
|
53
|
+
var actual = _react.screen.getByDisplayValue(strValue);
|
|
54
|
+
expect(actual).toBeTruthy();
|
|
55
|
+
});
|
|
56
|
+
});
|
package/Input/util.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.limitNumberLength = exports.extractInputProps = exports.extractInputFieldProps = exports.convertToPasswordFormat = exports.calcAriaLabel = exports.SEPARATE_DIGITS_LIMIT = exports.OVERLAY_JOINED_DIGITS_LIMIT = exports.FULLSCREEN_JOINED_DIGITS_LIMIT = exports.DEFAULT_LENGTH = void 0;
|
|
7
|
+
var _$L = _interopRequireDefault(require("../internal/$L"));
|
|
8
|
+
var _warning = _interopRequireDefault(require("warning"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
10
|
+
// A default value for the numeric field length. Used by maxLength and minLength.
|
|
11
|
+
var DEFAULT_LENGTH = exports.DEFAULT_LENGTH = 4;
|
|
12
|
+
|
|
13
|
+
// The cutoff length, at which point the numeric field switches from separated boxes to one box
|
|
14
|
+
var SEPARATE_DIGITS_LIMIT = exports.SEPARATE_DIGITS_LIMIT = 6;
|
|
15
|
+
var OVERLAY_JOINED_DIGITS_LIMIT = exports.OVERLAY_JOINED_DIGITS_LIMIT = 10;
|
|
16
|
+
var FULLSCREEN_JOINED_DIGITS_LIMIT = exports.FULLSCREEN_JOINED_DIGITS_LIMIT = 25;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Determines the `aria-label` for an Input
|
|
20
|
+
*
|
|
21
|
+
* @method
|
|
22
|
+
* @memberof limestone/Input
|
|
23
|
+
* @param {String} prefix Text to precede the value in the aria-label
|
|
24
|
+
* @param {String} type `type` of the Input
|
|
25
|
+
* @param {String} [value] Current value of the input
|
|
26
|
+
* @returns {String} `aria-label` value
|
|
27
|
+
* @private
|
|
28
|
+
*/
|
|
29
|
+
var calcAriaLabel = exports.calcAriaLabel = function calcAriaLabel(prefix, type) {
|
|
30
|
+
var value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
31
|
+
var hint = (0, _$L["default"])('Input field');
|
|
32
|
+
if ((type === 'password' || type === 'passwordtel') && value) {
|
|
33
|
+
var character = value.length > 1 ? (0, _$L["default"])('characters') : (0, _$L["default"])('character');
|
|
34
|
+
value = "".concat(value.length, " ").concat(character);
|
|
35
|
+
}
|
|
36
|
+
return "".concat(prefix, " ").concat(value, " ").concat(hint);
|
|
37
|
+
};
|
|
38
|
+
var convertToPasswordFormat = exports.convertToPasswordFormat = function convertToPasswordFormat(value) {
|
|
39
|
+
var replacement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '*';
|
|
40
|
+
return replacement.repeat(value && value.length);
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Removes `<InputField>` related props from `props` and returns them in a new object.
|
|
45
|
+
*
|
|
46
|
+
* Useful when redirecting `<InputField>` related props from a non-input root element to the
|
|
47
|
+
* `<InputField>` component.
|
|
48
|
+
*
|
|
49
|
+
* @method
|
|
50
|
+
* @memberof limestone/Input
|
|
51
|
+
* @param {Object} props Props object
|
|
52
|
+
* @returns {Object} input related props
|
|
53
|
+
* @private
|
|
54
|
+
*/
|
|
55
|
+
var extractInputFieldProps = exports.extractInputFieldProps = function extractInputFieldProps(props) {
|
|
56
|
+
var inputProps = {};
|
|
57
|
+
Object.keys(props).forEach(function (key) {
|
|
58
|
+
switch (key) {
|
|
59
|
+
case 'autoComplete':
|
|
60
|
+
case 'data-webos-voice-group-label':
|
|
61
|
+
case 'data-webos-voice-intent':
|
|
62
|
+
case 'data-webos-voice-label':
|
|
63
|
+
case 'disabled':
|
|
64
|
+
case 'dismissOnEnter':
|
|
65
|
+
case 'iconAfter':
|
|
66
|
+
case 'iconBefore':
|
|
67
|
+
case 'invalid':
|
|
68
|
+
case 'invalidMessage':
|
|
69
|
+
case 'list':
|
|
70
|
+
case 'maxLength':
|
|
71
|
+
case 'minLength':
|
|
72
|
+
case 'onActivate':
|
|
73
|
+
case 'onChange':
|
|
74
|
+
case 'onBlur':
|
|
75
|
+
case 'onDeactivate':
|
|
76
|
+
case 'pattern':
|
|
77
|
+
case 'required':
|
|
78
|
+
case 'size':
|
|
79
|
+
case 'value':
|
|
80
|
+
inputProps[key] = props[key];
|
|
81
|
+
delete props[key];
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
return inputProps;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Removes `<input>` related props from `props` and returns them in a new object.
|
|
89
|
+
*
|
|
90
|
+
* Useful when redirecting `<input>` related props from a non-input root element to the `<input>`
|
|
91
|
+
* element.
|
|
92
|
+
*
|
|
93
|
+
* @method
|
|
94
|
+
* @memberof limestone/Input
|
|
95
|
+
* @param {Object} props Props object
|
|
96
|
+
* @returns {Object} input related props
|
|
97
|
+
* @private
|
|
98
|
+
*/
|
|
99
|
+
var extractInputProps = exports.extractInputProps = function extractInputProps(props) {
|
|
100
|
+
var inputProps = {};
|
|
101
|
+
Object.keys(props).forEach(function (key) {
|
|
102
|
+
switch (key) {
|
|
103
|
+
case 'autoComplete':
|
|
104
|
+
case 'list':
|
|
105
|
+
case 'maxLength':
|
|
106
|
+
case 'minLength':
|
|
107
|
+
case 'pattern':
|
|
108
|
+
case 'required':
|
|
109
|
+
case 'size':
|
|
110
|
+
inputProps[key] = props[key];
|
|
111
|
+
delete props[key];
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
return inputProps;
|
|
115
|
+
};
|
|
116
|
+
var limitNumberLength = exports.limitNumberLength = function limitNumberLength(popupType, length) {
|
|
117
|
+
var limitedLength = length;
|
|
118
|
+
if (popupType === 'fullscreen') {
|
|
119
|
+
if (length > FULLSCREEN_JOINED_DIGITS_LIMIT) {
|
|
120
|
+
limitedLength = FULLSCREEN_JOINED_DIGITS_LIMIT;
|
|
121
|
+
process.env.NODE_ENV !== "production" ? (0, _warning["default"])(false, "Max length of fullscreen type input must not exceed ".concat(FULLSCREEN_JOINED_DIGITS_LIMIT, " digits.")) : void 0;
|
|
122
|
+
}
|
|
123
|
+
} else if (popupType === 'overlay') {
|
|
124
|
+
if (length > OVERLAY_JOINED_DIGITS_LIMIT) {
|
|
125
|
+
limitedLength = OVERLAY_JOINED_DIGITS_LIMIT;
|
|
126
|
+
process.env.NODE_ENV !== "production" ? (0, _warning["default"])(false, "Max length of overlay type input must not exceed ".concat(OVERLAY_JOINED_DIGITS_LIMIT, " digits.")) : void 0;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return limitedLength;
|
|
130
|
+
};
|
package/Item/Item.d.ts
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// Type definitions for limestone/Item
|
|
2
|
+
|
|
3
|
+
import { ItemDecoratorProps as ui_Item_ItemDecoratorProps } from "@enact/ui/Item";
|
|
4
|
+
import { SlottableProps as ui_Slottable_SlottableProps } from "@enact/ui/Slottable";
|
|
5
|
+
import { SpottableProps as spotlight_Spottable_SpottableProps } from "@enact/spotlight/Spottable";
|
|
6
|
+
import { MarqueeControllerProps as limestone_Marquee_MarqueeControllerProps } from "limestone/Marquee";
|
|
7
|
+
import { SkinnableProps as limestone_Skinnable_SkinnableProps } from "limestone/Skinnable";
|
|
8
|
+
import { ItemBaseProps as ui_Item_ItemBaseProps } from "@enact/ui/Item";
|
|
9
|
+
import * as React from "react";
|
|
10
|
+
|
|
11
|
+
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
|
|
12
|
+
type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
|
|
13
|
+
|
|
14
|
+
export interface ItemBaseProps extends ui_Item_ItemBaseProps {
|
|
15
|
+
/**
|
|
16
|
+
* Centers the slots and content.
|
|
17
|
+
*/
|
|
18
|
+
centered?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Called with a reference to the root component.
|
|
21
|
+
*/
|
|
22
|
+
componentRef?: object | Function;
|
|
23
|
+
/**
|
|
24
|
+
* Customizes the component by mapping the supplied collection of CSS class names to the
|
|
25
|
+
corresponding internal elements and states of this component.
|
|
26
|
+
*
|
|
27
|
+
* The following classes are supported:
|
|
28
|
+
* * `item` - The root class name
|
|
29
|
+
* * `slotBefore` - The slot (container) preceding the text of this component
|
|
30
|
+
* * `slotAfter` - The slot (container) following the text of this component
|
|
31
|
+
* * `selected` - Applied to a `selected` button
|
|
32
|
+
*/
|
|
33
|
+
css?: object;
|
|
34
|
+
/**
|
|
35
|
+
* Applies a disabled style and the control becomes non-interactive.
|
|
36
|
+
*/
|
|
37
|
+
disabled?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Applies inline styling to the item.
|
|
40
|
+
*/
|
|
41
|
+
inline?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* The label to be displayed along with the text.
|
|
44
|
+
*/
|
|
45
|
+
label?: React.ReactNode;
|
|
46
|
+
/**
|
|
47
|
+
* The position of the label relative to the primary content, `children` .
|
|
48
|
+
*/
|
|
49
|
+
labelPosition?: "above" | "after" | "before" | "below";
|
|
50
|
+
/**
|
|
51
|
+
* Determines what triggers the marquee to start its animation.
|
|
52
|
+
*/
|
|
53
|
+
marqueeOn?: "focus" | "hover" | "render";
|
|
54
|
+
/**
|
|
55
|
+
* Nodes to be inserted after `children` .
|
|
56
|
+
*
|
|
57
|
+
* For LTR locales, the nodes are inserted to the right of the primary content. For RTL
|
|
58
|
+
locales, the nodes are inserted to the left. If nothing is specified, nothing, not even
|
|
59
|
+
an empty container, is rendered in this place.
|
|
60
|
+
*/
|
|
61
|
+
slotAfter?: React.ReactNode;
|
|
62
|
+
/**
|
|
63
|
+
* Nodes to be inserted before `children` and `label` .
|
|
64
|
+
*
|
|
65
|
+
* For LTR locales, the nodes are inserted to the left of the primary content. For RTL
|
|
66
|
+
locales, the nodes are inserted to the right. If nothing is specified, nothing, not even
|
|
67
|
+
an empty container, is rendered in this place.
|
|
68
|
+
*/
|
|
69
|
+
slotBefore?: React.ReactNode;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* A Limestone styled item without any behavior.
|
|
73
|
+
*/
|
|
74
|
+
|
|
75
|
+
export class ItemBase extends React.Component<
|
|
76
|
+
Merge<React.HTMLProps<HTMLElement>, ItemBaseProps>
|
|
77
|
+
> {}
|
|
78
|
+
|
|
79
|
+
export interface ItemDecoratorProps
|
|
80
|
+
extends Merge<
|
|
81
|
+
Merge<
|
|
82
|
+
Merge<
|
|
83
|
+
Merge<ui_Item_ItemDecoratorProps, ui_Slottable_SlottableProps>,
|
|
84
|
+
spotlight_Spottable_SpottableProps
|
|
85
|
+
>,
|
|
86
|
+
limestone_Marquee_MarqueeControllerProps
|
|
87
|
+
>,
|
|
88
|
+
limestone_Skinnable_SkinnableProps
|
|
89
|
+
> {}
|
|
90
|
+
export function ItemDecorator<P>(
|
|
91
|
+
Component: React.ComponentType<P> | string,
|
|
92
|
+
): React.ComponentType<P & ItemDecoratorProps>;
|
|
93
|
+
|
|
94
|
+
export interface ItemProps extends Merge<ItemBaseProps, ItemDecoratorProps> {}
|
|
95
|
+
/**
|
|
96
|
+
* A Limestone styled item with built-in support for marqueed text, and Spotlight focus.
|
|
97
|
+
*
|
|
98
|
+
* Usage:
|
|
99
|
+
* ```
|
|
100
|
+
<Item>Item Content</Item>
|
|
101
|
+
```
|
|
102
|
+
*/
|
|
103
|
+
|
|
104
|
+
export class Item extends React.Component<
|
|
105
|
+
Merge<React.HTMLProps<HTMLElement>, ItemProps>
|
|
106
|
+
> {}
|
|
107
|
+
|
|
108
|
+
export default Item;
|