diff --git a/src/course-search/ClearCurrentRefinements.jsx b/src/course-search/ClearCurrentRefinements.jsx index 7c59c674..3021511a 100644 --- a/src/course-search/ClearCurrentRefinements.jsx +++ b/src/course-search/ClearCurrentRefinements.jsx @@ -6,7 +6,7 @@ import { clearRefinementsAction } from './data/actions'; export const CLEAR_ALL_TEXT = 'clear all'; -const ClearCurrentRefinements = ({ className, variant }) => { +const ClearCurrentRefinements = ({ className, variant, ...props }) => { const { dispatch } = useContext(SearchContext); /** @@ -23,6 +23,7 @@ const ClearCurrentRefinements = ({ className, variant }) => { className={className} variant={variant} onClick={handleClearAllRefinementsClick} + {...props} > {CLEAR_ALL_TEXT} diff --git a/src/course-search/CurrentRefinements.jsx b/src/course-search/CurrentRefinements.jsx index 0b16a031..3a2dd499 100644 --- a/src/course-search/CurrentRefinements.jsx +++ b/src/course-search/CurrentRefinements.jsx @@ -1,5 +1,6 @@ import React, { useContext, useMemo, useState } from 'react'; import PropTypes from 'prop-types'; +import classNames from 'classnames'; import { Badge, Button } from '@edx/paragon'; import { connectCurrentRefinements } from 'react-instantsearch-dom'; @@ -17,8 +18,9 @@ import { } from './data/hooks'; import { SearchContext } from './SearchContext'; import { removeFromRefinementArray, deleteRefinementAction } from './data/actions'; +import { STYLE_VARIANTS } from '../constants'; -export const CurrentRefinementsBase = ({ items }) => { +export const CurrentRefinementsBase = ({ items, variant }) => { if (!items || !items.length) { return null; } @@ -67,7 +69,7 @@ export const CurrentRefinementsBase = ({ items }) => { {visibleActiveRefinements.map(item => (
  • handleRefinementBadgeClick(item)} > @@ -80,7 +82,7 @@ export const CurrentRefinementsBase = ({ items }) => { {!showAllRefinements && activeRefinementsAsFlatArray.length > NUM_CURRENT_REFINEMENTS_TO_DISPLAY && (
  • setShowAllRefinements(true)} > @@ -92,23 +94,39 @@ export const CurrentRefinementsBase = ({ items }) => { {showAllRefinements && (
  • )}
  • - +
  • ); }; +CurrentRefinementsBase.defaultProps = { + variant: STYLE_VARIANTS.inverse, +}; + CurrentRefinementsBase.propTypes = { items: PropTypes.arrayOf(PropTypes.shape()).isRequired, + variant: PropTypes.oneOf(Object.values(STYLE_VARIANTS)), }; export default connectCurrentRefinements(CurrentRefinementsBase); diff --git a/src/course-search/FacetItem.jsx b/src/course-search/FacetItem.jsx index 9a619ce4..b2855c3f 100644 --- a/src/course-search/FacetItem.jsx +++ b/src/course-search/FacetItem.jsx @@ -2,28 +2,37 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Input, Dropdown } from '@edx/paragon'; import classNames from 'classnames'; +import { STYLE_VARIANTS } from '../constants'; const FacetItem = ({ - handleInputOnChange, item, isChecked, + handleInputOnChange, item, isChecked, variant, }) => ( handleInputOnChange(item)} - className="position-relative mr-2" + className="facet-item position-relative mr-2 mb-2" /> {item.label} {item.count && ( - + {item.count} )} ); +FacetItem.defaultProps = { + variant: STYLE_VARIANTS.inverse, +}; + FacetItem.propTypes = { handleInputOnChange: PropTypes.func.isRequired, isChecked: PropTypes.bool.isRequired, @@ -31,6 +40,7 @@ FacetItem.propTypes = { count: PropTypes.number, label: PropTypes.string.isRequired, }).isRequired, + variant: PropTypes.oneOf(Object.values(STYLE_VARIANTS)), }; export default FacetItem; diff --git a/src/course-search/FacetListBase.jsx b/src/course-search/FacetListBase.jsx index 09216ded..b48c96b8 100644 --- a/src/course-search/FacetListBase.jsx +++ b/src/course-search/FacetListBase.jsx @@ -62,6 +62,7 @@ const FacetListBase = ({ handleInputOnChange={handleInputOnChange} item={item} isChecked={isChecked} + variant={variant} /> ); }); diff --git a/src/course-search/SearchFilters.jsx b/src/course-search/SearchFilters.jsx index f0a3f096..bd342364 100644 --- a/src/course-search/SearchFilters.jsx +++ b/src/course-search/SearchFilters.jsx @@ -95,7 +95,7 @@ const SearchFilters = ({ variant }) => {
    {searchFacets}
    - + )} diff --git a/src/course-search/styles/_CurrentRefinements.scss b/src/course-search/styles/_CurrentRefinements.scss new file mode 100644 index 00000000..1fe78299 --- /dev/null +++ b/src/course-search/styles/_CurrentRefinements.scss @@ -0,0 +1,12 @@ +.fe__refinement-badge { + border-radius: 0; + + &.fe__refinement-badge:first-child { + // overrides bootstrap margin for first child + margin-left: 0 !important; + } +} + +.fe__current-refinement-button--inverse { + color: $white; +} diff --git a/src/course-search/styles/_FacetList.scss b/src/course-search/styles/_FacetList.scss index ff8d5be3..baca6f57 100644 --- a/src/course-search/styles/_FacetList.scss +++ b/src/course-search/styles/_FacetList.scss @@ -25,6 +25,8 @@ $facet-dropdown-max-height: 250px; .dropdown-item { padding-left: 30px; white-space: break-spaces; + display: flex; + align-items: center; } } } @@ -38,4 +40,10 @@ $facet-dropdown-max-height: 250px; } } } + +} + +.bg-brand-primary--default { + background-color: $primary-700; + color: $white; } diff --git a/src/course-search/styles/_index.scss b/src/course-search/styles/_index.scss index 5e812089..6deae242 100644 --- a/src/course-search/styles/_index.scss +++ b/src/course-search/styles/_index.scss @@ -1,3 +1,4 @@ +@import "./CurrentRefinements"; @import "./FacetList"; @import "./MobileSearchFilters"; @import "./SearchPagination";