@laerdal/life-react-components 6.0.0-dev.2 → 6.0.0-dev.20.full
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/dist/Accordion/ContentAccordion.cjs +40 -11
- package/dist/Accordion/ContentAccordion.cjs.map +1 -1
- package/dist/Accordion/ContentAccordion.js +40 -11
- package/dist/Accordion/ContentAccordion.js.map +1 -1
- package/dist/Accordion/__tests__/AccordionMenu.test.tsx +42 -0
- package/dist/Accordion/__tests__/ContentAccordion.test.tsx +150 -0
- package/dist/Accordion/styles.cjs +51 -13
- package/dist/Accordion/styles.cjs.map +1 -1
- package/dist/Accordion/styles.js +51 -13
- package/dist/Accordion/styles.js.map +1 -1
- package/dist/AuthPage/__tests__/AuthPage.test.tsx +27 -0
- package/dist/Banners/Banner.cjs +38 -34
- package/dist/Banners/Banner.cjs.map +1 -1
- package/dist/Banners/Banner.d.ts +2 -3
- package/dist/Banners/Banner.js +38 -34
- package/dist/Banners/Banner.js.map +1 -1
- package/dist/Banners/__tests__/Banner.test.tsx +47 -0
- package/dist/Banners/__tests__/OverviewBanner.test.tsx +20 -0
- package/dist/Banners/styles.cjs +8 -16
- package/dist/Banners/styles.cjs.map +1 -1
- package/dist/Banners/styles.js +8 -16
- package/dist/Banners/styles.js.map +1 -1
- package/dist/Breadcrumb/Breadcrumb.cjs +8 -2
- package/dist/Breadcrumb/Breadcrumb.cjs.map +1 -1
- package/dist/Breadcrumb/Breadcrumb.js +8 -2
- package/dist/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/Breadcrumb/__tests__/Breadcrumb.test.tsx +78 -0
- package/dist/Breadcrumb/styles.cjs +15 -4
- package/dist/Breadcrumb/styles.cjs.map +1 -1
- package/dist/Breadcrumb/styles.js +15 -4
- package/dist/Breadcrumb/styles.js.map +1 -1
- package/dist/Button/BackButton.cjs +27 -6
- package/dist/Button/BackButton.cjs.map +1 -1
- package/dist/Button/BackButton.js +27 -6
- package/dist/Button/BackButton.js.map +1 -1
- package/dist/Button/Button.cjs +179 -47
- package/dist/Button/Button.cjs.map +1 -1
- package/dist/Button/Button.d.ts +2 -0
- package/dist/Button/Button.js +179 -47
- package/dist/Button/Button.js.map +1 -1
- package/dist/Button/Iconbutton.cjs +83 -21
- package/dist/Button/Iconbutton.cjs.map +1 -1
- package/dist/Button/Iconbutton.js +83 -21
- package/dist/Button/Iconbutton.js.map +1 -1
- package/dist/Button/__tests__/BackButton.test.tsx +32 -0
- package/dist/Button/__tests__/Button.test.tsx +45 -0
- package/dist/Button/__tests__/DualButton.test.tsx +119 -0
- package/dist/Card/HorizontalCard/HorizontalCard.cjs +20 -5
- package/dist/Card/HorizontalCard/HorizontalCard.cjs.map +1 -1
- package/dist/Card/HorizontalCard/HorizontalCard.js +20 -5
- package/dist/Card/HorizontalCard/HorizontalCard.js.map +1 -1
- package/dist/Card/HorizontalCard/HorizontalCardBody.cjs +12 -3
- package/dist/Card/HorizontalCard/HorizontalCardBody.cjs.map +1 -1
- package/dist/Card/HorizontalCard/HorizontalCardBody.js +12 -3
- package/dist/Card/HorizontalCard/HorizontalCardBody.js.map +1 -1
- package/dist/Card/HorizontalCard/HorizontalCardThumbnail.cjs +8 -2
- package/dist/Card/HorizontalCard/HorizontalCardThumbnail.cjs.map +1 -1
- package/dist/Card/HorizontalCard/HorizontalCardThumbnail.js +8 -2
- package/dist/Card/HorizontalCard/HorizontalCardThumbnail.js.map +1 -1
- package/dist/Card/HorizontalCard/__tests__/HorizontalCard.test.tsx +71 -0
- package/dist/Card/HorizontalCard/__tests__/VerticalCard.test.tsx +124 -0
- package/dist/Card/VerticalCard/Card.cjs +20 -5
- package/dist/Card/VerticalCard/Card.cjs.map +1 -1
- package/dist/Card/VerticalCard/Card.js +20 -5
- package/dist/Card/VerticalCard/Card.js.map +1 -1
- package/dist/Card/VerticalCard/CardBottomSection.cjs +28 -7
- package/dist/Card/VerticalCard/CardBottomSection.cjs.map +1 -1
- package/dist/Card/VerticalCard/CardBottomSection.js +28 -7
- package/dist/Card/VerticalCard/CardBottomSection.js.map +1 -1
- package/dist/Card/VerticalCard/CardMiddleSection.cjs +19 -4
- package/dist/Card/VerticalCard/CardMiddleSection.cjs.map +1 -1
- package/dist/Card/VerticalCard/CardMiddleSection.js +19 -4
- package/dist/Card/VerticalCard/CardMiddleSection.js.map +1 -1
- package/dist/Card/VerticalCard/CardTopSection.cjs +9 -2
- package/dist/Card/VerticalCard/CardTopSection.cjs.map +1 -1
- package/dist/Card/VerticalCard/CardTopSection.js +9 -2
- package/dist/Card/VerticalCard/CardTopSection.js.map +1 -1
- package/dist/Card/__tests__/Card.test.tsx +146 -0
- package/dist/Chips/ChipStyles.cjs +4 -1
- package/dist/Chips/ChipStyles.cjs.map +1 -1
- package/dist/Chips/ChipStyles.js +4 -1
- package/dist/Chips/ChipStyles.js.map +1 -1
- package/dist/Chips/__tests__/ActionChip.test.tsx +94 -0
- package/dist/Chips/__tests__/ChoiceChips.test.tsx +79 -0
- package/dist/Chips/__tests__/FilterChip.test.tsx +95 -0
- package/dist/Chips/__tests__/InputChip.test.tsx +155 -0
- package/dist/ChipsInput/ChipInputField.cjs +16 -4
- package/dist/ChipsInput/ChipInputField.cjs.map +1 -1
- package/dist/ChipsInput/ChipInputField.js +16 -4
- package/dist/ChipsInput/ChipInputField.js.map +1 -1
- package/dist/ChipsInput/__tests__/ChipDropdownInput.test.tsx +100 -0
- package/dist/ChipsInput/__tests__/ChipInputFields.test.tsx +155 -0
- package/dist/Dropdown/BasicDropdown.cjs +12 -3
- package/dist/Dropdown/BasicDropdown.cjs.map +1 -1
- package/dist/Dropdown/BasicDropdown.js +12 -3
- package/dist/Dropdown/BasicDropdown.js.map +1 -1
- package/dist/Dropdown/CommonStyling.cjs +172 -42
- package/dist/Dropdown/CommonStyling.cjs.map +1 -1
- package/dist/Dropdown/CommonStyling.js +172 -42
- package/dist/Dropdown/CommonStyling.js.map +1 -1
- package/dist/Dropdown/DropdownContent.cjs +36 -10
- package/dist/Dropdown/DropdownContent.cjs.map +1 -1
- package/dist/Dropdown/DropdownContent.js +36 -10
- package/dist/Dropdown/DropdownContent.js.map +1 -1
- package/dist/Dropdown/DropdownFilter.cjs +12 -3
- package/dist/Dropdown/DropdownFilter.cjs.map +1 -1
- package/dist/Dropdown/DropdownFilter.js +12 -3
- package/dist/Dropdown/DropdownFilter.js.map +1 -1
- package/dist/Dropdown/__tests__/DropdownFilter.test.tsx +39 -0
- package/dist/Footer/Components/FooterNewsletterAndSocialSection.cjs +4 -1
- package/dist/Footer/Components/FooterNewsletterAndSocialSection.cjs.map +1 -1
- package/dist/Footer/Components/FooterNewsletterAndSocialSection.js +4 -1
- package/dist/Footer/Components/FooterNewsletterAndSocialSection.js.map +1 -1
- package/dist/Footer/__tests__/Footer.test.tsx +182 -0
- package/dist/GlobalNavigationBar/Logo.cjs +2 -1
- package/dist/GlobalNavigationBar/Logo.cjs.map +1 -1
- package/dist/GlobalNavigationBar/Logo.js +2 -1
- package/dist/GlobalNavigationBar/Logo.js.map +1 -1
- package/dist/GlobalNavigationBar/__tests__/GlobalNavigationBar.tests.d.ts +1 -0
- package/dist/GlobalNavigationBar/__tests__/Logo.test.tsx +39 -0
- package/dist/GlobalNavigationBar/__tests__/Logo.tests.d.ts +1 -0
- package/dist/GlobalNavigationBar/desktop/MainMenu.cjs +10 -1
- package/dist/GlobalNavigationBar/desktop/MainMenu.cjs.map +1 -1
- package/dist/GlobalNavigationBar/desktop/MainMenu.js +10 -1
- package/dist/GlobalNavigationBar/desktop/MainMenu.js.map +1 -1
- package/dist/GlobalNavigationBar/desktop/RightSideNav.cjs +3 -2
- package/dist/GlobalNavigationBar/desktop/RightSideNav.cjs.map +1 -1
- package/dist/GlobalNavigationBar/desktop/RightSideNav.js +3 -2
- package/dist/GlobalNavigationBar/desktop/RightSideNav.js.map +1 -1
- package/dist/GlobalNavigationBar/desktop/UserMenu.cjs +4 -1
- package/dist/GlobalNavigationBar/desktop/UserMenu.cjs.map +1 -1
- package/dist/GlobalNavigationBar/desktop/UserMenu.js +4 -1
- package/dist/GlobalNavigationBar/desktop/UserMenu.js.map +1 -1
- package/dist/GlobalNavigationBar/desktop/__tests__/DesktopActions.test.tsx +108 -0
- package/dist/GlobalNavigationBar/desktop/__tests__/ExtendedMainMenu.test.tsx +28 -0
- package/dist/GlobalNavigationBar/desktop/__tests__/MainMenu.test.tsx +55 -0
- package/dist/GlobalNavigationBar/desktop/__tests__/RightSideNav.test.tsx +45 -0
- package/dist/GlobalNavigationBar/desktop/__tests__/UserMenu.test.tsx +125 -0
- package/dist/GlobalNavigationBar/mobile/CommonStyles.cjs.map +1 -1
- package/dist/GlobalNavigationBar/mobile/CommonStyles.js.map +1 -1
- package/dist/GlobalNavigationBar/mobile/__tests__/MobileMenu.test.tsx +317 -0
- package/dist/GlobalNavigationBar/mobile/__tests__/MobileMenuContent.test.tsx +294 -0
- package/dist/GlobalNavigationBar/mobile/__tests__/MobileMenuHeader.test.tsx +195 -0
- package/dist/HyperLink/HyperLink.cjs +18 -2
- package/dist/HyperLink/HyperLink.cjs.map +1 -1
- package/dist/HyperLink/HyperLink.d.ts +2 -0
- package/dist/HyperLink/HyperLink.js +18 -2
- package/dist/HyperLink/HyperLink.js.map +1 -1
- package/dist/HyperLink/styling.cjs +38 -8
- package/dist/HyperLink/styling.cjs.map +1 -1
- package/dist/HyperLink/styling.js +38 -8
- package/dist/HyperLink/styling.js.map +1 -1
- package/dist/InputFields/Checkbox.cjs +54 -14
- package/dist/InputFields/Checkbox.cjs.map +1 -1
- package/dist/InputFields/Checkbox.js +54 -14
- package/dist/InputFields/Checkbox.js.map +1 -1
- package/dist/InputFields/DatepickerField.cjs +149 -43
- package/dist/InputFields/DatepickerField.cjs.map +1 -1
- package/dist/InputFields/DatepickerField.d.ts +1 -1
- package/dist/InputFields/DatepickerField.js +150 -44
- package/dist/InputFields/DatepickerField.js.map +1 -1
- package/dist/InputFields/DatepickerFieldHeader.cjs +20 -5
- package/dist/InputFields/DatepickerFieldHeader.cjs.map +1 -1
- package/dist/InputFields/DatepickerFieldHeader.js +20 -5
- package/dist/InputFields/DatepickerFieldHeader.js.map +1 -1
- package/dist/InputFields/Label.cjs +38 -11
- package/dist/InputFields/Label.cjs.map +1 -1
- package/dist/InputFields/Label.js +38 -11
- package/dist/InputFields/Label.js.map +1 -1
- package/dist/InputFields/NumberField.cjs +66 -16
- package/dist/InputFields/NumberField.cjs.map +1 -1
- package/dist/InputFields/NumberField.js +66 -16
- package/dist/InputFields/NumberField.js.map +1 -1
- package/dist/InputFields/PasswordField.cjs +4 -1
- package/dist/InputFields/PasswordField.cjs.map +1 -1
- package/dist/InputFields/PasswordField.d.ts +1 -1
- package/dist/InputFields/PasswordField.js +4 -1
- package/dist/InputFields/PasswordField.js.map +1 -1
- package/dist/InputFields/QuickSearch.cjs +30 -6
- package/dist/InputFields/QuickSearch.cjs.map +1 -1
- package/dist/InputFields/QuickSearch.js +30 -6
- package/dist/InputFields/QuickSearch.js.map +1 -1
- package/dist/InputFields/RadioButton.cjs +63 -15
- package/dist/InputFields/RadioButton.cjs.map +1 -1
- package/dist/InputFields/RadioButton.js +63 -15
- package/dist/InputFields/RadioButton.js.map +1 -1
- package/dist/InputFields/RichTextField.cjs +60 -15
- package/dist/InputFields/RichTextField.cjs.map +1 -1
- package/dist/InputFields/RichTextField.js +60 -15
- package/dist/InputFields/RichTextField.js.map +1 -1
- package/dist/InputFields/SearchBar.cjs +4 -1
- package/dist/InputFields/SearchBar.cjs.map +1 -1
- package/dist/InputFields/SearchBar.js +4 -1
- package/dist/InputFields/SearchBar.js.map +1 -1
- package/dist/InputFields/TextField.cjs +9 -3
- package/dist/InputFields/TextField.cjs.map +1 -1
- package/dist/InputFields/TextField.d.ts +1 -1
- package/dist/InputFields/TextField.js +9 -3
- package/dist/InputFields/TextField.js.map +1 -1
- package/dist/InputFields/Textarea.cjs +68 -17
- package/dist/InputFields/Textarea.cjs.map +1 -1
- package/dist/InputFields/Textarea.js +68 -17
- package/dist/InputFields/Textarea.js.map +1 -1
- package/dist/InputFields/__tests__/NumberField.test.tsx +67 -0
- package/dist/InputFields/__tests__/NumberInput.test.tsx +68 -0
- package/dist/InputFields/__tests__/QuickSearch.test.tsx +42 -0
- package/dist/InputFields/components/SearchBarInput.cjs +28 -7
- package/dist/InputFields/components/SearchBarInput.cjs.map +1 -1
- package/dist/InputFields/components/SearchBarInput.js +28 -7
- package/dist/InputFields/components/SearchBarInput.js.map +1 -1
- package/dist/InputFields/components/SearchField.cjs +60 -15
- package/dist/InputFields/components/SearchField.cjs.map +1 -1
- package/dist/InputFields/components/SearchField.js +60 -15
- package/dist/InputFields/components/SearchField.js.map +1 -1
- package/dist/InputFields/styling.cjs +95 -39
- package/dist/InputFields/styling.cjs.map +1 -1
- package/dist/InputFields/styling.d.ts +1 -2
- package/dist/InputFields/styling.js +95 -39
- package/dist/InputFields/styling.js.map +1 -1
- package/dist/LinearProgress/LinearProgress.cjs +161 -53
- package/dist/LinearProgress/LinearProgress.cjs.map +1 -1
- package/dist/LinearProgress/LinearProgress.js +161 -53
- package/dist/LinearProgress/LinearProgress.js.map +1 -1
- package/dist/LinearProgress/__tests__/LinearProgress.test.tsx +25 -0
- package/dist/List/ListRow.cjs +36 -9
- package/dist/List/ListRow.cjs.map +1 -1
- package/dist/List/ListRow.js +36 -9
- package/dist/List/ListRow.js.map +1 -1
- package/dist/List/__tests__/ListRow.test.tsx +18 -0
- package/dist/List/__tests__/ListRow.tests.d.ts +1 -0
- package/dist/LoadingIndicator/LoadingIndicator.cjs +4 -1
- package/dist/LoadingIndicator/LoadingIndicator.cjs.map +1 -1
- package/dist/LoadingIndicator/LoadingIndicator.js +4 -1
- package/dist/LoadingIndicator/LoadingIndicator.js.map +1 -1
- package/dist/LoadingPage/GlobalLoadingPage.cjs +4 -1
- package/dist/LoadingPage/GlobalLoadingPage.cjs.map +1 -1
- package/dist/LoadingPage/GlobalLoadingPage.js +4 -1
- package/dist/LoadingPage/GlobalLoadingPage.js.map +1 -1
- package/dist/LoadingPage/__tests__/GlobalLoadingPage.test.tsx +23 -0
- package/dist/MenuItem/MenuItem.cjs +101 -26
- package/dist/MenuItem/MenuItem.cjs.map +1 -1
- package/dist/MenuItem/MenuItem.js +101 -26
- package/dist/MenuItem/MenuItem.js.map +1 -1
- package/dist/MiniProductCard/MiniProductCard.cjs +15 -1
- package/dist/MiniProductCard/MiniProductCard.cjs.map +1 -1
- package/dist/MiniProductCard/MiniProductCard.d.ts +1 -0
- package/dist/MiniProductCard/MiniProductCard.js +15 -1
- package/dist/MiniProductCard/MiniProductCard.js.map +1 -1
- package/dist/Modals/Modal.cjs +4 -1
- package/dist/Modals/Modal.cjs.map +1 -1
- package/dist/Modals/Modal.js +4 -1
- package/dist/Modals/Modal.js.map +1 -1
- package/dist/Modals/ModalContent.cjs +24 -6
- package/dist/Modals/ModalContent.cjs.map +1 -1
- package/dist/Modals/ModalContent.js +24 -6
- package/dist/Modals/ModalContent.js.map +1 -1
- package/dist/Modals/ModalDialog.cjs +12 -3
- package/dist/Modals/ModalDialog.cjs.map +1 -1
- package/dist/Modals/ModalDialog.js +12 -3
- package/dist/Modals/ModalDialog.js.map +1 -1
- package/dist/Modals/ModalNote.cjs +16 -4
- package/dist/Modals/ModalNote.cjs.map +1 -1
- package/dist/Modals/ModalNote.js +16 -4
- package/dist/Modals/ModalNote.js.map +1 -1
- package/dist/Modals/ModalStyles.cjs +44 -11
- package/dist/Modals/ModalStyles.cjs.map +1 -1
- package/dist/Modals/ModalStyles.js +44 -11
- package/dist/Modals/ModalStyles.js.map +1 -1
- package/dist/Modals/__tests__/Modal.test.tsx +169 -0
- package/dist/Modals/__tests__/ModalContainer.test.tsx +77 -0
- package/dist/Modals/__tests__/ModalContent.test.tsx +126 -0
- package/dist/NavItem/NavItem.cjs +11 -2
- package/dist/NavItem/NavItem.cjs.map +1 -1
- package/dist/NavItem/NavItem.js +11 -2
- package/dist/NavItem/NavItem.js.map +1 -1
- package/dist/NavItem/__tests__/NavItem.test.ts +6 -0
- package/dist/NotificationDot/NotificationDot.cjs +17 -2
- package/dist/NotificationDot/NotificationDot.cjs.map +1 -1
- package/dist/NotificationDot/NotificationDot.js +17 -2
- package/dist/NotificationDot/NotificationDot.js.map +1 -1
- package/dist/NotificationDot/__tests__/NotificationDot.test.tsx +33 -0
- package/dist/Paginator/Paginator.cjs +76 -29
- package/dist/Paginator/Paginator.cjs.map +1 -1
- package/dist/Paginator/Paginator.js +76 -29
- package/dist/Paginator/Paginator.js.map +1 -1
- package/dist/Paginator/__tests__/Paginator.test.tsx +39 -0
- package/dist/Panel/Panel.cjs +4 -1
- package/dist/Panel/Panel.cjs.map +1 -1
- package/dist/Panel/Panel.js +4 -1
- package/dist/Panel/Panel.js.map +1 -1
- package/dist/Popover/Popover.cjs +22 -3
- package/dist/Popover/Popover.cjs.map +1 -1
- package/dist/Popover/Popover.js +22 -3
- package/dist/Popover/Popover.js.map +1 -1
- package/dist/Popover/__tests__/Popover.test.tsx +64 -0
- package/dist/ProfileButton/ProfileButton.cjs +9 -2
- package/dist/ProfileButton/ProfileButton.cjs.map +1 -1
- package/dist/ProfileButton/ProfileButton.js +9 -2
- package/dist/ProfileButton/ProfileButton.js.map +1 -1
- package/dist/ProfileButton/__tests__/ProfileButton.test.tsx +31 -0
- package/dist/QuizButton/__tests__/QuizButton.test.tsx +53 -0
- package/dist/SegmentControl/SegmentControl.cjs +46 -11
- package/dist/SegmentControl/SegmentControl.cjs.map +1 -1
- package/dist/SegmentControl/SegmentControl.js +46 -11
- package/dist/SegmentControl/SegmentControl.js.map +1 -1
- package/dist/SegmentControl/__tests__/SegmentControl.test.tsx +145 -0
- package/dist/SideMenu/SideMenuHeader.cjs +12 -3
- package/dist/SideMenu/SideMenuHeader.cjs.map +1 -1
- package/dist/SideMenu/SideMenuHeader.js +12 -3
- package/dist/SideMenu/SideMenuHeader.js.map +1 -1
- package/dist/SideMenu/__tests__/SideMenu.test.tsx +99 -0
- package/dist/Switcher/SwitcherMenuItem.cjs +4 -1
- package/dist/Switcher/SwitcherMenuItem.cjs.map +1 -1
- package/dist/Switcher/SwitcherMenuItem.js +4 -1
- package/dist/Switcher/SwitcherMenuItem.js.map +1 -1
- package/dist/Switcher/__tests__/SwitcherMenuItem.tsx +14 -0
- package/dist/Table/TableFooter.cjs +8 -2
- package/dist/Table/TableFooter.cjs.map +1 -1
- package/dist/Table/TableFooter.js +8 -2
- package/dist/Table/TableFooter.js.map +1 -1
- package/dist/Table/TableStyles.cjs +132 -33
- package/dist/Table/TableStyles.cjs.map +1 -1
- package/dist/Table/TableStyles.js +132 -33
- package/dist/Table/TableStyles.js.map +1 -1
- package/dist/Table/__tests__/Table.test.tsx +499 -0
- package/dist/Tabs/HorizontalTabs.cjs +68 -18
- package/dist/Tabs/HorizontalTabs.cjs.map +1 -1
- package/dist/Tabs/HorizontalTabs.js +68 -18
- package/dist/Tabs/HorizontalTabs.js.map +1 -1
- package/dist/Tabs/TabLink.cjs +4 -1
- package/dist/Tabs/TabLink.cjs.map +1 -1
- package/dist/Tabs/TabLink.js +4 -1
- package/dist/Tabs/TabLink.js.map +1 -1
- package/dist/Tabs/VerticalTabs.cjs +1 -0
- package/dist/Tabs/VerticalTabs.cjs.map +1 -1
- package/dist/Tabs/VerticalTabs.js +1 -0
- package/dist/Tabs/VerticalTabs.js.map +1 -1
- package/dist/Tabs/__tests__/HorizontalTabs.test.tsx +95 -0
- package/dist/Tabs/__tests__/TabLink.test.tsx +40 -0
- package/dist/Tabs/__tests__/TabLink.tests.d.ts +1 -0
- package/dist/Tabs/__tests__/Tablist.test.tsx +37 -0
- package/dist/Tabs/__tests__/Tablist.tests.d.ts +2 -0
- package/dist/Tag/Tag.cjs +2 -2
- package/dist/Tag/Tag.cjs.map +1 -1
- package/dist/Tag/Tag.js +2 -2
- package/dist/Tag/Tag.js.map +1 -1
- package/dist/Tag/__tests__/Tag.test.tsx +86 -0
- package/dist/Tile/Tile.cjs +8 -2
- package/dist/Tile/Tile.cjs.map +1 -1
- package/dist/Tile/Tile.js +8 -2
- package/dist/Tile/Tile.js.map +1 -1
- package/dist/Tile/TileCommonItems.cjs +8 -2
- package/dist/Tile/TileCommonItems.cjs.map +1 -1
- package/dist/Tile/TileCommonItems.js +8 -2
- package/dist/Tile/TileCommonItems.js.map +1 -1
- package/dist/Tile/TileFooter.cjs +4 -1
- package/dist/Tile/TileFooter.cjs.map +1 -1
- package/dist/Tile/TileFooter.js +4 -1
- package/dist/Tile/TileFooter.js.map +1 -1
- package/dist/Tile/TileHeader.cjs +12 -3
- package/dist/Tile/TileHeader.cjs.map +1 -1
- package/dist/Tile/TileHeader.js +12 -3
- package/dist/Tile/TileHeader.js.map +1 -1
- package/dist/Toasters/Toast.cjs +62 -13
- package/dist/Toasters/Toast.cjs.map +1 -1
- package/dist/Toasters/Toast.js +62 -13
- package/dist/Toasters/Toast.js.map +1 -1
- package/dist/Toasters/__tests__/Toast.test.tsx +74 -0
- package/dist/Toggles/ToggleButton.cjs +9 -3
- package/dist/Toggles/ToggleButton.cjs.map +1 -1
- package/dist/Toggles/ToggleButton.d.ts +1 -1
- package/dist/Toggles/ToggleButton.js +9 -3
- package/dist/Toggles/ToggleButton.js.map +1 -1
- package/dist/Toggles/TogglerStyles.cjs +22 -8
- package/dist/Toggles/TogglerStyles.cjs.map +1 -1
- package/dist/Toggles/TogglerStyles.js +22 -8
- package/dist/Toggles/TogglerStyles.js.map +1 -1
- package/dist/Toggles/__tests__/ToggleButton.test.tsx +53 -0
- package/dist/Toggles/__tests__/ToggleSwitch.test.tsx +87 -0
- package/dist/Tooltips/TooltipStyles.cjs +28 -6
- package/dist/Tooltips/TooltipStyles.cjs.map +1 -1
- package/dist/Tooltips/TooltipStyles.js +28 -6
- package/dist/Tooltips/TooltipStyles.js.map +1 -1
- package/dist/Tooltips/__tests__/TooltipWrapper.test.tsx +16 -0
- package/dist/common/InputStyling.cjs +30 -7
- package/dist/common/InputStyling.cjs.map +1 -1
- package/dist/common/InputStyling.js +30 -7
- package/dist/common/InputStyling.js.map +1 -1
- package/dist/common/Link.cjs +45 -0
- package/dist/common/Link.cjs.map +1 -0
- package/dist/common/Link.d.ts +9 -0
- package/dist/common/Link.js +37 -0
- package/dist/common/Link.js.map +1 -0
- package/dist/common/NavigationHelper.cjs +30 -0
- package/dist/common/NavigationHelper.cjs.map +1 -0
- package/dist/common/NavigationHelper.d.ts +4 -0
- package/dist/common/NavigationHelper.js +23 -0
- package/dist/common/NavigationHelper.js.map +1 -0
- package/dist/custom.d.ts +2 -0
- package/dist/styles/colors.cjs +439 -84
- package/dist/styles/colors.cjs.map +1 -1
- package/dist/styles/colors.d.ts +200 -11
- package/dist/styles/colors.js +439 -84
- package/dist/styles/colors.js.map +1 -1
- package/dist/styles/global.cjs +19 -2
- package/dist/styles/global.cjs.map +1 -1
- package/dist/styles/global.d.ts +3 -2
- package/dist/styles/global.js +18 -3
- package/dist/styles/global.js.map +1 -1
- package/dist/styles/index.cjs +21 -9
- package/dist/styles/index.cjs.map +1 -1
- package/dist/styles/index.d.ts +2 -2
- package/dist/styles/index.js +18 -6
- package/dist/styles/index.js.map +1 -1
- package/dist/styles/react-datepicker.css +766 -0
- package/dist/utils/color-tokens.cjs +91 -0
- package/dist/utils/color-tokens.cjs.map +1 -0
- package/dist/utils/color-tokens.d.ts +19 -0
- package/dist/utils/color-tokens.js +82 -0
- package/dist/utils/color-tokens.js.map +1 -0
- package/package.json +12 -5
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render } from '../../test-utils';
|
|
3
|
+
import 'jest-styled-components';
|
|
4
|
+
import { QuizButton } from '..';
|
|
5
|
+
import { Size } from '../../types';
|
|
6
|
+
import COLORS from '../../styles/colors';
|
|
7
|
+
import '@testing-library/jest-dom';
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
describe('<QuizButton />',()=>{
|
|
11
|
+
it('renders correct quiz button', async () => {
|
|
12
|
+
const{getByText, getByTestId} = render(
|
|
13
|
+
<QuizButton size={Size.Small} resultType={'correct'} text={'this is sample text'} type={'radio'} id={'1'}/>
|
|
14
|
+
);
|
|
15
|
+
expect(getByTestId('txtContainer')).toHaveTextContent('this is sample text');
|
|
16
|
+
expect(getByTestId('txtContainer')).toHaveClass('quiz-button-text');
|
|
17
|
+
expect(getByTestId('btnContainer')).toHaveClass('quiz-button-icon');
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('renders incorrect quiz button', async () => {
|
|
21
|
+
const{getByText, getByTestId} = render(
|
|
22
|
+
<QuizButton size={Size.Small} resultType={'incorrect'} text={'this is sample text'} type={'checkbox'} id={'1'}/>
|
|
23
|
+
);
|
|
24
|
+
expect(getByTestId('txtContainer')).toHaveTextContent('this is sample text');
|
|
25
|
+
expect(getByTestId('txtContainer')).toHaveClass('quiz-button-text');
|
|
26
|
+
expect(getByTestId('btnContainer')).toHaveClass('quiz-button-icon');
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('renders partial quiz button', async () => {
|
|
30
|
+
const{getByText, getByTestId} = render(
|
|
31
|
+
<QuizButton size={Size.Small} resultType={'partial'} text={'this is sample text'} type={'radio'} id={'1'}/>
|
|
32
|
+
);
|
|
33
|
+
expect(getByTestId('txtContainer')).toHaveTextContent('this is sample text');
|
|
34
|
+
expect(getByTestId('txtContainer')).toHaveClass('quiz-button-text');
|
|
35
|
+
expect(getByTestId('btnContainer')).toHaveClass('quiz-button-icon');
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('renders quiz button', async () => {
|
|
39
|
+
const{getByText, getByTestId} = render(
|
|
40
|
+
<QuizButton size={Size.Small} text={'this is sample text'} type={'checkbox'} id={'1'}/>
|
|
41
|
+
);
|
|
42
|
+
expect(getByText('this is sample text')).toHaveTextContent('this is sample text');
|
|
43
|
+
expect(getByTestId('txtContainer')).toHaveStyleRule('background',COLORS.accent1_20);
|
|
44
|
+
expect(getByTestId('btnContainer')).toHaveStyleRule('background',COLORS.accent1_100);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it('renders selected quiz button', async () => {
|
|
48
|
+
const{getByText} = render(
|
|
49
|
+
<QuizButton size={Size.Small} text={'this is sample text'} selected={true} type={'radio'} id={'1'}/>
|
|
50
|
+
);
|
|
51
|
+
expect(getByText('this is sample text')).toHaveTextContent('this is sample text');
|
|
52
|
+
});
|
|
53
|
+
});
|
|
@@ -27,14 +27,20 @@ const SegmentControlItemContent = exports.SegmentControlItemContent = _styledCom
|
|
|
27
27
|
padding: 0 16px;
|
|
28
28
|
|
|
29
29
|
background-color: transparent;
|
|
30
|
-
color: ${props => _styles.COLORS.
|
|
30
|
+
color: ${props => _styles.COLORS.generateToken({
|
|
31
|
+
componentType: 'text',
|
|
32
|
+
defaultVariant: 'subtle'
|
|
33
|
+
}, props.theme)};
|
|
31
34
|
`;
|
|
32
35
|
const SegmentControlItemBackground = exports.SegmentControlItemBackground = _styledComponents.default.div`
|
|
33
36
|
flex: 1;
|
|
34
37
|
display: flex;
|
|
35
38
|
flex-direction: row;
|
|
36
39
|
align-items: center;
|
|
37
|
-
background-color: ${props => _styles.COLORS.
|
|
40
|
+
background-color: ${props => _styles.COLORS.generateToken({
|
|
41
|
+
componentType: 'bg-surface',
|
|
42
|
+
defaultVariant: 'subtle'
|
|
43
|
+
}, props.theme)};
|
|
38
44
|
padding: 4px 0px;
|
|
39
45
|
`;
|
|
40
46
|
const SegmentControlItemWrapper = exports.SegmentControlItemWrapper = _styledComponents.default.div`
|
|
@@ -54,8 +60,14 @@ const SegmentControlItemWrapper = exports.SegmentControlItemWrapper = _styledCom
|
|
|
54
60
|
z-index: ${_styles.Z_INDEXES.hover};
|
|
55
61
|
|
|
56
62
|
${SegmentControlItemContent} {
|
|
57
|
-
background-color: ${props => _styles.COLORS.
|
|
58
|
-
|
|
63
|
+
background-color: ${props => _styles.COLORS.generateToken({
|
|
64
|
+
componentType: 'bg-surface',
|
|
65
|
+
state: 'hover'
|
|
66
|
+
}, props.theme)};
|
|
67
|
+
color: ${props => _styles.COLORS.generateToken({
|
|
68
|
+
componentType: 'text',
|
|
69
|
+
state: 'hover'
|
|
70
|
+
}, props.theme)};
|
|
59
71
|
}
|
|
60
72
|
}
|
|
61
73
|
|
|
@@ -63,8 +75,14 @@ const SegmentControlItemWrapper = exports.SegmentControlItemWrapper = _styledCom
|
|
|
63
75
|
z-index: ${_styles.Z_INDEXES.active};
|
|
64
76
|
|
|
65
77
|
${SegmentControlItemContent} {
|
|
66
|
-
background-color: ${props => _styles.COLORS.
|
|
67
|
-
|
|
78
|
+
background-color: ${props => _styles.COLORS.generateToken({
|
|
79
|
+
componentType: 'bg-surface',
|
|
80
|
+
state: 'active'
|
|
81
|
+
}, props.theme)};
|
|
82
|
+
color: ${props => _styles.COLORS.generateToken({
|
|
83
|
+
componentType: 'text',
|
|
84
|
+
state: 'active'
|
|
85
|
+
}, props.theme)};
|
|
68
86
|
}
|
|
69
87
|
}
|
|
70
88
|
|
|
@@ -73,7 +91,10 @@ const SegmentControlItemWrapper = exports.SegmentControlItemWrapper = _styledCom
|
|
|
73
91
|
|
|
74
92
|
${SegmentControlItemContent} {
|
|
75
93
|
background-color: transparent;
|
|
76
|
-
color: ${props => _styles.COLORS.
|
|
94
|
+
color: ${props => _styles.COLORS.generateToken({
|
|
95
|
+
componentType: 'text',
|
|
96
|
+
state: 'disabled'
|
|
97
|
+
}, props.theme)};
|
|
77
98
|
}
|
|
78
99
|
}
|
|
79
100
|
|
|
@@ -82,8 +103,15 @@ const SegmentControlItemWrapper = exports.SegmentControlItemWrapper = _styledCom
|
|
|
82
103
|
pointer-events: none;
|
|
83
104
|
|
|
84
105
|
${SegmentControlItemContent} {
|
|
85
|
-
background-color: ${props => _styles.COLORS.
|
|
86
|
-
|
|
106
|
+
background-color: ${props => _styles.COLORS.generateToken({
|
|
107
|
+
componentType: 'bg-fill',
|
|
108
|
+
defaultVariant: 'primary'
|
|
109
|
+
}, props.theme)};
|
|
110
|
+
color: ${props => _styles.COLORS.generateToken({
|
|
111
|
+
componentType: 'text',
|
|
112
|
+
isOnFill: true,
|
|
113
|
+
defaultVariant: 'primary'
|
|
114
|
+
}, props.theme)};
|
|
87
115
|
}
|
|
88
116
|
}
|
|
89
117
|
|
|
@@ -92,8 +120,15 @@ const SegmentControlItemWrapper = exports.SegmentControlItemWrapper = _styledCom
|
|
|
92
120
|
pointer-events: unset;
|
|
93
121
|
|
|
94
122
|
${SegmentControlItemContent} {
|
|
95
|
-
background-color: ${props => _styles.COLORS.
|
|
96
|
-
|
|
123
|
+
background-color: ${props => _styles.COLORS.generateToken({
|
|
124
|
+
componentType: 'bg-fill',
|
|
125
|
+
state: 'disabled'
|
|
126
|
+
}, props.theme)};
|
|
127
|
+
color: ${props => _styles.COLORS.generateToken({
|
|
128
|
+
componentType: 'text',
|
|
129
|
+
isOnFill: true,
|
|
130
|
+
state: 'disabled'
|
|
131
|
+
}, props.theme)};
|
|
97
132
|
}
|
|
98
133
|
}
|
|
99
134
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentControl.cjs","names":["_react","_interopRequireDefault","require","_types","_styledComponents","_styles","_common","_jsxRuntime","_excluded","_excluded2","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","SegmentControlItemContent","exports","styled","div","props","COLORS","getColor","theme","SegmentControlItemBackground","SegmentControlItemWrapper","focusStyles","Z_INDEXES","hover","active","SegmentControlWrapper","ComponentSStyling","ComponentTextStyle","Bold","ComponentMStyling","SegmentControl","_ref","items","size","Size","Medium","onChange","selected","className","rest","_objectWithoutProperties2","onKeyPress","item","key","document","activeElement","blur","disabled","onClick","jsx","children","map","a","i","content","tabIndex","undefined","onMouseDown","defaultOnMouseDownHandler","propTypes","_propTypes","arrayOf","shape","string","isRequired","bool","oneOfType","node","func","_default"],"sources":["../../src/SegmentControl/SegmentControl.tsx"],"sourcesContent":["import React from 'react';\r\nimport {Size} from '../types';\r\nimport styled from 'styled-components';\r\nimport {COLORS, ComponentMStyling, ComponentSStyling, ComponentTextStyle, focusStyles, Z_INDEXES} from '../styles';\r\nimport {defaultOnMouseDownHandler} from '../common';\r\n\r\n\r\nexport const SegmentControlItemContent = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n border-radius: 8px;\r\n padding: 0 16px;\r\n\r\n background-color: transparent;\r\n color: ${props => COLORS.getColor('neutral_600', props.theme)};\r\n`\r\n\r\nexport const SegmentControlItemBackground = styled.div`\r\n flex: 1;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n background-color: ${props => COLORS.getColor('neutral_20', props.theme)};\r\n padding: 4px 0px;\r\n`;\r\n\r\nexport const SegmentControlItemWrapper = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: center;\r\n flex: 1;\r\n cursor: pointer;\r\n min-height: 48px;\r\n\r\n &:focus {\r\n ${focusStyles}\r\n }\r\n\r\n &:hover {\r\n z-index: ${Z_INDEXES.hover};\r\n\r\n ${SegmentControlItemContent} {\r\n background-color: ${props => COLORS.getColor('primary_100', props.theme)};\r\n color: ${props => COLORS.getColor('primary_700', props.theme)};\r\n }\r\n }\r\n\r\n &:active {\r\n z-index: ${Z_INDEXES.active};\r\n\r\n ${SegmentControlItemContent} {\r\n background-color: ${props => COLORS.getColor('primary_200', props.theme)};\r\n color: ${props => COLORS.getColor('primary_800', props.theme)};\r\n }\r\n }\r\n\r\n &.disabled {\r\n cursor: not-allowed;\r\n\r\n ${SegmentControlItemContent} {\r\n background-color: transparent;\r\n color: ${props => COLORS.getColor('neutral_300', props.theme)};\r\n }\r\n }\r\n\r\n &.selected {\r\n cursor: default;\r\n pointer-events: none;\r\n\r\n ${SegmentControlItemContent} {\r\n background-color: ${props => COLORS.getColor('primary_500', props.theme)};\r\n color: ${props => COLORS.getColor('white', props.theme)};\r\n }\r\n }\r\n\r\n &.selected.disabled {\r\n cursor: not-allowed;\r\n pointer-events: unset;\r\n \r\n ${SegmentControlItemContent} {\r\n background-color: ${props => COLORS.getColor('neutral_100', props.theme)};\r\n color: ${props => COLORS.getColor('neutral_300', props.theme)};\r\n }\r\n }\r\n`;\r\n\r\nexport const SegmentControlWrapper = styled.div`\r\n width: 100%;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n\r\n ${SegmentControlItemWrapper}:first-of-type {\r\n ${SegmentControlItemBackground} {\r\n border-bottom-left-radius: 12px;\r\n border-top-left-radius: 12px;\r\n padding-left: 4px;\r\n }\r\n }\r\n\r\n ${SegmentControlItemWrapper}:last-of-type {\r\n ${SegmentControlItemBackground} {\r\n border-bottom-right-radius: 12px;\r\n border-top-right-radius: 12px;\r\n padding-right: 4px;\r\n }\r\n }\r\n\r\n\r\n &.small {\r\n ${SegmentControlItemContent} {\r\n ${ComponentSStyling(ComponentTextStyle.Bold, null)}\r\n min-height: 32px;\r\n }\r\n }\r\n\r\n &.medium {\r\n ${SegmentControlItemContent} {\r\n ${ComponentMStyling(ComponentTextStyle.Bold, null)}\r\n min-height: 40px;\r\n }\r\n }\r\n`;\r\n\r\n\r\nexport interface SegmentControlItem extends Omit<React.HTMLAttributes<HTMLDivElement>, 'tabIndex' | 'content' | 'onMouseDown' | 'onKeyDown' | 'onClick'> {\r\n /**\r\n * Required. The key of the segment control item. This should be unique among all items in the segment control.\r\n */\r\n key: string;\r\n\r\n /**\r\n * Optional. A boolean indicating whether the segment control item is disabled.\r\n */\r\n disabled?: boolean;\r\n\r\n /**\r\n * Required. The content of the segment control item. This can be a string or a React node.\r\n */\r\n content: React.ReactNode | string;\r\n}\r\n\r\nexport interface SegmentControlProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\r\n /**\r\n * Required. An array of SegmentControlItem objects representing the items in the segment control.\r\n */\r\n items: SegmentControlItem[];\r\n\r\n /**\r\n * Optional. The key of the currently selected item in the segment control. In order to change selected item\r\n * when user clicks on it, you should update this prop to display item as 'selected'.\r\n */\r\n selected: string;\r\n\r\n /**\r\n * Required. A function to be called when the selected item in the segment control changes.\r\n * It should take a string representing the key of the new selected item.\r\n */\r\n onChange: (value: string) => void;\r\n\r\n /**\r\n * Optional. The size of the segment control. Can be 'Small' or 'Medium'.\r\n */\r\n size?: Size.Small | Size.Medium;\r\n}\r\n\r\nconst SegmentControl: React.FunctionComponent<SegmentControlProps> = ({\r\n items,\r\n size = Size.Medium,\r\n onChange,\r\n selected,\r\n className,\r\n ...rest\r\n }) => {\r\n const onKeyPress = (e: React.KeyboardEvent<HTMLDivElement>, item: SegmentControlItem) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n //@ts-ignore\r\n document?.activeElement?.blur();\r\n !item.disabled && onChange(item.key);\r\n }\r\n };\r\n\r\n const onClick = (e: React.MouseEvent, item: SegmentControlItem) => {\r\n !item.disabled && onChange(item.key);\r\n }\r\n\r\n return (\r\n <SegmentControlWrapper className={`${size} ${className || ''}`} {...rest}>\r\n {items.map((a, i) => {\r\n const {key, disabled, content, className, ...rest} = a;\r\n return <SegmentControlItemWrapper key={a.key || i}\r\n className={(className || '') + (a.disabled ? 'disabled' : '') + (a.key === selected ? ' selected' : '')}\r\n tabIndex={a.disabled || a.key === selected ? -1 : 0}\r\n onClick={a.disabled ? undefined : (e) => onClick(e, a)}\r\n onMouseDown={defaultOnMouseDownHandler}\r\n onKeyPress={a.disabled ? undefined : (e) => onKeyPress(e, a)}\r\n {...rest}>\r\n <SegmentControlItemBackground>\r\n <SegmentControlItemContent>\r\n {a.content}\r\n </SegmentControlItemContent>\r\n </SegmentControlItemBackground>\r\n </SegmentControlItemWrapper>;\r\n })\r\n }\r\n </SegmentControlWrapper>\r\n );\r\n};\r\n\r\nexport default SegmentControl;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SegmentControl.cjs","names":["_react","_interopRequireDefault","require","_types","_styledComponents","_styles","_common","_jsxRuntime","_excluded","_excluded2","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","SegmentControlItemContent","exports","styled","div","props","COLORS","generateToken","componentType","defaultVariant","theme","SegmentControlItemBackground","SegmentControlItemWrapper","focusStyles","Z_INDEXES","hover","state","active","isOnFill","SegmentControlWrapper","ComponentSStyling","ComponentTextStyle","Bold","ComponentMStyling","SegmentControl","_ref","items","size","Size","Medium","onChange","selected","className","rest","_objectWithoutProperties2","onKeyPress","item","key","document","activeElement","blur","disabled","onClick","jsx","children","map","a","i","content","tabIndex","undefined","onMouseDown","defaultOnMouseDownHandler","propTypes","_propTypes","arrayOf","shape","string","isRequired","bool","oneOfType","node","func","_default"],"sources":["../../src/SegmentControl/SegmentControl.tsx"],"sourcesContent":["import React from 'react';\r\nimport {Size} from '../types';\r\nimport styled from 'styled-components';\r\nimport {COLORS, ComponentMStyling, ComponentSStyling, ComponentTextStyle, focusStyles, Z_INDEXES} from '../styles';\r\nimport {defaultOnMouseDownHandler} from '../common';\r\n\r\n\r\nexport const SegmentControlItemContent = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n border-radius: 8px;\r\n padding: 0 16px;\r\n\r\n background-color: transparent;\r\n color: ${props => COLORS.generateToken({ componentType: 'text', defaultVariant: 'subtle' }, props.theme)};\r\n`\r\n\r\nexport const SegmentControlItemBackground = styled.div`\r\n flex: 1;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n background-color: ${props => COLORS.generateToken({ componentType: 'bg-surface', defaultVariant: 'subtle' }, props.theme)};\r\n padding: 4px 0px;\r\n`;\r\n\r\nexport const SegmentControlItemWrapper = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: center;\r\n flex: 1;\r\n cursor: pointer;\r\n min-height: 48px;\r\n\r\n &:focus {\r\n ${focusStyles}\r\n }\r\n\r\n &:hover {\r\n z-index: ${Z_INDEXES.hover};\r\n\r\n ${SegmentControlItemContent} {\r\n background-color: ${props => COLORS.generateToken({ componentType: 'bg-surface', state: 'hover' }, props.theme)};\r\n color: ${props => COLORS.generateToken({ componentType: 'text', state: 'hover' }, props.theme)};\r\n }\r\n }\r\n\r\n &:active {\r\n z-index: ${Z_INDEXES.active};\r\n\r\n ${SegmentControlItemContent} {\r\n background-color: ${props => COLORS.generateToken({ componentType: 'bg-surface', state: 'active' }, props.theme)};\r\n color: ${props => COLORS.generateToken({ componentType: 'text', state: 'active' }, props.theme)};\r\n }\r\n }\r\n\r\n &.disabled {\r\n cursor: not-allowed;\r\n\r\n ${SegmentControlItemContent} {\r\n background-color: transparent;\r\n color: ${props => COLORS.generateToken({ componentType: 'text', state: 'disabled' }, props.theme)};\r\n }\r\n }\r\n\r\n &.selected {\r\n cursor: default;\r\n pointer-events: none;\r\n\r\n ${SegmentControlItemContent} {\r\n background-color: ${props => COLORS.generateToken({ componentType: 'bg-fill', defaultVariant: 'primary' }, props.theme)};\r\n color: ${props => COLORS.generateToken({ componentType: 'text', isOnFill: true, defaultVariant: 'primary' }, props.theme)};\r\n }\r\n }\r\n\r\n &.selected.disabled {\r\n cursor: not-allowed;\r\n pointer-events: unset;\r\n \r\n ${SegmentControlItemContent} {\r\n background-color: ${props => COLORS.generateToken({ componentType: 'bg-fill', state: 'disabled'}, props.theme)};\r\n color: ${props => COLORS.generateToken({ componentType: 'text', isOnFill: true, state:'disabled' }, props.theme)};\r\n }\r\n }\r\n`;\r\n\r\nexport const SegmentControlWrapper = styled.div`\r\n width: 100%;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n\r\n ${SegmentControlItemWrapper}:first-of-type {\r\n ${SegmentControlItemBackground} {\r\n border-bottom-left-radius: 12px;\r\n border-top-left-radius: 12px;\r\n padding-left: 4px;\r\n }\r\n }\r\n\r\n ${SegmentControlItemWrapper}:last-of-type {\r\n ${SegmentControlItemBackground} {\r\n border-bottom-right-radius: 12px;\r\n border-top-right-radius: 12px;\r\n padding-right: 4px;\r\n }\r\n }\r\n\r\n\r\n &.small {\r\n ${SegmentControlItemContent} {\r\n ${ComponentSStyling(ComponentTextStyle.Bold, null)}\r\n min-height: 32px;\r\n }\r\n }\r\n\r\n &.medium {\r\n ${SegmentControlItemContent} {\r\n ${ComponentMStyling(ComponentTextStyle.Bold, null)}\r\n min-height: 40px;\r\n }\r\n }\r\n`;\r\n\r\n\r\nexport interface SegmentControlItem extends Omit<React.HTMLAttributes<HTMLDivElement>, 'tabIndex' | 'content' | 'onMouseDown' | 'onKeyDown' | 'onClick'> {\r\n /**\r\n * Required. The key of the segment control item. This should be unique among all items in the segment control.\r\n */\r\n key: string;\r\n\r\n /**\r\n * Optional. A boolean indicating whether the segment control item is disabled.\r\n */\r\n disabled?: boolean;\r\n\r\n /**\r\n * Required. The content of the segment control item. This can be a string or a React node.\r\n */\r\n content: React.ReactNode | string;\r\n}\r\n\r\nexport interface SegmentControlProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\r\n /**\r\n * Required. An array of SegmentControlItem objects representing the items in the segment control.\r\n */\r\n items: SegmentControlItem[];\r\n\r\n /**\r\n * Optional. The key of the currently selected item in the segment control. In order to change selected item\r\n * when user clicks on it, you should update this prop to display item as 'selected'.\r\n */\r\n selected: string;\r\n\r\n /**\r\n * Required. A function to be called when the selected item in the segment control changes.\r\n * It should take a string representing the key of the new selected item.\r\n */\r\n onChange: (value: string) => void;\r\n\r\n /**\r\n * Optional. The size of the segment control. Can be 'Small' or 'Medium'.\r\n */\r\n size?: Size.Small | Size.Medium;\r\n}\r\n\r\nconst SegmentControl: React.FunctionComponent<SegmentControlProps> = ({\r\n items,\r\n size = Size.Medium,\r\n onChange,\r\n selected,\r\n className,\r\n ...rest\r\n }) => {\r\n const onKeyPress = (e: React.KeyboardEvent<HTMLDivElement>, item: SegmentControlItem) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n //@ts-ignore\r\n document?.activeElement?.blur();\r\n !item.disabled && onChange(item.key);\r\n }\r\n };\r\n\r\n const onClick = (e: React.MouseEvent, item: SegmentControlItem) => {\r\n !item.disabled && onChange(item.key);\r\n }\r\n\r\n return (\r\n <SegmentControlWrapper className={`${size} ${className || ''}`} {...rest}>\r\n {items.map((a, i) => {\r\n const {key, disabled, content, className, ...rest} = a;\r\n return <SegmentControlItemWrapper key={a.key || i}\r\n className={(className || '') + (a.disabled ? 'disabled' : '') + (a.key === selected ? ' selected' : '')}\r\n tabIndex={a.disabled || a.key === selected ? -1 : 0}\r\n onClick={a.disabled ? undefined : (e) => onClick(e, a)}\r\n onMouseDown={defaultOnMouseDownHandler}\r\n onKeyPress={a.disabled ? undefined : (e) => onKeyPress(e, a)}\r\n {...rest}>\r\n <SegmentControlItemBackground>\r\n <SegmentControlItemContent>\r\n {a.content}\r\n </SegmentControlItemContent>\r\n </SegmentControlItemBackground>\r\n </SegmentControlItemWrapper>;\r\n })\r\n }\r\n </SegmentControlWrapper>\r\n );\r\n};\r\n\r\nexport default SegmentControl;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -20,14 +20,20 @@ export const SegmentControlItemContent = styled.div`
|
|
|
20
20
|
padding: 0 16px;
|
|
21
21
|
|
|
22
22
|
background-color: transparent;
|
|
23
|
-
color: ${props => COLORS.
|
|
23
|
+
color: ${props => COLORS.generateToken({
|
|
24
|
+
componentType: 'text',
|
|
25
|
+
defaultVariant: 'subtle'
|
|
26
|
+
}, props.theme)};
|
|
24
27
|
`;
|
|
25
28
|
export const SegmentControlItemBackground = styled.div`
|
|
26
29
|
flex: 1;
|
|
27
30
|
display: flex;
|
|
28
31
|
flex-direction: row;
|
|
29
32
|
align-items: center;
|
|
30
|
-
background-color: ${props => COLORS.
|
|
33
|
+
background-color: ${props => COLORS.generateToken({
|
|
34
|
+
componentType: 'bg-surface',
|
|
35
|
+
defaultVariant: 'subtle'
|
|
36
|
+
}, props.theme)};
|
|
31
37
|
padding: 4px 0px;
|
|
32
38
|
`;
|
|
33
39
|
export const SegmentControlItemWrapper = styled.div`
|
|
@@ -47,8 +53,14 @@ export const SegmentControlItemWrapper = styled.div`
|
|
|
47
53
|
z-index: ${Z_INDEXES.hover};
|
|
48
54
|
|
|
49
55
|
${SegmentControlItemContent} {
|
|
50
|
-
background-color: ${props => COLORS.
|
|
51
|
-
|
|
56
|
+
background-color: ${props => COLORS.generateToken({
|
|
57
|
+
componentType: 'bg-surface',
|
|
58
|
+
state: 'hover'
|
|
59
|
+
}, props.theme)};
|
|
60
|
+
color: ${props => COLORS.generateToken({
|
|
61
|
+
componentType: 'text',
|
|
62
|
+
state: 'hover'
|
|
63
|
+
}, props.theme)};
|
|
52
64
|
}
|
|
53
65
|
}
|
|
54
66
|
|
|
@@ -56,8 +68,14 @@ export const SegmentControlItemWrapper = styled.div`
|
|
|
56
68
|
z-index: ${Z_INDEXES.active};
|
|
57
69
|
|
|
58
70
|
${SegmentControlItemContent} {
|
|
59
|
-
background-color: ${props => COLORS.
|
|
60
|
-
|
|
71
|
+
background-color: ${props => COLORS.generateToken({
|
|
72
|
+
componentType: 'bg-surface',
|
|
73
|
+
state: 'active'
|
|
74
|
+
}, props.theme)};
|
|
75
|
+
color: ${props => COLORS.generateToken({
|
|
76
|
+
componentType: 'text',
|
|
77
|
+
state: 'active'
|
|
78
|
+
}, props.theme)};
|
|
61
79
|
}
|
|
62
80
|
}
|
|
63
81
|
|
|
@@ -66,7 +84,10 @@ export const SegmentControlItemWrapper = styled.div`
|
|
|
66
84
|
|
|
67
85
|
${SegmentControlItemContent} {
|
|
68
86
|
background-color: transparent;
|
|
69
|
-
color: ${props => COLORS.
|
|
87
|
+
color: ${props => COLORS.generateToken({
|
|
88
|
+
componentType: 'text',
|
|
89
|
+
state: 'disabled'
|
|
90
|
+
}, props.theme)};
|
|
70
91
|
}
|
|
71
92
|
}
|
|
72
93
|
|
|
@@ -75,8 +96,15 @@ export const SegmentControlItemWrapper = styled.div`
|
|
|
75
96
|
pointer-events: none;
|
|
76
97
|
|
|
77
98
|
${SegmentControlItemContent} {
|
|
78
|
-
background-color: ${props => COLORS.
|
|
79
|
-
|
|
99
|
+
background-color: ${props => COLORS.generateToken({
|
|
100
|
+
componentType: 'bg-fill',
|
|
101
|
+
defaultVariant: 'primary'
|
|
102
|
+
}, props.theme)};
|
|
103
|
+
color: ${props => COLORS.generateToken({
|
|
104
|
+
componentType: 'text',
|
|
105
|
+
isOnFill: true,
|
|
106
|
+
defaultVariant: 'primary'
|
|
107
|
+
}, props.theme)};
|
|
80
108
|
}
|
|
81
109
|
}
|
|
82
110
|
|
|
@@ -85,8 +113,15 @@ export const SegmentControlItemWrapper = styled.div`
|
|
|
85
113
|
pointer-events: unset;
|
|
86
114
|
|
|
87
115
|
${SegmentControlItemContent} {
|
|
88
|
-
background-color: ${props => COLORS.
|
|
89
|
-
|
|
116
|
+
background-color: ${props => COLORS.generateToken({
|
|
117
|
+
componentType: 'bg-fill',
|
|
118
|
+
state: 'disabled'
|
|
119
|
+
}, props.theme)};
|
|
120
|
+
color: ${props => COLORS.generateToken({
|
|
121
|
+
componentType: 'text',
|
|
122
|
+
isOnFill: true,
|
|
123
|
+
state: 'disabled'
|
|
124
|
+
}, props.theme)};
|
|
90
125
|
}
|
|
91
126
|
}
|
|
92
127
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentControl.js","names":["React","Size","styled","COLORS","ComponentMStyling","ComponentSStyling","ComponentTextStyle","focusStyles","Z_INDEXES","defaultOnMouseDownHandler","jsx","_jsx","SegmentControlItemContent","div","props","getColor","theme","SegmentControlItemBackground","SegmentControlItemWrapper","hover","active","SegmentControlWrapper","Bold","SegmentControl","_ref","items","size","Medium","onChange","selected","className","rest","_objectWithoutProperties","_excluded","onKeyPress","e","item","key","document","activeElement","blur","disabled","onClick","_objectSpread","children","map","a","i","content","_excluded2","tabIndex","undefined","onMouseDown","propTypes","_pt","arrayOf","shape","string","isRequired","bool","oneOfType","node","func"],"sources":["../../src/SegmentControl/SegmentControl.tsx"],"sourcesContent":["import React from 'react';\r\nimport {Size} from '../types';\r\nimport styled from 'styled-components';\r\nimport {COLORS, ComponentMStyling, ComponentSStyling, ComponentTextStyle, focusStyles, Z_INDEXES} from '../styles';\r\nimport {defaultOnMouseDownHandler} from '../common';\r\n\r\n\r\nexport const SegmentControlItemContent = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n border-radius: 8px;\r\n padding: 0 16px;\r\n\r\n background-color: transparent;\r\n color: ${props => COLORS.getColor('neutral_600', props.theme)};\r\n`\r\n\r\nexport const SegmentControlItemBackground = styled.div`\r\n flex: 1;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n background-color: ${props => COLORS.getColor('neutral_20', props.theme)};\r\n padding: 4px 0px;\r\n`;\r\n\r\nexport const SegmentControlItemWrapper = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: center;\r\n flex: 1;\r\n cursor: pointer;\r\n min-height: 48px;\r\n\r\n &:focus {\r\n ${focusStyles}\r\n }\r\n\r\n &:hover {\r\n z-index: ${Z_INDEXES.hover};\r\n\r\n ${SegmentControlItemContent} {\r\n background-color: ${props => COLORS.getColor('primary_100', props.theme)};\r\n color: ${props => COLORS.getColor('primary_700', props.theme)};\r\n }\r\n }\r\n\r\n &:active {\r\n z-index: ${Z_INDEXES.active};\r\n\r\n ${SegmentControlItemContent} {\r\n background-color: ${props => COLORS.getColor('primary_200', props.theme)};\r\n color: ${props => COLORS.getColor('primary_800', props.theme)};\r\n }\r\n }\r\n\r\n &.disabled {\r\n cursor: not-allowed;\r\n\r\n ${SegmentControlItemContent} {\r\n background-color: transparent;\r\n color: ${props => COLORS.getColor('neutral_300', props.theme)};\r\n }\r\n }\r\n\r\n &.selected {\r\n cursor: default;\r\n pointer-events: none;\r\n\r\n ${SegmentControlItemContent} {\r\n background-color: ${props => COLORS.getColor('primary_500', props.theme)};\r\n color: ${props => COLORS.getColor('white', props.theme)};\r\n }\r\n }\r\n\r\n &.selected.disabled {\r\n cursor: not-allowed;\r\n pointer-events: unset;\r\n \r\n ${SegmentControlItemContent} {\r\n background-color: ${props => COLORS.getColor('neutral_100', props.theme)};\r\n color: ${props => COLORS.getColor('neutral_300', props.theme)};\r\n }\r\n }\r\n`;\r\n\r\nexport const SegmentControlWrapper = styled.div`\r\n width: 100%;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n\r\n ${SegmentControlItemWrapper}:first-of-type {\r\n ${SegmentControlItemBackground} {\r\n border-bottom-left-radius: 12px;\r\n border-top-left-radius: 12px;\r\n padding-left: 4px;\r\n }\r\n }\r\n\r\n ${SegmentControlItemWrapper}:last-of-type {\r\n ${SegmentControlItemBackground} {\r\n border-bottom-right-radius: 12px;\r\n border-top-right-radius: 12px;\r\n padding-right: 4px;\r\n }\r\n }\r\n\r\n\r\n &.small {\r\n ${SegmentControlItemContent} {\r\n ${ComponentSStyling(ComponentTextStyle.Bold, null)}\r\n min-height: 32px;\r\n }\r\n }\r\n\r\n &.medium {\r\n ${SegmentControlItemContent} {\r\n ${ComponentMStyling(ComponentTextStyle.Bold, null)}\r\n min-height: 40px;\r\n }\r\n }\r\n`;\r\n\r\n\r\nexport interface SegmentControlItem extends Omit<React.HTMLAttributes<HTMLDivElement>, 'tabIndex' | 'content' | 'onMouseDown' | 'onKeyDown' | 'onClick'> {\r\n /**\r\n * Required. The key of the segment control item. This should be unique among all items in the segment control.\r\n */\r\n key: string;\r\n\r\n /**\r\n * Optional. A boolean indicating whether the segment control item is disabled.\r\n */\r\n disabled?: boolean;\r\n\r\n /**\r\n * Required. The content of the segment control item. This can be a string or a React node.\r\n */\r\n content: React.ReactNode | string;\r\n}\r\n\r\nexport interface SegmentControlProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\r\n /**\r\n * Required. An array of SegmentControlItem objects representing the items in the segment control.\r\n */\r\n items: SegmentControlItem[];\r\n\r\n /**\r\n * Optional. The key of the currently selected item in the segment control. In order to change selected item\r\n * when user clicks on it, you should update this prop to display item as 'selected'.\r\n */\r\n selected: string;\r\n\r\n /**\r\n * Required. A function to be called when the selected item in the segment control changes.\r\n * It should take a string representing the key of the new selected item.\r\n */\r\n onChange: (value: string) => void;\r\n\r\n /**\r\n * Optional. The size of the segment control. Can be 'Small' or 'Medium'.\r\n */\r\n size?: Size.Small | Size.Medium;\r\n}\r\n\r\nconst SegmentControl: React.FunctionComponent<SegmentControlProps> = ({\r\n items,\r\n size = Size.Medium,\r\n onChange,\r\n selected,\r\n className,\r\n ...rest\r\n }) => {\r\n const onKeyPress = (e: React.KeyboardEvent<HTMLDivElement>, item: SegmentControlItem) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n //@ts-ignore\r\n document?.activeElement?.blur();\r\n !item.disabled && onChange(item.key);\r\n }\r\n };\r\n\r\n const onClick = (e: React.MouseEvent, item: SegmentControlItem) => {\r\n !item.disabled && onChange(item.key);\r\n }\r\n\r\n return (\r\n <SegmentControlWrapper className={`${size} ${className || ''}`} {...rest}>\r\n {items.map((a, i) => {\r\n const {key, disabled, content, className, ...rest} = a;\r\n return <SegmentControlItemWrapper key={a.key || i}\r\n className={(className || '') + (a.disabled ? 'disabled' : '') + (a.key === selected ? ' selected' : '')}\r\n tabIndex={a.disabled || a.key === selected ? -1 : 0}\r\n onClick={a.disabled ? undefined : (e) => onClick(e, a)}\r\n onMouseDown={defaultOnMouseDownHandler}\r\n onKeyPress={a.disabled ? undefined : (e) => onKeyPress(e, a)}\r\n {...rest}>\r\n <SegmentControlItemBackground>\r\n <SegmentControlItemContent>\r\n {a.content}\r\n </SegmentControlItemContent>\r\n </SegmentControlItemBackground>\r\n </SegmentControlItemWrapper>;\r\n })\r\n }\r\n </SegmentControlWrapper>\r\n );\r\n};\r\n\r\nexport default SegmentControl;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SegmentControl.js","names":["React","Size","styled","COLORS","ComponentMStyling","ComponentSStyling","ComponentTextStyle","focusStyles","Z_INDEXES","defaultOnMouseDownHandler","jsx","_jsx","SegmentControlItemContent","div","props","generateToken","componentType","defaultVariant","theme","SegmentControlItemBackground","SegmentControlItemWrapper","hover","state","active","isOnFill","SegmentControlWrapper","Bold","SegmentControl","_ref","items","size","Medium","onChange","selected","className","rest","_objectWithoutProperties","_excluded","onKeyPress","e","item","key","document","activeElement","blur","disabled","onClick","_objectSpread","children","map","a","i","content","_excluded2","tabIndex","undefined","onMouseDown","propTypes","_pt","arrayOf","shape","string","isRequired","bool","oneOfType","node","func"],"sources":["../../src/SegmentControl/SegmentControl.tsx"],"sourcesContent":["import React from 'react';\r\nimport {Size} from '../types';\r\nimport styled from 'styled-components';\r\nimport {COLORS, ComponentMStyling, ComponentSStyling, ComponentTextStyle, focusStyles, Z_INDEXES} from '../styles';\r\nimport {defaultOnMouseDownHandler} from '../common';\r\n\r\n\r\nexport const SegmentControlItemContent = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n border-radius: 8px;\r\n padding: 0 16px;\r\n\r\n background-color: transparent;\r\n color: ${props => COLORS.generateToken({ componentType: 'text', defaultVariant: 'subtle' }, props.theme)};\r\n`\r\n\r\nexport const SegmentControlItemBackground = styled.div`\r\n flex: 1;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n background-color: ${props => COLORS.generateToken({ componentType: 'bg-surface', defaultVariant: 'subtle' }, props.theme)};\r\n padding: 4px 0px;\r\n`;\r\n\r\nexport const SegmentControlItemWrapper = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: center;\r\n flex: 1;\r\n cursor: pointer;\r\n min-height: 48px;\r\n\r\n &:focus {\r\n ${focusStyles}\r\n }\r\n\r\n &:hover {\r\n z-index: ${Z_INDEXES.hover};\r\n\r\n ${SegmentControlItemContent} {\r\n background-color: ${props => COLORS.generateToken({ componentType: 'bg-surface', state: 'hover' }, props.theme)};\r\n color: ${props => COLORS.generateToken({ componentType: 'text', state: 'hover' }, props.theme)};\r\n }\r\n }\r\n\r\n &:active {\r\n z-index: ${Z_INDEXES.active};\r\n\r\n ${SegmentControlItemContent} {\r\n background-color: ${props => COLORS.generateToken({ componentType: 'bg-surface', state: 'active' }, props.theme)};\r\n color: ${props => COLORS.generateToken({ componentType: 'text', state: 'active' }, props.theme)};\r\n }\r\n }\r\n\r\n &.disabled {\r\n cursor: not-allowed;\r\n\r\n ${SegmentControlItemContent} {\r\n background-color: transparent;\r\n color: ${props => COLORS.generateToken({ componentType: 'text', state: 'disabled' }, props.theme)};\r\n }\r\n }\r\n\r\n &.selected {\r\n cursor: default;\r\n pointer-events: none;\r\n\r\n ${SegmentControlItemContent} {\r\n background-color: ${props => COLORS.generateToken({ componentType: 'bg-fill', defaultVariant: 'primary' }, props.theme)};\r\n color: ${props => COLORS.generateToken({ componentType: 'text', isOnFill: true, defaultVariant: 'primary' }, props.theme)};\r\n }\r\n }\r\n\r\n &.selected.disabled {\r\n cursor: not-allowed;\r\n pointer-events: unset;\r\n \r\n ${SegmentControlItemContent} {\r\n background-color: ${props => COLORS.generateToken({ componentType: 'bg-fill', state: 'disabled'}, props.theme)};\r\n color: ${props => COLORS.generateToken({ componentType: 'text', isOnFill: true, state:'disabled' }, props.theme)};\r\n }\r\n }\r\n`;\r\n\r\nexport const SegmentControlWrapper = styled.div`\r\n width: 100%;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n\r\n ${SegmentControlItemWrapper}:first-of-type {\r\n ${SegmentControlItemBackground} {\r\n border-bottom-left-radius: 12px;\r\n border-top-left-radius: 12px;\r\n padding-left: 4px;\r\n }\r\n }\r\n\r\n ${SegmentControlItemWrapper}:last-of-type {\r\n ${SegmentControlItemBackground} {\r\n border-bottom-right-radius: 12px;\r\n border-top-right-radius: 12px;\r\n padding-right: 4px;\r\n }\r\n }\r\n\r\n\r\n &.small {\r\n ${SegmentControlItemContent} {\r\n ${ComponentSStyling(ComponentTextStyle.Bold, null)}\r\n min-height: 32px;\r\n }\r\n }\r\n\r\n &.medium {\r\n ${SegmentControlItemContent} {\r\n ${ComponentMStyling(ComponentTextStyle.Bold, null)}\r\n min-height: 40px;\r\n }\r\n }\r\n`;\r\n\r\n\r\nexport interface SegmentControlItem extends Omit<React.HTMLAttributes<HTMLDivElement>, 'tabIndex' | 'content' | 'onMouseDown' | 'onKeyDown' | 'onClick'> {\r\n /**\r\n * Required. The key of the segment control item. This should be unique among all items in the segment control.\r\n */\r\n key: string;\r\n\r\n /**\r\n * Optional. A boolean indicating whether the segment control item is disabled.\r\n */\r\n disabled?: boolean;\r\n\r\n /**\r\n * Required. The content of the segment control item. This can be a string or a React node.\r\n */\r\n content: React.ReactNode | string;\r\n}\r\n\r\nexport interface SegmentControlProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\r\n /**\r\n * Required. An array of SegmentControlItem objects representing the items in the segment control.\r\n */\r\n items: SegmentControlItem[];\r\n\r\n /**\r\n * Optional. The key of the currently selected item in the segment control. In order to change selected item\r\n * when user clicks on it, you should update this prop to display item as 'selected'.\r\n */\r\n selected: string;\r\n\r\n /**\r\n * Required. A function to be called when the selected item in the segment control changes.\r\n * It should take a string representing the key of the new selected item.\r\n */\r\n onChange: (value: string) => void;\r\n\r\n /**\r\n * Optional. The size of the segment control. Can be 'Small' or 'Medium'.\r\n */\r\n size?: Size.Small | Size.Medium;\r\n}\r\n\r\nconst SegmentControl: React.FunctionComponent<SegmentControlProps> = ({\r\n items,\r\n size = Size.Medium,\r\n onChange,\r\n selected,\r\n className,\r\n ...rest\r\n }) => {\r\n const onKeyPress = (e: React.KeyboardEvent<HTMLDivElement>, item: SegmentControlItem) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n //@ts-ignore\r\n document?.activeElement?.blur();\r\n !item.disabled && onChange(item.key);\r\n }\r\n };\r\n\r\n const onClick = (e: React.MouseEvent, item: SegmentControlItem) => {\r\n !item.disabled && onChange(item.key);\r\n }\r\n\r\n return (\r\n <SegmentControlWrapper className={`${size} ${className || ''}`} {...rest}>\r\n {items.map((a, i) => {\r\n const {key, disabled, content, className, ...rest} = a;\r\n return <SegmentControlItemWrapper key={a.key || i}\r\n className={(className || '') + (a.disabled ? 'disabled' : '') + (a.key === selected ? ' selected' : '')}\r\n tabIndex={a.disabled || a.key === selected ? -1 : 0}\r\n onClick={a.disabled ? undefined : (e) => onClick(e, a)}\r\n onMouseDown={defaultOnMouseDownHandler}\r\n onKeyPress={a.disabled ? undefined : (e) => onKeyPress(e, a)}\r\n {...rest}>\r\n <SegmentControlItemBackground>\r\n <SegmentControlItemContent>\r\n {a.content}\r\n </SegmentControlItemContent>\r\n </SegmentControlItemBackground>\r\n </SegmentControlItemWrapper>;\r\n })\r\n }\r\n </SegmentControlWrapper>\r\n );\r\n};\r\n\r\nexport default SegmentControl;\r\n"],"mappings":";;;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAQC,IAAI,QAAO,UAAU;AAC7B,OAAOC,MAAM,MAAM,mBAAmB;AACtC,SAAQC,MAAM,EAAEC,iBAAiB,EAAEC,iBAAiB,EAAEC,kBAAkB,EAAEC,WAAW,EAAEC,SAAS,QAAO,WAAW;AAClH,SAAQC,yBAAyB,QAAO,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGpD,OAAO,MAAMC,yBAAyB,GAAGV,MAAM,CAACW,GAAG;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAWC,KAAK,IAAIX,MAAM,CAACY,aAAa,CAAC;EAAEC,aAAa,EAAE,MAAM;EAAEC,cAAc,EAAE;AAAS,CAAC,EAAEH,KAAK,CAACI,KAAK,CAAC;AAC1G,CAAC;AAED,OAAO,MAAMC,4BAA4B,GAAGjB,MAAM,CAACW,GAAG;AACtD;AACA;AACA;AACA;AACA,sBAAsBC,KAAK,IAAIX,MAAM,CAACY,aAAa,CAAC;EAAEC,aAAa,EAAE,YAAY;EAAEC,cAAc,EAAE;AAAS,CAAC,EAAEH,KAAK,CAACI,KAAK,CAAC;AAC3H;AACA,CAAC;AAED,OAAO,MAAME,yBAAyB,GAAGlB,MAAM,CAACW,GAAG;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMN,WAAW;AACjB;AACA;AACA;AACA,eAAeC,SAAS,CAACa,KAAK;AAC9B;AACA,MAAMT,yBAAyB;AAC/B,0BAA0BE,KAAK,IAAIX,MAAM,CAACY,aAAa,CAAC;EAAEC,aAAa,EAAE,YAAY;EAAEM,KAAK,EAAE;AAAQ,CAAC,EAAER,KAAK,CAACI,KAAK,CAAC;AACrH,eAAeJ,KAAK,IAAIX,MAAM,CAACY,aAAa,CAAC;EAAEC,aAAa,EAAE,MAAM;EAAEM,KAAK,EAAE;AAAQ,CAAC,EAAER,KAAK,CAACI,KAAK,CAAC;AACpG;AACA;AACA;AACA;AACA,eAAeV,SAAS,CAACe,MAAM;AAC/B;AACA,MAAMX,yBAAyB;AAC/B,0BAA0BE,KAAK,IAAIX,MAAM,CAACY,aAAa,CAAC;EAAEC,aAAa,EAAE,YAAY;EAAEM,KAAK,EAAE;AAAS,CAAC,EAAER,KAAK,CAACI,KAAK,CAAC;AACtH,eAAeJ,KAAK,IAAIX,MAAM,CAACY,aAAa,CAAC;EAAEC,aAAa,EAAE,MAAM;EAAEM,KAAK,EAAE;AAAS,CAAC,EAAER,KAAK,CAACI,KAAK,CAAC;AACrG;AACA;AACA;AACA;AACA;AACA;AACA,MAAMN,yBAAyB;AAC/B;AACA,eAAeE,KAAK,IAAIX,MAAM,CAACY,aAAa,CAAC;EAAEC,aAAa,EAAE,MAAM;EAAEM,KAAK,EAAE;AAAW,CAAC,EAAER,KAAK,CAACI,KAAK,CAAC;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMN,yBAAyB;AAC/B,0BAA0BE,KAAK,IAAIX,MAAM,CAACY,aAAa,CAAC;EAAEC,aAAa,EAAE,SAAS;EAAEC,cAAc,EAAE;AAAU,CAAC,EAAEH,KAAK,CAACI,KAAK,CAAC;AAC7H,eAAeJ,KAAK,IAAIX,MAAM,CAACY,aAAa,CAAC;EAAEC,aAAa,EAAE,MAAM;EAAEQ,QAAQ,EAAE,IAAI;EAAEP,cAAc,EAAE;AAAU,CAAC,EAAEH,KAAK,CAACI,KAAK,CAAC;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMN,yBAAyB;AAC/B,0BAA0BE,KAAK,IAAIX,MAAM,CAACY,aAAa,CAAC;EAAEC,aAAa,EAAE,SAAS;EAAEM,KAAK,EAAE;AAAU,CAAC,EAAER,KAAK,CAACI,KAAK,CAAC;AACpH,eAAeJ,KAAK,IAAIX,MAAM,CAACY,aAAa,CAAC;EAAEC,aAAa,EAAE,MAAM;EAAEQ,QAAQ,EAAE,IAAI;EAAEF,KAAK,EAAC;AAAW,CAAC,EAAER,KAAK,CAACI,KAAK,CAAC;AACtH;AACA;AACA,CAAC;AAED,OAAO,MAAMO,qBAAqB,GAAGvB,MAAM,CAACW,GAAG;AAC/C;AACA;AACA;AACA;AACA;AACA,IAAIO,yBAAyB;AAC7B,MAAMD,4BAA4B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,IAAIC,yBAAyB;AAC7B,MAAMD,4BAA4B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMP,yBAAyB;AAC/B,QAAQP,iBAAiB,CAACC,kBAAkB,CAACoB,IAAI,EAAE,IAAI,CAAC;AACxD;AACA;AACA;AACA;AACA;AACA,MAAMd,yBAAyB;AAC/B,QAAQR,iBAAiB,CAACE,kBAAkB,CAACoB,IAAI,EAAE,IAAI,CAAC;AACxD;AACA;AACA;AACA,CAAC;AA4CD,MAAMC,cAA4D,GAAGC,IAAA,IAOO;EAAA,IAPN;MACEC,KAAK;MACLC,IAAI,GAAG7B,IAAI,CAAC8B,MAAM;MAClBC,QAAQ;MACRC,QAAQ;MACRC;IAEF,CAAC,GAAAN,IAAA;IADIO,IAAI,GAAAC,wBAAA,CAAAR,IAAA,EAAAS,SAAA;EAE7E,MAAMC,UAAU,GAAGA,CAACC,CAAsC,EAAEC,IAAwB,KAAK;IACvF,IAAID,CAAC,CAACE,GAAG,KAAK,OAAO,IAAIF,CAAC,CAACE,GAAG,KAAK,GAAG,EAAE;MACtC;MACAC,QAAQ,EAAEC,aAAa,EAAEC,IAAI,CAAC,CAAC;MAC/B,CAACJ,IAAI,CAACK,QAAQ,IAAIb,QAAQ,CAACQ,IAAI,CAACC,GAAG,CAAC;IACtC;EACF,CAAC;EAED,MAAMK,OAAO,GAAGA,CAACP,CAAmB,EAAEC,IAAwB,KAAK;IACjE,CAACA,IAAI,CAACK,QAAQ,IAAIb,QAAQ,CAACQ,IAAI,CAACC,GAAG,CAAC;EACtC,CAAC;EAED,oBACE9B,IAAA,CAACc,qBAAqB,EAAAsB,aAAA,CAAAA,aAAA;IAACb,SAAS,EAAE,GAAGJ,IAAI,IAAII,SAAS,IAAI,EAAE;EAAG,GAAKC,IAAI;IAAAa,QAAA,EACrEnB,KAAK,CAACoB,GAAG,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAK;MACnB,MAAM;UAACV,GAAG;UAAEI,QAAQ;UAAEO,OAAO;UAAElB;QAAkB,CAAC,GAAGgB,CAAC;QAATf,IAAI,GAAAC,wBAAA,CAAIc,CAAC,EAAAG,UAAA;MACtD,oBAAO1C,IAAA,CAACS,yBAAyB,EAAA2B,aAAA,CAAAA,aAAA;QACCb,SAAS,EAAE,CAACA,SAAS,IAAI,EAAE,KAAKgB,CAAC,CAACL,QAAQ,GAAG,UAAU,GAAG,EAAE,CAAC,IAAIK,CAAC,CAACT,GAAG,KAAKR,QAAQ,GAAG,WAAW,GAAG,EAAE,CAAE;QACxGqB,QAAQ,EAAEJ,CAAC,CAACL,QAAQ,IAAIK,CAAC,CAACT,GAAG,KAAKR,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAE;QACpDa,OAAO,EAAEI,CAAC,CAACL,QAAQ,GAAGU,SAAS,GAAIhB,CAAC,IAAKO,OAAO,CAACP,CAAC,EAAEW,CAAC,CAAE;QACvDM,WAAW,EAAE/C,yBAA0B;QACvC6B,UAAU,EAAEY,CAAC,CAACL,QAAQ,GAAGU,SAAS,GAAIhB,CAAC,IAAKD,UAAU,CAACC,CAAC,EAAEW,CAAC;MAAE,GACzDf,IAAI;QAAAa,QAAA,eACxCrC,IAAA,CAACQ,4BAA4B;UAAA6B,QAAA,eAC3BrC,IAAA,CAACC,yBAAyB;YAAAoC,QAAA,EACvBE,CAAC,CAACE;UAAO,CACe;QAAC,CACA;MAAC,IAXMF,CAAC,CAACT,GAAG,IAAIU,CAYrB,CAAC;IAC9B,CAAC;EAAC,EAEmB,CAAC;AAE5B,CAAC;AAACxB,cAAA,CAAA8B,SAAA;EA7DA5B,KAAK,EAAA6B,GAAA,CAAAC,OAAA,CAAAD,GAAA,CAAAE,KAAA;IAjBLnB,GAAG,EAAAiB,GAAA,CAAAG,MAAA,CAAAC,UAAA;IAKHjB,QAAQ,EAAAa,GAAA,CAAAK,IAAA;IAKRX,OAAO,EAAAM,GAAA,CAAAM,SAAA,EAAAN,GAAA,CAAAO,IAAA,EAAAP,GAAA,CAAAG,MAAA,GAAAC;EAAA,IAAAA,UAAA;EAaP7B,QAAQ,EAAAyB,GAAA,CAAAG,MAAA,CAAAC,UAAA;EAMR9B,QAAQ,EAAA0B,GAAA,CAAAQ,IAAA,CAAAJ;AAAA;AAmDV,eAAenC,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {SegmentControlItemWrapper, SegmentControlWrapper} from '../SegmentControl';
|
|
3
|
+
import {render} from '../../test-utils';
|
|
4
|
+
import {SegmentControl} from '../index';
|
|
5
|
+
import {SystemIcons} from '../../icons';
|
|
6
|
+
import {fireEvent} from '@testing-library/react';
|
|
7
|
+
import { act } from "react";
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
describe('SegmentControl', () => {
|
|
13
|
+
|
|
14
|
+
const items = [
|
|
15
|
+
{key: 'item1', content: 'Item 1', disabled: false,},
|
|
16
|
+
{key: 'item2', content: 'Item 2', disabled: false,},
|
|
17
|
+
{key: 'item3', content: 'Item 3', disabled: false,},
|
|
18
|
+
{key: 'item4', content: 'Item 4', disabled: false,},
|
|
19
|
+
{key: 'item5', content: 'Item 5', disabled: false,},
|
|
20
|
+
{key: 'item6', content: 'Item 6', disabled: true,}
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const icons = [
|
|
24
|
+
{key: 'icon1', content: <SystemIcons.Legend3Star size={'20'}/>, disabled: false,},
|
|
25
|
+
{key: 'icon2', content: <SystemIcons.Legend4Square size={'20'}/>, disabled: false,},
|
|
26
|
+
{key: 'icon3', content: <SystemIcons.Legend5Diamond size={'20'}/>, disabled: false,},
|
|
27
|
+
{key: 'icon4', content: <SystemIcons.Legend6Nabla size={'20'}/>, disabled: false,},
|
|
28
|
+
{key: 'icon5', content: <SystemIcons.Legend7Pentagon size={'20'}/>, disabled: false,},
|
|
29
|
+
{key: 'icon6', content: <SystemIcons.Legend8Rectangle size={'20'}/>, disabled: true,}
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
it('should render a segment control with items', () => {
|
|
33
|
+
const wrapper = render(
|
|
34
|
+
<SegmentControl items={items}
|
|
35
|
+
selected={items[0].key}
|
|
36
|
+
onChange={jest.fn()}/>
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
expect(wrapper.container.querySelectorAll(`${SegmentControlWrapper}`)).toHaveLength(1);
|
|
40
|
+
expect(wrapper.container.querySelectorAll(`${SegmentControlItemWrapper}`)).toHaveLength(6);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it('should render items with correct labels', () => {
|
|
44
|
+
const wrapper = render(
|
|
45
|
+
<SegmentControl items={items}
|
|
46
|
+
selected={items[0].key}
|
|
47
|
+
onChange={jest.fn()}/>
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
for (let item of items) {
|
|
51
|
+
expect(wrapper.getByText(item.content)).toBeTruthy();
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('should render items with icons', () => {
|
|
56
|
+
const wrapper = render(
|
|
57
|
+
<SegmentControl items={icons}
|
|
58
|
+
selected={icons[0].key}
|
|
59
|
+
onChange={jest.fn()}/>
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
expect(wrapper.container.querySelectorAll(`${SegmentControlWrapper}`)).toHaveLength(1);
|
|
63
|
+
expect(wrapper.container.querySelectorAll(`${SegmentControlItemWrapper}`)).toHaveLength(6);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it('should render correct item as selected', () => {
|
|
67
|
+
const wrapper = render(
|
|
68
|
+
<SegmentControl items={items}
|
|
69
|
+
selected={items[2].key}
|
|
70
|
+
onChange={jest.fn()}/>
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
expect(wrapper.container.querySelectorAll(`${SegmentControlItemWrapper}.selected`)).toHaveLength(1);
|
|
74
|
+
expect(wrapper.container.querySelectorAll(`${SegmentControlItemWrapper}`)[2].classList).toContain('selected');
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it('should render correct item as disabled', () => {
|
|
78
|
+
const wrapper = render(
|
|
79
|
+
<SegmentControl items={items}
|
|
80
|
+
selected={items[2].key}
|
|
81
|
+
onChange={jest.fn()}/>
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
expect(wrapper.container.querySelectorAll(`${SegmentControlItemWrapper}.disabled`)).toHaveLength(1);
|
|
85
|
+
expect(wrapper.container.querySelectorAll(`${SegmentControlItemWrapper}`)[5].classList).toContain('disabled');
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it('should call on change function on item click', () => {
|
|
89
|
+
const onChange = jest.fn();
|
|
90
|
+
const wrapper = render(
|
|
91
|
+
<SegmentControl items={items}
|
|
92
|
+
selected={items[2].key}
|
|
93
|
+
onChange={onChange}/>
|
|
94
|
+
);
|
|
95
|
+
act(() => {
|
|
96
|
+
wrapper.getByText(items[0].content).dispatchEvent(new MouseEvent('click', {bubbles: true}));
|
|
97
|
+
})
|
|
98
|
+
expect(onChange).toHaveBeenCalledTimes(1);
|
|
99
|
+
expect(onChange).toHaveBeenCalledWith(items[0].key);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it('should call on change function on item key press', () => {
|
|
103
|
+
const onChange = jest.fn();
|
|
104
|
+
const wrapper = render(
|
|
105
|
+
<SegmentControl items={items}
|
|
106
|
+
selected={items[2].key}
|
|
107
|
+
onChange={onChange}/>
|
|
108
|
+
);
|
|
109
|
+
act(() => {
|
|
110
|
+
fireEvent.keyPress(wrapper.getByText(items[0].content), {key: 'Enter', keyCode: 13, which: 13});
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
expect(onChange).toHaveBeenCalledTimes(1);
|
|
114
|
+
expect(onChange).toHaveBeenCalledWith(items[0].key);
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
it('should not call on change function on disabled item click', () => {
|
|
118
|
+
const onChange = jest.fn();
|
|
119
|
+
const wrapper = render(
|
|
120
|
+
<SegmentControl items={items}
|
|
121
|
+
selected={items[2].key}
|
|
122
|
+
onChange={onChange}/>
|
|
123
|
+
);
|
|
124
|
+
act(() => {
|
|
125
|
+
wrapper.getByText(items[5].content).dispatchEvent(new MouseEvent('click', {bubbles: true}));
|
|
126
|
+
})
|
|
127
|
+
expect(onChange).toHaveBeenCalledTimes(0);
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
it('should not call on change function on disabled item key press', () => {
|
|
131
|
+
const onChange = jest.fn();
|
|
132
|
+
const wrapper = render(
|
|
133
|
+
<SegmentControl items={items}
|
|
134
|
+
selected={items[2].key}
|
|
135
|
+
onChange={onChange}/>
|
|
136
|
+
);
|
|
137
|
+
act(() => {
|
|
138
|
+
fireEvent.keyPress(wrapper.getByText(items[5].content), {key: 'Enter', keyCode: 13, which: 13});
|
|
139
|
+
})
|
|
140
|
+
|
|
141
|
+
expect(onChange).toHaveBeenCalledTimes(0);
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
});
|
|
@@ -37,15 +37,24 @@ const LabelContainer = _styledComponents.default.div`
|
|
|
37
37
|
margin-left: 8px;
|
|
38
38
|
|
|
39
39
|
.small & {
|
|
40
|
-
${props => (0, _styles.ComponentSStyling)(_styles.ComponentTextStyle.Bold, _styles.COLORS.
|
|
40
|
+
${props => (0, _styles.ComponentSStyling)(_styles.ComponentTextStyle.Bold, _styles.COLORS.generateToken({
|
|
41
|
+
componentType: 'text',
|
|
42
|
+
defaultVariant: 'subtle'
|
|
43
|
+
}, props.theme))}
|
|
41
44
|
}
|
|
42
45
|
|
|
43
46
|
.medium & {
|
|
44
|
-
${props => (0, _styles.ComponentMStyling)(_styles.ComponentTextStyle.Bold, _styles.COLORS.
|
|
47
|
+
${props => (0, _styles.ComponentMStyling)(_styles.ComponentTextStyle.Bold, _styles.COLORS.generateToken({
|
|
48
|
+
componentType: 'text',
|
|
49
|
+
defaultVariant: 'subtle'
|
|
50
|
+
}, props.theme))}
|
|
45
51
|
}
|
|
46
52
|
|
|
47
53
|
.large & {
|
|
48
|
-
${props => (0, _styles.ComponentLStyling)(_styles.ComponentTextStyle.Bold, _styles.COLORS.
|
|
54
|
+
${props => (0, _styles.ComponentLStyling)(_styles.ComponentTextStyle.Bold, _styles.COLORS.generateToken({
|
|
55
|
+
componentType: 'text',
|
|
56
|
+
defaultVariant: 'subtle'
|
|
57
|
+
}, props.theme))}
|
|
49
58
|
}
|
|
50
59
|
`;
|
|
51
60
|
const SideMenuHeader = props => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideMenuHeader.cjs","names":["_react","_interopRequireDefault","require","_styledComponents","_styles","_Button","_icons","_jsxRuntime","_excluded","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","Wrapper","styled","div","LabelContainer","props","ComponentSStyling","ComponentTextStyle","Bold","COLORS","
|
|
1
|
+
{"version":3,"file":"SideMenuHeader.cjs","names":["_react","_interopRequireDefault","require","_styledComponents","_styles","_Button","_icons","_jsxRuntime","_excluded","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","Wrapper","styled","div","LabelContainer","props","ComponentSStyling","ComponentTextStyle","Bold","COLORS","generateToken","componentType","defaultVariant","theme","ComponentMStyling","ComponentLStyling","SideMenuHeader","jsxs","children","header","actions","map","_ref","index","icon","rest","_objectWithoutProperties2","jsx","IconButton","variant","shape","label","action","onClose","style","marginLeft","SystemIcons","Close","exports"],"sources":["../../src/SideMenu/SideMenuHeader.tsx"],"sourcesContent":["import React from 'react';\r\nimport {SideMenuProps} from './types';\r\nimport styled from 'styled-components';\r\nimport {COLORS, ComponentLStyling, ComponentMStyling, ComponentSStyling, ComponentTextStyle} from '../styles';\r\nimport {IconButton} from '../Button';\r\nimport {SystemIcons} from '../icons';\r\n\r\nconst Wrapper = styled.div`\r\n display: flex;\r\n align-items: center;\r\n padding: 0 8px;\r\n\r\n .small & {\r\n min-height: 48px;\r\n }\r\n\r\n .medium & {\r\n min-height: 56px;\r\n }\r\n\r\n .large & {\r\n min-height: 64px;\r\n }\r\n`;\r\n\r\nconst LabelContainer = styled.div`\r\n margin-left: 8px;\r\n\r\n .small & {\r\n ${props => ComponentSStyling(ComponentTextStyle.Bold, COLORS.generateToken({componentType:'text',defaultVariant:'subtle'}, props.theme))}\r\n }\r\n\r\n .medium & {\r\n ${props => ComponentMStyling(ComponentTextStyle.Bold, COLORS.generateToken({componentType:'text',defaultVariant:'subtle'}, props.theme))}\r\n }\r\n\r\n .large & {\r\n ${props => ComponentLStyling(ComponentTextStyle.Bold, COLORS.generateToken({componentType:'text',defaultVariant:'subtle'}, props.theme))}\r\n }\r\n`;\r\n\r\nexport const SideMenuHeader = (props: SideMenuProps) => {\r\n\r\n return (\r\n <Wrapper>\r\n {\r\n props.header?.actions?.map(({icon, ...rest}, index) =>\r\n <IconButton key={index} variant={'secondary'} shape={'circular'} {...rest}>\r\n {icon}\r\n </IconButton>\r\n )\r\n }\r\n {\r\n props.header?.label &&\r\n <LabelContainer>\r\n {props.header.label}\r\n </LabelContainer>\r\n }\r\n <IconButton action={props.onClose} variant={'secondary'} shape={'circular'} style={{marginLeft: 'auto'}}>\r\n <SystemIcons.Close/>\r\n </IconButton>\r\n </Wrapper>\r\n )\r\n};\r\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,iBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAAqC,IAAAK,WAAA,GAAAL,OAAA;AAAA,MAAAM,SAAA;AAAA,SAAAC,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,CAAAC,OAAA,EAAAjB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAe,yBAAA,GAAAf,MAAA,CAAAgB,gBAAA,CAAAnB,CAAA,EAAAG,MAAA,CAAAe,yBAAA,CAAAhB,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAiB,cAAA,CAAApB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAErC,MAAMqB,OAAO,GAAGC,yBAAM,CAACC,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMC,cAAc,GAAGF,yBAAM,CAACC,GAAG;AACjC;AACA;AACA;AACA,MAAME,KAAK,IAAI,IAAAC,yBAAiB,EAACC,0BAAkB,CAACC,IAAI,EAAEC,cAAM,CAACC,aAAa,CAAC;EAACC,aAAa,EAAC,MAAM;EAACC,cAAc,EAAC;AAAQ,CAAC,EAAEP,KAAK,CAACQ,KAAK,CAAC,CAAC;AAC5I;AACA;AACA;AACA,MAAMR,KAAK,IAAI,IAAAS,yBAAiB,EAACP,0BAAkB,CAACC,IAAI,EAAEC,cAAM,CAACC,aAAa,CAAC;EAACC,aAAa,EAAC,MAAM;EAACC,cAAc,EAAC;AAAQ,CAAC,EAAEP,KAAK,CAACQ,KAAK,CAAC,CAAC;AAC5I;AACA;AACA;AACA,MAAMR,KAAK,IAAI,IAAAU,yBAAiB,EAACR,0BAAkB,CAACC,IAAI,EAAEC,cAAM,CAACC,aAAa,CAAC;EAACC,aAAa,EAAC,MAAM;EAACC,cAAc,EAAC;AAAQ,CAAC,EAAEP,KAAK,CAACQ,KAAK,CAAC,CAAC;AAC5I;AACA,CAAC;AAEM,MAAMG,cAAc,GAAIX,KAAoB,IAAK;EAEtD,oBACE,IAAA5B,WAAA,CAAAwC,IAAA,EAAChB,OAAO;IAAAiB,QAAA,GAEJb,KAAK,CAACc,MAAM,EAAEC,OAAO,EAAEC,GAAG,CAAC,CAAAC,IAAA,EAAkBC,KAAK;MAAA,IAAtB;UAACC;QAAa,CAAC,GAAAF,IAAA;QAALG,IAAI,OAAAC,yBAAA,CAAA7B,OAAA,EAAAyB,IAAA,EAAA5C,SAAA;MAAA,oBACxC,IAAAD,WAAA,CAAAkD,GAAA,EAACpD,OAAA,CAAAqD,UAAU,EAAApC,aAAA,CAAAA,aAAA;QAAaqC,OAAO,EAAE,WAAY;QAACC,KAAK,EAAE;MAAW,GAAKL,IAAI;QAAAP,QAAA,EACtEM;MAAI,IADUD,KAEL,CAAC;IAAA,CACf,CAAC,EAGDlB,KAAK,CAACc,MAAM,EAAEY,KAAK,iBACnB,IAAAtD,WAAA,CAAAkD,GAAA,EAACvB,cAAc;MAAAc,QAAA,EACZb,KAAK,CAACc,MAAM,CAACY;IAAK,CACL,CAAC,eAEnB,IAAAtD,WAAA,CAAAkD,GAAA,EAACpD,OAAA,CAAAqD,UAAU;MAACI,MAAM,EAAE3B,KAAK,CAAC4B,OAAQ;MAACJ,OAAO,EAAE,WAAY;MAACC,KAAK,EAAE,UAAW;MAACI,KAAK,EAAE;QAACC,UAAU,EAAE;MAAM,CAAE;MAAAjB,QAAA,eACtG,IAAAzC,WAAA,CAAAkD,GAAA,EAACnD,MAAA,CAAA4D,WAAW,CAACC,KAAK,IAAC;IAAC,CACV,CAAC;EAAA,CACN,CAAC;AAEd,CAAC;AAACC,OAAA,CAAAtB,cAAA,GAAAA,cAAA","ignoreList":[]}
|
|
@@ -30,15 +30,24 @@ const LabelContainer = styled.div`
|
|
|
30
30
|
margin-left: 8px;
|
|
31
31
|
|
|
32
32
|
.small & {
|
|
33
|
-
${props => ComponentSStyling(ComponentTextStyle.Bold, COLORS.
|
|
33
|
+
${props => ComponentSStyling(ComponentTextStyle.Bold, COLORS.generateToken({
|
|
34
|
+
componentType: 'text',
|
|
35
|
+
defaultVariant: 'subtle'
|
|
36
|
+
}, props.theme))}
|
|
34
37
|
}
|
|
35
38
|
|
|
36
39
|
.medium & {
|
|
37
|
-
${props => ComponentMStyling(ComponentTextStyle.Bold, COLORS.
|
|
40
|
+
${props => ComponentMStyling(ComponentTextStyle.Bold, COLORS.generateToken({
|
|
41
|
+
componentType: 'text',
|
|
42
|
+
defaultVariant: 'subtle'
|
|
43
|
+
}, props.theme))}
|
|
38
44
|
}
|
|
39
45
|
|
|
40
46
|
.large & {
|
|
41
|
-
${props => ComponentLStyling(ComponentTextStyle.Bold, COLORS.
|
|
47
|
+
${props => ComponentLStyling(ComponentTextStyle.Bold, COLORS.generateToken({
|
|
48
|
+
componentType: 'text',
|
|
49
|
+
defaultVariant: 'subtle'
|
|
50
|
+
}, props.theme))}
|
|
42
51
|
}
|
|
43
52
|
`;
|
|
44
53
|
export const SideMenuHeader = props => {
|