@coorpacademy/components 11.40.12 → 11.40.13-alpha.3
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/es/molecule/dashboard/cards-list/style.css +4 -4
- package/es/molecule/quick-filters/index.d.ts +25 -3
- package/es/molecule/quick-filters/index.d.ts.map +1 -1
- package/es/molecule/quick-filters/index.js +54 -22
- package/es/molecule/quick-filters/index.js.map +1 -1
- package/es/molecule/quick-filters/style.css +87 -6
- package/es/molecule/quick-filters/types.d.ts +0 -4
- package/es/molecule/quick-filters/types.d.ts.map +1 -1
- package/es/molecule/quick-filters/types.js +0 -2
- package/es/molecule/quick-filters/types.js.map +1 -1
- package/es/template/common/search-page/index.d.ts +65 -0
- package/es/template/common/search-page/index.d.ts.map +1 -1
- package/es/template/common/search-page/index.js +12 -3
- package/es/template/common/search-page/index.js.map +1 -1
- package/es/template/common/search-page/style.css +4 -3
- package/lib/molecule/dashboard/cards-list/style.css +4 -4
- package/lib/molecule/quick-filters/index.d.ts +25 -3
- package/lib/molecule/quick-filters/index.d.ts.map +1 -1
- package/lib/molecule/quick-filters/index.js +55 -23
- package/lib/molecule/quick-filters/index.js.map +1 -1
- package/lib/molecule/quick-filters/style.css +87 -6
- package/lib/molecule/quick-filters/types.d.ts +0 -4
- package/lib/molecule/quick-filters/types.d.ts.map +1 -1
- package/lib/molecule/quick-filters/types.js +0 -2
- package/lib/molecule/quick-filters/types.js.map +1 -1
- package/lib/template/common/search-page/index.d.ts +65 -0
- package/lib/template/common/search-page/index.d.ts.map +1 -1
- package/lib/template/common/search-page/index.js +12 -3
- package/lib/template/common/search-page/index.js.map +1 -1
- package/lib/template/common/search-page/style.css +4 -3
- package/package.json +2 -2
|
@@ -21,11 +21,13 @@ import Tag from '../../../atom/tag';
|
|
|
21
21
|
import { cardPropTypes } from '../../../molecule/card';
|
|
22
22
|
import LearningPriorityCard from '../../../molecule/learning-priority-card';
|
|
23
23
|
import { COLORS } from '../../../variables/colors';
|
|
24
|
+
import QuickFilters from '../../../molecule/quick-filters';
|
|
24
25
|
import style from './style.css';
|
|
25
26
|
const SearchPage = (props, context) => {
|
|
26
27
|
const {
|
|
27
28
|
title,
|
|
28
29
|
searchFilters,
|
|
30
|
+
quickFilters,
|
|
29
31
|
cards,
|
|
30
32
|
count,
|
|
31
33
|
noresultsfound,
|
|
@@ -43,7 +45,11 @@ const SearchPage = (props, context) => {
|
|
|
43
45
|
} = context;
|
|
44
46
|
const defaultColor = _getOr('#00B0FF', 'common.primary', skin);
|
|
45
47
|
const nodeRef = useRef(null);
|
|
46
|
-
const recommendationsView = _isEmpty(recommendations) ? null : /*#__PURE__*/React.createElement(CardsList, recommendations
|
|
48
|
+
const recommendationsView = _isEmpty(recommendations) ? null : /*#__PURE__*/React.createElement(CardsList, _extends({}, recommendations, {
|
|
49
|
+
customStyle: {
|
|
50
|
+
padding: 0
|
|
51
|
+
}
|
|
52
|
+
}));
|
|
47
53
|
|
|
48
54
|
// Helper function to render content sections
|
|
49
55
|
const renderSection = section => {
|
|
@@ -128,12 +134,14 @@ const SearchPage = (props, context) => {
|
|
|
128
134
|
})), /*#__PURE__*/React.createElement("div", {
|
|
129
135
|
className: style.contentGrid
|
|
130
136
|
}, " ", cardsView)));
|
|
131
|
-
return /*#__PURE__*/React.createElement("div",
|
|
137
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
138
|
+
"data-name": "filters"
|
|
139
|
+
}, searchFilters ? /*#__PURE__*/React.createElement(Filters, _extends({}, searchFilters, {
|
|
132
140
|
moreSortAriaLabel: moreSortAriaLabel,
|
|
133
141
|
moreFilterAriaLabel: moreFilterAriaLabel,
|
|
134
142
|
filterGroupAriaLabel: filterGroupAriaLabel,
|
|
135
143
|
sortAriaLabel: sortAriaLabel
|
|
136
|
-
})) : null, hasSections ? /*#__PURE__*/React.createElement("div", {
|
|
144
|
+
})) : null, quickFilters ? /*#__PURE__*/React.createElement(QuickFilters, quickFilters) : null, hasSections ? /*#__PURE__*/React.createElement("div", {
|
|
137
145
|
"data-name": "explorerSections",
|
|
138
146
|
className: style.sectionsWrapper
|
|
139
147
|
}, sortedSections.map((section, index) => /*#__PURE__*/React.createElement("div", {
|
|
@@ -157,6 +165,7 @@ SearchPage.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
157
165
|
noresultsfound: PropTypes.string,
|
|
158
166
|
title: PropTypes.string,
|
|
159
167
|
searchFilters: PropTypes.shape(Filters.propTypes),
|
|
168
|
+
quickFilters: PropTypes.shape(QuickFilters.propTypes),
|
|
160
169
|
cards: PropTypes.shape(CardsGrid.propTypes),
|
|
161
170
|
count: PropTypes.number,
|
|
162
171
|
clearFilters: PropTypes.shape(Button.propTypes),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useRef","PropTypes","Provider","Button","Filters","CardsGrid","CardsList","CertificationCard","LearnerSkillCard","PlaylistCard","CMPopin","Tag","cardPropTypes","LearningPriorityCard","COLORS","style","SearchPage","props","context","title","searchFilters","cards","count","noresultsfound","clearFilters","recommendations","moreSortAriaLabel","moreFilterAriaLabel","filterGroupAriaLabel","sortAriaLabel","popinWithCards","sections","skin","defaultColor","_getOr","nodeRef","recommendationsView","_isEmpty","createElement","renderSection","section","sectionCount","length","titleWithCount","className","sectionTitle","label","toString","type","size","customStyle","backgroundColor","cm_grey_100","color","neutral_500","sectionProps","dataName","key","_extends","cardsView","list","noresults","noresultstxt","clear","background","sortedSections","_pipe","_keys","_map","_sortBy","hasSections","_size","contentGridSection","contentSection","sectionHeader","contentGrid","sectionsWrapper","map","index","cardsWrapper","role","ref","contextTypes","childContextTypes","propTypes","process","env","NODE_ENV","string","shape","number","objectOf","arrayOf","oneOfType","showMore","onShowMore","func","order","showMoreOnLeftAriaLabel","showMoreOnRightAriaLabel"],"sources":["../../../../src/template/common/search-page/index.js"],"sourcesContent":["import React, {useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {getOr, isEmpty, keys, map, pipe, size, sortBy} from 'lodash/fp';\nimport Provider from '../../../atom/provider';\nimport Button from '../../../atom/button';\nimport Filters from '../../../molecule/filters';\nimport CardsGrid from '../../../organism/cards-grid';\nimport CardsList from '../../../molecule/dashboard/cards-list';\nimport CertificationCard from '../../../molecule/certification-card';\nimport LearnerSkillCard from '../../../molecule/learner-skill-card';\nimport PlaylistCard from '../../../molecule/playlist-card';\nimport CMPopin from '../../../molecule/cm-popin';\nimport Tag from '../../../atom/tag';\nimport {cardPropTypes} from '../../../molecule/card';\nimport LearningPriorityCard from '../../../molecule/learning-priority-card';\nimport {COLORS} from '../../../variables/colors';\nimport style from './style.css';\n\nconst SearchPage = (props, context) => {\n const {\n title,\n searchFilters,\n cards,\n count,\n noresultsfound,\n clearFilters,\n recommendations,\n moreSortAriaLabel,\n moreFilterAriaLabel,\n filterGroupAriaLabel,\n sortAriaLabel,\n popinWithCards,\n sections = {}\n } = props;\n const {skin} = context;\n const defaultColor = getOr('#00B0FF', 'common.primary', skin);\n const nodeRef = useRef(null);\n const recommendationsView = isEmpty(recommendations) ? null : <CardsList {...recommendations} />;\n\n // Helper function to render content sections\n const renderSection = section => {\n if (!section || isEmpty(section.cards)) return null;\n\n // Use count from props, fallback to cards.length\n const sectionCount = section.count || section.cards.length;\n\n // Create title with count tag\n const titleWithCount = (\n <div className={style.sectionTitle}>\n <span data-name=\"section-title\">{section.title}</span>\n <Tag\n label={sectionCount.toString()}\n type=\"default\"\n size=\"S\"\n customStyle={{backgroundColor: COLORS.cm_grey_100, color: COLORS.neutral_500}}\n />\n </div>\n );\n\n const sectionProps = {\n ...section,\n title: titleWithCount,\n dataName: `${section.key}-section`\n };\n\n // Use CardsList with appropriate type for all sections\n if (section.key === 'certifications') {\n return <CardsList {...sectionProps} type=\"certifications\" />;\n }\n\n if (section.key === 'skills') {\n return <CardsList {...sectionProps} type=\"skills\" />;\n }\n\n if (section.key === 'playlists') {\n return <CardsList {...sectionProps} type=\"playlists\" />;\n }\n\n // For new content, use standard cards\n return <CardsList {...sectionProps} />;\n };\n\n const cardsView = isEmpty(cards?.list) ? (\n <div>\n <div className={style.noresults}>\n <div className={style.noresultstxt}>{noresultsfound}</div>\n <Button\n {...clearFilters}\n data-name=\"searchPageClear\"\n className={style.clear}\n style={{background: defaultColor}}\n type=\"link\"\n />\n </div>\n {recommendationsView}\n </div>\n ) : (\n <CardsGrid {...cards} />\n );\n\n // Convert sections object to array and sort by order\n const sortedSections = pipe(\n keys,\n map(key => ({key, ...sections[key]})),\n sortBy('order')\n )(sections);\n\n const hasSections = size(sortedSections) > 0;\n\n const contentGridSection = (\n <div className={style.contentSection}>\n <div className={style.sectionHeader}>\n <div className={style.sectionTitle}>\n <span>{title}</span>\n <Tag\n label={count || cards.list.length.toString()}\n type=\"default\"\n size=\"S\"\n customStyle={{backgroundColor: COLORS.cm_grey_100, color: COLORS.neutral_500}}\n />\n </div>\n <div className={style.contentGrid}> {cardsView}</div>\n </div>\n </div>\n );\n\n return (\n <div>\n {searchFilters ? (\n <Filters\n {...searchFilters}\n moreSortAriaLabel={moreSortAriaLabel}\n moreFilterAriaLabel={moreFilterAriaLabel}\n filterGroupAriaLabel={filterGroupAriaLabel}\n sortAriaLabel={sortAriaLabel}\n />\n ) : null}\n\n {hasSections ? (\n <div data-name=\"explorerSections\" className={style.sectionsWrapper}>\n {sortedSections.map((section, index) => (\n <div data-name={`section-${section.key}`} key={`${section.key}-${index}`}>\n {renderSection(section)}\n </div>\n ))}\n {contentGridSection ? <div>{contentGridSection}</div> : null}\n </div>\n ) : (\n <div data-name=\"searchResult\" className={style.cardsWrapper}>\n <div className={style.title} role=\"status\">\n {title}\n </div>\n {cardsView}\n </div>\n )}\n\n {popinWithCards ? (\n <div className={style.popinWithCards} ref={nodeRef}>\n <CMPopin {...popinWithCards} />\n </div>\n ) : null}\n </div>\n );\n};\n\nSearchPage.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nSearchPage.propTypes = {\n noresultsfound: PropTypes.string,\n title: PropTypes.string,\n searchFilters: PropTypes.shape(Filters.propTypes),\n cards: PropTypes.shape(CardsGrid.propTypes),\n count: PropTypes.number,\n clearFilters: PropTypes.shape(Button.propTypes),\n recommendations: PropTypes.shape(CardsList.propTypes),\n moreSortAriaLabel: PropTypes.string,\n moreFilterAriaLabel: PropTypes.string,\n filterGroupAriaLabel: PropTypes.string,\n sortAriaLabel: PropTypes.string,\n popinWithCards: PropTypes.shape(CMPopin.propTypes),\n sections: PropTypes.objectOf(\n PropTypes.shape({\n title: PropTypes.string,\n cards: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.shape(cardPropTypes),\n PropTypes.shape(LearnerSkillCard.propTypes),\n PropTypes.shape(CertificationCard.propTypes),\n PropTypes.shape(PlaylistCard.propTypes),\n PropTypes.shape(LearningPriorityCard.propTypes)\n ])\n ),\n showMore: PropTypes.string,\n onShowMore: PropTypes.func,\n order: PropTypes.number,\n count: PropTypes.number,\n 'arrows-aria-label': PropTypes.shape({\n showMoreOnLeftAriaLabel: PropTypes.string,\n showMoreOnRightAriaLabel: PropTypes.string\n })\n })\n )\n};\n\nexport default SearchPage;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useRef","PropTypes","Provider","Button","Filters","CardsGrid","CardsList","CertificationCard","LearnerSkillCard","PlaylistCard","CMPopin","Tag","cardPropTypes","LearningPriorityCard","COLORS","QuickFilters","style","SearchPage","props","context","title","searchFilters","quickFilters","cards","count","noresultsfound","clearFilters","recommendations","moreSortAriaLabel","moreFilterAriaLabel","filterGroupAriaLabel","sortAriaLabel","popinWithCards","sections","skin","defaultColor","_getOr","nodeRef","recommendationsView","_isEmpty","createElement","_extends","customStyle","padding","renderSection","section","sectionCount","length","titleWithCount","className","sectionTitle","label","toString","type","size","backgroundColor","cm_grey_100","color","neutral_500","sectionProps","dataName","key","cardsView","list","noresults","noresultstxt","clear","background","sortedSections","_pipe","_keys","_map","_sortBy","hasSections","_size","contentGridSection","contentSection","sectionHeader","contentGrid","sectionsWrapper","map","index","cardsWrapper","role","ref","contextTypes","childContextTypes","propTypes","process","env","NODE_ENV","string","shape","number","objectOf","arrayOf","oneOfType","showMore","onShowMore","func","order","showMoreOnLeftAriaLabel","showMoreOnRightAriaLabel"],"sources":["../../../../src/template/common/search-page/index.js"],"sourcesContent":["import React, {useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {getOr, isEmpty, keys, map, pipe, size, sortBy} from 'lodash/fp';\nimport Provider from '../../../atom/provider';\nimport Button from '../../../atom/button';\nimport Filters from '../../../molecule/filters';\nimport CardsGrid from '../../../organism/cards-grid';\nimport CardsList from '../../../molecule/dashboard/cards-list';\nimport CertificationCard from '../../../molecule/certification-card';\nimport LearnerSkillCard from '../../../molecule/learner-skill-card';\nimport PlaylistCard from '../../../molecule/playlist-card';\nimport CMPopin from '../../../molecule/cm-popin';\nimport Tag from '../../../atom/tag';\nimport {cardPropTypes} from '../../../molecule/card';\nimport LearningPriorityCard from '../../../molecule/learning-priority-card';\nimport {COLORS} from '../../../variables/colors';\nimport QuickFilters from '../../../molecule/quick-filters';\nimport style from './style.css';\n\nconst SearchPage = (props, context) => {\n const {\n title,\n searchFilters,\n quickFilters,\n cards,\n count,\n noresultsfound,\n clearFilters,\n recommendations,\n moreSortAriaLabel,\n moreFilterAriaLabel,\n filterGroupAriaLabel,\n sortAriaLabel,\n popinWithCards,\n sections = {}\n } = props;\n const {skin} = context;\n const defaultColor = getOr('#00B0FF', 'common.primary', skin);\n const nodeRef = useRef(null);\n const recommendationsView = isEmpty(recommendations) ? null : (\n <CardsList {...recommendations} customStyle={{padding: 0}} />\n );\n\n // Helper function to render content sections\n const renderSection = section => {\n if (!section || isEmpty(section.cards)) return null;\n\n // Use count from props, fallback to cards.length\n const sectionCount = section.count || section.cards.length;\n\n // Create title with count tag\n const titleWithCount = (\n <div className={style.sectionTitle}>\n <span data-name=\"section-title\">{section.title}</span>\n <Tag\n label={sectionCount.toString()}\n type=\"default\"\n size=\"S\"\n customStyle={{backgroundColor: COLORS.cm_grey_100, color: COLORS.neutral_500}}\n />\n </div>\n );\n\n const sectionProps = {\n ...section,\n title: titleWithCount,\n dataName: `${section.key}-section`\n };\n\n // Use CardsList with appropriate type for all sections\n if (section.key === 'certifications') {\n return <CardsList {...sectionProps} type=\"certifications\" />;\n }\n\n if (section.key === 'skills') {\n return <CardsList {...sectionProps} type=\"skills\" />;\n }\n\n if (section.key === 'playlists') {\n return <CardsList {...sectionProps} type=\"playlists\" />;\n }\n\n // For new content, use standard cards\n return <CardsList {...sectionProps} />;\n };\n\n const cardsView = isEmpty(cards?.list) ? (\n <div>\n <div className={style.noresults}>\n <div className={style.noresultstxt}>{noresultsfound}</div>\n <Button\n {...clearFilters}\n data-name=\"searchPageClear\"\n className={style.clear}\n style={{background: defaultColor}}\n type=\"link\"\n />\n </div>\n {recommendationsView}\n </div>\n ) : (\n <CardsGrid {...cards} />\n );\n\n // Convert sections object to array and sort by order\n const sortedSections = pipe(\n keys,\n map(key => ({key, ...sections[key]})),\n sortBy('order')\n )(sections);\n\n const hasSections = size(sortedSections) > 0;\n\n const contentGridSection = (\n <div className={style.contentSection}>\n <div className={style.sectionHeader}>\n <div className={style.sectionTitle}>\n <span>{title}</span>\n <Tag\n label={count || cards.list.length.toString()}\n type=\"default\"\n size=\"S\"\n customStyle={{backgroundColor: COLORS.cm_grey_100, color: COLORS.neutral_500}}\n />\n </div>\n <div className={style.contentGrid}> {cardsView}</div>\n </div>\n </div>\n );\n\n return (\n <div data-name=\"filters\">\n {searchFilters ? (\n <Filters\n {...searchFilters}\n moreSortAriaLabel={moreSortAriaLabel}\n moreFilterAriaLabel={moreFilterAriaLabel}\n filterGroupAriaLabel={filterGroupAriaLabel}\n sortAriaLabel={sortAriaLabel}\n />\n ) : null}\n {quickFilters ? <QuickFilters {...quickFilters} /> : null}\n\n {hasSections ? (\n <div data-name=\"explorerSections\" className={style.sectionsWrapper}>\n {sortedSections.map((section, index) => (\n <div data-name={`section-${section.key}`} key={`${section.key}-${index}`}>\n {renderSection(section)}\n </div>\n ))}\n {contentGridSection ? <div>{contentGridSection}</div> : null}\n </div>\n ) : (\n <div data-name=\"searchResult\" className={style.cardsWrapper}>\n <div className={style.title} role=\"status\">\n {title}\n </div>\n {cardsView}\n </div>\n )}\n\n {popinWithCards ? (\n <div className={style.popinWithCards} ref={nodeRef}>\n <CMPopin {...popinWithCards} />\n </div>\n ) : null}\n </div>\n );\n};\n\nSearchPage.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nSearchPage.propTypes = {\n noresultsfound: PropTypes.string,\n title: PropTypes.string,\n searchFilters: PropTypes.shape(Filters.propTypes),\n quickFilters: PropTypes.shape(QuickFilters.propTypes),\n cards: PropTypes.shape(CardsGrid.propTypes),\n count: PropTypes.number,\n clearFilters: PropTypes.shape(Button.propTypes),\n recommendations: PropTypes.shape(CardsList.propTypes),\n moreSortAriaLabel: PropTypes.string,\n moreFilterAriaLabel: PropTypes.string,\n filterGroupAriaLabel: PropTypes.string,\n sortAriaLabel: PropTypes.string,\n popinWithCards: PropTypes.shape(CMPopin.propTypes),\n sections: PropTypes.objectOf(\n PropTypes.shape({\n title: PropTypes.string,\n cards: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.shape(cardPropTypes),\n PropTypes.shape(LearnerSkillCard.propTypes),\n PropTypes.shape(CertificationCard.propTypes),\n PropTypes.shape(PlaylistCard.propTypes),\n PropTypes.shape(LearningPriorityCard.propTypes)\n ])\n ),\n showMore: PropTypes.string,\n onShowMore: PropTypes.func,\n order: PropTypes.number,\n count: PropTypes.number,\n 'arrows-aria-label': PropTypes.shape({\n showMoreOnLeftAriaLabel: PropTypes.string,\n showMoreOnRightAriaLabel: PropTypes.string\n })\n })\n )\n};\n\nexport default SearchPage;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
@value mobile from breakpoints;
|
|
5
5
|
@value colors: "../../../variables/colors.css";
|
|
6
6
|
@value xtraLightGrey from colors;
|
|
7
|
-
@value dark from colors;
|
|
8
7
|
@value black from colors;
|
|
9
8
|
@value white from colors;
|
|
10
9
|
@value cm_grey_500 from colors;
|
|
@@ -12,6 +11,8 @@
|
|
|
12
11
|
.cardsWrapper {
|
|
13
12
|
display: block;
|
|
14
13
|
width: 100%;
|
|
14
|
+
max-width: 1100px;
|
|
15
|
+
margin: 0px auto;
|
|
15
16
|
height: auto;
|
|
16
17
|
box-sizing: border-box;
|
|
17
18
|
padding: 0 0 16px;
|
|
@@ -35,7 +36,7 @@
|
|
|
35
36
|
font-family: "Gilroy";
|
|
36
37
|
font-size: 20px;
|
|
37
38
|
font-weight: 700;
|
|
38
|
-
color:
|
|
39
|
+
color: cm_grey_500;
|
|
39
40
|
padding: 25px;
|
|
40
41
|
background: white;
|
|
41
42
|
}
|
|
@@ -72,7 +73,7 @@
|
|
|
72
73
|
font-family: "Gilroy";
|
|
73
74
|
font-size: 16px;
|
|
74
75
|
font-weight: 600;
|
|
75
|
-
color:
|
|
76
|
+
color: cm_grey_500;
|
|
76
77
|
}
|
|
77
78
|
|
|
78
79
|
.contentSection .sectionTitle {
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
@value mobile from breakpoints;
|
|
4
4
|
@value tablet from breakpoints;
|
|
5
5
|
@value desktop from breakpoints;
|
|
6
|
-
@value dark from colors;
|
|
7
6
|
@value black from colors;
|
|
8
7
|
@value lightMediumGray from colors;
|
|
9
8
|
@value medium from colors;
|
|
10
9
|
@value light from colors;
|
|
11
10
|
@value cm_grey_100 from colors;
|
|
12
11
|
@value cm_grey_75 from colors;
|
|
12
|
+
@value cm_grey_500 from colors;
|
|
13
13
|
|
|
14
14
|
.wrapper {
|
|
15
15
|
padding: 16px 30px 8px;
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
display: flex;
|
|
48
48
|
align-items: center;
|
|
49
49
|
flex-grow: 1;
|
|
50
|
-
color:
|
|
50
|
+
color: cm_grey_500;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
.titleNode {
|
|
@@ -71,13 +71,13 @@
|
|
|
71
71
|
cursor: pointer;
|
|
72
72
|
display: flex;
|
|
73
73
|
align-items: center;
|
|
74
|
-
color:
|
|
74
|
+
color: cm_grey_500;
|
|
75
75
|
padding-right: 16px;
|
|
76
76
|
margin-right: 16px;
|
|
77
77
|
}
|
|
78
78
|
.showMoreBar {
|
|
79
79
|
composes: showMore;
|
|
80
|
-
border-right: 1px solid color(
|
|
80
|
+
border-right: 1px solid color(cm_grey_500 a(70%));
|
|
81
81
|
height: 16px;
|
|
82
82
|
margin: auto 16px auto auto;
|
|
83
83
|
padding-top: 2px;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { WebContextValues } from '../../atom/provider/web-context';
|
|
2
3
|
import { QuickFiltersProps } from './types';
|
|
3
4
|
export declare const handleScroll: (direction: number, listRef: React.RefObject<HTMLDivElement>) => void;
|
|
4
5
|
declare const QuickFilters: {
|
|
5
|
-
({ primaryOption, filterOptions, filterButton,
|
|
6
|
+
({ primaryOption, filterOptions, filterButton, filterOptionsAriaLabel }: QuickFiltersProps, context: WebContextValues): JSX.Element;
|
|
6
7
|
propTypes: {
|
|
7
8
|
primaryOption: import("prop-types").Requireable<import("prop-types").InferProps<{
|
|
8
9
|
defaultLabel: import("prop-types").Requireable<string>;
|
|
@@ -12,8 +13,6 @@ declare const QuickFilters: {
|
|
|
12
13
|
defaultAriaLabel: import("prop-types").Requireable<string>;
|
|
13
14
|
onDefaultClick: import("prop-types").Requireable<(...args: any[]) => any>;
|
|
14
15
|
}>>;
|
|
15
|
-
nextFilterAriaLabel: import("prop-types").Requireable<string>;
|
|
16
|
-
previousFilterAriaLabel: import("prop-types").Requireable<string>;
|
|
17
16
|
filterOptionsAriaLabel: import("prop-types").Requireable<string>;
|
|
18
17
|
filterOptions: import("prop-types").Requireable<(import("prop-types").InferProps<{
|
|
19
18
|
iconName: import("prop-types").Requireable<string>;
|
|
@@ -70,6 +69,29 @@ declare const QuickFilters: {
|
|
|
70
69
|
customLabelClassName: import("prop-types").Requireable<string>;
|
|
71
70
|
}>>;
|
|
72
71
|
};
|
|
72
|
+
contextTypes: {
|
|
73
|
+
skin: import("prop-types").Requireable<import("prop-types").InferProps<{
|
|
74
|
+
common: import("prop-types").Requireable<{
|
|
75
|
+
[x: string]: any;
|
|
76
|
+
}>;
|
|
77
|
+
images: import("prop-types").Requireable<import("prop-types").InferProps<{
|
|
78
|
+
'logo-mobile': import("prop-types").Requireable<any>;
|
|
79
|
+
logo: import("prop-types").Requireable<any>;
|
|
80
|
+
'logo-email': import("prop-types").Requireable<any>;
|
|
81
|
+
login: import("prop-types").Requireable<any>;
|
|
82
|
+
}>>;
|
|
83
|
+
icons: import("prop-types").Requireable<{
|
|
84
|
+
[x: string]: any;
|
|
85
|
+
}>;
|
|
86
|
+
mod: import("prop-types").Requireable<{
|
|
87
|
+
[x: string]: any;
|
|
88
|
+
}>;
|
|
89
|
+
courses: import("prop-types").Requireable<any[]>;
|
|
90
|
+
texts: import("prop-types").Requireable<{
|
|
91
|
+
[x: string]: any;
|
|
92
|
+
}>;
|
|
93
|
+
}>>;
|
|
94
|
+
};
|
|
73
95
|
};
|
|
74
96
|
export default QuickFilters;
|
|
75
97
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/quick-filters/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAO5D,OAAO,EAAC,iBAAiB,EAAY,MAAM,SAAS,CAAC;AAIrD,eAAO,MAAM,YAAY,cAAe,MAAM,WAAW,MAAM,SAAS,CAAC,cAAc,CAAC,SAOvF,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/quick-filters/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAO5D,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AAGjE,OAAO,EAAC,iBAAiB,EAAY,MAAM,SAAS,CAAC;AAIrD,eAAO,MAAM,YAAY,cAAe,MAAM,WAAW,MAAM,SAAS,CAAC,cAAc,CAAC,SAOvF,CAAC;AAyCF,QAAA,MAAM,YAAY;6EACsD,iBAAiB,WAC9E,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmH1B,CAAC;AAMF,eAAe,YAAY,CAAC"}
|
|
@@ -2,19 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.handleScroll = exports.default = void 0;
|
|
5
|
+
var _get2 = _interopRequireDefault(require("lodash/fp/get"));
|
|
5
6
|
var _react = _interopRequireWildcard(require("react"));
|
|
6
7
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
7
8
|
var _icon = _interopRequireDefault(require("../../atom/icon"));
|
|
8
9
|
var _colors = require("../../variables/colors");
|
|
9
10
|
var _buttonLink = _interopRequireDefault(require("../../atom/button-link"));
|
|
11
|
+
var _provider = _interopRequireWildcard(require("../../atom/provider"));
|
|
10
12
|
var _style = _interopRequireDefault(require("./style.css"));
|
|
11
13
|
var _types = require("./types");
|
|
12
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
14
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
14
15
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
17
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
16
|
-
const SCROLL_RIGHT_SIZE =
|
|
17
|
-
const SCROLL_LEFT_SIZE = -
|
|
18
|
+
const SCROLL_RIGHT_SIZE = 400;
|
|
19
|
+
const SCROLL_LEFT_SIZE = -400;
|
|
18
20
|
const handleScroll = (direction, listRef) => {
|
|
19
21
|
if (listRef.current) {
|
|
20
22
|
listRef.current.scrollBy({
|
|
@@ -24,16 +26,20 @@ const handleScroll = (direction, listRef) => {
|
|
|
24
26
|
}
|
|
25
27
|
};
|
|
26
28
|
exports.handleScroll = handleScroll;
|
|
27
|
-
const getFilterButton = filterButtonProps => {
|
|
29
|
+
const getFilterButton = (filterButtonProps, primarySkinColor) => {
|
|
28
30
|
if (!filterButtonProps) return null;
|
|
29
31
|
const {
|
|
30
|
-
tag
|
|
32
|
+
tag,
|
|
33
|
+
...rest
|
|
31
34
|
} = filterButtonProps;
|
|
32
35
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
33
|
-
className:
|
|
36
|
+
className: _style.default.filterButtonWrapper,
|
|
37
|
+
style: {
|
|
38
|
+
borderColor: tag?.label ? primarySkinColor : 'transparent'
|
|
39
|
+
}
|
|
34
40
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
35
41
|
className: _style.default.filterButton
|
|
36
|
-
}, /*#__PURE__*/_react.default.createElement(_buttonLink.default, _extends({},
|
|
42
|
+
}, /*#__PURE__*/_react.default.createElement(_buttonLink.default, _extends({}, rest, {
|
|
37
43
|
icon: {
|
|
38
44
|
position: 'left',
|
|
39
45
|
faIcon: {
|
|
@@ -42,6 +48,14 @@ const getFilterButton = filterButtonProps => {
|
|
|
42
48
|
color: tag ? _colors.COLORS.cm_grey_700 : _colors.COLORS.neutral_500
|
|
43
49
|
}
|
|
44
50
|
},
|
|
51
|
+
tag: tag ? {
|
|
52
|
+
label: tag.label,
|
|
53
|
+
customStyle: {
|
|
54
|
+
backgroundColor: primarySkinColor,
|
|
55
|
+
color: '#FFFFFF'
|
|
56
|
+
}
|
|
57
|
+
} : undefined,
|
|
58
|
+
className: _style.default.filterButton,
|
|
45
59
|
"data-testid": "open-filters-modal-button",
|
|
46
60
|
customStyle: {
|
|
47
61
|
borderRadius: '12px'
|
|
@@ -52,10 +66,10 @@ const QuickFilters = ({
|
|
|
52
66
|
primaryOption,
|
|
53
67
|
filterOptions,
|
|
54
68
|
filterButton,
|
|
55
|
-
nextFilterAriaLabel,
|
|
56
|
-
previousFilterAriaLabel,
|
|
57
69
|
filterOptionsAriaLabel
|
|
58
|
-
}) => {
|
|
70
|
+
}, context) => {
|
|
71
|
+
const skin = (0, _provider.GetSkinFromContext)(context);
|
|
72
|
+
const primarySkinColor = (0, _get2.default)('common.primary', skin);
|
|
59
73
|
const {
|
|
60
74
|
defaultLabel,
|
|
61
75
|
defaultIconName,
|
|
@@ -80,9 +94,12 @@ const QuickFilters = ({
|
|
|
80
94
|
if (!list || !leftButton || !rightButton) return;
|
|
81
95
|
const update = () => {
|
|
82
96
|
const rightArrowWidth = rightButton.offsetWidth;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
97
|
+
const showingRightButton = list.scrollLeft + list.clientWidth < list.scrollWidth - rightArrowWidth;
|
|
98
|
+
const showingLeftButton = list.scrollLeft > 0;
|
|
99
|
+
rightButton.style.visibility = showingRightButton ? 'visible' : 'hidden';
|
|
100
|
+
rightButton.style.opacity = showingRightButton ? '1' : '0';
|
|
101
|
+
leftButton.style.visibility = showingLeftButton ? 'visible' : 'hidden';
|
|
102
|
+
leftButton.style.opacity = showingLeftButton ? '1' : '0';
|
|
86
103
|
};
|
|
87
104
|
list.addEventListener('scroll', update);
|
|
88
105
|
window.addEventListener('resize', update);
|
|
@@ -93,7 +110,8 @@ const QuickFilters = ({
|
|
|
93
110
|
};
|
|
94
111
|
}, [filterOptions]);
|
|
95
112
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
96
|
-
className: _style.default.filtersMainContainer
|
|
113
|
+
className: _style.default.filtersMainContainer,
|
|
114
|
+
"data-name": "search"
|
|
97
115
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
98
116
|
className: _style.default.leftArrowButton,
|
|
99
117
|
ref: leftBtnRef,
|
|
@@ -109,11 +127,11 @@ const QuickFilters = ({
|
|
|
109
127
|
}
|
|
110
128
|
},
|
|
111
129
|
onClick: handleScrollLeft,
|
|
130
|
+
className: _style.default.leftArrowButton,
|
|
112
131
|
customStyle: {
|
|
113
132
|
height: '36px'
|
|
114
133
|
},
|
|
115
|
-
"data-testid": "scroll-left-button"
|
|
116
|
-
"aria-label": previousFilterAriaLabel
|
|
134
|
+
"data-testid": "scroll-left-button"
|
|
117
135
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
118
136
|
className: _style.default.filtersList,
|
|
119
137
|
ref: filtersListRef,
|
|
@@ -129,11 +147,15 @@ const QuickFilters = ({
|
|
|
129
147
|
faSize: 20,
|
|
130
148
|
wrapperSize: 20
|
|
131
149
|
},
|
|
132
|
-
iconColor: defaultSelected ? _colors.COLORS.cm_grey_700 : _colors.COLORS.neutral_500,
|
|
133
150
|
"aria-label": defaultAriaLabel
|
|
134
151
|
}), /*#__PURE__*/_react.default.createElement("span", {
|
|
135
152
|
className: _style.default.filterLabel
|
|
136
|
-
}, defaultLabel)
|
|
153
|
+
}, defaultLabel), /*#__PURE__*/_react.default.createElement("div", {
|
|
154
|
+
className: _style.default.bar,
|
|
155
|
+
style: {
|
|
156
|
+
background: primarySkinColor
|
|
157
|
+
}
|
|
158
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
137
159
|
className: _style.default.filterSeparator
|
|
138
160
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
139
161
|
className: _style.default.filtersContainer
|
|
@@ -150,16 +172,23 @@ const QuickFilters = ({
|
|
|
150
172
|
key: idx,
|
|
151
173
|
className: (0, _classnames.default)(_style.default.filterOption, selected && _style.default.filterSelected),
|
|
152
174
|
"data-testid": `filter-${value}-${idx}`,
|
|
175
|
+
style: {
|
|
176
|
+
borderBottomColor: primarySkinColor
|
|
177
|
+
},
|
|
153
178
|
onClick: onClick
|
|
154
179
|
}, /*#__PURE__*/_react.default.createElement(_icon.default, {
|
|
155
180
|
iconName: iconName,
|
|
156
|
-
iconColor: selected ? _colors.COLORS.cm_grey_700 : _colors.COLORS.neutral_500,
|
|
157
181
|
size: {
|
|
158
182
|
faSize: 20,
|
|
159
183
|
wrapperSize: 20
|
|
160
184
|
},
|
|
161
185
|
"aria-label": ariaLabel
|
|
162
|
-
}), /*#__PURE__*/_react.default.createElement("span", null, label)
|
|
186
|
+
}), /*#__PURE__*/_react.default.createElement("span", null, label), /*#__PURE__*/_react.default.createElement("div", {
|
|
187
|
+
className: _style.default.bar,
|
|
188
|
+
style: {
|
|
189
|
+
background: primarySkinColor
|
|
190
|
+
}
|
|
191
|
+
}));
|
|
163
192
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
164
193
|
className: _style.default.rightArrowButton,
|
|
165
194
|
ref: rightBtnRef,
|
|
@@ -174,14 +203,17 @@ const QuickFilters = ({
|
|
|
174
203
|
size: 15
|
|
175
204
|
}
|
|
176
205
|
},
|
|
206
|
+
className: _style.default.rightArrowButton,
|
|
177
207
|
onClick: handleScrollRight,
|
|
178
208
|
customStyle: {
|
|
179
209
|
height: '36px'
|
|
180
210
|
},
|
|
181
|
-
"data-testid": "scroll-right-button"
|
|
182
|
-
|
|
183
|
-
})))), getFilterButton(filterButton));
|
|
211
|
+
"data-testid": "scroll-right-button"
|
|
212
|
+
})))), getFilterButton(filterButton, primarySkinColor));
|
|
184
213
|
};
|
|
185
214
|
QuickFilters.propTypes = process.env.NODE_ENV !== "production" ? _types.propTypes : {};
|
|
215
|
+
QuickFilters.contextTypes = {
|
|
216
|
+
skin: _provider.default.childContextTypes.skin
|
|
217
|
+
};
|
|
186
218
|
var _default = exports.default = QuickFilters;
|
|
187
219
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_icon","_colors","_buttonLink","_style","_types","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","SCROLL_RIGHT_SIZE","SCROLL_LEFT_SIZE","handleScroll","direction","listRef","current","scrollBy","left","behavior","exports","getFilterButton","filterButtonProps","tag","createElement","className","style","filterButtonWrapper","filterButton","icon","position","faIcon","name","size","color","COLORS","cm_grey_700","neutral_500","customStyle","borderRadius","QuickFilters","primaryOption","filterOptions","nextFilterAriaLabel","previousFilterAriaLabel","filterOptionsAriaLabel","defaultLabel","defaultIconName","defaultSelected","defaultAriaLabel","onDefaultClick","filtersListRef","React","useRef","rightBtnRef","leftBtnRef","handleScrollRight","useCallback","handleScrollLeft","useEffect","list","rightButton","leftButton","update","rightArrowWidth","offsetWidth","visibility","scrollLeft","clientWidth","scrollWidth","display","addEventListener","window","removeEventListener","filtersMainContainer","leftArrowButton","ref","onClick","height","filtersList","classNames","defaultOption","filterSelected","iconName","faSize","wrapperSize","iconColor","filterLabel","filterSeparator","filtersContainer","map","filterOption","idx","label","selected","value","ariaLabel","key","rightArrowButton","propTypes","process","env","NODE_ENV","_default"],"sources":["../../../src/molecule/quick-filters/index.tsx"],"sourcesContent":["import React, {useCallback, useRef, useEffect} from 'react';\nimport classNames from 'classnames';\nimport FaIcon from '../../atom/icon';\nimport {COLORS} from '../../variables/colors';\nimport ButtonLink from '../../atom/button-link';\nimport {ButtonLinkProps} from '../../atom/button-link/types';\nimport style from './style.css';\nimport {QuickFiltersProps, propTypes} from './types';\n\nconst SCROLL_RIGHT_SIZE = 380;\nconst SCROLL_LEFT_SIZE = -380;\nexport const handleScroll = (direction: number, listRef: React.RefObject<HTMLDivElement>) => {\n if (listRef.current) {\n listRef.current.scrollBy({\n left: direction,\n behavior: 'smooth'\n });\n }\n};\n\nconst getFilterButton = (filterButtonProps: ButtonLinkProps | undefined) => {\n if (!filterButtonProps) return null;\n const {tag} = filterButtonProps;\n return (\n <div className={tag ? style.filterButtonWrapper : ''}>\n <div className={style.filterButton}>\n <ButtonLink\n {...filterButtonProps}\n icon={{\n position: 'left',\n faIcon: {\n name: 'sliders',\n size: 14,\n color: tag ? COLORS.cm_grey_700 : COLORS.neutral_500\n }\n }}\n data-testid=\"open-filters-modal-button\"\n customStyle={{borderRadius: '12px'}}\n />\n </div>\n </div>\n );\n};\n\nconst QuickFilters = ({\n primaryOption,\n filterOptions,\n filterButton,\n nextFilterAriaLabel,\n previousFilterAriaLabel,\n filterOptionsAriaLabel\n}: QuickFiltersProps) => {\n const {defaultLabel, defaultIconName, defaultSelected, defaultAriaLabel, onDefaultClick} =\n primaryOption;\n const filtersListRef = React.useRef<HTMLDivElement>(null);\n const rightBtnRef = useRef<HTMLDivElement>(null);\n const leftBtnRef = useRef<HTMLDivElement>(null);\n\n const handleScrollRight = useCallback(() => {\n handleScroll(SCROLL_RIGHT_SIZE, filtersListRef);\n }, [filtersListRef]);\n const handleScrollLeft = useCallback(() => {\n handleScroll(SCROLL_LEFT_SIZE, filtersListRef);\n }, [filtersListRef]);\n useEffect(() => {\n const list = filtersListRef.current;\n const rightButton = rightBtnRef.current;\n const leftButton = leftBtnRef.current;\n /* istanbul ignore next */ // not testable without complex mocking useRef\n if (!list || !leftButton || !rightButton) return;\n\n const update = () => {\n const rightArrowWidth = rightButton.offsetWidth;\n rightButton.style.visibility =\n list.scrollLeft + list.clientWidth < list.scrollWidth - rightArrowWidth\n ? 'visible'\n : 'hidden';\n leftButton.style.visibility = list.scrollLeft > 0 ? 'visible' : 'hidden';\n leftButton.style.display = list.scrollLeft > 0 ? 'flex' : 'none';\n };\n\n list.addEventListener('scroll', update);\n window.addEventListener('resize', update);\n update();\n return () => {\n list.removeEventListener('scroll', update);\n window.removeEventListener('resize', update);\n };\n }, [filterOptions]);\n\n return (\n <div className={style.filtersMainContainer}>\n <div className={style.leftArrowButton} ref={leftBtnRef} style={{visibility: 'hidden'}}>\n <ButtonLink\n icon={{position: 'left', faIcon: {name: 'arrow-left', size: 15}}}\n onClick={handleScrollLeft}\n customStyle={{height: '36px'}}\n data-testid=\"scroll-left-button\"\n aria-label={previousFilterAriaLabel}\n />\n </div>\n <div\n className={style.filtersList}\n ref={filtersListRef}\n data-testid=\"filters-options-list\"\n aria-label={filterOptionsAriaLabel}\n >\n <div\n data-testid=\"all-option\"\n className={classNames(style.defaultOption, defaultSelected && style.filterSelected)}\n onClick={onDefaultClick}\n >\n <FaIcon\n iconName={defaultIconName}\n size={{faSize: 20, wrapperSize: 20}}\n iconColor={defaultSelected ? COLORS.cm_grey_700 : COLORS.neutral_500}\n aria-label={defaultAriaLabel}\n />\n <span className={style.filterLabel}>{defaultLabel}</span>\n </div>\n <div className={style.filterSeparator} />\n <div className={style.filtersContainer}>\n {filterOptions.map((filterOption, idx) => {\n const {iconName, label, selected, value, onClick, ariaLabel} = filterOption;\n return (\n <div\n key={idx}\n className={classNames(style.filterOption, selected && style.filterSelected)}\n data-testid={`filter-${value}-${idx}`}\n onClick={onClick}\n >\n <FaIcon\n iconName={iconName}\n iconColor={selected ? COLORS.cm_grey_700 : COLORS.neutral_500}\n size={{faSize: 20, wrapperSize: 20}}\n aria-label={ariaLabel}\n />\n <span>{label}</span>\n </div>\n );\n })}\n <div className={style.rightArrowButton} ref={rightBtnRef} style={{visibility: 'hidden'}}>\n <ButtonLink\n icon={{\n position: 'left',\n faIcon: {\n name: 'arrow-right',\n size: 15\n }\n }}\n onClick={handleScrollRight}\n customStyle={{height: '36px'}}\n data-testid=\"scroll-right-button\"\n aria-label={nextFilterAriaLabel}\n />\n </div>\n </div>\n </div>\n {getFilterButton(filterButton)}\n </div>\n );\n};\n\nQuickFilters.propTypes = propTypes;\nexport default QuickFilters;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_icon","_colors","_buttonLink","_provider","_style","_types","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","SCROLL_RIGHT_SIZE","SCROLL_LEFT_SIZE","handleScroll","direction","listRef","current","scrollBy","left","behavior","exports","getFilterButton","filterButtonProps","primarySkinColor","tag","rest","createElement","className","style","filterButtonWrapper","borderColor","label","filterButton","icon","position","faIcon","name","size","color","COLORS","cm_grey_700","neutral_500","customStyle","backgroundColor","undefined","borderRadius","QuickFilters","primaryOption","filterOptions","filterOptionsAriaLabel","context","skin","GetSkinFromContext","_get2","defaultLabel","defaultIconName","defaultSelected","defaultAriaLabel","onDefaultClick","filtersListRef","React","useRef","rightBtnRef","leftBtnRef","handleScrollRight","useCallback","handleScrollLeft","useEffect","list","rightButton","leftButton","update","rightArrowWidth","offsetWidth","showingRightButton","scrollLeft","clientWidth","scrollWidth","showingLeftButton","visibility","opacity","addEventListener","window","removeEventListener","filtersMainContainer","leftArrowButton","ref","onClick","height","filtersList","classNames","defaultOption","filterSelected","iconName","faSize","wrapperSize","filterLabel","bar","background","filterSeparator","filtersContainer","map","filterOption","idx","selected","value","ariaLabel","key","borderBottomColor","rightArrowButton","propTypes","process","env","NODE_ENV","contextTypes","Provider","childContextTypes","_default"],"sources":["../../../src/molecule/quick-filters/index.tsx"],"sourcesContent":["import React, {useCallback, useRef, useEffect} from 'react';\nimport classNames from 'classnames';\nimport {get} from 'lodash/fp';\nimport FaIcon from '../../atom/icon';\nimport {COLORS} from '../../variables/colors';\nimport ButtonLink from '../../atom/button-link';\nimport {ButtonLinkProps} from '../../atom/button-link/types';\nimport {WebContextValues} from '../../atom/provider/web-context';\nimport Provider, {GetSkinFromContext} from '../../atom/provider';\nimport style from './style.css';\nimport {QuickFiltersProps, propTypes} from './types';\n\nconst SCROLL_RIGHT_SIZE = 400;\nconst SCROLL_LEFT_SIZE = -400;\nexport const handleScroll = (direction: number, listRef: React.RefObject<HTMLDivElement>) => {\n if (listRef.current) {\n listRef.current.scrollBy({\n left: direction,\n behavior: 'smooth'\n });\n }\n};\n\nconst getFilterButton = (\n filterButtonProps: ButtonLinkProps | undefined,\n primarySkinColor: string\n) => {\n if (!filterButtonProps) return null;\n const {tag, ...rest} = filterButtonProps;\n return (\n <div\n className={style.filterButtonWrapper}\n style={{borderColor: tag?.label ? primarySkinColor : 'transparent'}}\n >\n <div className={style.filterButton}>\n <ButtonLink\n {...rest}\n icon={{\n position: 'left',\n faIcon: {\n name: 'sliders',\n size: 14,\n color: tag ? COLORS.cm_grey_700 : COLORS.neutral_500\n }\n }}\n tag={\n tag\n ? {\n label: tag.label,\n customStyle: {backgroundColor: primarySkinColor, color: '#FFFFFF'}\n }\n : undefined\n }\n className={style.filterButton}\n data-testid=\"open-filters-modal-button\"\n customStyle={{borderRadius: '12px'}}\n />\n </div>\n </div>\n );\n};\n\nconst QuickFilters = (\n {primaryOption, filterOptions, filterButton, filterOptionsAriaLabel}: QuickFiltersProps,\n context: WebContextValues\n) => {\n const skin = GetSkinFromContext(context);\n const primarySkinColor = get('common.primary', skin);\n const {defaultLabel, defaultIconName, defaultSelected, defaultAriaLabel, onDefaultClick} =\n primaryOption;\n const filtersListRef = React.useRef<HTMLDivElement>(null);\n const rightBtnRef = useRef<HTMLDivElement>(null);\n const leftBtnRef = useRef<HTMLDivElement>(null);\n\n const handleScrollRight = useCallback(() => {\n handleScroll(SCROLL_RIGHT_SIZE, filtersListRef);\n }, [filtersListRef]);\n const handleScrollLeft = useCallback(() => {\n handleScroll(SCROLL_LEFT_SIZE, filtersListRef);\n }, [filtersListRef]);\n useEffect(() => {\n const list = filtersListRef.current;\n const rightButton = rightBtnRef.current;\n const leftButton = leftBtnRef.current;\n /* istanbul ignore next */ // not testable without complex mocking useRef\n if (!list || !leftButton || !rightButton) return;\n\n const update = () => {\n const rightArrowWidth = rightButton.offsetWidth;\n const showingRightButton =\n list.scrollLeft + list.clientWidth < list.scrollWidth - rightArrowWidth;\n const showingLeftButton = list.scrollLeft > 0;\n rightButton.style.visibility = showingRightButton ? 'visible' : 'hidden';\n rightButton.style.opacity = showingRightButton ? '1' : '0';\n leftButton.style.visibility = showingLeftButton ? 'visible' : 'hidden';\n leftButton.style.opacity = showingLeftButton ? '1' : '0';\n };\n\n list.addEventListener('scroll', update);\n window.addEventListener('resize', update);\n update();\n return () => {\n list.removeEventListener('scroll', update);\n window.removeEventListener('resize', update);\n };\n }, [filterOptions]);\n\n return (\n <div className={style.filtersMainContainer} data-name=\"search\">\n <div className={style.leftArrowButton} ref={leftBtnRef} style={{visibility: 'hidden'}}>\n <ButtonLink\n icon={{position: 'left', faIcon: {name: 'arrow-left', size: 15}}}\n onClick={handleScrollLeft}\n className={style.leftArrowButton}\n customStyle={{height: '36px'}}\n data-testid=\"scroll-left-button\"\n />\n </div>\n <div\n className={style.filtersList}\n ref={filtersListRef}\n data-testid=\"filters-options-list\"\n aria-label={filterOptionsAriaLabel}\n >\n <div\n data-testid=\"all-option\"\n className={classNames(style.defaultOption, defaultSelected && style.filterSelected)}\n onClick={onDefaultClick}\n >\n <FaIcon\n iconName={defaultIconName}\n size={{faSize: 20, wrapperSize: 20}}\n aria-label={defaultAriaLabel}\n />\n <span className={style.filterLabel}>{defaultLabel}</span>\n <div className={style.bar} style={{background: primarySkinColor}} />\n </div>\n <div className={style.filterSeparator} />\n <div className={style.filtersContainer}>\n {filterOptions.map((filterOption, idx) => {\n const {iconName, label, selected, value, onClick, ariaLabel} = filterOption;\n return (\n <div\n key={idx}\n className={classNames(style.filterOption, selected && style.filterSelected)}\n data-testid={`filter-${value}-${idx}`}\n style={{borderBottomColor: primarySkinColor}}\n onClick={onClick}\n >\n <FaIcon\n iconName={iconName}\n size={{faSize: 20, wrapperSize: 20}}\n aria-label={ariaLabel}\n />\n <span>{label}</span>\n <div className={style.bar} style={{background: primarySkinColor}} />\n </div>\n );\n })}\n <div className={style.rightArrowButton} ref={rightBtnRef} style={{visibility: 'hidden'}}>\n <ButtonLink\n icon={{\n position: 'left',\n faIcon: {\n name: 'arrow-right',\n size: 15\n }\n }}\n className={style.rightArrowButton}\n onClick={handleScrollRight}\n customStyle={{height: '36px'}}\n data-testid=\"scroll-right-button\"\n />\n </div>\n </div>\n </div>\n {getFilterButton(filterButton, primarySkinColor)}\n </div>\n );\n};\n\nQuickFilters.propTypes = propTypes;\nQuickFilters.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\nexport default QuickFilters;\n"],"mappings":"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","ignoreList":[]}
|