@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,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* This module loads Limestone's locale specific fonts.
|
|
5
|
+
*
|
|
6
|
+
* _This is not intended to be directly included by external developers._ The purpose of this is to
|
|
7
|
+
* override the existing "Limestone" font family with a new typeface, conditionally when the system
|
|
8
|
+
* locale matches the corresponding locale for the font (defined in this component's code).
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
var _require = require('@enact/ui/internal/localized-fonts'),
|
|
12
|
+
addLocalizedFont = _require.addLocalizedFont,
|
|
13
|
+
generateFontRules = _require.generateFontRules,
|
|
14
|
+
generateFontOverrideRules = _require.generateFontOverrideRules;
|
|
15
|
+
var fontName = 'Limestone';
|
|
16
|
+
|
|
17
|
+
// Locale Configuration Block
|
|
18
|
+
//
|
|
19
|
+
// "Shape" of the object below is as follows: [square brackets indicate optional elements]
|
|
20
|
+
// fonts = {
|
|
21
|
+
// locale|language|region: {
|
|
22
|
+
// regular: 'font name',
|
|
23
|
+
// [bold: 'font name',]
|
|
24
|
+
// [light: 'font name',]
|
|
25
|
+
// [unicodeRange: 'U+600-6FF,U+FE70-FEFE']
|
|
26
|
+
// },
|
|
27
|
+
// 'ur': {
|
|
28
|
+
// regular: 'LG Smart UI Urdu',
|
|
29
|
+
// unicodeRange:
|
|
30
|
+
// 'U+600-6FF,' +
|
|
31
|
+
// 'U+FE70-FEFE,' +
|
|
32
|
+
// 'U+FB50-FDFF'
|
|
33
|
+
// }
|
|
34
|
+
// };
|
|
35
|
+
var fonts = {
|
|
36
|
+
'bn': {
|
|
37
|
+
regular: 'LG Smart UI Bengali'
|
|
38
|
+
},
|
|
39
|
+
'gu': {
|
|
40
|
+
regular: 'LG Smart UI Gujarati'
|
|
41
|
+
},
|
|
42
|
+
'hi': {
|
|
43
|
+
regular: 'LG Smart UI Devanagari'
|
|
44
|
+
},
|
|
45
|
+
'ja': {
|
|
46
|
+
regular: 'LG Smart UI JP'
|
|
47
|
+
},
|
|
48
|
+
'kn': {
|
|
49
|
+
regular: 'LG Smart UI Kannada'
|
|
50
|
+
},
|
|
51
|
+
'pa': {
|
|
52
|
+
regular: 'LG Smart UI Gurmukhi'
|
|
53
|
+
},
|
|
54
|
+
'ta': {
|
|
55
|
+
regular: 'LG Smart UI Tamil'
|
|
56
|
+
},
|
|
57
|
+
'te': {
|
|
58
|
+
regular: 'LG Smart UI Telugu'
|
|
59
|
+
},
|
|
60
|
+
'ur': {
|
|
61
|
+
regular: ['LG Smart UI Urdu', 'LGSmartUIUrdu'] // This needs 2 references because the "full name" differs from the "family name". To target this font file directly in all OSs we must also include the "postscript name" in addition to the "full name".
|
|
62
|
+
},
|
|
63
|
+
'zh-Hans': {
|
|
64
|
+
regular: 'LG Smart UI SC'
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// Duplications and alternate locale names
|
|
69
|
+
fonts['as'] = fonts['bn'];
|
|
70
|
+
fonts['mr'] = fonts['hi'];
|
|
71
|
+
fonts['en-JP'] = fonts['ja'];
|
|
72
|
+
addLocalizedFont(fontName, fonts);
|
|
73
|
+
module.exports = generateFontRules;
|
|
74
|
+
module.exports.fontGenerator = generateFontRules;
|
|
75
|
+
module.exports.fontOverrideGenerator = generateFontOverrideRules;
|
|
76
|
+
module.exports.generateFontRules = generateFontRules;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
[
|
|
2
|
+
{"name": "hd", "pxPerRem": 16, "width": 1280, "height": 720, "aspectRatioName": "hdtv"},
|
|
3
|
+
{"name": "uw-hd", "pxPerRem": 16, "width": 1920, "height": 804, "aspectRatioName": "cinema"},
|
|
4
|
+
{"name": "fhd", "pxPerRem": 24, "width": 1920, "height": 1080, "aspectRatioName": "hdtv"},
|
|
5
|
+
{"name": "uw-uxga", "pxPerRem": 24, "width": 2560, "height": 1080, "aspectRatioName": "cinema"},
|
|
6
|
+
{"name": "qhd", "pxPerRem": 32, "width": 2560, "height": 1440, "aspectRatioName": "hdtv"},
|
|
7
|
+
{"name": "wqhd", "pxPerRem": 32, "width": 3440, "height": 1440, "aspectRatioName": "cinema"},
|
|
8
|
+
{"name": "uhd", "pxPerRem": 48, "width": 3840, "height": 2160, "aspectRatioName": "hdtv", "base": true},
|
|
9
|
+
{"name": "uhd2", "pxPerRem": 96, "width": 7680, "height": 4320, "aspectRatioName": "hdtv"}
|
|
10
|
+
]
|
|
@@ -0,0 +1,151 @@
|
|
|
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 _ = _interopRequireDefault(require("../"));
|
|
7
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
9
|
+
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; }
|
|
10
|
+
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; }
|
|
11
|
+
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; }
|
|
12
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
13
|
+
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); }
|
|
14
|
+
describe('ThemeDecorator', function () {
|
|
15
|
+
var AppRoot = function AppRoot(props) {
|
|
16
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", _objectSpread({
|
|
17
|
+
"data-app": true
|
|
18
|
+
}, props));
|
|
19
|
+
};
|
|
20
|
+
var a11yConfig = {
|
|
21
|
+
"float": false,
|
|
22
|
+
ri18n: false,
|
|
23
|
+
ri: false,
|
|
24
|
+
spotlight: false
|
|
25
|
+
};
|
|
26
|
+
var A11yApp = (0, _["default"])(a11yConfig, AppRoot);
|
|
27
|
+
test('should add base classes to wrapped component', function () {
|
|
28
|
+
var config = {
|
|
29
|
+
ri: false,
|
|
30
|
+
i18n: false,
|
|
31
|
+
spotlight: false,
|
|
32
|
+
"float": false,
|
|
33
|
+
overlay: false
|
|
34
|
+
};
|
|
35
|
+
var App = (0, _["default"])(config, AppRoot);
|
|
36
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
|
|
37
|
+
"data-testid": "app"
|
|
38
|
+
}));
|
|
39
|
+
_spotlight["default"].terminate();
|
|
40
|
+
var appRoot = _react.screen.getByTestId('app');
|
|
41
|
+
expect(appRoot).toHaveClass('neutral');
|
|
42
|
+
expect(appRoot).toHaveClass('bg');
|
|
43
|
+
});
|
|
44
|
+
test('should add author classes to wrapped component', function () {
|
|
45
|
+
var config = {
|
|
46
|
+
ri: false,
|
|
47
|
+
i18n: false,
|
|
48
|
+
spotlight: false,
|
|
49
|
+
"float": false,
|
|
50
|
+
overlay: false
|
|
51
|
+
};
|
|
52
|
+
var App = (0, _["default"])(config, AppRoot);
|
|
53
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
|
|
54
|
+
className: "author-class",
|
|
55
|
+
"data-testid": "app"
|
|
56
|
+
}));
|
|
57
|
+
_spotlight["default"].terminate();
|
|
58
|
+
var appRoot = _react.screen.getByTestId('app');
|
|
59
|
+
expect(appRoot).toHaveClass('author-class');
|
|
60
|
+
});
|
|
61
|
+
test('should not add skin classname to wrapped component when float is enabled', function () {
|
|
62
|
+
var config = {
|
|
63
|
+
ri: false,
|
|
64
|
+
i18n: false,
|
|
65
|
+
spotlight: false,
|
|
66
|
+
"float": true,
|
|
67
|
+
overlay: false
|
|
68
|
+
};
|
|
69
|
+
var App = (0, _["default"])(config, AppRoot);
|
|
70
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
|
|
71
|
+
"data-testid": "app"
|
|
72
|
+
}));
|
|
73
|
+
_spotlight["default"].terminate();
|
|
74
|
+
var appRoot = _react.screen.getByTestId('app');
|
|
75
|
+
expect(appRoot).not.toHaveClass('neutral');
|
|
76
|
+
});
|
|
77
|
+
test('should not add .bg class to wrapped component when overlay is enabled', function () {
|
|
78
|
+
var config = {
|
|
79
|
+
ri: false,
|
|
80
|
+
i18n: false,
|
|
81
|
+
spotlight: false,
|
|
82
|
+
"float": false,
|
|
83
|
+
overlay: true
|
|
84
|
+
};
|
|
85
|
+
var App = (0, _["default"])(config, AppRoot);
|
|
86
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
|
|
87
|
+
"data-testid": "app"
|
|
88
|
+
}));
|
|
89
|
+
_spotlight["default"].terminate();
|
|
90
|
+
var appRoot = _react.screen.getByTestId('app');
|
|
91
|
+
expect(appRoot).not.toHaveClass('bg');
|
|
92
|
+
});
|
|
93
|
+
describe('AccessibilityDecorator', function () {
|
|
94
|
+
test('should add the highContrast class if passing the highContrast prop of true', function () {
|
|
95
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(A11yApp, {
|
|
96
|
+
"data-testid": "app",
|
|
97
|
+
highContrast: true
|
|
98
|
+
}));
|
|
99
|
+
var appRoot = _react.screen.getByTestId('app');
|
|
100
|
+
expect(appRoot).toHaveClass('highContrast');
|
|
101
|
+
});
|
|
102
|
+
test('should add the largeText class if passing the textSize prop of `large`', function () {
|
|
103
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(A11yApp, {
|
|
104
|
+
"data-testid": "app",
|
|
105
|
+
textSize: "large"
|
|
106
|
+
}));
|
|
107
|
+
var appRoot = _react.screen.getByTestId('app');
|
|
108
|
+
expect(appRoot).toHaveClass('largeText');
|
|
109
|
+
});
|
|
110
|
+
test('should update the skinVariants based on the skinVariants prop', function () {
|
|
111
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(A11yApp, {
|
|
112
|
+
"data-testid": "app",
|
|
113
|
+
skinVariants: ['grayscale']
|
|
114
|
+
}));
|
|
115
|
+
var appRoot = _react.screen.getByTestId('app');
|
|
116
|
+
expect(appRoot).toHaveClass('grayscale');
|
|
117
|
+
});
|
|
118
|
+
test('should add the largeText class when the type of the skinVariants prop is a string', function () {
|
|
119
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(A11yApp, {
|
|
120
|
+
"data-testid": "app",
|
|
121
|
+
textSize: "large",
|
|
122
|
+
skinVariants: "grayscale"
|
|
123
|
+
}));
|
|
124
|
+
var appRoot = _react.screen.getByTestId('app');
|
|
125
|
+
expect(appRoot).toHaveClass('largeText');
|
|
126
|
+
expect(appRoot).toHaveClass('grayscale');
|
|
127
|
+
});
|
|
128
|
+
test('should add largeText class when the type of the skinVariants prop is an array', function () {
|
|
129
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(A11yApp, {
|
|
130
|
+
"data-testid": "app",
|
|
131
|
+
textSize: "large",
|
|
132
|
+
skinVariants: ['grayscale']
|
|
133
|
+
}));
|
|
134
|
+
var appRoot = _react.screen.getByTestId('app');
|
|
135
|
+
expect(appRoot).toHaveClass('largeText');
|
|
136
|
+
expect(appRoot).toHaveClass('grayscale');
|
|
137
|
+
});
|
|
138
|
+
test('should add largeText class when the type of the skinVariants prop is an object', function () {
|
|
139
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(A11yApp, {
|
|
140
|
+
"data-testid": "app",
|
|
141
|
+
textSize: "large",
|
|
142
|
+
skinVariants: {
|
|
143
|
+
grayscale: true
|
|
144
|
+
}
|
|
145
|
+
}));
|
|
146
|
+
var appRoot = _react.screen.getByTestId('app');
|
|
147
|
+
expect(appRoot).toHaveClass('largeText');
|
|
148
|
+
expect(appRoot).toHaveClass('grayscale');
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
});
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// Type definitions for limestone/TimePicker
|
|
2
|
+
|
|
3
|
+
import { ChangeableProps as ui_Changeable_ChangeableProps } from "@enact/ui/Changeable";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
|
|
6
|
+
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
|
|
7
|
+
type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
|
|
8
|
+
|
|
9
|
+
export interface TimePickerBaseProps {
|
|
10
|
+
/**
|
|
11
|
+
* The `hour` component of the time.
|
|
12
|
+
*/
|
|
13
|
+
hour: number;
|
|
14
|
+
/**
|
|
15
|
+
* The `meridiem` component of the time.
|
|
16
|
+
*/
|
|
17
|
+
meridiem: number;
|
|
18
|
+
/**
|
|
19
|
+
* The `minute` component of the time.
|
|
20
|
+
*/
|
|
21
|
+
minute: number;
|
|
22
|
+
/**
|
|
23
|
+
* The order in which the component pickers are displayed.
|
|
24
|
+
*
|
|
25
|
+
* Should be an array of 2 or 3 strings containing one of `'h'` , `'k'` , `'m'` , and `'a'` .
|
|
26
|
+
*/
|
|
27
|
+
order: string[];
|
|
28
|
+
/**
|
|
29
|
+
* Disables voice control.
|
|
30
|
+
*/
|
|
31
|
+
"data-webos-voice-disabled"?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Disables the `TimePicker` .
|
|
34
|
+
*/
|
|
35
|
+
disabled?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* The "aria-label" for the hour picker
|
|
38
|
+
*
|
|
39
|
+
* If not specified, the "aria-label" for the hour picker will be
|
|
40
|
+
a combination of the current value and 'hour change a value with up down button'.
|
|
41
|
+
*/
|
|
42
|
+
hourAriaLabel?: string;
|
|
43
|
+
/**
|
|
44
|
+
* The primary text of `TimePicker` .
|
|
45
|
+
*/
|
|
46
|
+
label?: string;
|
|
47
|
+
/**
|
|
48
|
+
* The "aria-label" for the meridiem picker.
|
|
49
|
+
*
|
|
50
|
+
* If not specified, the "aria-label" for the meridiem picker will be
|
|
51
|
+
a combination of the current value and 'change a value with up down button'.
|
|
52
|
+
*/
|
|
53
|
+
meridiemAriaLabel?: string;
|
|
54
|
+
/**
|
|
55
|
+
* The hint string read when focusing the meridiem picker.
|
|
56
|
+
*/
|
|
57
|
+
meridiemLabel?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Array of meridiem labels to display.
|
|
60
|
+
*/
|
|
61
|
+
meridiems: string[];
|
|
62
|
+
/**
|
|
63
|
+
* The "aria-label" for the minute picker.
|
|
64
|
+
*
|
|
65
|
+
* If not specified, the "aria-label" for the minute picker will be
|
|
66
|
+
a combination of the current value and 'minute change a value with up down button'.
|
|
67
|
+
*/
|
|
68
|
+
minuteAriaLabel?: string;
|
|
69
|
+
/**
|
|
70
|
+
* Hides the label that displays the time.
|
|
71
|
+
*/
|
|
72
|
+
noLabel?: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Called on changes in the `hour` component of the time.
|
|
75
|
+
*/
|
|
76
|
+
onChangeHour?: Function;
|
|
77
|
+
/**
|
|
78
|
+
* Called on changes in the `meridiem` component of the time.
|
|
79
|
+
*/
|
|
80
|
+
onChangeMeridiem?: Function;
|
|
81
|
+
/**
|
|
82
|
+
* Called on changes in the `minute` component of the time.
|
|
83
|
+
*/
|
|
84
|
+
onChangeMinute?: Function;
|
|
85
|
+
/**
|
|
86
|
+
* Called when the component is removed while retaining focus.
|
|
87
|
+
*/
|
|
88
|
+
onSpotlightDisappear?: Function;
|
|
89
|
+
/**
|
|
90
|
+
* Called when the focus leaves the picker when the 5-way left key is pressed.
|
|
91
|
+
*/
|
|
92
|
+
onSpotlightLeft?: Function;
|
|
93
|
+
/**
|
|
94
|
+
* Called when the focus leaves the picker when the 5-way right key is pressed.
|
|
95
|
+
*/
|
|
96
|
+
onSpotlightRight?: Function;
|
|
97
|
+
/**
|
|
98
|
+
* Disables spotlight navigation into the component.
|
|
99
|
+
*/
|
|
100
|
+
spotlightDisabled?: boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Called when `Enter` key down on the last picker
|
|
103
|
+
*/
|
|
104
|
+
onComplete?: Function;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* is the stateless functional time picker
|
|
108
|
+
component. Should not be used directly but may be composed within another component as it is
|
|
109
|
+
within .
|
|
110
|
+
*/
|
|
111
|
+
|
|
112
|
+
export class TimePickerBase extends React.Component<
|
|
113
|
+
Merge<React.HTMLProps<HTMLElement>, TimePickerBaseProps>
|
|
114
|
+
> {}
|
|
115
|
+
|
|
116
|
+
export interface TimePickerProps extends ui_Changeable_ChangeableProps {
|
|
117
|
+
/**
|
|
118
|
+
* Default value
|
|
119
|
+
*/
|
|
120
|
+
defaultValue?: number;
|
|
121
|
+
/**
|
|
122
|
+
* The selected date.
|
|
123
|
+
*/
|
|
124
|
+
value?: Date;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* A component that allows displaying or selecting time.
|
|
128
|
+
*
|
|
129
|
+
* Set the property to a standard JavaScript
|
|
130
|
+
object to initialize the picker.
|
|
131
|
+
*
|
|
132
|
+
* By default, `TimePicker` maintains the state of its `value` property. Supply the
|
|
133
|
+
`defaultValue` property to control its initial value. If you wish to directly control updates
|
|
134
|
+
to the component, supply a value to `value` at creation time and update it in response to
|
|
135
|
+
`onChange` events.
|
|
136
|
+
*/
|
|
137
|
+
|
|
138
|
+
export class TimePicker extends React.Component<
|
|
139
|
+
Merge<React.HTMLProps<HTMLElement>, TimePickerProps>
|
|
140
|
+
> {}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Converts a standard `Date` object into a locale-specific string.
|
|
144
|
+
*/
|
|
145
|
+
export function timeToLocaleString(time: Date): string | any;
|
|
146
|
+
|
|
147
|
+
export default TimePicker;
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TimePicker = void 0;
|
|
7
|
+
Object.defineProperty(exports, "TimePickerBase", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function get() {
|
|
10
|
+
return _TimePickerBase["default"];
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
exports.timeToLocaleString = exports["default"] = void 0;
|
|
14
|
+
var _Pure = _interopRequireDefault(require("@enact/ui/internal/Pure"));
|
|
15
|
+
var _DateFactory = _interopRequireDefault(require("ilib/lib/DateFactory"));
|
|
16
|
+
var _DateFmt = _interopRequireDefault(require("ilib/lib/DateFmt"));
|
|
17
|
+
var _LocaleInfo = _interopRequireDefault(require("ilib/lib/LocaleInfo"));
|
|
18
|
+
var _DateTime = require("../internal/DateTime");
|
|
19
|
+
var _Skinnable = _interopRequireDefault(require("../Skinnable"));
|
|
20
|
+
var _TimePickerBase = _interopRequireDefault(require("./TimePickerBase"));
|
|
21
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
22
|
+
/**
|
|
23
|
+
* Provides a Limestone-themed time selection component.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* <TimePicker value={new Date()} />
|
|
27
|
+
*
|
|
28
|
+
* @module limestone/TimePicker
|
|
29
|
+
* @exports TimePicker
|
|
30
|
+
* @exports TimePickerBase
|
|
31
|
+
* @exports timeToLocaleString
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
/*
|
|
35
|
+
* Converts a string representation of time into minutes
|
|
36
|
+
*
|
|
37
|
+
* @param {String} time Time in the format `HH:mm`
|
|
38
|
+
*
|
|
39
|
+
* @returns {Number} Time in minute
|
|
40
|
+
* @private
|
|
41
|
+
*/
|
|
42
|
+
var toMinutes = function toMinutes(time) {
|
|
43
|
+
var colon = time.indexOf(':');
|
|
44
|
+
var hour = parseInt(time.substring(0, colon));
|
|
45
|
+
var minute = parseInt(time.substring(colon + 1));
|
|
46
|
+
return hour * 60 + minute;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/*
|
|
50
|
+
* Converts the `start` and `end` string representations (e.g. '12:00') into a numerical
|
|
51
|
+
* representation.
|
|
52
|
+
*
|
|
53
|
+
* @param {Object} options Time options
|
|
54
|
+
* @param {String} options.start Start time of meridiem
|
|
55
|
+
* @param {String} options.end End time of meridiem
|
|
56
|
+
*
|
|
57
|
+
* @returns {Object} Contains start and end time in minutes
|
|
58
|
+
* @private
|
|
59
|
+
*/
|
|
60
|
+
var calcMeridiemRange = function calcMeridiemRange(_ref) {
|
|
61
|
+
var start = _ref.start,
|
|
62
|
+
end = _ref.end;
|
|
63
|
+
return {
|
|
64
|
+
start: toMinutes(start),
|
|
65
|
+
end: toMinutes(end)
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
/*
|
|
70
|
+
* Finds the index of the meridiem which contains `time`
|
|
71
|
+
*
|
|
72
|
+
* @param {Number} time Time in minutes
|
|
73
|
+
* @param {Object[]} meridiems Array of meridiems with `start` and `end` members in minutes
|
|
74
|
+
*
|
|
75
|
+
* @returns {Number} Index of `time` in `meridiems`
|
|
76
|
+
* @private
|
|
77
|
+
*/
|
|
78
|
+
var indexOfMeridiem = function indexOfMeridiem(time, meridiems) {
|
|
79
|
+
var minutes = time.getHours() * 60 + time.getMinutes();
|
|
80
|
+
for (var i = 0; i < meridiems.length; i++) {
|
|
81
|
+
var m = meridiems[i];
|
|
82
|
+
if (minutes >= m.start && minutes <= m.end) {
|
|
83
|
+
return i;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return -1;
|
|
87
|
+
};
|
|
88
|
+
var getLabelFormatter = function getLabelFormatter() {
|
|
89
|
+
return new _DateFmt["default"]({
|
|
90
|
+
type: 'time',
|
|
91
|
+
useNative: false,
|
|
92
|
+
timezone: 'local',
|
|
93
|
+
length: 'full',
|
|
94
|
+
date: 'dmwy'
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
var dateTimeConfig = {
|
|
98
|
+
customProps: function customProps(i18n, value, _ref2) {
|
|
99
|
+
var meridiemLabel = _ref2.meridiemLabel;
|
|
100
|
+
var values = {
|
|
101
|
+
// i18n props
|
|
102
|
+
meridiems: i18n.meridiemLabels,
|
|
103
|
+
meridiemLabel: meridiemLabel,
|
|
104
|
+
// date components
|
|
105
|
+
hour: 12,
|
|
106
|
+
minute: 0,
|
|
107
|
+
meridiem: 0
|
|
108
|
+
};
|
|
109
|
+
if (i18n.meridiemEnabled && meridiemLabel == null) {
|
|
110
|
+
if (values.meridiems.length > 2) {
|
|
111
|
+
values.meridiemLabel = "".concat(values.meridiems[0], " / ").concat(values.meridiems[1], " ...");
|
|
112
|
+
} else {
|
|
113
|
+
values.meridiemLabel = values.meridiems.join(' / ');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (value) {
|
|
117
|
+
if (i18n.meridiemEnabled) {
|
|
118
|
+
values.meridiem = indexOfMeridiem(value, i18n.meridiemRanges);
|
|
119
|
+
}
|
|
120
|
+
values.hour = value.getHours();
|
|
121
|
+
values.minute = value.getMinutes();
|
|
122
|
+
}
|
|
123
|
+
return values;
|
|
124
|
+
},
|
|
125
|
+
defaultOrder: ['h', 'm', 'a'],
|
|
126
|
+
handlers: {
|
|
127
|
+
onChangeHour: function onChangeHour(ev, value) {
|
|
128
|
+
var currentTime = (0, _DateFactory["default"])(value).getTimeExtended();
|
|
129
|
+
var currentHour = value.hour;
|
|
130
|
+
value.hour = ev.value;
|
|
131
|
+
|
|
132
|
+
// In the case of navigating onto the skipped hour of DST, ilib will return the same
|
|
133
|
+
// value so we skip that hour and update the value again.
|
|
134
|
+
var newTime = (0, _DateFactory["default"])(value).getTimeExtended();
|
|
135
|
+
if (newTime === currentTime) {
|
|
136
|
+
value.hour = ev.value * 2 - currentHour;
|
|
137
|
+
}
|
|
138
|
+
return value;
|
|
139
|
+
},
|
|
140
|
+
onChangeMinute: function onChangeMinute(ev, value) {
|
|
141
|
+
value.minute = ev.value;
|
|
142
|
+
return value;
|
|
143
|
+
},
|
|
144
|
+
onChangeMeridiem: function onChangeMeridiem(ev, value, i18n) {
|
|
145
|
+
var meridiemRanges = i18n.meridiemRanges;
|
|
146
|
+
var meridiem = meridiemRanges[ev.value];
|
|
147
|
+
if (meridiemRanges.length === 2) {
|
|
148
|
+
// In the common case of 2 meridiems, we'll offset hours by 12 so that picker stays
|
|
149
|
+
// the same.
|
|
150
|
+
value.hour = (value.getHours() + 12) % 24;
|
|
151
|
+
} else {
|
|
152
|
+
// In the rarer case of > 2 meridiems (e.g. am-ET), try to set hours only first
|
|
153
|
+
var hours = Math.floor(meridiem.start / 60);
|
|
154
|
+
value.hour = hours;
|
|
155
|
+
|
|
156
|
+
// but check if it is still out of bounds and update the minutes as well
|
|
157
|
+
var minutes = hours * 60 + value.getMinutes();
|
|
158
|
+
if (minutes > meridiem.end) {
|
|
159
|
+
value.minute = meridiem.end % 60;
|
|
160
|
+
} else if (minutes < meridiem.start) {
|
|
161
|
+
value.minute = meridiem.start % 60;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return value;
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
i18n: function i18n() {
|
|
168
|
+
// Filters used to extract the order of pickers from the ilib template
|
|
169
|
+
var includeMeridiem = /([khma])(?!\1)/ig;
|
|
170
|
+
var excludeMeridiem = /([khm])(?!\1)/ig;
|
|
171
|
+
|
|
172
|
+
// Meridiem localization
|
|
173
|
+
var merFormatter = new _DateFmt["default"]({
|
|
174
|
+
template: 'a',
|
|
175
|
+
useNative: false,
|
|
176
|
+
timezone: 'local'
|
|
177
|
+
});
|
|
178
|
+
var meridiems = merFormatter.getMeridiemsRange();
|
|
179
|
+
var meridiemRanges = meridiems.map(calcMeridiemRange);
|
|
180
|
+
var meridiemLabels = meridiems.map(function (obj) {
|
|
181
|
+
return obj.name;
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
// Picker ordering
|
|
185
|
+
var li = new _LocaleInfo["default"]();
|
|
186
|
+
var clockPref = li.getClock();
|
|
187
|
+
var meridiemEnabled = clockPref === '12';
|
|
188
|
+
var filter = meridiemEnabled ? includeMeridiem : excludeMeridiem;
|
|
189
|
+
var order = getLabelFormatter().getTemplate().replace(/'.*?'/g, '').match(filter).map(function (s) {
|
|
190
|
+
return s[0].toLowerCase();
|
|
191
|
+
});
|
|
192
|
+
return {
|
|
193
|
+
formatter: getLabelFormatter(),
|
|
194
|
+
meridiemEnabled: meridiemEnabled,
|
|
195
|
+
meridiemLabels: meridiemLabels,
|
|
196
|
+
meridiemRanges: meridiemRanges,
|
|
197
|
+
order: order
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* A component that allows displaying or selecting time.
|
|
204
|
+
*
|
|
205
|
+
* Set the {@link limestone/TimePicker.TimePicker.value|value} property to a standard JavaScript
|
|
206
|
+
* {@link /docs/developer-guide/glossary/#date|Date} object to initialize the picker.
|
|
207
|
+
*
|
|
208
|
+
* By default, `TimePicker` maintains the state of its `value` property. Supply the
|
|
209
|
+
* `defaultValue` property to control its initial value. If you wish to directly control updates
|
|
210
|
+
* to the component, supply a value to `value` at creation time and update it in response to
|
|
211
|
+
* `onChange` events.
|
|
212
|
+
*
|
|
213
|
+
* @class TimePicker
|
|
214
|
+
* @memberof limestone/TimePicker
|
|
215
|
+
* @mixes ui/Changeable.Changeable
|
|
216
|
+
* @ui
|
|
217
|
+
* @public
|
|
218
|
+
*/
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Default value
|
|
222
|
+
*
|
|
223
|
+
* @name defaultValue
|
|
224
|
+
* @memberof limestone/TimePicker.TimePicker.prototype
|
|
225
|
+
* @type {Number}
|
|
226
|
+
* @public
|
|
227
|
+
*/
|
|
228
|
+
|
|
229
|
+
var TimePicker = exports.TimePicker = (0, _Pure["default"])((0, _Skinnable["default"])((0, _DateTime.DateTimeDecorator)(dateTimeConfig, _TimePickerBase["default"])));
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* The selected date.
|
|
233
|
+
*
|
|
234
|
+
* @name value
|
|
235
|
+
* @memberof limestone/TimePicker.TimePicker
|
|
236
|
+
* @instance
|
|
237
|
+
* @type {Date}
|
|
238
|
+
* @public
|
|
239
|
+
*/
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Converts a standard `Date` object into a locale-specific string.
|
|
243
|
+
*
|
|
244
|
+
* @function
|
|
245
|
+
* @memberof limestone/TimePicker
|
|
246
|
+
* @param {Date} time `Date` to convert
|
|
247
|
+
* @returns {String|null} Converted date or `null` if `date` is invalid
|
|
248
|
+
*/
|
|
249
|
+
var timeToLocaleString = exports.timeToLocaleString = function timeToLocaleString(time) {
|
|
250
|
+
if (!time) {
|
|
251
|
+
return null;
|
|
252
|
+
}
|
|
253
|
+
return getLabelFormatter().format(time);
|
|
254
|
+
};
|
|
255
|
+
var _default = exports["default"] = TimePicker;
|