@skyscanner/backpack-web 0.4.0 → 2.0.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/bpk-component-accordion/src/BpkAccordion.js +1 -2
- package/bpk-component-accordion/src/BpkAccordionItem.js +5 -6
- package/bpk-component-accordion/src/withAccordionItemState.js +1 -2
- package/bpk-component-accordion/src/withSingleItemAccordionState.js +1 -2
- package/bpk-component-aria-live/src/BpkAriaLive.js +1 -2
- package/bpk-component-autosuggest/src/BpkAutosuggest.js +2 -3
- package/bpk-component-autosuggest/src/BpkAutosuggestSuggestion.js +1 -2
- package/bpk-component-badge/src/BpkBadge.js +1 -2
- package/bpk-component-banner-alert/src/AnimateAndFade.js +2 -3
- package/bpk-component-banner-alert/src/BpkBannerAlertInner.js +7 -8
- package/bpk-component-banner-alert/src/withBannerAlertState.js +1 -2
- package/bpk-component-barchart/src/BpkBarchart.js +2 -3
- package/bpk-component-barchart/src/BpkBarchartBar.js +1 -2
- package/bpk-component-barchart/src/BpkChartAxis.js +1 -2
- package/bpk-component-barchart/src/BpkChartDataTable.js +1 -2
- package/bpk-component-barchart/src/BpkChartGridLines.js +1 -2
- package/bpk-component-barchart/src/RTLtransforms.js +1 -1
- package/bpk-component-blockquote/src/BpkBlockquote.js +1 -2
- package/bpk-component-breadcrumb/src/BpkBreadcrumb.js +1 -2
- package/bpk-component-breadcrumb/src/BpkBreadcrumbItem.js +5 -6
- package/bpk-component-breakpoint/src/BpkBreakpoint.js +3 -0
- package/bpk-component-calendar/src/BpkCalendarContainer.js +1 -2
- package/bpk-component-calendar/src/BpkCalendarDate.js +1 -2
- package/bpk-component-calendar/src/BpkCalendarGrid.js +1 -2
- package/bpk-component-calendar/src/BpkCalendarGridHeader.js +1 -2
- package/bpk-component-calendar/src/BpkCalendarGridTransition.js +1 -2
- package/bpk-component-calendar/src/BpkCalendarNav.js +5 -6
- package/bpk-component-calendar/src/Week.js +1 -2
- package/bpk-component-calendar/src/composeCalendar.js +1 -2
- package/bpk-component-card/src/BpkCard.js +1 -2
- package/bpk-component-checkbox/src/BpkCheckbox.js +1 -2
- package/bpk-component-chip/src/BpkDismissibleChip.js +1 -2
- package/bpk-component-chip/src/BpkSelectableChip.js +2 -3
- package/bpk-component-close-button/src/BpkCloseButton.js +2 -3
- package/bpk-component-code/src/BpkCode.js +1 -2
- package/bpk-component-code/src/BpkCodeBlock.js +1 -2
- package/bpk-component-content-container/src/BpkContentContainer.js +1 -2
- package/bpk-component-datatable/src/BpkDataTable.js +1 -2
- package/bpk-component-datatable/src/BpkDataTableColumn.js +1 -2
- package/bpk-component-datatable/src/bpkHeaderRenderer.js +4 -5
- package/bpk-component-datepicker/index.js +1 -1
- package/bpk-component-datepicker/src/BpkDatepicker.js +6 -7
- package/bpk-component-datepicker/src/themeAttributes.js +3 -3
- package/bpk-component-description-list/src/ComponentFactory.js +1 -2
- package/bpk-component-dialog/src/BpkDialog.js +2 -3
- package/bpk-component-dialog/src/BpkDialogInner.js +3 -4
- package/bpk-component-drawer/src/BpkDrawer.js +2 -3
- package/bpk-component-drawer/src/BpkDrawerContent.js +3 -4
- package/bpk-component-drawer/src/themeAttributes.js +1 -1
- package/bpk-component-fieldset/src/BpkFieldset.js +3 -4
- package/bpk-component-flare/src/BpkContentBubble.js +1 -2
- package/bpk-component-flare/src/BpkFlareBar.js +1 -2
- package/bpk-component-flare/src/__generated__/js/pointer.js +1 -1
- package/bpk-component-flare/src/svgs/pointer.svg +1 -1
- package/bpk-component-form-validation/src/BpkFormValidation.js +4 -5
- package/bpk-component-graphic-promotion/src/BpkGraphicPromo.js +4 -5
- package/bpk-component-grid/src/BpkGridColumn.js +1 -2
- package/bpk-component-grid/src/BpkGridContainer.js +1 -2
- package/bpk-component-grid/src/BpkGridRow.js +1 -2
- package/bpk-component-grid-toggle/src/BpkGridToggle.js +2 -3
- package/bpk-component-horizontal-nav/src/BpkHorizontalNav.js +2 -3
- package/bpk-component-horizontal-nav/src/BpkHorizontalNavItem.js +1 -2
- package/bpk-component-icon/src/classNameModifierHOCFactory.js +1 -2
- package/bpk-component-icon/src/withAlignment.js +1 -2
- package/bpk-component-icon/src/withDescription.js +1 -2
- package/bpk-component-icon/src/withRtlSupport.js +1 -1
- package/bpk-component-image/src/BpkBackgroundImage.js +2 -3
- package/bpk-component-image/src/BpkImage.js +2 -3
- package/bpk-component-image/src/withLazyLoading.js +1 -2
- package/bpk-component-image/src/withLoadingBehavior.js +1 -2
- package/bpk-component-infinite-scroll/src/withInfiniteScroll.js +1 -2
- package/bpk-component-input/src/BpkClearButton.js +3 -4
- package/bpk-component-input/src/BpkInput.js +1 -2
- package/bpk-component-input/src/withOpenEvents.js +1 -2
- package/bpk-component-label/src/BpkLabel.js +1 -2
- package/bpk-component-link/src/BpkButtonLink.js +1 -2
- package/bpk-component-link/src/BpkLink.js +1 -2
- package/bpk-component-list/src/BpkList.js +1 -2
- package/bpk-component-list/src/BpkListItem.js +1 -2
- package/bpk-component-loading-button/src/BpkLoadingButton.js +6 -7
- package/bpk-component-map/src/BpkIconMarker.js +1 -2
- package/bpk-component-map/src/BpkIconMarkerBackground.js +1 -2
- package/bpk-component-map/src/BpkMap.js +1 -2
- package/bpk-component-map/src/BpkPriceMarker.js +2 -3
- package/bpk-component-map/src/DefaultLoadingElement.js +2 -3
- package/bpk-component-mobile-scroll-container/src/BpkMobileScrollContainer.js +1 -2
- package/bpk-component-modal/src/BpkModal.js +2 -3
- package/bpk-component-modal/src/BpkModalInner.js +4 -5
- package/bpk-component-modal/src/themeAttributes.js +1 -1
- package/bpk-component-navigation-bar/src/BpkNavigationBar.js +2 -3
- package/bpk-component-navigation-bar/src/BpkNavigationBarButtonLink.js +2 -3
- package/bpk-component-navigation-bar/src/BpkNavigationBarIconButton.js +2 -3
- package/bpk-component-navigation-stack/src/BpkNavigationStack.js +1 -2
- package/bpk-component-nudger/src/BpkConfigurableNudger.js +6 -7
- package/bpk-component-nudger/src/BpkNudger.js +1 -2
- package/bpk-component-nudger/src/themeAttributes.js +1 -1
- package/bpk-component-overlay/src/BpkOverlay.js +1 -2
- package/bpk-component-pagination/src/BpkPagination.js +1 -2
- package/bpk-component-pagination/src/BpkPaginationList.js +1 -2
- package/bpk-component-pagination/src/BpkPaginationNudger.js +4 -5
- package/bpk-component-pagination/src/BpkPaginationPage.js +2 -3
- package/bpk-component-pagination/src/themeAttributes.js +1 -1
- package/bpk-component-panel/src/BpkPanel.js +1 -2
- package/bpk-component-phone-input/src/BpkPhoneInput.js +4 -5
- package/bpk-component-popover/src/BpkPopover.js +4 -5
- package/bpk-component-popover/src/BpkPopoverPortal.js +1 -2
- package/bpk-component-popover/src/themeAttributes.js +1 -1
- package/bpk-component-progress/src/BpkProgress.js +1 -2
- package/bpk-component-radio/src/BpkRadio.js +1 -2
- package/bpk-component-rating/README.md +40 -33
- package/bpk-component-rating/index.js +2 -3
- package/bpk-component-rating/src/BpkRating.js +54 -79
- package/bpk-component-rating/src/BpkRating.module.scss +37 -99
- package/bpk-component-rating/src/common-types.js +1 -6
- package/bpk-component-rtl-toggle/src/BpkRtlToggle.js +1 -2
- package/bpk-component-rtl-toggle/src/updateOnDirectionChange.js +1 -2
- package/bpk-component-scrollable-calendar/index.js +1 -1
- package/bpk-component-scrollable-calendar/src/BpkScrollableCalendar.js +1 -1
- package/bpk-component-scrollable-calendar/src/BpkScrollableCalendarDate.js +1 -2
- package/bpk-component-scrollable-calendar/src/BpkScrollableCalendarGrid.js +3 -4
- package/bpk-component-scrollable-calendar/src/BpkScrollableCalendarGridList.js +2 -6
- package/bpk-component-scrollable-calendar/src/utils.js +1 -1
- package/bpk-component-section-list/src/BpkSectionListItem.js +3 -4
- package/bpk-component-section-list/src/BpkSectionListSection.js +2 -3
- package/bpk-component-select/src/BpkSelect.js +1 -2
- package/bpk-component-skip-link/src/BpkSkipLink.js +1 -2
- package/bpk-component-slider/src/BpkSlider.js +1 -2
- package/bpk-component-spinner/src/BpkExtraLargeSpinner.js +1 -2
- package/bpk-component-spinner/src/BpkLargeSpinner.js +1 -2
- package/bpk-component-spinner/src/BpkSpinner.js +1 -2
- package/bpk-component-star-rating/src/BpkInteractiveStar.js +1 -2
- package/bpk-component-star-rating/src/BpkInteractiveStarRating.js +1 -2
- package/bpk-component-star-rating/src/BpkStar.js +8 -9
- package/bpk-component-star-rating/src/BpkStarRating.js +1 -2
- package/bpk-component-star-rating/src/withInteractiveStarRatingState.js +1 -2
- package/bpk-component-switch/src/BpkSwitch.js +1 -2
- package/bpk-component-table/src/BpkTable.js +1 -2
- package/bpk-component-table/src/BpkTableCell.js +1 -2
- package/bpk-component-table/src/BpkTableHeadCell.js +1 -2
- package/bpk-component-text/src/BpkText.js +1 -2
- package/bpk-component-textarea/src/BpkTextarea.js +1 -2
- package/bpk-component-theme-toggle/src/BpkThemeToggle.js +3 -4
- package/bpk-component-theme-toggle/src/updateOnThemeChange.js +1 -2
- package/bpk-component-ticket/src/BpkTicket.js +1 -2
- package/bpk-component-tooltip/src/BpkTooltip.js +1 -2
- package/bpk-component-tooltip/src/BpkTooltipPortal.js +1 -2
- package/bpk-scrim-utils/src/BpkScrim.js +1 -2
- package/bpk-scrim-utils/src/withScrim.js +1 -2
- package/package.json +5 -8
- package/bpk-animate-height/package.json +0 -26
- package/bpk-component-accordion/package.json +0 -31
- package/bpk-component-aria-live/package.json +0 -31
- package/bpk-component-autosuggest/package.json +0 -29
- package/bpk-component-badge/package.json +0 -29
- package/bpk-component-banner-alert/package.json +0 -34
- package/bpk-component-barchart/package.json +0 -35
- package/bpk-component-blockquote/package.json +0 -24
- package/bpk-component-breadcrumb/package.json +0 -27
- package/bpk-component-breakpoint/package.json +0 -28
- package/bpk-component-button/package.json +0 -26
- package/bpk-component-calendar/package.json +0 -34
- package/bpk-component-card/package.json +0 -28
- package/bpk-component-checkbox/package.json +0 -29
- package/bpk-component-chip/package.json +0 -29
- package/bpk-component-close-button/package.json +0 -28
- package/bpk-component-code/package.json +0 -24
- package/bpk-component-content-container/package.json +0 -24
- package/bpk-component-datatable/package.json +0 -30
- package/bpk-component-datepicker/package.json +0 -33
- package/bpk-component-description-list/package.json +0 -24
- package/bpk-component-dialog/package.json +0 -32
- package/bpk-component-drawer/package.json +0 -34
- package/bpk-component-fieldset/package.json +0 -36
- package/bpk-component-flare/package.json +0 -29
- package/bpk-component-form-validation/package.json +0 -34
- package/bpk-component-graphic-promotion/package.json +0 -26
- package/bpk-component-grid/package.json +0 -24
- package/bpk-component-grid-toggle/package.json +0 -25
- package/bpk-component-horizontal-nav/package.json +0 -30
- package/bpk-component-icon/package.json +0 -34
- package/bpk-component-image/package.json +0 -31
- package/bpk-component-infinite-scroll/package.json +0 -31
- package/bpk-component-input/package.json +0 -30
- package/bpk-component-label/package.json +0 -24
- package/bpk-component-link/package.json +0 -28
- package/bpk-component-list/package.json +0 -24
- package/bpk-component-loading-button/package.json +0 -30
- package/bpk-component-map/package.json +0 -32
- package/bpk-component-mobile-scroll-container/package.json +0 -28
- package/bpk-component-modal/package.json +0 -33
- package/bpk-component-navigation-bar/package.json +0 -32
- package/bpk-component-navigation-stack/package.json +0 -32
- package/bpk-component-nudger/package.json +0 -32
- package/bpk-component-overlay/package.json +0 -28
- package/bpk-component-pagination/package.json +0 -28
- package/bpk-component-panel/package.json +0 -24
- package/bpk-component-phone-input/package.json +0 -33
- package/bpk-component-popover/package.json +0 -35
- package/bpk-component-progress/package.json +0 -30
- package/bpk-component-radio/package.json +0 -28
- package/bpk-component-rating/package.json +0 -29
- package/bpk-component-rating/src/themeAttributes.js +0 -25
- package/bpk-component-rtl-toggle/package.json +0 -24
- package/bpk-component-scrollable-calendar/package.json +0 -32
- package/bpk-component-section-list/package.json +0 -30
- package/bpk-component-select/package.json +0 -27
- package/bpk-component-skip-link/package.json +0 -24
- package/bpk-component-slider/package.json +0 -29
- package/bpk-component-spinner/package.json +0 -25
- package/bpk-component-star-rating/package.json +0 -29
- package/bpk-component-switch/package.json +0 -24
- package/bpk-component-table/package.json +0 -24
- package/bpk-component-text/package.json +0 -24
- package/bpk-component-textarea/package.json +0 -28
- package/bpk-component-theme-toggle/package.json +0 -28
- package/bpk-component-ticket/package.json +0 -28
- package/bpk-component-tooltip/package.json +0 -29
- package/bpk-react-utils/package.json +0 -25
- package/bpk-scrim-utils/package.json +0 -25
- package/bpk-theming/package.json +0 -23
|
@@ -18,8 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
import React from 'react';
|
|
20
20
|
import PropTypes from 'prop-types';
|
|
21
|
-
|
|
22
|
-
import { cssModules } from '../../bpk-react-utils';
|
|
21
|
+
import { cssModules } from 'bpk-react-utils';
|
|
23
22
|
|
|
24
23
|
import BpkPaginationList from './BpkPaginationList';
|
|
25
24
|
import BpkPaginationNudger from './BpkPaginationNudger';
|
|
@@ -18,8 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
import PropTypes from 'prop-types';
|
|
20
20
|
import React from 'react';
|
|
21
|
-
|
|
22
|
-
import { cssModules } from '../../bpk-react-utils';
|
|
21
|
+
import { cssModules } from 'bpk-react-utils';
|
|
23
22
|
|
|
24
23
|
import BpkPaginationPage from './BpkPaginationPage';
|
|
25
24
|
import BpkPaginationBreak from './BpkPaginationBreak';
|
|
@@ -18,11 +18,10 @@
|
|
|
18
18
|
|
|
19
19
|
import PropTypes from 'prop-types';
|
|
20
20
|
import React from 'react';
|
|
21
|
-
|
|
22
|
-
import {
|
|
23
|
-
import
|
|
24
|
-
import
|
|
25
|
-
import ArrowRightIcon from '../../bpk-component-icon/lg/arrow-right';
|
|
21
|
+
import { cssModules } from 'bpk-react-utils';
|
|
22
|
+
import { withButtonAlignment, withRtlSupport } from 'bpk-component-icon';
|
|
23
|
+
import ArrowLeftIcon from 'bpk-component-icon/lg/arrow-left';
|
|
24
|
+
import ArrowRightIcon from 'bpk-component-icon/lg/arrow-right';
|
|
26
25
|
|
|
27
26
|
import STYLES from './BpkPaginationNudger.module.scss';
|
|
28
27
|
|
|
@@ -16,11 +16,10 @@
|
|
|
16
16
|
* limitations under the License.
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
+
import BpkButton from 'bpk-component-button';
|
|
19
20
|
import PropTypes from 'prop-types';
|
|
20
21
|
import React from 'react';
|
|
21
|
-
|
|
22
|
-
import BpkButton from '../../bpk-component-button';
|
|
23
|
-
import { cssModules } from '../../bpk-react-utils';
|
|
22
|
+
import { cssModules } from 'bpk-react-utils';
|
|
24
23
|
|
|
25
24
|
import STYLES from './BpkPaginationPage.module.scss';
|
|
26
25
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* See the License for the specific language governing permissions and
|
|
16
16
|
* limitations under the License.
|
|
17
17
|
*/
|
|
18
|
-
import { secondaryThemeAttributes } from '
|
|
18
|
+
import { secondaryThemeAttributes } from 'bpk-component-button';
|
|
19
19
|
|
|
20
20
|
export default [
|
|
21
21
|
...secondaryThemeAttributes,
|
|
@@ -20,11 +20,10 @@
|
|
|
20
20
|
|
|
21
21
|
import React from 'react';
|
|
22
22
|
import PropTypes from 'prop-types';
|
|
23
|
-
|
|
24
|
-
import {
|
|
25
|
-
import
|
|
26
|
-
import
|
|
27
|
-
import BpkSelect from '../../bpk-component-select';
|
|
23
|
+
import { cssModules } from 'bpk-react-utils';
|
|
24
|
+
import BpkInput, { INPUT_TYPES } from 'bpk-component-input';
|
|
25
|
+
import BpkLabel from 'bpk-component-label';
|
|
26
|
+
import BpkSelect from 'bpk-component-select';
|
|
28
27
|
|
|
29
28
|
import STYLES from './BpkPhoneInput.module.scss';
|
|
30
29
|
|
|
@@ -20,11 +20,10 @@
|
|
|
20
20
|
|
|
21
21
|
import PropTypes from 'prop-types';
|
|
22
22
|
import React, { type Node } from 'react';
|
|
23
|
-
|
|
24
|
-
import
|
|
25
|
-
import
|
|
26
|
-
import
|
|
27
|
-
import { TransitionInitialMount, cssModules } from '../../bpk-react-utils';
|
|
23
|
+
import BpkText, { TEXT_STYLES } from 'bpk-component-text';
|
|
24
|
+
import { BpkButtonLink } from 'bpk-component-link';
|
|
25
|
+
import BpkCloseButton from 'bpk-component-close-button';
|
|
26
|
+
import { TransitionInitialMount, cssModules } from 'bpk-react-utils';
|
|
28
27
|
|
|
29
28
|
import STYLES from './BpkPopover.module.scss';
|
|
30
29
|
import { ARROW_ID } from './constants';
|
|
@@ -22,8 +22,7 @@ import Popper from '@skyscanner/popper.js';
|
|
|
22
22
|
import PropTypes from 'prop-types';
|
|
23
23
|
import React, { Component, type Node } from 'react';
|
|
24
24
|
import focusStore from 'a11y-focus-store';
|
|
25
|
-
|
|
26
|
-
import { Portal, cssModules } from '../../bpk-react-utils';
|
|
25
|
+
import { Portal, cssModules } from 'bpk-react-utils';
|
|
27
26
|
|
|
28
27
|
import keyboardFocusScope from './keyboardFocusScope';
|
|
29
28
|
import STYLES from './BpkPopover.module.scss';
|
|
@@ -22,8 +22,7 @@ import PropTypes from 'prop-types';
|
|
|
22
22
|
import React, { Component } from 'react';
|
|
23
23
|
import { colorWhite } from '@skyscanner/bpk-foundations-web/tokens/base.es6';
|
|
24
24
|
import clamp from 'lodash.clamp';
|
|
25
|
-
|
|
26
|
-
import { cssModules } from '../../bpk-react-utils';
|
|
25
|
+
import { cssModules } from 'bpk-react-utils';
|
|
27
26
|
|
|
28
27
|
import STYLES from './BpkProgress.module.scss';
|
|
29
28
|
|
|
@@ -12,40 +12,56 @@ npm install bpk-component-rating --save-dev
|
|
|
12
12
|
|
|
13
13
|
```js
|
|
14
14
|
import React from 'react';
|
|
15
|
-
import BpkRating, { RATING_SIZES, RATING_SCALES
|
|
15
|
+
import BpkRating, { RATING_SIZES, RATING_SCALES } from 'bpk-component-rating';
|
|
16
16
|
|
|
17
17
|
export default () => (
|
|
18
18
|
<BpkRating
|
|
19
|
-
ariaLabel="
|
|
19
|
+
ariaLabel="4.8 Excellent 2,420 reviews"
|
|
20
|
+
value={4.8}
|
|
20
21
|
title="Excellent"
|
|
21
|
-
subtitle="
|
|
22
|
-
value={9}
|
|
22
|
+
subtitle="2,420 reviews"
|
|
23
23
|
/>
|
|
24
24
|
|
|
25
|
-
// Large rating
|
|
25
|
+
// Large size rating
|
|
26
26
|
<BpkRating
|
|
27
|
-
ariaLabel="
|
|
28
|
-
title="
|
|
29
|
-
subtitle="
|
|
27
|
+
ariaLabel="4.4 Very good 120 reviews"
|
|
28
|
+
title="Very good"
|
|
29
|
+
subtitle="120 reviews"
|
|
30
30
|
size={RATING_SIZES.large}
|
|
31
|
-
value={
|
|
31
|
+
value={4.4}
|
|
32
32
|
/>
|
|
33
33
|
|
|
34
|
-
//
|
|
34
|
+
// Title only rating
|
|
35
35
|
<BpkRating
|
|
36
|
-
ariaLabel="
|
|
37
|
-
title="
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
ariaLabel="2.3 Bad"
|
|
37
|
+
title="Bad"
|
|
38
|
+
value={2.3}
|
|
39
|
+
/>
|
|
40
|
+
|
|
41
|
+
// Show scale rating
|
|
42
|
+
<BpkRating
|
|
43
|
+
ariaLabel="3.8 Good 530 reviews"
|
|
44
|
+
title="Good"
|
|
45
|
+
subtitle="530 reviews"
|
|
46
|
+
value={3.8}
|
|
41
47
|
/>
|
|
42
48
|
|
|
43
|
-
//
|
|
49
|
+
// Hide scale rating
|
|
44
50
|
<BpkRating
|
|
45
|
-
ariaLabel="
|
|
46
|
-
title="
|
|
47
|
-
|
|
48
|
-
|
|
51
|
+
ariaLabel="3.8 Good 530 reviews"
|
|
52
|
+
title="Good"
|
|
53
|
+
subtitle="530 reviews"
|
|
54
|
+
value={3.8}
|
|
55
|
+
showScale={false}
|
|
56
|
+
/>
|
|
57
|
+
|
|
58
|
+
// 0-10 scale
|
|
59
|
+
<BpkRating
|
|
60
|
+
ariaLabel="9.9 Awesome 6,549 reviews"
|
|
61
|
+
title="Awesome"
|
|
62
|
+
subtitle="6,549 reviews"
|
|
63
|
+
value={9.9}
|
|
64
|
+
ratingScale={RATING_SCALES.zeroToTen}
|
|
49
65
|
/>
|
|
50
66
|
);
|
|
51
67
|
```
|
|
@@ -55,19 +71,10 @@ export default () => (
|
|
|
55
71
|
| Property | PropType | Required | Default Value |
|
|
56
72
|
| --------- | --------------------- | -------- | ----------------- |
|
|
57
73
|
| ariaLabel | string | true | - |
|
|
58
|
-
| title | string
|
|
59
|
-
| value | number
|
|
74
|
+
| title | oneOfType(string, node) | true | - |
|
|
75
|
+
| value | oneOfType(string, number) | true | - |
|
|
60
76
|
| className | string | false | null |
|
|
61
|
-
| ratingScale | oneOf(RATING_SCALES) | false | RATING_SCALES.
|
|
77
|
+
| ratingScale | oneOf(RATING_SCALES) | false | RATING_SCALES.zeroToFive |
|
|
62
78
|
| size | oneOf(RATING_SIZES) | false | RATING_SIZES.base |
|
|
63
79
|
| subtitle | string | false | null |
|
|
64
|
-
|
|
|
65
|
-
| vertical | boolean | false | false |
|
|
66
|
-
|
|
67
|
-
## Theme props
|
|
68
|
-
|
|
69
|
-
* `ratingHighColor`
|
|
70
|
-
* `ratingHighTextColor`
|
|
71
|
-
* `ratingMediumColor`
|
|
72
|
-
* `ratingMediumTextColor`
|
|
73
|
-
* `ratingLowColor`
|
|
80
|
+
| showScale | boolean | false | true |
|
|
@@ -18,8 +18,7 @@
|
|
|
18
18
|
/* @flow strict */
|
|
19
19
|
|
|
20
20
|
import BpkRating from './src/BpkRating';
|
|
21
|
-
import { RATING_SIZES,
|
|
22
|
-
import themeAttributes from './src/themeAttributes';
|
|
21
|
+
import { RATING_SIZES, RATING_SCALES } from './src/common-types';
|
|
23
22
|
|
|
24
23
|
export default BpkRating;
|
|
25
|
-
export { RATING_SIZES,
|
|
24
|
+
export { RATING_SIZES, RATING_SCALES };
|
|
@@ -17,29 +17,23 @@
|
|
|
17
17
|
*/
|
|
18
18
|
/* @flow strict */
|
|
19
19
|
|
|
20
|
-
import React from 'react';
|
|
20
|
+
import React, { type Node } from 'react';
|
|
21
21
|
import PropTypes from 'prop-types';
|
|
22
22
|
import clamp from 'lodash.clamp';
|
|
23
|
-
|
|
24
|
-
import {
|
|
25
|
-
import BpkText, { TEXT_STYLES } from '../../bpk-component-text';
|
|
23
|
+
import { cssModules } from 'bpk-react-utils';
|
|
24
|
+
import BpkText, { TEXT_STYLES } from 'bpk-component-text';
|
|
26
25
|
|
|
27
26
|
import STYLES from './BpkRating.module.scss';
|
|
28
|
-
import { RATING_SIZES,
|
|
27
|
+
import { RATING_SIZES, RATING_SCALES } from './common-types';
|
|
29
28
|
|
|
30
29
|
const getClassName = cssModules(STYLES);
|
|
31
30
|
|
|
32
|
-
// The thresholds are what determine whether a rating is low, medium or high.
|
|
33
|
-
// They are expressed as a percentage of the scale. For example, on a 1-5 scale,
|
|
34
|
-
// 5 * 0.8 (4) would be a high rating.
|
|
35
|
-
const MEDIUM_RATING_THRESHOLD = 0.6;
|
|
36
|
-
const HIGH_RATING_THRESHOLD = 0.8;
|
|
37
|
-
|
|
38
31
|
const getMinValue = () =>
|
|
39
32
|
// Currently the min value is zero no matter what scale is used.
|
|
40
33
|
// If this ever changes, this function should be changed to return
|
|
41
34
|
// different values based on the rating scale.
|
|
42
35
|
0;
|
|
36
|
+
|
|
43
37
|
const getMaxValue = (ratingScale) => {
|
|
44
38
|
switch (ratingScale) {
|
|
45
39
|
case RATING_SCALES.zeroToFive:
|
|
@@ -49,22 +43,15 @@ const getMaxValue = (ratingScale) => {
|
|
|
49
43
|
}
|
|
50
44
|
};
|
|
51
45
|
|
|
52
|
-
|
|
53
|
-
getMaxValue(ratingScale) * MEDIUM_RATING_THRESHOLD;
|
|
54
|
-
|
|
55
|
-
const getHighRatingThreshold = (ratingScale) =>
|
|
56
|
-
getMaxValue(ratingScale) * HIGH_RATING_THRESHOLD;
|
|
57
|
-
|
|
58
|
-
export type Props = {
|
|
46
|
+
type Props = {
|
|
59
47
|
ariaLabel: string,
|
|
48
|
+
className: ?string,
|
|
60
49
|
ratingScale: $Values<typeof RATING_SCALES>,
|
|
50
|
+
showScale: ?boolean,
|
|
61
51
|
size: $Values<typeof RATING_SIZES>,
|
|
62
|
-
title: string,
|
|
63
|
-
type: $Values<typeof RATING_TYPES>,
|
|
64
|
-
value: number,
|
|
65
|
-
vertical: boolean,
|
|
66
|
-
className: ?string,
|
|
67
52
|
subtitle: ?string,
|
|
53
|
+
title: string | Node,
|
|
54
|
+
value: string | number,
|
|
68
55
|
};
|
|
69
56
|
|
|
70
57
|
const BpkRating = (props: Props) => {
|
|
@@ -72,33 +59,36 @@ const BpkRating = (props: Props) => {
|
|
|
72
59
|
ariaLabel,
|
|
73
60
|
className,
|
|
74
61
|
ratingScale,
|
|
62
|
+
showScale,
|
|
75
63
|
size,
|
|
76
64
|
subtitle,
|
|
77
65
|
title,
|
|
78
|
-
type,
|
|
79
66
|
value,
|
|
80
|
-
vertical,
|
|
81
67
|
...rest
|
|
82
68
|
} = props;
|
|
69
|
+
|
|
83
70
|
const classNames = [getClassName('bpk-rating', className)];
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
'bpk-rating__component',
|
|
87
|
-
`bpk-rating--${size}-rating`,
|
|
88
|
-
type === RATING_TYPES.pill && `bpk-rating--${size}-pill`,
|
|
89
|
-
),
|
|
90
|
-
];
|
|
71
|
+
const valueStyles = [getClassName('bpk-rating__value')];
|
|
72
|
+
const scaleStyles = [getClassName('bpk-rating__scale')];
|
|
91
73
|
const textWrapperStyles = [getClassName('bpk-rating__text-wrapper')];
|
|
92
|
-
const
|
|
74
|
+
const titleStyles = [];
|
|
75
|
+
const subtitleStyles = [getClassName('bpk-rating__subtitle')];
|
|
93
76
|
|
|
94
|
-
let titleTextSize = TEXT_STYLES.bodyDefault;
|
|
95
77
|
let valueTextSize = TEXT_STYLES.label1;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
78
|
+
let scaleTextSize = TEXT_STYLES.caption;
|
|
79
|
+
let titleTextSize = TEXT_STYLES.label1;
|
|
80
|
+
let subtitleTextSize = TEXT_STYLES.caption;
|
|
81
|
+
|
|
82
|
+
if (size === RATING_SIZES.large) {
|
|
83
|
+
classNames.push(getClassName('bpk-rating--large'));
|
|
84
|
+
textWrapperStyles.push(getClassName('bpk-rating__text-wrapper--large'));
|
|
85
|
+
titleStyles.push(getClassName('bpk-rating__title--large'));
|
|
86
|
+
subtitleStyles.push(getClassName('bpk-rating__subtitle--large'));
|
|
87
|
+
|
|
88
|
+
valueTextSize = TEXT_STYLES.hero5;
|
|
89
|
+
scaleTextSize = TEXT_STYLES.bodyDefault;
|
|
90
|
+
titleTextSize = TEXT_STYLES.heading5;
|
|
91
|
+
subtitleTextSize = TEXT_STYLES.bodyDefault;
|
|
102
92
|
}
|
|
103
93
|
|
|
104
94
|
const minValue = getMinValue();
|
|
@@ -106,29 +96,8 @@ const BpkRating = (props: Props) => {
|
|
|
106
96
|
|
|
107
97
|
let adjustedValue = value;
|
|
108
98
|
|
|
109
|
-
if (adjustedValue >= getHighRatingThreshold(ratingScale)) {
|
|
110
|
-
scoreStyles.push(getClassName('bpk-rating--high-rating'));
|
|
111
|
-
} else if (adjustedValue >= getMediumRatingThreshold(ratingScale)) {
|
|
112
|
-
scoreStyles.push(getClassName('bpk-rating--medium-rating'));
|
|
113
|
-
} else {
|
|
114
|
-
scoreStyles.push(getClassName('bpk-rating--low-rating'));
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
if (vertical) {
|
|
118
|
-
classNames.push(getClassName('bpk-rating--vertical'));
|
|
119
|
-
textWrapperStyles.push(getClassName('bpk-rating__text-wrapper--vertical'));
|
|
120
|
-
textStyles.push(getClassName('bpk-rating__text--vertical'));
|
|
121
|
-
} else {
|
|
122
|
-
textWrapperStyles.push(
|
|
123
|
-
getClassName('bpk-rating__text-wrapper--horizontal'),
|
|
124
|
-
);
|
|
125
|
-
textStyles.push(getClassName('bpk-rating__text--horizontal'));
|
|
126
|
-
}
|
|
127
|
-
|
|
128
99
|
if (adjustedValue >= maxValue || adjustedValue <= minValue) {
|
|
129
100
|
adjustedValue = clamp(adjustedValue, minValue, maxValue);
|
|
130
|
-
} else {
|
|
131
|
-
adjustedValue = value.toFixed(1);
|
|
132
101
|
}
|
|
133
102
|
|
|
134
103
|
return (
|
|
@@ -137,29 +106,37 @@ const BpkRating = (props: Props) => {
|
|
|
137
106
|
<BpkText
|
|
138
107
|
textStyle={valueTextSize}
|
|
139
108
|
tagName="span"
|
|
140
|
-
className={
|
|
109
|
+
className={valueStyles.join(' ')}
|
|
141
110
|
aria-hidden="true"
|
|
142
111
|
>
|
|
143
112
|
{adjustedValue}
|
|
113
|
+
|
|
114
|
+
{showScale && (
|
|
115
|
+
<BpkText
|
|
116
|
+
textStyle={scaleTextSize}
|
|
117
|
+
className={scaleStyles.join(' ')}
|
|
118
|
+
tagName="span"
|
|
119
|
+
aria-hidden="true"
|
|
120
|
+
>
|
|
121
|
+
/{maxValue}
|
|
122
|
+
</BpkText>
|
|
123
|
+
)}
|
|
144
124
|
</BpkText>
|
|
125
|
+
|
|
145
126
|
<div className={textWrapperStyles.join(' ')}>
|
|
146
127
|
<BpkText
|
|
147
|
-
className={textStyles.join(' ')}
|
|
148
128
|
textStyle={titleTextSize}
|
|
129
|
+
className={titleStyles.join(' ')}
|
|
149
130
|
tagName="span"
|
|
150
131
|
aria-hidden="true"
|
|
151
132
|
>
|
|
152
|
-
|
|
153
|
-
{subtitle && type === RATING_TYPES.pill && <span>{subtitle}</span>}
|
|
133
|
+
{title}
|
|
154
134
|
</BpkText>
|
|
155
|
-
|
|
135
|
+
|
|
136
|
+
{subtitle && (
|
|
156
137
|
<BpkText
|
|
157
|
-
className={
|
|
158
|
-
textStyle={
|
|
159
|
-
size === RATING_SIZES.lg
|
|
160
|
-
? TEXT_STYLES.footnote
|
|
161
|
-
: TEXT_STYLES.caption
|
|
162
|
-
}
|
|
138
|
+
className={subtitleStyles.join(' ')}
|
|
139
|
+
textStyle={subtitleTextSize}
|
|
163
140
|
tagName="span"
|
|
164
141
|
aria-hidden="true"
|
|
165
142
|
>
|
|
@@ -173,23 +150,21 @@ const BpkRating = (props: Props) => {
|
|
|
173
150
|
|
|
174
151
|
BpkRating.propTypes = {
|
|
175
152
|
ariaLabel: PropTypes.string.isRequired,
|
|
176
|
-
title: PropTypes.string.isRequired,
|
|
177
|
-
value: PropTypes.number.isRequired,
|
|
153
|
+
title: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired,
|
|
154
|
+
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
|
|
178
155
|
className: PropTypes.string,
|
|
179
156
|
ratingScale: PropTypes.oneOf(Object.keys(RATING_SCALES)),
|
|
180
157
|
size: PropTypes.oneOf(Object.keys(RATING_SIZES)),
|
|
181
158
|
subtitle: PropTypes.string,
|
|
182
|
-
|
|
183
|
-
vertical: PropTypes.bool,
|
|
159
|
+
showScale: PropTypes.bool,
|
|
184
160
|
};
|
|
185
161
|
|
|
186
162
|
BpkRating.defaultProps = {
|
|
187
163
|
className: null,
|
|
188
|
-
ratingScale: RATING_SCALES.
|
|
164
|
+
ratingScale: RATING_SCALES.zeroToFive,
|
|
189
165
|
size: RATING_SIZES.base,
|
|
190
166
|
subtitle: null,
|
|
191
|
-
|
|
192
|
-
vertical: false,
|
|
167
|
+
showScale: true,
|
|
193
168
|
};
|
|
194
169
|
|
|
195
170
|
export default BpkRating;
|
|
@@ -22,127 +22,65 @@ $bpk-spacing-v2: true;
|
|
|
22
22
|
|
|
23
23
|
.bpk-rating {
|
|
24
24
|
display: flex;
|
|
25
|
+
flex-flow: row nowrap;
|
|
26
|
+
align-items: baseline;
|
|
25
27
|
|
|
26
|
-
&--
|
|
27
|
-
flex-direction: column;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
&__component {
|
|
31
|
-
justify-content: center;
|
|
28
|
+
&--large {
|
|
32
29
|
align-items: center;
|
|
33
|
-
border-radius: 50%;
|
|
34
|
-
color: $bpk-color-white;
|
|
35
30
|
}
|
|
36
31
|
|
|
37
|
-
|
|
32
|
+
&__value {
|
|
38
33
|
display: flex;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
34
|
+
padding-right: bpk-spacing-md();
|
|
35
|
+
justify-content: center;
|
|
36
|
+
align-items: baseline;
|
|
37
|
+
color: $bpk-color-sky-gray;
|
|
42
38
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
@include bpk-rtl {
|
|
40
|
+
padding-right: 0;
|
|
41
|
+
padding-left: bpk-spacing-md();
|
|
42
|
+
}
|
|
47
43
|
}
|
|
48
44
|
|
|
49
|
-
|
|
45
|
+
&__text-wrapper {
|
|
50
46
|
display: flex;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
flex-direction: row;
|
|
48
|
+
align-items: baseline;
|
|
49
|
+
white-space: nowrap;
|
|
54
50
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
&--large {
|
|
52
|
+
flex-direction: column;
|
|
53
|
+
align-items: flex-start;
|
|
54
|
+
}
|
|
59
55
|
}
|
|
60
56
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
height: bpk-spacing-sm() * 9;
|
|
64
|
-
border-radius: $bpk-border-radius-pill;
|
|
57
|
+
&__scale {
|
|
58
|
+
color: $bpk-color-sky-gray-tint-02;
|
|
65
59
|
}
|
|
66
60
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
61
|
+
&__title {
|
|
62
|
+
&--large {
|
|
63
|
+
padding-top: $bpk-one-pixel-rem;
|
|
64
|
+
}
|
|
71
65
|
}
|
|
72
66
|
|
|
73
|
-
&
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
justify-content: center;
|
|
77
|
-
|
|
78
|
-
&--horizontal {
|
|
79
|
-
// We could use `padding-inline-start: $bpk-spacing-sm` here, but it's unsupported in IE
|
|
80
|
-
padding-left: bpk-spacing-sm() * 3;
|
|
67
|
+
&__subtitle {
|
|
68
|
+
padding-left: bpk-spacing-md();
|
|
69
|
+
color: $bpk-color-sky-gray-tint-02;
|
|
81
70
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
&--vertical {
|
|
88
|
-
padding-top: bpk-spacing-sm() + ($bpk-one-pixel-rem * 2);
|
|
71
|
+
@include bpk-rtl {
|
|
72
|
+
padding-right: bpk-spacing-md();
|
|
73
|
+
padding-left: 0;
|
|
89
74
|
}
|
|
90
|
-
}
|
|
91
75
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
text-align: left;
|
|
76
|
+
&--large {
|
|
77
|
+
padding-top: $bpk-one-pixel-rem;
|
|
78
|
+
padding-left: 0;
|
|
96
79
|
|
|
97
80
|
@include bpk-rtl {
|
|
98
|
-
|
|
81
|
+
padding-right: 0;
|
|
82
|
+
padding-left: 0;
|
|
99
83
|
}
|
|
100
84
|
}
|
|
101
|
-
|
|
102
|
-
&--vertical {
|
|
103
|
-
align-self: center;
|
|
104
|
-
text-align: center;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
&--high-rating {
|
|
109
|
-
align-self: center;
|
|
110
|
-
color: $bpk-color-sky-gray;
|
|
111
|
-
|
|
112
|
-
@include bpk-themeable-property(
|
|
113
|
-
color,
|
|
114
|
-
--bpk-rating-high-text-color,
|
|
115
|
-
$bpk-color-sky-gray
|
|
116
|
-
);
|
|
117
|
-
@include bpk-themeable-property(
|
|
118
|
-
background-color,
|
|
119
|
-
--bpk-rating-high-color,
|
|
120
|
-
$bpk-color-glencoe
|
|
121
|
-
);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
&--medium-rating {
|
|
125
|
-
align-self: center;
|
|
126
|
-
|
|
127
|
-
@include bpk-themeable-property(
|
|
128
|
-
color,
|
|
129
|
-
--bpk-rating-medium-text-color,
|
|
130
|
-
$bpk-color-sky-gray
|
|
131
|
-
);
|
|
132
|
-
@include bpk-themeable-property(
|
|
133
|
-
background-color,
|
|
134
|
-
--bpk-rating-medium-color,
|
|
135
|
-
$bpk-color-erfoud
|
|
136
|
-
);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
&--low-rating {
|
|
140
|
-
align-self: center;
|
|
141
|
-
|
|
142
|
-
@include bpk-themeable-property(
|
|
143
|
-
background-color,
|
|
144
|
-
--bpk-rating-low-color,
|
|
145
|
-
$bpk-color-panjin
|
|
146
|
-
);
|
|
147
85
|
}
|
|
148
86
|
}
|
|
@@ -18,12 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
/* @flow */
|
|
20
20
|
|
|
21
|
-
export const RATING_SIZES = {
|
|
22
|
-
|
|
23
|
-
export const RATING_TYPES = {
|
|
24
|
-
default: 'default',
|
|
25
|
-
pill: 'pill',
|
|
26
|
-
};
|
|
21
|
+
export const RATING_SIZES = { base: 'base', large: 'large' };
|
|
27
22
|
|
|
28
23
|
export const RATING_SCALES = {
|
|
29
24
|
zeroToFive: 'zeroToFive',
|