@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,204 @@
|
|
|
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 _Alert = require("../Alert");
|
|
7
|
+
var _Button = _interopRequireDefault(require("../../Button"));
|
|
8
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
10
|
+
var FloatingLayerController = (0, _FloatingLayer.FloatingLayerDecorator)('div');
|
|
11
|
+
describe('Alert', function () {
|
|
12
|
+
test('should be rendered opened if open is set to true', function () {
|
|
13
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
14
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.Alert, {
|
|
15
|
+
open: true
|
|
16
|
+
})
|
|
17
|
+
}));
|
|
18
|
+
var alert = _react.screen.getByRole('alert');
|
|
19
|
+
expect(alert).toBeInTheDocument();
|
|
20
|
+
});
|
|
21
|
+
test('should not be rendered if open is set to false', function () {
|
|
22
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
23
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.Alert, {})
|
|
24
|
+
}));
|
|
25
|
+
var alert = _react.screen.queryByRole('alert');
|
|
26
|
+
expect(alert).toBeNull();
|
|
27
|
+
});
|
|
28
|
+
test('should render title', function () {
|
|
29
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
30
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.AlertBase, {
|
|
31
|
+
open: true,
|
|
32
|
+
title: "alert title"
|
|
33
|
+
})
|
|
34
|
+
}));
|
|
35
|
+
var alert = _react.screen.getByRole('alert');
|
|
36
|
+
var expected = 'alert title';
|
|
37
|
+
expect(alert).toHaveTextContent(expected);
|
|
38
|
+
});
|
|
39
|
+
test('should render content', function () {
|
|
40
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
41
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.AlertBase, {
|
|
42
|
+
open: true,
|
|
43
|
+
title: "alert title",
|
|
44
|
+
children: 'alert message'
|
|
45
|
+
})
|
|
46
|
+
}));
|
|
47
|
+
var alert = _react.screen.getByRole('alert');
|
|
48
|
+
var actual = alert.textContent;
|
|
49
|
+
var expected = 'alert message';
|
|
50
|
+
expect(actual).toContain(expected);
|
|
51
|
+
});
|
|
52
|
+
test('should render to empty string if children is not set', function () {
|
|
53
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
54
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.AlertBase, {
|
|
55
|
+
open: true,
|
|
56
|
+
title: "alert title"
|
|
57
|
+
})
|
|
58
|
+
}));
|
|
59
|
+
var alert = _react.screen.getByRole('alert');
|
|
60
|
+
var actual = alert.querySelector('#undefined_content').hasChildNodes();
|
|
61
|
+
expect(actual).toBeFalsy();
|
|
62
|
+
});
|
|
63
|
+
test('should have `icon` className if `type` prop is set to `icon`', function () {
|
|
64
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
65
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Alert.Alert, {
|
|
66
|
+
open: true,
|
|
67
|
+
title: "alert title",
|
|
68
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("image", {
|
|
69
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.AlertImage, {
|
|
70
|
+
src: "testIconImage.png",
|
|
71
|
+
type: "icon"
|
|
72
|
+
})
|
|
73
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("buttons", {
|
|
74
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
|
|
75
|
+
children: "yes"
|
|
76
|
+
})
|
|
77
|
+
})]
|
|
78
|
+
})
|
|
79
|
+
}));
|
|
80
|
+
var image = _react.screen.getAllByRole('img')[0];
|
|
81
|
+
var expectedClass = 'icon';
|
|
82
|
+
expect(image).toHaveClass(expectedClass);
|
|
83
|
+
});
|
|
84
|
+
test('should have `thumbnail` className if `type` prop is set to `thumbnail`', function () {
|
|
85
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
86
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Alert.Alert, {
|
|
87
|
+
open: true,
|
|
88
|
+
title: "alert title",
|
|
89
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("image", {
|
|
90
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.AlertImage, {
|
|
91
|
+
src: "testThumbnailImage.png",
|
|
92
|
+
type: "thumbnail"
|
|
93
|
+
})
|
|
94
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("buttons", {
|
|
95
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
|
|
96
|
+
children: "yes"
|
|
97
|
+
})
|
|
98
|
+
})]
|
|
99
|
+
})
|
|
100
|
+
}));
|
|
101
|
+
var image = _react.screen.getAllByRole('img')[0];
|
|
102
|
+
var expectedClass = 'thumbnail';
|
|
103
|
+
expect(image).toHaveClass(expectedClass);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
describe('AlertOverlay specs', function () {
|
|
107
|
+
test('should be rendered opened if open is set to true', function () {
|
|
108
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
109
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.Alert, {
|
|
110
|
+
open: true,
|
|
111
|
+
type: "overlay"
|
|
112
|
+
})
|
|
113
|
+
}));
|
|
114
|
+
var alert = _react.screen.getByRole('alert');
|
|
115
|
+
expect(alert).toBeInTheDocument();
|
|
116
|
+
});
|
|
117
|
+
test('should not be rendered if open is set to false', function () {
|
|
118
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
119
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.Alert, {
|
|
120
|
+
type: "overlay"
|
|
121
|
+
})
|
|
122
|
+
}));
|
|
123
|
+
var alert = _react.screen.queryByRole('alert');
|
|
124
|
+
expect(alert).toBeNull();
|
|
125
|
+
});
|
|
126
|
+
test('should render content', function () {
|
|
127
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
128
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Alert.Alert, {
|
|
129
|
+
open: true,
|
|
130
|
+
type: "overlay",
|
|
131
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
132
|
+
children: "this is alert overlay."
|
|
133
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("buttons", {
|
|
134
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
|
|
135
|
+
size: "small",
|
|
136
|
+
children: "yes"
|
|
137
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
|
|
138
|
+
size: "small",
|
|
139
|
+
children: "yes"
|
|
140
|
+
})]
|
|
141
|
+
})]
|
|
142
|
+
})
|
|
143
|
+
}));
|
|
144
|
+
var alert = _react.screen.getByRole('alert');
|
|
145
|
+
var actual = alert.textContent;
|
|
146
|
+
var expected = 'this is alert overlay.';
|
|
147
|
+
expect(actual).toContain(expected);
|
|
148
|
+
});
|
|
149
|
+
test('should render to empty string if children is not set', function () {
|
|
150
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
151
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.AlertBase, {
|
|
152
|
+
open: true,
|
|
153
|
+
type: "overlay"
|
|
154
|
+
})
|
|
155
|
+
}));
|
|
156
|
+
var alert = _react.screen.getByRole('alert');
|
|
157
|
+
var actual = alert.querySelector('#undefined_content').hasChildNodes();
|
|
158
|
+
expect(actual).toBeFalsy();
|
|
159
|
+
});
|
|
160
|
+
test('should have `icon` classname if `type` prop is set to `icon`', function () {
|
|
161
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
162
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Alert.Alert, {
|
|
163
|
+
open: true,
|
|
164
|
+
type: "overlay",
|
|
165
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("image", {
|
|
166
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.AlertImage, {
|
|
167
|
+
src: "testIconImage.png",
|
|
168
|
+
type: "icon"
|
|
169
|
+
})
|
|
170
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("buttons", {
|
|
171
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
|
|
172
|
+
size: "small",
|
|
173
|
+
children: "yes"
|
|
174
|
+
})
|
|
175
|
+
})]
|
|
176
|
+
})
|
|
177
|
+
}));
|
|
178
|
+
var image = _react.screen.getAllByRole('img')[0];
|
|
179
|
+
var expectedClass = 'icon';
|
|
180
|
+
expect(image).toHaveClass(expectedClass);
|
|
181
|
+
});
|
|
182
|
+
test('should have `icon` classname if `type` prop is set to `thumbnail`', function () {
|
|
183
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
|
|
184
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Alert.Alert, {
|
|
185
|
+
open: true,
|
|
186
|
+
type: "overlay",
|
|
187
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("image", {
|
|
188
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.AlertImage, {
|
|
189
|
+
src: "testThumbnailImage.png",
|
|
190
|
+
type: "thumbnail"
|
|
191
|
+
})
|
|
192
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("buttons", {
|
|
193
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
|
|
194
|
+
size: "small",
|
|
195
|
+
children: "yes"
|
|
196
|
+
})
|
|
197
|
+
})]
|
|
198
|
+
})
|
|
199
|
+
}));
|
|
200
|
+
var image = _react.screen.getAllByRole('img')[0];
|
|
201
|
+
var expectedClass = 'thumbnail';
|
|
202
|
+
expect(image).toHaveClass(expectedClass);
|
|
203
|
+
});
|
|
204
|
+
});
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// Type definitions for limestone/BodyText
|
|
2
|
+
|
|
3
|
+
import { SkinnableProps as limestone_Skinnable_SkinnableProps } from "limestone/Skinnable";
|
|
4
|
+
import { BodyTextProps as ui_BodyText_BodyTextProps } from "@enact/ui/BodyText";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
|
|
7
|
+
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
|
|
8
|
+
type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
|
|
9
|
+
|
|
10
|
+
export interface BodyTextBaseProps extends ui_BodyText_BodyTextProps {
|
|
11
|
+
/**
|
|
12
|
+
* Centers the contents.
|
|
13
|
+
*
|
|
14
|
+
* Applies the `centered` CSS class which can be customized by
|
|
15
|
+
.
|
|
16
|
+
*/
|
|
17
|
+
centered?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Customizes the component by mapping the supplied collection of CSS class names to the
|
|
20
|
+
corresponding internal elements and states of this component.
|
|
21
|
+
*
|
|
22
|
+
* The following classes are supported:
|
|
23
|
+
* * `bodyText` - The root class name
|
|
24
|
+
*/
|
|
25
|
+
css?: object;
|
|
26
|
+
/**
|
|
27
|
+
* Toggles multi-line ( `false` ) vs single-line ( `true` ) behavior. `noWrap` mode
|
|
28
|
+
automatically enables so long text isn't permanently occluded.
|
|
29
|
+
*/
|
|
30
|
+
noWrap?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Sets the text size to one of the preset sizes.
|
|
33
|
+
Available sizes: 'large' (default) and 'small'.
|
|
34
|
+
*/
|
|
35
|
+
size?: "small" | "large";
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A simple text block component.
|
|
39
|
+
*
|
|
40
|
+
* This component is most often not used directly but may be composed within another component as it
|
|
41
|
+
is within .
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
export class BodyTextBase extends React.Component<
|
|
45
|
+
Merge<React.HTMLProps<HTMLElement>, BodyTextBaseProps>
|
|
46
|
+
> {}
|
|
47
|
+
|
|
48
|
+
export interface BodyTextDecoratorProps
|
|
49
|
+
extends limestone_Skinnable_SkinnableProps {}
|
|
50
|
+
export function BodyTextDecorator<P>(
|
|
51
|
+
Component: React.ComponentType<P> | string,
|
|
52
|
+
): React.ComponentType<P & BodyTextDecoratorProps>;
|
|
53
|
+
|
|
54
|
+
export interface BodyTextProps
|
|
55
|
+
extends Merge<BodyTextBaseProps, BodyTextDecoratorProps> {}
|
|
56
|
+
/**
|
|
57
|
+
* A simple text block component, ready to use in Limestone applications.
|
|
58
|
+
*
|
|
59
|
+
* `BodyText` may be used to display a block of text and is sized and spaced appropriately for a
|
|
60
|
+
Limestone application.
|
|
61
|
+
*
|
|
62
|
+
* Usage:
|
|
63
|
+
* ```
|
|
64
|
+
<BodyText>
|
|
65
|
+
I have a Ham radio. There are many like it, but this one is mine.
|
|
66
|
+
</BodyText>
|
|
67
|
+
```
|
|
68
|
+
*/
|
|
69
|
+
|
|
70
|
+
export class BodyText extends React.Component<
|
|
71
|
+
Merge<React.HTMLProps<HTMLElement>, BodyTextProps>
|
|
72
|
+
> {}
|
|
73
|
+
|
|
74
|
+
export default BodyText;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = exports.BodyTextDecorator = exports.BodyTextBase = exports.BodyText = void 0;
|
|
7
|
+
var _kind = _interopRequireDefault(require("@enact/core/kind"));
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _compose = _interopRequireDefault(require("ramda/src/compose"));
|
|
10
|
+
var _BodyText = _interopRequireDefault(require("@enact/ui/BodyText"));
|
|
11
|
+
var _Pure = _interopRequireDefault(require("@enact/ui/internal/Pure"));
|
|
12
|
+
var _Marquee = require("../Marquee");
|
|
13
|
+
var _Skinnable = _interopRequireDefault(require("../Skinnable"));
|
|
14
|
+
var _BodyTextModule = _interopRequireDefault(require("./BodyText.module.css"));
|
|
15
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
|
+
var _excluded = ["centered", "css", "noWrap"];
|
|
17
|
+
/**
|
|
18
|
+
* Limestone styled text block components and behaviors.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* <BodyText centered>Hello Enact!</BodyText>
|
|
22
|
+
*
|
|
23
|
+
* @module limestone/BodyText
|
|
24
|
+
* @exports BodyText
|
|
25
|
+
* @exports BodyTextBase
|
|
26
|
+
* @exports BodyTextDecorator
|
|
27
|
+
*/
|
|
28
|
+
// Create a Marquee using BodyText as the base
|
|
29
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
30
|
+
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; }
|
|
31
|
+
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; }
|
|
32
|
+
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; }
|
|
33
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
34
|
+
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); }
|
|
35
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
36
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
37
|
+
var MarqueeBodyText = (0, _Marquee.MarqueeDecorator)(_BodyText["default"]);
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* A simple text block component.
|
|
41
|
+
*
|
|
42
|
+
* This component is most often not used directly but may be composed within another component as it
|
|
43
|
+
* is within {@link limestone/BodyText.BodyText|BodyText}.
|
|
44
|
+
*
|
|
45
|
+
* @class BodyTextBase
|
|
46
|
+
* @memberof limestone/BodyText
|
|
47
|
+
* @extends ui/BodyText.BodyText
|
|
48
|
+
* @ui
|
|
49
|
+
* @public
|
|
50
|
+
*/
|
|
51
|
+
var BodyTextBase = exports.BodyTextBase = (0, _kind["default"])({
|
|
52
|
+
name: 'BodyText',
|
|
53
|
+
propTypes: /** @lends limestone/BodyText.BodyTextBase.prototype */{
|
|
54
|
+
/**
|
|
55
|
+
* Centers the contents.
|
|
56
|
+
*
|
|
57
|
+
* Applies the `centered` CSS class which can be customized by
|
|
58
|
+
* {@link /docs/developer-guide/theming/|theming}.
|
|
59
|
+
*
|
|
60
|
+
* @type {Boolean}
|
|
61
|
+
* @public
|
|
62
|
+
*/
|
|
63
|
+
centered: _propTypes["default"].bool,
|
|
64
|
+
/**
|
|
65
|
+
* Customizes the component by mapping the supplied collection of CSS class names to the
|
|
66
|
+
* corresponding internal elements and states of this component.
|
|
67
|
+
*
|
|
68
|
+
* The following classes are supported:
|
|
69
|
+
*
|
|
70
|
+
* * `bodyText` - The root class name
|
|
71
|
+
*
|
|
72
|
+
* @type {Object}
|
|
73
|
+
* @public
|
|
74
|
+
*/
|
|
75
|
+
css: _propTypes["default"].object,
|
|
76
|
+
/**
|
|
77
|
+
* Toggles multi-line (`false`) vs single-line (`true`) behavior. `noWrap` mode
|
|
78
|
+
* automatically enables {@link limestone/Marquee} so long text isn't permanently occluded.
|
|
79
|
+
*
|
|
80
|
+
* @type {Boolean}
|
|
81
|
+
* @default false
|
|
82
|
+
* @public
|
|
83
|
+
*/
|
|
84
|
+
noWrap: _propTypes["default"].bool,
|
|
85
|
+
/**
|
|
86
|
+
* Sets the text size to one of the preset sizes.
|
|
87
|
+
* Available sizes: 'large' (default) and 'small'.
|
|
88
|
+
*
|
|
89
|
+
* @type {('small'|'large')}
|
|
90
|
+
* @default 'large'
|
|
91
|
+
* @public
|
|
92
|
+
*/
|
|
93
|
+
size: _propTypes["default"].oneOf(['small', 'large'])
|
|
94
|
+
},
|
|
95
|
+
defaultProps: {
|
|
96
|
+
noWrap: false,
|
|
97
|
+
size: 'large'
|
|
98
|
+
},
|
|
99
|
+
styles: {
|
|
100
|
+
css: _BodyTextModule["default"],
|
|
101
|
+
publicClassNames: 'bodyText'
|
|
102
|
+
},
|
|
103
|
+
computed: {
|
|
104
|
+
className: function className(_ref) {
|
|
105
|
+
var noWrap = _ref.noWrap,
|
|
106
|
+
size = _ref.size,
|
|
107
|
+
styler = _ref.styler;
|
|
108
|
+
return styler.append(size, {
|
|
109
|
+
noWrap: noWrap
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
render: function render(_ref2) {
|
|
114
|
+
var centered = _ref2.centered,
|
|
115
|
+
css = _ref2.css,
|
|
116
|
+
noWrap = _ref2.noWrap,
|
|
117
|
+
rest = _objectWithoutProperties(_ref2, _excluded);
|
|
118
|
+
delete rest.size;
|
|
119
|
+
if (noWrap) {
|
|
120
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(MarqueeBodyText, _objectSpread(_objectSpread({
|
|
121
|
+
component: "div" // Assign a new component to BodyText, since DIV is not allowed inside a P tag (the default for BodyText)
|
|
122
|
+
,
|
|
123
|
+
marqueeOn: "render"
|
|
124
|
+
}, rest), {}, {
|
|
125
|
+
alignment: centered ? 'center' : null // Centering Marquee
|
|
126
|
+
,
|
|
127
|
+
centered: centered // Centering UiBodyText
|
|
128
|
+
,
|
|
129
|
+
css: css
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_BodyText["default"], _objectSpread(_objectSpread({}, rest), {}, {
|
|
133
|
+
centered: centered,
|
|
134
|
+
css: css
|
|
135
|
+
}));
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Applies Limestone specific behaviors to {@link limestone/BodyText.BodyTextBase|BodyText}.
|
|
141
|
+
*
|
|
142
|
+
* @hoc
|
|
143
|
+
* @memberof limestone/BodyText
|
|
144
|
+
* @mixes limestone/Skinnable.Skinnable
|
|
145
|
+
* @public
|
|
146
|
+
*/
|
|
147
|
+
var BodyTextDecorator = exports.BodyTextDecorator = (0, _compose["default"])(_Pure["default"], _Skinnable["default"]);
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* A simple text block component, ready to use in Limestone applications.
|
|
151
|
+
*
|
|
152
|
+
* `BodyText` may be used to display a block of text and is sized and spaced appropriately for a
|
|
153
|
+
* Limestone application.
|
|
154
|
+
*
|
|
155
|
+
* Usage:
|
|
156
|
+
* ```
|
|
157
|
+
* <BodyText>
|
|
158
|
+
* I have a Ham radio. There are many like it, but this one is mine.
|
|
159
|
+
* </BodyText>
|
|
160
|
+
* ```
|
|
161
|
+
*
|
|
162
|
+
* @class BodyText
|
|
163
|
+
* @memberof limestone/BodyText
|
|
164
|
+
* @extends limestone/BodyText.BodyTextBase
|
|
165
|
+
* @mixes limestone/BodyText.BodyTextDecorator
|
|
166
|
+
* @ui
|
|
167
|
+
* @public
|
|
168
|
+
*/
|
|
169
|
+
var BodyText = exports.BodyText = BodyTextDecorator(BodyTextBase);
|
|
170
|
+
var _default = exports["default"] = BodyText;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
.bodyText {
|
|
2
|
+
font-weight: var(--primitive-font-weight-regular);
|
|
3
|
+
font-size: var(--primitive-font-size-60);
|
|
4
|
+
font-style: normal;
|
|
5
|
+
font-family: "Limestone";
|
|
6
|
+
line-height: 1.4em;
|
|
7
|
+
margin: 0 0.75rem var(--primitive-font-size-60) 0.75rem;
|
|
8
|
+
padding: 0;
|
|
9
|
+
white-space: normal;
|
|
10
|
+
}
|
|
11
|
+
:global(.enact-locale-non-latin) .bodyText {
|
|
12
|
+
font-family: "Limestone";
|
|
13
|
+
}
|
|
14
|
+
:global(.enact-locale-non-latin) .bodyText {
|
|
15
|
+
font-family: "Limestone";
|
|
16
|
+
font-weight: var(--primitive-font-weight-light);
|
|
17
|
+
font-size: 1.125rem;
|
|
18
|
+
font-style: normal;
|
|
19
|
+
}
|
|
20
|
+
:global(.enact-locale-km) .bodyText {
|
|
21
|
+
line-height: 1.7em;
|
|
22
|
+
}
|
|
23
|
+
:global(.enact-locale-si) .bodyText {
|
|
24
|
+
line-height: 1.7em;
|
|
25
|
+
}
|
|
26
|
+
:global(.enact-locale-th) .bodyText {
|
|
27
|
+
line-height: 1.7em;
|
|
28
|
+
}
|
|
29
|
+
:global(.enact-locale-vi) .bodyText {
|
|
30
|
+
line-height: 1.7em;
|
|
31
|
+
}
|
|
32
|
+
.bodyText a:link {
|
|
33
|
+
color: inherit;
|
|
34
|
+
text-decoration: none;
|
|
35
|
+
}
|
|
36
|
+
.bodyText a:visited {
|
|
37
|
+
color: inherit;
|
|
38
|
+
text-decoration: none;
|
|
39
|
+
}
|
|
40
|
+
.bodyText a:hover {
|
|
41
|
+
color: inherit;
|
|
42
|
+
text-decoration: none;
|
|
43
|
+
}
|
|
44
|
+
.bodyText a:active {
|
|
45
|
+
color: inherit;
|
|
46
|
+
text-decoration: none;
|
|
47
|
+
}
|
|
48
|
+
.bodyText.large {
|
|
49
|
+
/* Needed to prevent global class being added in the DOM */
|
|
50
|
+
}
|
|
51
|
+
.bodyText.small {
|
|
52
|
+
font-size: var(--primitive-font-size-54);
|
|
53
|
+
line-height: 1.3em;
|
|
54
|
+
}
|
|
55
|
+
:global(.enact-locale-km) .bodyText.small {
|
|
56
|
+
line-height: 1.7em;
|
|
57
|
+
}
|
|
58
|
+
:global(.enact-locale-si) .bodyText.small {
|
|
59
|
+
line-height: 1.7em;
|
|
60
|
+
}
|
|
61
|
+
:global(.enact-locale-th) .bodyText.small {
|
|
62
|
+
line-height: 1.7em;
|
|
63
|
+
}
|
|
64
|
+
:global(.enact-locale-vi) .bodyText.small {
|
|
65
|
+
line-height: 1.7em;
|
|
66
|
+
}
|
|
67
|
+
:global(.enact-locale-km) .bodyText.small {
|
|
68
|
+
font-size: 1rem;
|
|
69
|
+
}
|
|
70
|
+
:global(.enact-locale-si) .bodyText.small {
|
|
71
|
+
font-size: 1rem;
|
|
72
|
+
}
|
|
73
|
+
:global(.enact-locale-th) .bodyText.small {
|
|
74
|
+
font-size: 1rem;
|
|
75
|
+
}
|
|
76
|
+
:global(.enact-locale-vi) .bodyText.small {
|
|
77
|
+
font-size: 1rem;
|
|
78
|
+
}
|
|
79
|
+
:global(.enact-locale-non-latin) .bodyText.small {
|
|
80
|
+
font-size: 1rem;
|
|
81
|
+
line-height: 1.375rem;
|
|
82
|
+
}
|
|
83
|
+
:global(.enact-locale-right-to-left) .bodyText {
|
|
84
|
+
text-align: right;
|
|
85
|
+
}
|
|
86
|
+
:global(.enact-locale-right-to-left) .bodyText.centered {
|
|
87
|
+
text-align: center;
|
|
88
|
+
}
|
|
89
|
+
.bodyText.noWrap {
|
|
90
|
+
/* Support for single-line, provided for extensibility */
|
|
91
|
+
white-space: nowrap;
|
|
92
|
+
}
|
|
93
|
+
:global(.enact-locale-ja) .bodyText {
|
|
94
|
+
line-break: strict;
|
|
95
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("@testing-library/jest-dom");
|
|
4
|
+
var _react = require("@testing-library/react");
|
|
5
|
+
var _BodyText = _interopRequireDefault(require("../BodyText"));
|
|
6
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
7
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
8
|
+
describe('BodyText Specs', function () {
|
|
9
|
+
test('should support multi-line content', function () {
|
|
10
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_BodyText["default"], {
|
|
11
|
+
"data-testid": "bodyText"
|
|
12
|
+
}));
|
|
13
|
+
var bodyText = _react.screen.getByTestId('bodyText');
|
|
14
|
+
var expected = 'P';
|
|
15
|
+
var actual = bodyText.nodeName;
|
|
16
|
+
expect(actual).toBe(expected);
|
|
17
|
+
});
|
|
18
|
+
test('should support single-line marqueeing content when `noWrap` is true', function () {
|
|
19
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_BodyText["default"], {
|
|
20
|
+
"data-testid": "bodyText",
|
|
21
|
+
noWrap: true
|
|
22
|
+
}));
|
|
23
|
+
var bodyText = _react.screen.getByTestId('bodyText');
|
|
24
|
+
var marquee = bodyText.children.item(0);
|
|
25
|
+
var expected = 'marquee';
|
|
26
|
+
expect(marquee).toHaveClass(expected);
|
|
27
|
+
});
|
|
28
|
+
test('should include the noWrap class if `noWrap` is true', function () {
|
|
29
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_BodyText["default"], {
|
|
30
|
+
"data-testid": "bodyText",
|
|
31
|
+
noWrap: true
|
|
32
|
+
}));
|
|
33
|
+
var bodyText = _react.screen.getByTestId('bodyText');
|
|
34
|
+
var expected = 'noWrap';
|
|
35
|
+
expect(bodyText).toHaveClass(expected);
|
|
36
|
+
});
|
|
37
|
+
test('should have small class if `size` is small', function () {
|
|
38
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_BodyText["default"], {
|
|
39
|
+
"data-testid": "bodyText",
|
|
40
|
+
size: "small"
|
|
41
|
+
}));
|
|
42
|
+
var bodyText = _react.screen.getByTestId('bodyText');
|
|
43
|
+
var expected = 'small';
|
|
44
|
+
expect(bodyText).toHaveClass(expected);
|
|
45
|
+
});
|
|
46
|
+
test('should have `centered` class if `centered` is true', function () {
|
|
47
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_BodyText["default"], {
|
|
48
|
+
"data-testid": "bodyText",
|
|
49
|
+
centered: true
|
|
50
|
+
}));
|
|
51
|
+
var bodyText = _react.screen.getByTestId('bodyText');
|
|
52
|
+
var expected = 'centered';
|
|
53
|
+
expect(bodyText).toHaveClass(expected);
|
|
54
|
+
});
|
|
55
|
+
});
|