@coorpacademy/components 11.32.35-alpha.17 → 11.32.35-alpha.19
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/atom/input-search/index.d.ts +1 -0
- package/es/atom/input-search/index.d.ts.map +1 -1
- package/es/atom/input-search/index.js +5 -2
- package/es/atom/input-search/index.js.map +1 -1
- package/es/molecule/search-form/index.d.ts +2 -0
- package/es/molecule/search-form/index.d.ts.map +1 -1
- package/es/molecule/search-form/index.js +6 -3
- package/es/molecule/search-form/index.js.map +1 -1
- package/es/organism/brand-table/index.d.ts +1 -0
- package/es/organism/mooc-header/index.d.ts +1 -0
- package/es/organism/mooc-header/index.d.ts.map +1 -1
- package/es/template/back-office/brand-update/index.d.ts +2 -0
- package/es/template/skill-detail/all-courses.d.ts.map +1 -1
- package/es/template/skill-detail/all-courses.js +10 -3
- package/es/template/skill-detail/all-courses.js.map +1 -1
- package/lib/atom/input-search/index.d.ts +1 -0
- package/lib/atom/input-search/index.d.ts.map +1 -1
- package/lib/atom/input-search/index.js +5 -2
- package/lib/atom/input-search/index.js.map +1 -1
- package/lib/molecule/search-form/index.d.ts +2 -0
- package/lib/molecule/search-form/index.d.ts.map +1 -1
- package/lib/molecule/search-form/index.js +6 -3
- package/lib/molecule/search-form/index.js.map +1 -1
- package/lib/organism/brand-table/index.d.ts +1 -0
- package/lib/organism/mooc-header/index.d.ts +1 -0
- package/lib/organism/mooc-header/index.d.ts.map +1 -1
- package/lib/template/back-office/brand-update/index.d.ts +2 -0
- package/lib/template/skill-detail/all-courses.d.ts.map +1 -1
- package/lib/template/skill-detail/all-courses.js +10 -3
- package/lib/template/skill-detail/all-courses.js.map +1 -1
- package/package.json +2 -2
|
@@ -32,6 +32,7 @@ declare namespace Search {
|
|
|
32
32
|
const onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
33
33
|
const onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
34
34
|
const theme: PropTypes.Requireable<string>;
|
|
35
|
+
const dataTestId: PropTypes.Requireable<string>;
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
import PropTypes from "prop-types";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atom/input-search/index.js"],"names":[],"mappings":";AAYA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atom/input-search/index.js"],"names":[],"mappings":";AAYA,iDAkDC"}
|
|
@@ -15,7 +15,8 @@ const Search = props => {
|
|
|
15
15
|
onClear = _noop,
|
|
16
16
|
onFocus,
|
|
17
17
|
onBlur,
|
|
18
|
-
theme = 'default'
|
|
18
|
+
theme = 'default',
|
|
19
|
+
dataTestId
|
|
19
20
|
} = props;
|
|
20
21
|
const handleChange = useMemo(() => e => onChange(e.target.value), [onChange]);
|
|
21
22
|
const cmStyle = classnames(style.coorpmanager);
|
|
@@ -33,6 +34,7 @@ const Search = props => {
|
|
|
33
34
|
className: classnames(style.title, _isEmpty(value) && style.noValue)
|
|
34
35
|
}, placeholder) : null), /*#__PURE__*/React.createElement("input", {
|
|
35
36
|
"data-name": "search-input",
|
|
37
|
+
"data-testid": dataTestId,
|
|
36
38
|
className: style.search,
|
|
37
39
|
"aria-label": placeholder,
|
|
38
40
|
type: "text",
|
|
@@ -61,7 +63,8 @@ Search.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
61
63
|
onClear: PropTypes.func,
|
|
62
64
|
onFocus: PropTypes.func,
|
|
63
65
|
onBlur: PropTypes.func,
|
|
64
|
-
theme: PropTypes.oneOf(['default', 'coorpmanager'])
|
|
66
|
+
theme: PropTypes.oneOf(['default', 'coorpmanager']),
|
|
67
|
+
dataTestId: PropTypes.string
|
|
65
68
|
} : {};
|
|
66
69
|
export default Search;
|
|
67
70
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useMemo","PropTypes","classnames","NovaCompositionCoorpacademySearchThin","CMSearchIcon","NovaCompositionCoorpacademySearch","SearchIcon","NovaSolidStatusClose","CloseIcon","Provider","style","Search","props","value","placeholder","onChange","onClear","onFocus","onBlur","theme","handleChange","e","target","cmStyle","coorpmanager","isDefaultTheme","wrapperSearch","searchIcon","title","noValue","search","clearIcon","contextTypes","skin","childContextTypes","propTypes","string","isRequired","func","oneOf"],"sources":["../../../src/atom/input-search/index.js"],"sourcesContent":["import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {\n NovaCompositionCoorpacademySearchThin as CMSearchIcon,\n NovaCompositionCoorpacademySearch as SearchIcon,\n NovaSolidStatusClose as CloseIcon\n} from '@coorpacademy/nova-icons';\nimport {noop, isEmpty} from 'lodash/fp';\nimport Provider from '../provider';\nimport style from './style.css';\n\nconst Search = props => {\n const {\n value,\n placeholder,\n onChange = noop,\n onClear = noop,\n onFocus,\n onBlur,\n theme = 'default'\n } = props;\n const handleChange = useMemo(() => e => onChange(e.target.value), [onChange]);\n const cmStyle = classnames(style.coorpmanager);\n const isDefaultTheme = theme === 'default';\n\n return (\n <div className={isDefaultTheme ? style.wrapperSearch : cmStyle}>\n <label htmlFor=\"search\" title={placeholder}>\n {!isDefaultTheme ? (\n <CMSearchIcon className={style.searchIcon} />\n ) : (\n <SearchIcon className={style.searchIcon} />\n )}\n {!isDefaultTheme ? (\n <span className={classnames(style.title, isEmpty(value) && style.noValue)}>\n {placeholder}\n </span>\n ) : null}\n </label>\n <input\n data-name=\"search-input\"\n className={style.search}\n aria-label={placeholder}\n type=\"text\"\n name=\"search\"\n id=\"search\"\n placeholder={placeholder}\n title={placeholder}\n value={value}\n onInput={handleChange}\n onFocus={onFocus}\n onChange={noop}\n onBlur={onBlur}\n />\n {value && !isDefaultTheme ? (\n <CloseIcon onClick={onClear} className={style.clearIcon} />\n ) : null}\n </div>\n );\n};\n\nSearch.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nSearch.propTypes = {\n value: PropTypes.string,\n placeholder: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n onClear: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n theme: PropTypes.oneOf(['default', 'coorpmanager'])\n};\n\nexport default Search;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAeC,OAAf,QAA6B,OAA7B;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SACEC,qCAAqC,IAAIC,YAD3C,EAEEC,iCAAiC,IAAIC,UAFvC,EAGEC,oBAAoB,IAAIC,SAH1B,QAIO,0BAJP;AAMA,OAAOC,QAAP,MAAqB,aAArB;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,MAAM,GAAGC,KAAK,IAAI;EACtB,MAAM;IACJC,KADI;IAEJC,WAFI;IAGJC,QAAQ,QAHJ;IAIJC,OAAO,QAJH;IAKJC,OALI;IAMJC,MANI;IAOJC,KAAK,GAAG;
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useMemo","PropTypes","classnames","NovaCompositionCoorpacademySearchThin","CMSearchIcon","NovaCompositionCoorpacademySearch","SearchIcon","NovaSolidStatusClose","CloseIcon","Provider","style","Search","props","value","placeholder","onChange","onClear","onFocus","onBlur","theme","dataTestId","handleChange","e","target","cmStyle","coorpmanager","isDefaultTheme","wrapperSearch","searchIcon","title","noValue","search","clearIcon","contextTypes","skin","childContextTypes","propTypes","string","isRequired","func","oneOf"],"sources":["../../../src/atom/input-search/index.js"],"sourcesContent":["import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {\n NovaCompositionCoorpacademySearchThin as CMSearchIcon,\n NovaCompositionCoorpacademySearch as SearchIcon,\n NovaSolidStatusClose as CloseIcon\n} from '@coorpacademy/nova-icons';\nimport {noop, isEmpty} from 'lodash/fp';\nimport Provider from '../provider';\nimport style from './style.css';\n\nconst Search = props => {\n const {\n value,\n placeholder,\n onChange = noop,\n onClear = noop,\n onFocus,\n onBlur,\n theme = 'default',\n dataTestId\n } = props;\n const handleChange = useMemo(() => e => onChange(e.target.value), [onChange]);\n const cmStyle = classnames(style.coorpmanager);\n const isDefaultTheme = theme === 'default';\n\n return (\n <div className={isDefaultTheme ? style.wrapperSearch : cmStyle}>\n <label htmlFor=\"search\" title={placeholder}>\n {!isDefaultTheme ? (\n <CMSearchIcon className={style.searchIcon} />\n ) : (\n <SearchIcon className={style.searchIcon} />\n )}\n {!isDefaultTheme ? (\n <span className={classnames(style.title, isEmpty(value) && style.noValue)}>\n {placeholder}\n </span>\n ) : null}\n </label>\n <input\n data-name=\"search-input\"\n data-testid={dataTestId}\n className={style.search}\n aria-label={placeholder}\n type=\"text\"\n name=\"search\"\n id=\"search\"\n placeholder={placeholder}\n title={placeholder}\n value={value}\n onInput={handleChange}\n onFocus={onFocus}\n onChange={noop}\n onBlur={onBlur}\n />\n {value && !isDefaultTheme ? (\n <CloseIcon onClick={onClear} className={style.clearIcon} />\n ) : null}\n </div>\n );\n};\n\nSearch.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nSearch.propTypes = {\n value: PropTypes.string,\n placeholder: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n onClear: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n theme: PropTypes.oneOf(['default', 'coorpmanager']),\n dataTestId: PropTypes.string\n};\n\nexport default Search;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAeC,OAAf,QAA6B,OAA7B;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SACEC,qCAAqC,IAAIC,YAD3C,EAEEC,iCAAiC,IAAIC,UAFvC,EAGEC,oBAAoB,IAAIC,SAH1B,QAIO,0BAJP;AAMA,OAAOC,QAAP,MAAqB,aAArB;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,MAAM,GAAGC,KAAK,IAAI;EACtB,MAAM;IACJC,KADI;IAEJC,WAFI;IAGJC,QAAQ,QAHJ;IAIJC,OAAO,QAJH;IAKJC,OALI;IAMJC,MANI;IAOJC,KAAK,GAAG,SAPJ;IAQJC;EARI,IASFR,KATJ;EAUA,MAAMS,YAAY,GAAGrB,OAAO,CAAC,MAAMsB,CAAC,IAAIP,QAAQ,CAACO,CAAC,CAACC,MAAF,CAASV,KAAV,CAApB,EAAsC,CAACE,QAAD,CAAtC,CAA5B;EACA,MAAMS,OAAO,GAAGtB,UAAU,CAACQ,KAAK,CAACe,YAAP,CAA1B;EACA,MAAMC,cAAc,GAAGP,KAAK,KAAK,SAAjC;EAEA,oBACE;IAAK,SAAS,EAAEO,cAAc,GAAGhB,KAAK,CAACiB,aAAT,GAAyBH;EAAvD,gBACE;IAAO,OAAO,EAAC,QAAf;IAAwB,KAAK,EAAEV;EAA/B,GACG,CAACY,cAAD,gBACC,oBAAC,YAAD;IAAc,SAAS,EAAEhB,KAAK,CAACkB;EAA/B,EADD,gBAGC,oBAAC,UAAD;IAAY,SAAS,EAAElB,KAAK,CAACkB;EAA7B,EAJJ,EAMG,CAACF,cAAD,gBACC;IAAM,SAAS,EAAExB,UAAU,CAACQ,KAAK,CAACmB,KAAP,EAAc,SAAQhB,KAAR,KAAkBH,KAAK,CAACoB,OAAtC;EAA3B,GACGhB,WADH,CADD,GAIG,IAVN,CADF,eAaE;IACE,aAAU,cADZ;IAEE,eAAaM,UAFf;IAGE,SAAS,EAAEV,KAAK,CAACqB,MAHnB;IAIE,cAAYjB,WAJd;IAKE,IAAI,EAAC,MALP;IAME,IAAI,EAAC,QANP;IAOE,EAAE,EAAC,QAPL;IAQE,WAAW,EAAEA,WARf;IASE,KAAK,EAAEA,WATT;IAUE,KAAK,EAAED,KAVT;IAWE,OAAO,EAAEQ,YAXX;IAYE,OAAO,EAAEJ,OAZX;IAaE,QAAQ,OAbV;IAcE,MAAM,EAAEC;EAdV,EAbF,EA6BGL,KAAK,IAAI,CAACa,cAAV,gBACC,oBAAC,SAAD;IAAW,OAAO,EAAEV,OAApB;IAA6B,SAAS,EAAEN,KAAK,CAACsB;EAA9C,EADD,GAEG,IA/BN,CADF;AAmCD,CAlDD;;AAoDArB,MAAM,CAACsB,YAAP,GAAsB;EACpBC,IAAI,EAAEzB,QAAQ,CAAC0B,iBAAT,CAA2BD;AADb,CAAtB;AAIAvB,MAAM,CAACyB,SAAP,2CAAmB;EACjBvB,KAAK,EAAEZ,SAAS,CAACoC,MADA;EAEjBvB,WAAW,EAAEb,SAAS,CAACoC,MAAV,CAAiBC,UAFb;EAGjBvB,QAAQ,EAAEd,SAAS,CAACsC,IAHH;EAIjBvB,OAAO,EAAEf,SAAS,CAACsC,IAJF;EAKjBtB,OAAO,EAAEhB,SAAS,CAACsC,IALF;EAMjBrB,MAAM,EAAEjB,SAAS,CAACsC,IAND;EAOjBpB,KAAK,EAAElB,SAAS,CAACuC,KAAV,CAAgB,CAAC,SAAD,EAAY,cAAZ,CAAhB,CAPU;EAQjBpB,UAAU,EAAEnB,SAAS,CAACoC;AARL,CAAnB;AAWA,eAAe1B,MAAf"}
|
|
@@ -16,8 +16,10 @@ declare namespace SearchForm {
|
|
|
16
16
|
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
17
17
|
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
18
18
|
theme: PropTypes.Requireable<string>;
|
|
19
|
+
dataTestId: PropTypes.Requireable<string>;
|
|
19
20
|
}>>;
|
|
20
21
|
'search-reset-aria-label': PropTypes.Requireable<string>;
|
|
22
|
+
dataTestId: PropTypes.Requireable<string>;
|
|
21
23
|
};
|
|
22
24
|
}
|
|
23
25
|
import PropTypes from "prop-types";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/search-form/index.js"],"names":[],"mappings":";AAOA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/search-form/index.js"],"names":[],"mappings":";AAOA,mEA0CC"}
|
|
@@ -17,7 +17,8 @@ const SearchForm = (props, context) => {
|
|
|
17
17
|
search,
|
|
18
18
|
onSearchFocus,
|
|
19
19
|
onSearchBlur,
|
|
20
|
-
'search-reset-aria-label': searchResetAriaLabel
|
|
20
|
+
'search-reset-aria-label': searchResetAriaLabel,
|
|
21
|
+
dataTestId
|
|
21
22
|
} = props;
|
|
22
23
|
const handleSubmit = useMemo(() => evt => {
|
|
23
24
|
evt.preventDefault();
|
|
@@ -38,7 +39,8 @@ const SearchForm = (props, context) => {
|
|
|
38
39
|
"aria-label": search.placeholder
|
|
39
40
|
}, /*#__PURE__*/React.createElement(Search, _extends({}, search, {
|
|
40
41
|
onFocus: onSearchFocus,
|
|
41
|
-
onBlur: onSearchBlur
|
|
42
|
+
onBlur: onSearchBlur,
|
|
43
|
+
dataTestId: dataTestId
|
|
42
44
|
})), /*#__PURE__*/React.createElement("div", {
|
|
43
45
|
"data-name": "search-form-reset",
|
|
44
46
|
"aria-label": searchResetAriaLabel,
|
|
@@ -60,7 +62,8 @@ SearchForm.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
60
62
|
onSearchFocus: PropTypes.func,
|
|
61
63
|
onSearchBlur: PropTypes.func,
|
|
62
64
|
search: PropTypes.shape(Search.propTypes),
|
|
63
|
-
'search-reset-aria-label': PropTypes.string
|
|
65
|
+
'search-reset-aria-label': PropTypes.string,
|
|
66
|
+
dataTestId: PropTypes.string
|
|
64
67
|
} : {};
|
|
65
68
|
export default SearchForm;
|
|
66
69
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useMemo","PropTypes","NovaCompositionNavigationMore","ClearIcon","Search","style","SearchForm","props","context","action","method","onSubmit","onReset","search","onSearchFocus","onSearchBlur","searchResetAriaLabel","handleSubmit","evt","preventDefault","skin","dark","form","placeholder","value","wrapperClear","wrapperNoClear","color","clear","propTypes","string","func","shape"],"sources":["../../../src/molecule/search-form/index.js"],"sourcesContent":["import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {get} from 'lodash/fp';\nimport {NovaCompositionNavigationMore as ClearIcon} from '@coorpacademy/nova-icons';\nimport Search from '../../atom/input-search';\nimport style from './style.css';\n\nconst SearchForm = (props, context) => {\n const {\n action,\n method,\n onSubmit,\n onReset,\n search,\n onSearchFocus,\n onSearchBlur,\n 'search-reset-aria-label': searchResetAriaLabel\n } = props;\n const handleSubmit = useMemo(\n () => evt => {\n evt.preventDefault();\n return onSubmit && onSubmit(evt);\n },\n [onSubmit]\n );\n const {skin} = context;\n const dark = get('common.dark', skin);\n\n return (\n <form\n className={style.form}\n action={action}\n method={method}\n onSubmit={handleSubmit}\n data-name=\"searchForm\"\n aria-label={search.placeholder}\n >\n <Search {...search} onFocus={onSearchFocus} onBlur={onSearchBlur} />\n <div\n data-name=\"search-form-reset\"\n aria-label={searchResetAriaLabel}\n onClick={onReset}\n className={search.value ? style.wrapperClear : style.wrapperNoClear}\n >\n <ClearIcon style={{color: dark}} className={style.clear} />\n </div>\n </form>\n );\n};\n\nSearchForm.propTypes = {\n action: PropTypes.string,\n method: PropTypes.string,\n onSubmit: PropTypes.func,\n onReset: PropTypes.func,\n onSearchFocus: PropTypes.func,\n onSearchBlur: PropTypes.func,\n search: PropTypes.shape(Search.propTypes),\n 'search-reset-aria-label': PropTypes.string\n};\n\nexport default SearchForm;\n"],"mappings":";;;;AAAA,OAAOA,KAAP,IAAeC,OAAf,QAA6B,OAA7B;AACA,OAAOC,SAAP,MAAsB,YAAtB;AAEA,SAAQC,6BAA6B,IAAIC,SAAzC,QAAyD,0BAAzD;AACA,OAAOC,MAAP,MAAmB,yBAAnB;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,UAAU,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;EACrC,MAAM;IACJC,MADI;IAEJC,MAFI;IAGJC,QAHI;IAIJC,OAJI;IAKJC,MALI;IAMJC,aANI;IAOJC,YAPI;IAQJ,2BAA2BC;
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useMemo","PropTypes","NovaCompositionNavigationMore","ClearIcon","Search","style","SearchForm","props","context","action","method","onSubmit","onReset","search","onSearchFocus","onSearchBlur","searchResetAriaLabel","dataTestId","handleSubmit","evt","preventDefault","skin","dark","form","placeholder","value","wrapperClear","wrapperNoClear","color","clear","propTypes","string","func","shape"],"sources":["../../../src/molecule/search-form/index.js"],"sourcesContent":["import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {get} from 'lodash/fp';\nimport {NovaCompositionNavigationMore as ClearIcon} from '@coorpacademy/nova-icons';\nimport Search from '../../atom/input-search';\nimport style from './style.css';\n\nconst SearchForm = (props, context) => {\n const {\n action,\n method,\n onSubmit,\n onReset,\n search,\n onSearchFocus,\n onSearchBlur,\n 'search-reset-aria-label': searchResetAriaLabel,\n dataTestId\n } = props;\n const handleSubmit = useMemo(\n () => evt => {\n evt.preventDefault();\n return onSubmit && onSubmit(evt);\n },\n [onSubmit]\n );\n const {skin} = context;\n const dark = get('common.dark', skin);\n\n return (\n <form\n className={style.form}\n action={action}\n method={method}\n onSubmit={handleSubmit}\n data-name=\"searchForm\"\n aria-label={search.placeholder}\n >\n <Search {...search} onFocus={onSearchFocus} onBlur={onSearchBlur} dataTestId={dataTestId} />\n <div\n data-name=\"search-form-reset\"\n aria-label={searchResetAriaLabel}\n onClick={onReset}\n className={search.value ? style.wrapperClear : style.wrapperNoClear}\n >\n <ClearIcon style={{color: dark}} className={style.clear} />\n </div>\n </form>\n );\n};\n\nSearchForm.propTypes = {\n action: PropTypes.string,\n method: PropTypes.string,\n onSubmit: PropTypes.func,\n onReset: PropTypes.func,\n onSearchFocus: PropTypes.func,\n onSearchBlur: PropTypes.func,\n search: PropTypes.shape(Search.propTypes),\n 'search-reset-aria-label': PropTypes.string,\n dataTestId: PropTypes.string\n};\n\nexport default SearchForm;\n"],"mappings":";;;;AAAA,OAAOA,KAAP,IAAeC,OAAf,QAA6B,OAA7B;AACA,OAAOC,SAAP,MAAsB,YAAtB;AAEA,SAAQC,6BAA6B,IAAIC,SAAzC,QAAyD,0BAAzD;AACA,OAAOC,MAAP,MAAmB,yBAAnB;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,UAAU,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;EACrC,MAAM;IACJC,MADI;IAEJC,MAFI;IAGJC,QAHI;IAIJC,OAJI;IAKJC,MALI;IAMJC,aANI;IAOJC,YAPI;IAQJ,2BAA2BC,oBARvB;IASJC;EATI,IAUFV,KAVJ;EAWA,MAAMW,YAAY,GAAGlB,OAAO,CAC1B,MAAMmB,GAAG,IAAI;IACXA,GAAG,CAACC,cAAJ;IACA,OAAOT,QAAQ,IAAIA,QAAQ,CAACQ,GAAD,CAA3B;EACD,CAJyB,EAK1B,CAACR,QAAD,CAL0B,CAA5B;EAOA,MAAM;IAACU;EAAD,IAASb,OAAf;;EACA,MAAMc,IAAI,GAAG,KAAI,aAAJ,EAAmBD,IAAnB,CAAb;;EAEA,oBACE;IACE,SAAS,EAAEhB,KAAK,CAACkB,IADnB;IAEE,MAAM,EAAEd,MAFV;IAGE,MAAM,EAAEC,MAHV;IAIE,QAAQ,EAAEQ,YAJZ;IAKE,aAAU,YALZ;IAME,cAAYL,MAAM,CAACW;EANrB,gBAQE,oBAAC,MAAD,eAAYX,MAAZ;IAAoB,OAAO,EAAEC,aAA7B;IAA4C,MAAM,EAAEC,YAApD;IAAkE,UAAU,EAAEE;EAA9E,GARF,eASE;IACE,aAAU,mBADZ;IAEE,cAAYD,oBAFd;IAGE,OAAO,EAAEJ,OAHX;IAIE,SAAS,EAAEC,MAAM,CAACY,KAAP,GAAepB,KAAK,CAACqB,YAArB,GAAoCrB,KAAK,CAACsB;EAJvD,gBAME,oBAAC,SAAD;IAAW,KAAK,EAAE;MAACC,KAAK,EAAEN;IAAR,CAAlB;IAAiC,SAAS,EAAEjB,KAAK,CAACwB;EAAlD,EANF,CATF,CADF;AAoBD,CA1CD;;AA4CAvB,UAAU,CAACwB,SAAX,2CAAuB;EACrBrB,MAAM,EAAER,SAAS,CAAC8B,MADG;EAErBrB,MAAM,EAAET,SAAS,CAAC8B,MAFG;EAGrBpB,QAAQ,EAAEV,SAAS,CAAC+B,IAHC;EAIrBpB,OAAO,EAAEX,SAAS,CAAC+B,IAJE;EAKrBlB,aAAa,EAAEb,SAAS,CAAC+B,IALJ;EAMrBjB,YAAY,EAAEd,SAAS,CAAC+B,IANH;EAOrBnB,MAAM,EAAEZ,SAAS,CAACgC,KAAV,CAAgB7B,MAAM,CAAC0B,SAAvB,CAPa;EAQrB,2BAA2B7B,SAAS,CAAC8B,MARhB;EASrBd,UAAU,EAAEhB,SAAS,CAAC8B;AATD,CAAvB;AAYA,eAAezB,UAAf"}
|
|
@@ -10,6 +10,7 @@ declare namespace BrandTable {
|
|
|
10
10
|
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
11
11
|
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
12
12
|
theme: PropTypes.Requireable<string>;
|
|
13
|
+
dataTestId: PropTypes.Requireable<string>;
|
|
13
14
|
}>>;
|
|
14
15
|
const pagination: PropTypes.Requireable<PropTypes.InferProps<{
|
|
15
16
|
value: PropTypes.Validator<string>;
|
|
@@ -18,6 +18,7 @@ declare class MoocHeader extends React.Component<any, any, any> {
|
|
|
18
18
|
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
19
19
|
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
20
20
|
theme: PropTypes.Requireable<string>;
|
|
21
|
+
dataTestId: PropTypes.Requireable<string>;
|
|
21
22
|
}>>;
|
|
22
23
|
'search-reset-aria-label': PropTypes.Requireable<string>;
|
|
23
24
|
onSubmitSearch: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/organism/mooc-header/index.js"],"names":[],"mappings":";AAyBA;IACE
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/organism/mooc-header/index.js"],"names":[],"mappings":";AAyBA;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+FE;IAEF;;;;;;;;;;;;;;;;;;;;;;;MAGE;IAEF,wBAwBC;IAtBC;;;;;;MAMC;IAgDH,6BAIC;IAED,yBAGC;IAxBD,qCAQC;IAED,wBAGC;IAjBD,+BAEC;IA4BD,2BAKC;IAED,0BAKC;IAED,sBAIC;IAED,qBAIC;IAED,yBAQC;IAED,0BAQC;IAED,0BAIC;IAED,2BAIC;IAED,iCAUC;IA7GD,2EASC;IAGC,kBAAsB;IAmGxB,6BAIE;IAEF,6BAIE;IAEF,6BAkdC;CACF"}
|
|
@@ -185,6 +185,7 @@ declare namespace BrandUpdate {
|
|
|
185
185
|
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
186
186
|
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
187
187
|
theme: PropTypes.Requireable<string>;
|
|
188
|
+
dataTestId: PropTypes.Requireable<string>;
|
|
188
189
|
}>>;
|
|
189
190
|
pagination: PropTypes.Requireable<PropTypes.InferProps<{
|
|
190
191
|
value: PropTypes.Validator<string>;
|
|
@@ -1192,6 +1193,7 @@ declare namespace BrandUpdate {
|
|
|
1192
1193
|
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
1193
1194
|
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
1194
1195
|
theme: PropTypes.Requireable<string>;
|
|
1196
|
+
dataTestId: PropTypes.Requireable<string>;
|
|
1195
1197
|
}>>;
|
|
1196
1198
|
pagination: PropTypes.Requireable<PropTypes.InferProps<{
|
|
1197
1199
|
value: PropTypes.Validator<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all-courses.d.ts","sourceRoot":"","sources":["../../../src/template/skill-detail/all-courses.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"all-courses.d.ts","sourceRoot":"","sources":["../../../src/template/skill-detail/all-courses.js"],"names":[],"mappings":";AAgDA,mEA0HC"}
|
|
@@ -22,6 +22,8 @@ const uncappedMap = _map.convert({
|
|
|
22
22
|
|
|
23
23
|
const FilterButton = (props, context) => {
|
|
24
24
|
const {
|
|
25
|
+
dataName,
|
|
26
|
+
ariaLabel,
|
|
25
27
|
selected,
|
|
26
28
|
label,
|
|
27
29
|
onClick
|
|
@@ -41,7 +43,8 @@ const FilterButton = (props, context) => {
|
|
|
41
43
|
},
|
|
42
44
|
label,
|
|
43
45
|
onClick,
|
|
44
|
-
'data-name':
|
|
46
|
+
'data-name': dataName,
|
|
47
|
+
'aria-label': ariaLabel
|
|
45
48
|
};
|
|
46
49
|
return /*#__PURE__*/React.createElement(ButtonLink, buttonProps);
|
|
47
50
|
};
|
|
@@ -51,6 +54,8 @@ FilterButton.contextTypes = {
|
|
|
51
54
|
translate: Provider.childContextTypes.translate
|
|
52
55
|
};
|
|
53
56
|
FilterButton.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
57
|
+
dataName: PropTypes.string,
|
|
58
|
+
ariaLabel: PropTypes.string,
|
|
54
59
|
selected: PropTypes.bool,
|
|
55
60
|
label: PropTypes.string,
|
|
56
61
|
onClick: PropTypes.func
|
|
@@ -111,7 +116,8 @@ const AllCourses = (props, context) => {
|
|
|
111
116
|
value: searchValue,
|
|
112
117
|
onChange: handleSearch
|
|
113
118
|
},
|
|
114
|
-
onReset: handleSearchReset
|
|
119
|
+
onReset: handleSearchReset,
|
|
120
|
+
dataTestId: "all-courses-search-input"
|
|
115
121
|
})), /*#__PURE__*/React.createElement("div", {
|
|
116
122
|
className: style.sortSection
|
|
117
123
|
}, /*#__PURE__*/React.createElement(InputSwitch, {
|
|
@@ -142,7 +148,8 @@ const AllCourses = (props, context) => {
|
|
|
142
148
|
key: index,
|
|
143
149
|
className: style.filterButtonWrapper
|
|
144
150
|
}, /*#__PURE__*/React.createElement(FilterButton, {
|
|
145
|
-
|
|
151
|
+
dataName: `filter-button-${value}`,
|
|
152
|
+
ariaLabel: `Filter by ${name}`,
|
|
146
153
|
selected: selected,
|
|
147
154
|
label: name,
|
|
148
155
|
onClick: handleFilterChange
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all-courses.js","names":["React","useState","useCallback","useMemo","PropTypes","Provider","Select","SelectOptionPropTypes","ButtonLink","SearchForm","CardsGrid","searchValueIncluded","InputSwitch","style","uncappedMap","convert","cap","FilterButton","props","context","selected","label","onClick","skin","primarySkinColor","buttonProps","customStyle","backgroundColor","color","transition","width","contextTypes","childContextTypes","translate","propTypes","bool","string","func","AllCourses","content","filters","sorting","options","onChange","list","loading","showCompleted","setShowCompleted","searchValue","setSearchValue","sortView","undefined","filteredContent","course","progress","contentResult","skill","title","handleSearch","value","handleSearchReset","handleShowCompletedToggle","prevShowCompleted","continueLearningWrapper","continueLearningTitle","continueLearningNumber","searchAndSortSection","searchWrapper","placeholder","sortSection","sortWrapper","filterWrapper","filterProps","index","name","handleFilterChange","filterButtonWrapper","divider","justifyContent","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","shape","arrayOf"],"sources":["../../../src/template/skill-detail/all-courses.js"],"sourcesContent":["import React, {useState, useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {get, filter, map, size} from 'lodash/fp';\nimport Provider from '../../atom/provider';\nimport Select, {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLink from '../../atom/button-link';\nimport SearchForm from '../../molecule/search-form';\nimport CardsGrid from '../../organism/cards-grid';\nimport searchValueIncluded from '../../util/search-value-included';\nimport InputSwitch from '../../atom/input-switch';\nimport style from './all-courses.css';\n\nconst uncappedMap = map.convert({cap: false});\n\nconst FilterButton = (props, context) => {\n const {selected, label, onClick} = props;\n const {skin} = context;\n const primarySkinColor = get('common.primary', skin);\n\n const buttonProps = {\n customStyle: {\n backgroundColor: selected ? primarySkinColor : '#E1E1E3',\n color: selected ? '#FFFFFF' : '#515161',\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out',\n width: 'fit-content'\n },\n label,\n onClick,\n 'data-name': 'filter-type-course-button'\n };\n\n return <ButtonLink {...buttonProps} />;\n};\n\nFilterButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nFilterButton.propTypes = {\n selected: PropTypes.bool,\n label: PropTypes.string,\n onClick: PropTypes.func\n};\n\nconst AllCourses = (props, context) => {\n const {content, filters, sorting} = props;\n const {options, onChange} = filters;\n const {list, loading} = content;\n const {translate} = context;\n const [showCompleted, setShowCompleted] = useState(true);\n const [searchValue, setSearchValue] = useState('');\n\n const sortView =\n sorting !== undefined ? (\n <div data-name=\"choice\">\n <Select {...sorting} aria-label=\"All courses sort\" />\n </div>\n ) : null;\n\n const filteredContent = useMemo(() => {\n return showCompleted ? list : filter(course => course.progress < 1, list);\n }, [list, showCompleted]);\n\n const contentResult = useMemo(() => {\n return filter(skill => searchValueIncluded(skill.title, searchValue), filteredContent);\n }, [filteredContent, searchValue]);\n\n const handleSearch = useCallback(\n value => {\n setSearchValue(value);\n },\n [setSearchValue]\n );\n\n const handleSearchReset = useCallback(() => {\n setSearchValue('');\n }, [setSearchValue]);\n\n const handleShowCompletedToggle = useCallback(() => {\n setShowCompleted(prevShowCompleted => !prevShowCompleted);\n }, []);\n\n return (\n <>\n <div className={style.continueLearningWrapper}>\n <span className={style.continueLearningTitle}>{translate('all_content')}</span>\n <span className={style.continueLearningNumber}>{size(contentResult)}</span>\n </div>\n <div className={style.searchAndSortSection}>\n <div className={style.searchWrapper}>\n <SearchForm\n search={{\n placeholder: translate('search_place_holder'),\n value: searchValue,\n onChange: handleSearch\n }}\n onReset={handleSearchReset}\n />\n </div>\n <div className={style.sortSection}>\n <InputSwitch\n id={'show-completed-courses-switch'}\n type=\"switch\"\n name={translate('show_completed')}\n title={translate('show_completed')}\n aria-label={'Show completed courses aria label'}\n value={showCompleted}\n onChange={handleShowCompletedToggle}\n />\n {sortView ? (\n <div className={style.sortWrapper}>\n {translate('sort_by')}\n {sortView}\n </div>\n ) : null}\n </div>\n </div>\n <div className={style.filterWrapper}>\n {size(options) > 2 && size(contentResult)\n ? uncappedMap((filterProps, index) => {\n const {name, value, selected} = filterProps;\n\n function handleFilterChange() {\n onChange(value);\n handleSearchReset();\n }\n\n return (\n <div key={index} className={style.filterButtonWrapper}>\n <FilterButton\n data-name={`filter-button-${value}`}\n selected={selected}\n label={name}\n onClick={handleFilterChange}\n />\n {value === 'ALL' ? <div className={style.divider} /> : null}\n </div>\n );\n }, options)\n : null}\n </div>\n <div>\n {size(contentResult) ? (\n <CardsGrid\n list={contentResult}\n loading={loading}\n customStyle={{justifyContent: 'left'}}\n />\n ) : (\n <div className={style.emptySearchResultContainer}>\n <div className={style.emptySearchResultTitle}>\n {translate('empty_search_result_title', {searchValue})}\n </div>\n <div className={style.emptySearchResultDescription}>\n {translate('empty_search_result_description')}\n </div>\n <div className={style.emptySearchResultClearSearch} onClick={handleSearchReset}>\n {translate('empty_search_result_clear_search')}\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nAllCourses.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nAllCourses.propTypes = {\n content: PropTypes.shape(CardsGrid.propTypes),\n filters: PropTypes.shape({\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(PropTypes.shape(SelectOptionPropTypes))\n }),\n sorting: PropTypes.shape(Select.propTypes)\n};\n\nexport default AllCourses;\n"],"mappings":";;;;;;;AAAA,OAAOA,KAAP,IAAeC,QAAf,EAAyBC,WAAzB,EAAsCC,OAAtC,QAAoD,OAApD;AACA,OAAOC,SAAP,MAAsB,YAAtB;AAEA,OAAOC,QAAP,MAAqB,qBAArB;AACA,OAAOC,MAAP,IAAgBC,qBAAhB,QAA4C,mBAA5C;AACA,OAAOC,UAAP,MAAuB,wBAAvB;AACA,OAAOC,UAAP,MAAuB,4BAAvB;AACA,OAAOC,SAAP,MAAsB,2BAAtB;AACA,OAAOC,mBAAP,MAAgC,kCAAhC;AACA,OAAOC,WAAP,MAAwB,yBAAxB;AACA,OAAOC,KAAP,MAAkB,mBAAlB;;AAEA,MAAMC,WAAW,GAAG,KAAIC,OAAJ,CAAY;EAACC,GAAG,EAAE;AAAN,CAAZ,CAApB;;AAEA,MAAMC,YAAY,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;EACvC,MAAM;IAACC,QAAD;IAAWC,KAAX;IAAkBC;EAAlB,IAA6BJ,KAAnC;EACA,MAAM;IAACK;EAAD,IAASJ,OAAf;;EACA,MAAMK,gBAAgB,GAAG,KAAI,gBAAJ,EAAsBD,IAAtB,CAAzB;;EAEA,MAAME,WAAW,GAAG;IAClBC,WAAW,EAAE;MACXC,eAAe,EAAEP,QAAQ,GAAGI,gBAAH,GAAsB,SADpC;MAEXI,KAAK,EAAER,QAAQ,GAAG,SAAH,GAAe,SAFnB;MAGXS,UAAU,EAAE,6DAHD;MAIXC,KAAK,EAAE;IAJI,CADK;IAOlBT,KAPkB;IAQlBC,OARkB;IASlB,aAAa;EATK,CAApB;EAYA,oBAAO,oBAAC,UAAD,EAAgBG,WAAhB,CAAP;AACD,CAlBD;;AAoBAR,YAAY,CAACc,YAAb,GAA4B;EAC1BR,IAAI,EAAElB,QAAQ,CAAC2B,iBAAT,CAA2BT,IADP;EAE1BU,SAAS,EAAE5B,QAAQ,CAAC2B,iBAAT,CAA2BC;AAFZ,CAA5B;AAKAhB,YAAY,CAACiB,SAAb,2CAAyB;EACvBd,QAAQ,EAAEhB,SAAS,CAAC+B,IADG;EAEvBd,KAAK,EAAEjB,SAAS,CAACgC,MAFM;EAGvBd,OAAO,EAAElB,SAAS,CAACiC;AAHI,CAAzB;;AAMA,MAAMC,UAAU,GAAG,CAACpB,KAAD,EAAQC,OAAR,KAAoB;EACrC,MAAM;IAACoB,OAAD;IAAUC,OAAV;IAAmBC;EAAnB,IAA8BvB,KAApC;EACA,MAAM;IAACwB,OAAD;IAAUC;EAAV,IAAsBH,OAA5B;EACA,MAAM;IAACI,IAAD;IAAOC;EAAP,IAAkBN,OAAxB;EACA,MAAM;IAACN;EAAD,IAAcd,OAApB;EACA,MAAM,CAAC2B,aAAD,EAAgBC,gBAAhB,IAAoC9C,QAAQ,CAAC,IAAD,CAAlD;EACA,MAAM,CAAC+C,WAAD,EAAcC,cAAd,IAAgChD,QAAQ,CAAC,EAAD,CAA9C;EAEA,MAAMiD,QAAQ,GACZT,OAAO,KAAKU,SAAZ,gBACE;IAAK,aAAU;EAAf,gBACE,oBAAC,MAAD,eAAYV,OAAZ;IAAqB,cAAW;EAAhC,GADF,CADF,GAII,IALN;EAOA,MAAMW,eAAe,GAAGjD,OAAO,CAAC,MAAM;IACpC,OAAO2C,aAAa,GAAGF,IAAH,GAAU,QAAOS,MAAM,IAAIA,MAAM,CAACC,QAAP,GAAkB,CAAnC,EAAsCV,IAAtC,CAA9B;EACD,CAF8B,EAE5B,CAACA,IAAD,EAAOE,aAAP,CAF4B,CAA/B;EAIA,MAAMS,aAAa,GAAGpD,OAAO,CAAC,MAAM;IAClC,OAAO,QAAOqD,KAAK,IAAI7C,mBAAmB,CAAC6C,KAAK,CAACC,KAAP,EAAcT,WAAd,CAAnC,EAA+DI,eAA/D,CAAP;EACD,CAF4B,EAE1B,CAACA,eAAD,EAAkBJ,WAAlB,CAF0B,CAA7B;EAIA,MAAMU,YAAY,GAAGxD,WAAW,CAC9ByD,KAAK,IAAI;IACPV,cAAc,CAACU,KAAD,CAAd;EACD,CAH6B,EAI9B,CAACV,cAAD,CAJ8B,CAAhC;EAOA,MAAMW,iBAAiB,GAAG1D,WAAW,CAAC,MAAM;IAC1C+C,cAAc,CAAC,EAAD,CAAd;EACD,CAFoC,EAElC,CAACA,cAAD,CAFkC,CAArC;EAIA,MAAMY,yBAAyB,GAAG3D,WAAW,CAAC,MAAM;IAClD6C,gBAAgB,CAACe,iBAAiB,IAAI,CAACA,iBAAvB,CAAhB;EACD,CAF4C,EAE1C,EAF0C,CAA7C;EAIA,oBACE,uDACE;IAAK,SAAS,EAAEjD,KAAK,CAACkD;EAAtB,gBACE;IAAM,SAAS,EAAElD,KAAK,CAACmD;EAAvB,GAA+C/B,SAAS,CAAC,aAAD,CAAxD,CADF,eAEE;IAAM,SAAS,EAAEpB,KAAK,CAACoD;EAAvB,GAAgD,MAAKV,aAAL,CAAhD,CAFF,CADF,eAKE;IAAK,SAAS,EAAE1C,KAAK,CAACqD;EAAtB,gBACE;IAAK,SAAS,EAAErD,KAAK,CAACsD;EAAtB,gBACE,oBAAC,UAAD;IACE,MAAM,EAAE;MACNC,WAAW,EAAEnC,SAAS,CAAC,qBAAD,CADhB;MAEN0B,KAAK,EAAEX,WAFD;MAGNL,QAAQ,EAAEe;IAHJ,CADV;IAME,OAAO,EAAEE;EANX,EADF,CADF,eAWE;IAAK,SAAS,EAAE/C,KAAK,CAACwD;EAAtB,gBACE,oBAAC,WAAD;IACE,EAAE,EAAE,+BADN;IAEE,IAAI,EAAC,QAFP;IAGE,IAAI,EAAEpC,SAAS,CAAC,gBAAD,CAHjB;IAIE,KAAK,EAAEA,SAAS,CAAC,gBAAD,CAJlB;IAKE,cAAY,mCALd;IAME,KAAK,EAAEa,aANT;IAOE,QAAQ,EAAEe;EAPZ,EADF,EAUGX,QAAQ,gBACP;IAAK,SAAS,EAAErC,KAAK,CAACyD;EAAtB,GACGrC,SAAS,CAAC,SAAD,CADZ,EAEGiB,QAFH,CADO,GAKL,IAfN,CAXF,CALF,eAkCE;IAAK,SAAS,EAAErC,KAAK,CAAC0D;EAAtB,GACG,MAAK7B,OAAL,IAAgB,CAAhB,IAAqB,MAAKa,aAAL,CAArB,GACGzC,WAAW,CAAC,CAAC0D,WAAD,EAAcC,KAAd,KAAwB;IAClC,MAAM;MAACC,IAAD;MAAOf,KAAP;MAAcvC;IAAd,IAA0BoD,WAAhC;;IAEA,SAASG,kBAAT,GAA8B;MAC5BhC,QAAQ,CAACgB,KAAD,CAAR;MACAC,iBAAiB;IAClB;;IAED,oBACE;MAAK,GAAG,EAAEa,KAAV;MAAiB,SAAS,EAAE5D,KAAK,CAAC+D;IAAlC,gBACE,oBAAC,YAAD;MACE,aAAY,iBAAgBjB,KAAM,EADpC;MAEE,QAAQ,EAAEvC,QAFZ;MAGE,KAAK,EAAEsD,IAHT;MAIE,OAAO,EAAEC;IAJX,EADF,EAOGhB,KAAK,KAAK,KAAV,gBAAkB;MAAK,SAAS,EAAE9C,KAAK,CAACgE;IAAtB,EAAlB,GAAsD,IAPzD,CADF;EAWD,CAnBU,EAmBRnC,OAnBQ,CADd,GAqBG,IAtBN,CAlCF,eA0DE,iCACG,MAAKa,aAAL,iBACC,oBAAC,SAAD;IACE,IAAI,EAAEA,aADR;IAEE,OAAO,EAAEV,OAFX;IAGE,WAAW,EAAE;MAACiC,cAAc,EAAE;IAAjB;EAHf,EADD,gBAOC;IAAK,SAAS,EAAEjE,KAAK,CAACkE;EAAtB,gBACE;IAAK,SAAS,EAAElE,KAAK,CAACmE;EAAtB,GACG/C,SAAS,CAAC,2BAAD,EAA8B;IAACe;EAAD,CAA9B,CADZ,CADF,eAIE;IAAK,SAAS,EAAEnC,KAAK,CAACoE;EAAtB,GACGhD,SAAS,CAAC,iCAAD,CADZ,CAJF,eAOE;IAAK,SAAS,EAAEpB,KAAK,CAACqE,4BAAtB;IAAoD,OAAO,EAAEtB;EAA7D,GACG3B,SAAS,CAAC,kCAAD,CADZ,CAPF,CARJ,CA1DF,CADF;AAkFD,CAxHD;;AA0HAK,UAAU,CAACP,YAAX,GAA0B;EACxBR,IAAI,EAAElB,QAAQ,CAAC2B,iBAAT,CAA2BT,IADT;EAExBU,SAAS,EAAE5B,QAAQ,CAAC2B,iBAAT,CAA2BC;AAFd,CAA1B;AAKAK,UAAU,CAACJ,SAAX,2CAAuB;EACrBK,OAAO,EAAEnC,SAAS,CAAC+E,KAAV,CAAgBzE,SAAS,CAACwB,SAA1B,CADY;EAErBM,OAAO,EAAEpC,SAAS,CAAC+E,KAAV,CAAgB;IACvBxC,QAAQ,EAAEvC,SAAS,CAACiC,IADG;IAEvBK,OAAO,EAAEtC,SAAS,CAACgF,OAAV,CAAkBhF,SAAS,CAAC+E,KAAV,CAAgB5E,qBAAhB,CAAlB;EAFc,CAAhB,CAFY;EAMrBkC,OAAO,EAAErC,SAAS,CAAC+E,KAAV,CAAgB7E,MAAM,CAAC4B,SAAvB;AANY,CAAvB;AASA,eAAeI,UAAf"}
|
|
1
|
+
{"version":3,"file":"all-courses.js","names":["React","useState","useCallback","useMemo","PropTypes","Provider","Select","SelectOptionPropTypes","ButtonLink","SearchForm","CardsGrid","searchValueIncluded","InputSwitch","style","uncappedMap","convert","cap","FilterButton","props","context","dataName","ariaLabel","selected","label","onClick","skin","primarySkinColor","buttonProps","customStyle","backgroundColor","color","transition","width","contextTypes","childContextTypes","translate","propTypes","string","bool","func","AllCourses","content","filters","sorting","options","onChange","list","loading","showCompleted","setShowCompleted","searchValue","setSearchValue","sortView","undefined","filteredContent","course","progress","contentResult","skill","title","handleSearch","value","handleSearchReset","handleShowCompletedToggle","prevShowCompleted","continueLearningWrapper","continueLearningTitle","continueLearningNumber","searchAndSortSection","searchWrapper","placeholder","sortSection","sortWrapper","filterWrapper","filterProps","index","name","handleFilterChange","filterButtonWrapper","divider","justifyContent","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","shape","arrayOf"],"sources":["../../../src/template/skill-detail/all-courses.js"],"sourcesContent":["import React, {useState, useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {get, filter, map, size} from 'lodash/fp';\nimport Provider from '../../atom/provider';\nimport Select, {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLink from '../../atom/button-link';\nimport SearchForm from '../../molecule/search-form';\nimport CardsGrid from '../../organism/cards-grid';\nimport searchValueIncluded from '../../util/search-value-included';\nimport InputSwitch from '../../atom/input-switch';\nimport style from './all-courses.css';\n\nconst uncappedMap = map.convert({cap: false});\n\nconst FilterButton = (props, context) => {\n const {dataName, ariaLabel, selected, label, onClick} = props;\n const {skin} = context;\n const primarySkinColor = get('common.primary', skin);\n\n const buttonProps = {\n customStyle: {\n backgroundColor: selected ? primarySkinColor : '#E1E1E3',\n color: selected ? '#FFFFFF' : '#515161',\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out',\n width: 'fit-content'\n },\n label,\n onClick,\n 'data-name': dataName,\n 'aria-label': ariaLabel\n };\n\n return <ButtonLink {...buttonProps} />;\n};\n\nFilterButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nFilterButton.propTypes = {\n dataName: PropTypes.string,\n ariaLabel: PropTypes.string,\n selected: PropTypes.bool,\n label: PropTypes.string,\n onClick: PropTypes.func\n};\n\nconst AllCourses = (props, context) => {\n const {content, filters, sorting} = props;\n const {options, onChange} = filters;\n const {list, loading} = content;\n const {translate} = context;\n const [showCompleted, setShowCompleted] = useState(true);\n const [searchValue, setSearchValue] = useState('');\n\n const sortView =\n sorting !== undefined ? (\n <div data-name=\"choice\">\n <Select {...sorting} aria-label=\"All courses sort\" />\n </div>\n ) : null;\n\n const filteredContent = useMemo(() => {\n return showCompleted ? list : filter(course => course.progress < 1, list);\n }, [list, showCompleted]);\n\n const contentResult = useMemo(() => {\n return filter(skill => searchValueIncluded(skill.title, searchValue), filteredContent);\n }, [filteredContent, searchValue]);\n\n const handleSearch = useCallback(\n value => {\n setSearchValue(value);\n },\n [setSearchValue]\n );\n\n const handleSearchReset = useCallback(() => {\n setSearchValue('');\n }, [setSearchValue]);\n\n const handleShowCompletedToggle = useCallback(() => {\n setShowCompleted(prevShowCompleted => !prevShowCompleted);\n }, []);\n\n return (\n <>\n <div className={style.continueLearningWrapper}>\n <span className={style.continueLearningTitle}>{translate('all_content')}</span>\n <span className={style.continueLearningNumber}>{size(contentResult)}</span>\n </div>\n <div className={style.searchAndSortSection}>\n <div className={style.searchWrapper}>\n <SearchForm\n search={{\n placeholder: translate('search_place_holder'),\n value: searchValue,\n onChange: handleSearch\n }}\n onReset={handleSearchReset}\n dataTestId=\"all-courses-search-input\"\n />\n </div>\n <div className={style.sortSection}>\n <InputSwitch\n id={'show-completed-courses-switch'}\n type=\"switch\"\n name={translate('show_completed')}\n title={translate('show_completed')}\n aria-label={'Show completed courses aria label'}\n value={showCompleted}\n onChange={handleShowCompletedToggle}\n />\n {sortView ? (\n <div className={style.sortWrapper}>\n {translate('sort_by')}\n {sortView}\n </div>\n ) : null}\n </div>\n </div>\n <div className={style.filterWrapper}>\n {size(options) > 2 && size(contentResult)\n ? uncappedMap((filterProps, index) => {\n const {name, value, selected} = filterProps;\n\n function handleFilterChange() {\n onChange(value);\n handleSearchReset();\n }\n\n return (\n <div key={index} className={style.filterButtonWrapper}>\n <FilterButton\n dataName={`filter-button-${value}`}\n ariaLabel={`Filter by ${name}`}\n selected={selected}\n label={name}\n onClick={handleFilterChange}\n />\n {value === 'ALL' ? <div className={style.divider} /> : null}\n </div>\n );\n }, options)\n : null}\n </div>\n <div>\n {size(contentResult) ? (\n <CardsGrid\n list={contentResult}\n loading={loading}\n customStyle={{justifyContent: 'left'}}\n />\n ) : (\n <div className={style.emptySearchResultContainer}>\n <div className={style.emptySearchResultTitle}>\n {translate('empty_search_result_title', {searchValue})}\n </div>\n <div className={style.emptySearchResultDescription}>\n {translate('empty_search_result_description')}\n </div>\n <div className={style.emptySearchResultClearSearch} onClick={handleSearchReset}>\n {translate('empty_search_result_clear_search')}\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nAllCourses.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nAllCourses.propTypes = {\n content: PropTypes.shape(CardsGrid.propTypes),\n filters: PropTypes.shape({\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(PropTypes.shape(SelectOptionPropTypes))\n }),\n sorting: PropTypes.shape(Select.propTypes)\n};\n\nexport default AllCourses;\n"],"mappings":";;;;;;;AAAA,OAAOA,KAAP,IAAeC,QAAf,EAAyBC,WAAzB,EAAsCC,OAAtC,QAAoD,OAApD;AACA,OAAOC,SAAP,MAAsB,YAAtB;AAEA,OAAOC,QAAP,MAAqB,qBAArB;AACA,OAAOC,MAAP,IAAgBC,qBAAhB,QAA4C,mBAA5C;AACA,OAAOC,UAAP,MAAuB,wBAAvB;AACA,OAAOC,UAAP,MAAuB,4BAAvB;AACA,OAAOC,SAAP,MAAsB,2BAAtB;AACA,OAAOC,mBAAP,MAAgC,kCAAhC;AACA,OAAOC,WAAP,MAAwB,yBAAxB;AACA,OAAOC,KAAP,MAAkB,mBAAlB;;AAEA,MAAMC,WAAW,GAAG,KAAIC,OAAJ,CAAY;EAACC,GAAG,EAAE;AAAN,CAAZ,CAApB;;AAEA,MAAMC,YAAY,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;EACvC,MAAM;IAACC,QAAD;IAAWC,SAAX;IAAsBC,QAAtB;IAAgCC,KAAhC;IAAuCC;EAAvC,IAAkDN,KAAxD;EACA,MAAM;IAACO;EAAD,IAASN,OAAf;;EACA,MAAMO,gBAAgB,GAAG,KAAI,gBAAJ,EAAsBD,IAAtB,CAAzB;;EAEA,MAAME,WAAW,GAAG;IAClBC,WAAW,EAAE;MACXC,eAAe,EAAEP,QAAQ,GAAGI,gBAAH,GAAsB,SADpC;MAEXI,KAAK,EAAER,QAAQ,GAAG,SAAH,GAAe,SAFnB;MAGXS,UAAU,EAAE,6DAHD;MAIXC,KAAK,EAAE;IAJI,CADK;IAOlBT,KAPkB;IAQlBC,OARkB;IASlB,aAAaJ,QATK;IAUlB,cAAcC;EAVI,CAApB;EAaA,oBAAO,oBAAC,UAAD,EAAgBM,WAAhB,CAAP;AACD,CAnBD;;AAqBAV,YAAY,CAACgB,YAAb,GAA4B;EAC1BR,IAAI,EAAEpB,QAAQ,CAAC6B,iBAAT,CAA2BT,IADP;EAE1BU,SAAS,EAAE9B,QAAQ,CAAC6B,iBAAT,CAA2BC;AAFZ,CAA5B;AAKAlB,YAAY,CAACmB,SAAb,2CAAyB;EACvBhB,QAAQ,EAAEhB,SAAS,CAACiC,MADG;EAEvBhB,SAAS,EAAEjB,SAAS,CAACiC,MAFE;EAGvBf,QAAQ,EAAElB,SAAS,CAACkC,IAHG;EAIvBf,KAAK,EAAEnB,SAAS,CAACiC,MAJM;EAKvBb,OAAO,EAAEpB,SAAS,CAACmC;AALI,CAAzB;;AAQA,MAAMC,UAAU,GAAG,CAACtB,KAAD,EAAQC,OAAR,KAAoB;EACrC,MAAM;IAACsB,OAAD;IAAUC,OAAV;IAAmBC;EAAnB,IAA8BzB,KAApC;EACA,MAAM;IAAC0B,OAAD;IAAUC;EAAV,IAAsBH,OAA5B;EACA,MAAM;IAACI,IAAD;IAAOC;EAAP,IAAkBN,OAAxB;EACA,MAAM;IAACN;EAAD,IAAchB,OAApB;EACA,MAAM,CAAC6B,aAAD,EAAgBC,gBAAhB,IAAoChD,QAAQ,CAAC,IAAD,CAAlD;EACA,MAAM,CAACiD,WAAD,EAAcC,cAAd,IAAgClD,QAAQ,CAAC,EAAD,CAA9C;EAEA,MAAMmD,QAAQ,GACZT,OAAO,KAAKU,SAAZ,gBACE;IAAK,aAAU;EAAf,gBACE,oBAAC,MAAD,eAAYV,OAAZ;IAAqB,cAAW;EAAhC,GADF,CADF,GAII,IALN;EAOA,MAAMW,eAAe,GAAGnD,OAAO,CAAC,MAAM;IACpC,OAAO6C,aAAa,GAAGF,IAAH,GAAU,QAAOS,MAAM,IAAIA,MAAM,CAACC,QAAP,GAAkB,CAAnC,EAAsCV,IAAtC,CAA9B;EACD,CAF8B,EAE5B,CAACA,IAAD,EAAOE,aAAP,CAF4B,CAA/B;EAIA,MAAMS,aAAa,GAAGtD,OAAO,CAAC,MAAM;IAClC,OAAO,QAAOuD,KAAK,IAAI/C,mBAAmB,CAAC+C,KAAK,CAACC,KAAP,EAAcT,WAAd,CAAnC,EAA+DI,eAA/D,CAAP;EACD,CAF4B,EAE1B,CAACA,eAAD,EAAkBJ,WAAlB,CAF0B,CAA7B;EAIA,MAAMU,YAAY,GAAG1D,WAAW,CAC9B2D,KAAK,IAAI;IACPV,cAAc,CAACU,KAAD,CAAd;EACD,CAH6B,EAI9B,CAACV,cAAD,CAJ8B,CAAhC;EAOA,MAAMW,iBAAiB,GAAG5D,WAAW,CAAC,MAAM;IAC1CiD,cAAc,CAAC,EAAD,CAAd;EACD,CAFoC,EAElC,CAACA,cAAD,CAFkC,CAArC;EAIA,MAAMY,yBAAyB,GAAG7D,WAAW,CAAC,MAAM;IAClD+C,gBAAgB,CAACe,iBAAiB,IAAI,CAACA,iBAAvB,CAAhB;EACD,CAF4C,EAE1C,EAF0C,CAA7C;EAIA,oBACE,uDACE;IAAK,SAAS,EAAEnD,KAAK,CAACoD;EAAtB,gBACE;IAAM,SAAS,EAAEpD,KAAK,CAACqD;EAAvB,GAA+C/B,SAAS,CAAC,aAAD,CAAxD,CADF,eAEE;IAAM,SAAS,EAAEtB,KAAK,CAACsD;EAAvB,GAAgD,MAAKV,aAAL,CAAhD,CAFF,CADF,eAKE;IAAK,SAAS,EAAE5C,KAAK,CAACuD;EAAtB,gBACE;IAAK,SAAS,EAAEvD,KAAK,CAACwD;EAAtB,gBACE,oBAAC,UAAD;IACE,MAAM,EAAE;MACNC,WAAW,EAAEnC,SAAS,CAAC,qBAAD,CADhB;MAEN0B,KAAK,EAAEX,WAFD;MAGNL,QAAQ,EAAEe;IAHJ,CADV;IAME,OAAO,EAAEE,iBANX;IAOE,UAAU,EAAC;EAPb,EADF,CADF,eAYE;IAAK,SAAS,EAAEjD,KAAK,CAAC0D;EAAtB,gBACE,oBAAC,WAAD;IACE,EAAE,EAAE,+BADN;IAEE,IAAI,EAAC,QAFP;IAGE,IAAI,EAAEpC,SAAS,CAAC,gBAAD,CAHjB;IAIE,KAAK,EAAEA,SAAS,CAAC,gBAAD,CAJlB;IAKE,cAAY,mCALd;IAME,KAAK,EAAEa,aANT;IAOE,QAAQ,EAAEe;EAPZ,EADF,EAUGX,QAAQ,gBACP;IAAK,SAAS,EAAEvC,KAAK,CAAC2D;EAAtB,GACGrC,SAAS,CAAC,SAAD,CADZ,EAEGiB,QAFH,CADO,GAKL,IAfN,CAZF,CALF,eAmCE;IAAK,SAAS,EAAEvC,KAAK,CAAC4D;EAAtB,GACG,MAAK7B,OAAL,IAAgB,CAAhB,IAAqB,MAAKa,aAAL,CAArB,GACG3C,WAAW,CAAC,CAAC4D,WAAD,EAAcC,KAAd,KAAwB;IAClC,MAAM;MAACC,IAAD;MAAOf,KAAP;MAAcvC;IAAd,IAA0BoD,WAAhC;;IAEA,SAASG,kBAAT,GAA8B;MAC5BhC,QAAQ,CAACgB,KAAD,CAAR;MACAC,iBAAiB;IAClB;;IAED,oBACE;MAAK,GAAG,EAAEa,KAAV;MAAiB,SAAS,EAAE9D,KAAK,CAACiE;IAAlC,gBACE,oBAAC,YAAD;MACE,QAAQ,EAAG,iBAAgBjB,KAAM,EADnC;MAEE,SAAS,EAAG,aAAYe,IAAK,EAF/B;MAGE,QAAQ,EAAEtD,QAHZ;MAIE,KAAK,EAAEsD,IAJT;MAKE,OAAO,EAAEC;IALX,EADF,EAQGhB,KAAK,KAAK,KAAV,gBAAkB;MAAK,SAAS,EAAEhD,KAAK,CAACkE;IAAtB,EAAlB,GAAsD,IARzD,CADF;EAYD,CApBU,EAoBRnC,OApBQ,CADd,GAsBG,IAvBN,CAnCF,eA4DE,iCACG,MAAKa,aAAL,iBACC,oBAAC,SAAD;IACE,IAAI,EAAEA,aADR;IAEE,OAAO,EAAEV,OAFX;IAGE,WAAW,EAAE;MAACiC,cAAc,EAAE;IAAjB;EAHf,EADD,gBAOC;IAAK,SAAS,EAAEnE,KAAK,CAACoE;EAAtB,gBACE;IAAK,SAAS,EAAEpE,KAAK,CAACqE;EAAtB,GACG/C,SAAS,CAAC,2BAAD,EAA8B;IAACe;EAAD,CAA9B,CADZ,CADF,eAIE;IAAK,SAAS,EAAErC,KAAK,CAACsE;EAAtB,GACGhD,SAAS,CAAC,iCAAD,CADZ,CAJF,eAOE;IAAK,SAAS,EAAEtB,KAAK,CAACuE,4BAAtB;IAAoD,OAAO,EAAEtB;EAA7D,GACG3B,SAAS,CAAC,kCAAD,CADZ,CAPF,CARJ,CA5DF,CADF;AAoFD,CA1HD;;AA4HAK,UAAU,CAACP,YAAX,GAA0B;EACxBR,IAAI,EAAEpB,QAAQ,CAAC6B,iBAAT,CAA2BT,IADT;EAExBU,SAAS,EAAE9B,QAAQ,CAAC6B,iBAAT,CAA2BC;AAFd,CAA1B;AAKAK,UAAU,CAACJ,SAAX,2CAAuB;EACrBK,OAAO,EAAErC,SAAS,CAACiF,KAAV,CAAgB3E,SAAS,CAAC0B,SAA1B,CADY;EAErBM,OAAO,EAAEtC,SAAS,CAACiF,KAAV,CAAgB;IACvBxC,QAAQ,EAAEzC,SAAS,CAACmC,IADG;IAEvBK,OAAO,EAAExC,SAAS,CAACkF,OAAV,CAAkBlF,SAAS,CAACiF,KAAV,CAAgB9E,qBAAhB,CAAlB;EAFc,CAAhB,CAFY;EAMrBoC,OAAO,EAAEvC,SAAS,CAACiF,KAAV,CAAgB/E,MAAM,CAAC8B,SAAvB;AANY,CAAvB;AASA,eAAeI,UAAf"}
|
|
@@ -32,6 +32,7 @@ declare namespace Search {
|
|
|
32
32
|
const onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
33
33
|
const onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
34
34
|
const theme: PropTypes.Requireable<string>;
|
|
35
|
+
const dataTestId: PropTypes.Requireable<string>;
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
import PropTypes from "prop-types";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atom/input-search/index.js"],"names":[],"mappings":";AAYA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atom/input-search/index.js"],"names":[],"mappings":";AAYA,iDAkDC"}
|
|
@@ -33,7 +33,8 @@ const Search = props => {
|
|
|
33
33
|
onClear = _noop2.default,
|
|
34
34
|
onFocus,
|
|
35
35
|
onBlur,
|
|
36
|
-
theme = 'default'
|
|
36
|
+
theme = 'default',
|
|
37
|
+
dataTestId
|
|
37
38
|
} = props;
|
|
38
39
|
const handleChange = (0, _react.useMemo)(() => e => onChange(e.target.value), [onChange]);
|
|
39
40
|
const cmStyle = (0, _classnames.default)(_style.default.coorpmanager);
|
|
@@ -51,6 +52,7 @@ const Search = props => {
|
|
|
51
52
|
className: (0, _classnames.default)(_style.default.title, (0, _isEmpty2.default)(value) && _style.default.noValue)
|
|
52
53
|
}, placeholder) : null), /*#__PURE__*/_react.default.createElement("input", {
|
|
53
54
|
"data-name": "search-input",
|
|
55
|
+
"data-testid": dataTestId,
|
|
54
56
|
className: _style.default.search,
|
|
55
57
|
"aria-label": placeholder,
|
|
56
58
|
type: "text",
|
|
@@ -79,7 +81,8 @@ Search.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
79
81
|
onClear: _propTypes.default.func,
|
|
80
82
|
onFocus: _propTypes.default.func,
|
|
81
83
|
onBlur: _propTypes.default.func,
|
|
82
|
-
theme: _propTypes.default.oneOf(['default', 'coorpmanager'])
|
|
84
|
+
theme: _propTypes.default.oneOf(['default', 'coorpmanager']),
|
|
85
|
+
dataTestId: _propTypes.default.string
|
|
83
86
|
} : {};
|
|
84
87
|
var _default = Search;
|
|
85
88
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Search","props","value","placeholder","onChange","onClear","onFocus","onBlur","theme","handleChange","useMemo","e","target","cmStyle","classnames","style","coorpmanager","isDefaultTheme","wrapperSearch","searchIcon","title","noValue","search","clearIcon","contextTypes","skin","Provider","childContextTypes","propTypes","PropTypes","string","isRequired","func","oneOf"],"sources":["../../../src/atom/input-search/index.js"],"sourcesContent":["import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {\n NovaCompositionCoorpacademySearchThin as CMSearchIcon,\n NovaCompositionCoorpacademySearch as SearchIcon,\n NovaSolidStatusClose as CloseIcon\n} from '@coorpacademy/nova-icons';\nimport {noop, isEmpty} from 'lodash/fp';\nimport Provider from '../provider';\nimport style from './style.css';\n\nconst Search = props => {\n const {\n value,\n placeholder,\n onChange = noop,\n onClear = noop,\n onFocus,\n onBlur,\n theme = 'default'\n } = props;\n const handleChange = useMemo(() => e => onChange(e.target.value), [onChange]);\n const cmStyle = classnames(style.coorpmanager);\n const isDefaultTheme = theme === 'default';\n\n return (\n <div className={isDefaultTheme ? style.wrapperSearch : cmStyle}>\n <label htmlFor=\"search\" title={placeholder}>\n {!isDefaultTheme ? (\n <CMSearchIcon className={style.searchIcon} />\n ) : (\n <SearchIcon className={style.searchIcon} />\n )}\n {!isDefaultTheme ? (\n <span className={classnames(style.title, isEmpty(value) && style.noValue)}>\n {placeholder}\n </span>\n ) : null}\n </label>\n <input\n data-name=\"search-input\"\n className={style.search}\n aria-label={placeholder}\n type=\"text\"\n name=\"search\"\n id=\"search\"\n placeholder={placeholder}\n title={placeholder}\n value={value}\n onInput={handleChange}\n onFocus={onFocus}\n onChange={noop}\n onBlur={onBlur}\n />\n {value && !isDefaultTheme ? (\n <CloseIcon onClick={onClear} className={style.clearIcon} />\n ) : null}\n </div>\n );\n};\n\nSearch.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nSearch.propTypes = {\n value: PropTypes.string,\n placeholder: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n onClear: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n theme: PropTypes.oneOf(['default', 'coorpmanager'])\n};\n\nexport default Search;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAMA;;AACA;;;;;;;;AAEA,MAAMA,MAAM,GAAGC,KAAK,IAAI;EACtB,MAAM;IACJC,KADI;IAEJC,WAFI;IAGJC,QAAQ,iBAHJ;IAIJC,OAAO,iBAJH;IAKJC,OALI;IAMJC,MANI;IAOJC,KAAK,GAAG;
|
|
1
|
+
{"version":3,"file":"index.js","names":["Search","props","value","placeholder","onChange","onClear","onFocus","onBlur","theme","dataTestId","handleChange","useMemo","e","target","cmStyle","classnames","style","coorpmanager","isDefaultTheme","wrapperSearch","searchIcon","title","noValue","search","clearIcon","contextTypes","skin","Provider","childContextTypes","propTypes","PropTypes","string","isRequired","func","oneOf"],"sources":["../../../src/atom/input-search/index.js"],"sourcesContent":["import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {\n NovaCompositionCoorpacademySearchThin as CMSearchIcon,\n NovaCompositionCoorpacademySearch as SearchIcon,\n NovaSolidStatusClose as CloseIcon\n} from '@coorpacademy/nova-icons';\nimport {noop, isEmpty} from 'lodash/fp';\nimport Provider from '../provider';\nimport style from './style.css';\n\nconst Search = props => {\n const {\n value,\n placeholder,\n onChange = noop,\n onClear = noop,\n onFocus,\n onBlur,\n theme = 'default',\n dataTestId\n } = props;\n const handleChange = useMemo(() => e => onChange(e.target.value), [onChange]);\n const cmStyle = classnames(style.coorpmanager);\n const isDefaultTheme = theme === 'default';\n\n return (\n <div className={isDefaultTheme ? style.wrapperSearch : cmStyle}>\n <label htmlFor=\"search\" title={placeholder}>\n {!isDefaultTheme ? (\n <CMSearchIcon className={style.searchIcon} />\n ) : (\n <SearchIcon className={style.searchIcon} />\n )}\n {!isDefaultTheme ? (\n <span className={classnames(style.title, isEmpty(value) && style.noValue)}>\n {placeholder}\n </span>\n ) : null}\n </label>\n <input\n data-name=\"search-input\"\n data-testid={dataTestId}\n className={style.search}\n aria-label={placeholder}\n type=\"text\"\n name=\"search\"\n id=\"search\"\n placeholder={placeholder}\n title={placeholder}\n value={value}\n onInput={handleChange}\n onFocus={onFocus}\n onChange={noop}\n onBlur={onBlur}\n />\n {value && !isDefaultTheme ? (\n <CloseIcon onClick={onClear} className={style.clearIcon} />\n ) : null}\n </div>\n );\n};\n\nSearch.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nSearch.propTypes = {\n value: PropTypes.string,\n placeholder: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n onClear: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n theme: PropTypes.oneOf(['default', 'coorpmanager']),\n dataTestId: PropTypes.string\n};\n\nexport default Search;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAMA;;AACA;;;;;;;;AAEA,MAAMA,MAAM,GAAGC,KAAK,IAAI;EACtB,MAAM;IACJC,KADI;IAEJC,WAFI;IAGJC,QAAQ,iBAHJ;IAIJC,OAAO,iBAJH;IAKJC,OALI;IAMJC,MANI;IAOJC,KAAK,GAAG,SAPJ;IAQJC;EARI,IASFR,KATJ;EAUA,MAAMS,YAAY,GAAG,IAAAC,cAAA,EAAQ,MAAMC,CAAC,IAAIR,QAAQ,CAACQ,CAAC,CAACC,MAAF,CAASX,KAAV,CAA3B,EAA6C,CAACE,QAAD,CAA7C,CAArB;EACA,MAAMU,OAAO,GAAG,IAAAC,mBAAA,EAAWC,cAAA,CAAMC,YAAjB,CAAhB;EACA,MAAMC,cAAc,GAAGV,KAAK,KAAK,SAAjC;EAEA,oBACE;IAAK,SAAS,EAAEU,cAAc,GAAGF,cAAA,CAAMG,aAAT,GAAyBL;EAAvD,gBACE;IAAO,OAAO,EAAC,QAAf;IAAwB,KAAK,EAAEX;EAA/B,GACG,CAACe,cAAD,gBACC,6BAAC,gDAAD;IAAc,SAAS,EAAEF,cAAA,CAAMI;EAA/B,EADD,gBAGC,6BAAC,4CAAD;IAAY,SAAS,EAAEJ,cAAA,CAAMI;EAA7B,EAJJ,EAMG,CAACF,cAAD,gBACC;IAAM,SAAS,EAAE,IAAAH,mBAAA,EAAWC,cAAA,CAAMK,KAAjB,EAAwB,uBAAQnB,KAAR,KAAkBc,cAAA,CAAMM,OAAhD;EAAjB,GACGnB,WADH,CADD,GAIG,IAVN,CADF,eAaE;IACE,aAAU,cADZ;IAEE,eAAaM,UAFf;IAGE,SAAS,EAAEO,cAAA,CAAMO,MAHnB;IAIE,cAAYpB,WAJd;IAKE,IAAI,EAAC,MALP;IAME,IAAI,EAAC,QANP;IAOE,EAAE,EAAC,QAPL;IAQE,WAAW,EAAEA,WARf;IASE,KAAK,EAAEA,WATT;IAUE,KAAK,EAAED,KAVT;IAWE,OAAO,EAAEQ,YAXX;IAYE,OAAO,EAAEJ,OAZX;IAaE,QAAQ,gBAbV;IAcE,MAAM,EAAEC;EAdV,EAbF,EA6BGL,KAAK,IAAI,CAACgB,cAAV,gBACC,6BAAC,+BAAD;IAAW,OAAO,EAAEb,OAApB;IAA6B,SAAS,EAAEW,cAAA,CAAMQ;EAA9C,EADD,GAEG,IA/BN,CADF;AAmCD,CAlDD;;AAoDAxB,MAAM,CAACyB,YAAP,GAAsB;EACpBC,IAAI,EAAEC,iBAAA,CAASC,iBAAT,CAA2BF;AADb,CAAtB;AAIA1B,MAAM,CAAC6B,SAAP,2CAAmB;EACjB3B,KAAK,EAAE4B,kBAAA,CAAUC,MADA;EAEjB5B,WAAW,EAAE2B,kBAAA,CAAUC,MAAV,CAAiBC,UAFb;EAGjB5B,QAAQ,EAAE0B,kBAAA,CAAUG,IAHH;EAIjB5B,OAAO,EAAEyB,kBAAA,CAAUG,IAJF;EAKjB3B,OAAO,EAAEwB,kBAAA,CAAUG,IALF;EAMjB1B,MAAM,EAAEuB,kBAAA,CAAUG,IAND;EAOjBzB,KAAK,EAAEsB,kBAAA,CAAUI,KAAV,CAAgB,CAAC,SAAD,EAAY,cAAZ,CAAhB,CAPU;EAQjBzB,UAAU,EAAEqB,kBAAA,CAAUC;AARL,CAAnB;eAWe/B,M"}
|
|
@@ -16,8 +16,10 @@ declare namespace SearchForm {
|
|
|
16
16
|
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
17
17
|
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
18
18
|
theme: PropTypes.Requireable<string>;
|
|
19
|
+
dataTestId: PropTypes.Requireable<string>;
|
|
19
20
|
}>>;
|
|
20
21
|
'search-reset-aria-label': PropTypes.Requireable<string>;
|
|
22
|
+
dataTestId: PropTypes.Requireable<string>;
|
|
21
23
|
};
|
|
22
24
|
}
|
|
23
25
|
import PropTypes from "prop-types";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/search-form/index.js"],"names":[],"mappings":";AAOA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/search-form/index.js"],"names":[],"mappings":";AAOA,mEA0CC"}
|
|
@@ -32,7 +32,8 @@ const SearchForm = (props, context) => {
|
|
|
32
32
|
search,
|
|
33
33
|
onSearchFocus,
|
|
34
34
|
onSearchBlur,
|
|
35
|
-
'search-reset-aria-label': searchResetAriaLabel
|
|
35
|
+
'search-reset-aria-label': searchResetAriaLabel,
|
|
36
|
+
dataTestId
|
|
36
37
|
} = props;
|
|
37
38
|
const handleSubmit = (0, _react.useMemo)(() => evt => {
|
|
38
39
|
evt.preventDefault();
|
|
@@ -51,7 +52,8 @@ const SearchForm = (props, context) => {
|
|
|
51
52
|
"aria-label": search.placeholder
|
|
52
53
|
}, /*#__PURE__*/_react.default.createElement(_inputSearch.default, _extends({}, search, {
|
|
53
54
|
onFocus: onSearchFocus,
|
|
54
|
-
onBlur: onSearchBlur
|
|
55
|
+
onBlur: onSearchBlur,
|
|
56
|
+
dataTestId: dataTestId
|
|
55
57
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
56
58
|
"data-name": "search-form-reset",
|
|
57
59
|
"aria-label": searchResetAriaLabel,
|
|
@@ -73,7 +75,8 @@ SearchForm.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
73
75
|
onSearchFocus: _propTypes.default.func,
|
|
74
76
|
onSearchBlur: _propTypes.default.func,
|
|
75
77
|
search: _propTypes.default.shape(_inputSearch.default.propTypes),
|
|
76
|
-
'search-reset-aria-label': _propTypes.default.string
|
|
78
|
+
'search-reset-aria-label': _propTypes.default.string,
|
|
79
|
+
dataTestId: _propTypes.default.string
|
|
77
80
|
} : {};
|
|
78
81
|
var _default = SearchForm;
|
|
79
82
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["SearchForm","props","context","action","method","onSubmit","onReset","search","onSearchFocus","onSearchBlur","searchResetAriaLabel","handleSubmit","useMemo","evt","preventDefault","skin","dark","style","form","placeholder","value","wrapperClear","wrapperNoClear","color","clear","propTypes","PropTypes","string","func","shape","Search"],"sources":["../../../src/molecule/search-form/index.js"],"sourcesContent":["import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {get} from 'lodash/fp';\nimport {NovaCompositionNavigationMore as ClearIcon} from '@coorpacademy/nova-icons';\nimport Search from '../../atom/input-search';\nimport style from './style.css';\n\nconst SearchForm = (props, context) => {\n const {\n action,\n method,\n onSubmit,\n onReset,\n search,\n onSearchFocus,\n onSearchBlur,\n 'search-reset-aria-label': searchResetAriaLabel\n } = props;\n const handleSubmit = useMemo(\n () => evt => {\n evt.preventDefault();\n return onSubmit && onSubmit(evt);\n },\n [onSubmit]\n );\n const {skin} = context;\n const dark = get('common.dark', skin);\n\n return (\n <form\n className={style.form}\n action={action}\n method={method}\n onSubmit={handleSubmit}\n data-name=\"searchForm\"\n aria-label={search.placeholder}\n >\n <Search {...search} onFocus={onSearchFocus} onBlur={onSearchBlur} />\n <div\n data-name=\"search-form-reset\"\n aria-label={searchResetAriaLabel}\n onClick={onReset}\n className={search.value ? style.wrapperClear : style.wrapperNoClear}\n >\n <ClearIcon style={{color: dark}} className={style.clear} />\n </div>\n </form>\n );\n};\n\nSearchForm.propTypes = {\n action: PropTypes.string,\n method: PropTypes.string,\n onSubmit: PropTypes.func,\n onReset: PropTypes.func,\n onSearchFocus: PropTypes.func,\n onSearchBlur: PropTypes.func,\n search: PropTypes.shape(Search.propTypes),\n 'search-reset-aria-label': PropTypes.string\n};\n\nexport default SearchForm;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;AAEA,MAAMA,UAAU,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;EACrC,MAAM;IACJC,MADI;IAEJC,MAFI;IAGJC,QAHI;IAIJC,OAJI;IAKJC,MALI;IAMJC,aANI;IAOJC,YAPI;IAQJ,2BAA2BC;
|
|
1
|
+
{"version":3,"file":"index.js","names":["SearchForm","props","context","action","method","onSubmit","onReset","search","onSearchFocus","onSearchBlur","searchResetAriaLabel","dataTestId","handleSubmit","useMemo","evt","preventDefault","skin","dark","style","form","placeholder","value","wrapperClear","wrapperNoClear","color","clear","propTypes","PropTypes","string","func","shape","Search"],"sources":["../../../src/molecule/search-form/index.js"],"sourcesContent":["import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {get} from 'lodash/fp';\nimport {NovaCompositionNavigationMore as ClearIcon} from '@coorpacademy/nova-icons';\nimport Search from '../../atom/input-search';\nimport style from './style.css';\n\nconst SearchForm = (props, context) => {\n const {\n action,\n method,\n onSubmit,\n onReset,\n search,\n onSearchFocus,\n onSearchBlur,\n 'search-reset-aria-label': searchResetAriaLabel,\n dataTestId\n } = props;\n const handleSubmit = useMemo(\n () => evt => {\n evt.preventDefault();\n return onSubmit && onSubmit(evt);\n },\n [onSubmit]\n );\n const {skin} = context;\n const dark = get('common.dark', skin);\n\n return (\n <form\n className={style.form}\n action={action}\n method={method}\n onSubmit={handleSubmit}\n data-name=\"searchForm\"\n aria-label={search.placeholder}\n >\n <Search {...search} onFocus={onSearchFocus} onBlur={onSearchBlur} dataTestId={dataTestId} />\n <div\n data-name=\"search-form-reset\"\n aria-label={searchResetAriaLabel}\n onClick={onReset}\n className={search.value ? style.wrapperClear : style.wrapperNoClear}\n >\n <ClearIcon style={{color: dark}} className={style.clear} />\n </div>\n </form>\n );\n};\n\nSearchForm.propTypes = {\n action: PropTypes.string,\n method: PropTypes.string,\n onSubmit: PropTypes.func,\n onReset: PropTypes.func,\n onSearchFocus: PropTypes.func,\n onSearchBlur: PropTypes.func,\n search: PropTypes.shape(Search.propTypes),\n 'search-reset-aria-label': PropTypes.string,\n dataTestId: PropTypes.string\n};\n\nexport default SearchForm;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;AAEA,MAAMA,UAAU,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;EACrC,MAAM;IACJC,MADI;IAEJC,MAFI;IAGJC,QAHI;IAIJC,OAJI;IAKJC,MALI;IAMJC,aANI;IAOJC,YAPI;IAQJ,2BAA2BC,oBARvB;IASJC;EATI,IAUFV,KAVJ;EAWA,MAAMW,YAAY,GAAG,IAAAC,cAAA,EACnB,MAAMC,GAAG,IAAI;IACXA,GAAG,CAACC,cAAJ;IACA,OAAOV,QAAQ,IAAIA,QAAQ,CAACS,GAAD,CAA3B;EACD,CAJkB,EAKnB,CAACT,QAAD,CALmB,CAArB;EAOA,MAAM;IAACW;EAAD,IAASd,OAAf;EACA,MAAMe,IAAI,GAAG,mBAAI,aAAJ,EAAmBD,IAAnB,CAAb;EAEA,oBACE;IACE,SAAS,EAAEE,cAAA,CAAMC,IADnB;IAEE,MAAM,EAAEhB,MAFV;IAGE,MAAM,EAAEC,MAHV;IAIE,QAAQ,EAAEQ,YAJZ;IAKE,aAAU,YALZ;IAME,cAAYL,MAAM,CAACa;EANrB,gBAQE,6BAAC,oBAAD,eAAYb,MAAZ;IAAoB,OAAO,EAAEC,aAA7B;IAA4C,MAAM,EAAEC,YAApD;IAAkE,UAAU,EAAEE;EAA9E,GARF,eASE;IACE,aAAU,mBADZ;IAEE,cAAYD,oBAFd;IAGE,OAAO,EAAEJ,OAHX;IAIE,SAAS,EAAEC,MAAM,CAACc,KAAP,GAAeH,cAAA,CAAMI,YAArB,GAAoCJ,cAAA,CAAMK;EAJvD,gBAME,6BAAC,wCAAD;IAAW,KAAK,EAAE;MAACC,KAAK,EAAEP;IAAR,CAAlB;IAAiC,SAAS,EAAEC,cAAA,CAAMO;EAAlD,EANF,CATF,CADF;AAoBD,CA1CD;;AA4CAzB,UAAU,CAAC0B,SAAX,2CAAuB;EACrBvB,MAAM,EAAEwB,kBAAA,CAAUC,MADG;EAErBxB,MAAM,EAAEuB,kBAAA,CAAUC,MAFG;EAGrBvB,QAAQ,EAAEsB,kBAAA,CAAUE,IAHC;EAIrBvB,OAAO,EAAEqB,kBAAA,CAAUE,IAJE;EAKrBrB,aAAa,EAAEmB,kBAAA,CAAUE,IALJ;EAMrBpB,YAAY,EAAEkB,kBAAA,CAAUE,IANH;EAOrBtB,MAAM,EAAEoB,kBAAA,CAAUG,KAAV,CAAgBC,oBAAA,CAAOL,SAAvB,CAPa;EAQrB,2BAA2BC,kBAAA,CAAUC,MARhB;EASrBjB,UAAU,EAAEgB,kBAAA,CAAUC;AATD,CAAvB;eAYe5B,U"}
|
|
@@ -10,6 +10,7 @@ declare namespace BrandTable {
|
|
|
10
10
|
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
11
11
|
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
12
12
|
theme: PropTypes.Requireable<string>;
|
|
13
|
+
dataTestId: PropTypes.Requireable<string>;
|
|
13
14
|
}>>;
|
|
14
15
|
const pagination: PropTypes.Requireable<PropTypes.InferProps<{
|
|
15
16
|
value: PropTypes.Validator<string>;
|
|
@@ -18,6 +18,7 @@ declare class MoocHeader extends React.Component<any, any, any> {
|
|
|
18
18
|
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
19
19
|
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
20
20
|
theme: PropTypes.Requireable<string>;
|
|
21
|
+
dataTestId: PropTypes.Requireable<string>;
|
|
21
22
|
}>>;
|
|
22
23
|
'search-reset-aria-label': PropTypes.Requireable<string>;
|
|
23
24
|
onSubmitSearch: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/organism/mooc-header/index.js"],"names":[],"mappings":";AAyBA;IACE
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/organism/mooc-header/index.js"],"names":[],"mappings":";AAyBA;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+FE;IAEF;;;;;;;;;;;;;;;;;;;;;;;MAGE;IAEF,wBAwBC;IAtBC;;;;;;MAMC;IAgDH,6BAIC;IAED,yBAGC;IAxBD,qCAQC;IAED,wBAGC;IAjBD,+BAEC;IA4BD,2BAKC;IAED,0BAKC;IAED,sBAIC;IAED,qBAIC;IAED,yBAQC;IAED,0BAQC;IAED,0BAIC;IAED,2BAIC;IAED,iCAUC;IA7GD,2EASC;IAGC,kBAAsB;IAmGxB,6BAIE;IAEF,6BAIE;IAEF,6BAkdC;CACF"}
|
|
@@ -185,6 +185,7 @@ declare namespace BrandUpdate {
|
|
|
185
185
|
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
186
186
|
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
187
187
|
theme: PropTypes.Requireable<string>;
|
|
188
|
+
dataTestId: PropTypes.Requireable<string>;
|
|
188
189
|
}>>;
|
|
189
190
|
pagination: PropTypes.Requireable<PropTypes.InferProps<{
|
|
190
191
|
value: PropTypes.Validator<string>;
|
|
@@ -1192,6 +1193,7 @@ declare namespace BrandUpdate {
|
|
|
1192
1193
|
onFocus: PropTypes.Requireable<(...args: any[]) => any>;
|
|
1193
1194
|
onBlur: PropTypes.Requireable<(...args: any[]) => any>;
|
|
1194
1195
|
theme: PropTypes.Requireable<string>;
|
|
1196
|
+
dataTestId: PropTypes.Requireable<string>;
|
|
1195
1197
|
}>>;
|
|
1196
1198
|
pagination: PropTypes.Requireable<PropTypes.InferProps<{
|
|
1197
1199
|
value: PropTypes.Validator<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all-courses.d.ts","sourceRoot":"","sources":["../../../src/template/skill-detail/all-courses.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"all-courses.d.ts","sourceRoot":"","sources":["../../../src/template/skill-detail/all-courses.js"],"names":[],"mappings":";AAgDA,mEA0HC"}
|
|
@@ -45,6 +45,8 @@ const uncappedMap = _map2.default.convert({
|
|
|
45
45
|
|
|
46
46
|
const FilterButton = (props, context) => {
|
|
47
47
|
const {
|
|
48
|
+
dataName,
|
|
49
|
+
ariaLabel,
|
|
48
50
|
selected,
|
|
49
51
|
label,
|
|
50
52
|
onClick
|
|
@@ -62,7 +64,8 @@ const FilterButton = (props, context) => {
|
|
|
62
64
|
},
|
|
63
65
|
label,
|
|
64
66
|
onClick,
|
|
65
|
-
'data-name':
|
|
67
|
+
'data-name': dataName,
|
|
68
|
+
'aria-label': ariaLabel
|
|
66
69
|
};
|
|
67
70
|
return /*#__PURE__*/_react.default.createElement(_buttonLink.default, buttonProps);
|
|
68
71
|
};
|
|
@@ -72,6 +75,8 @@ FilterButton.contextTypes = {
|
|
|
72
75
|
translate: _provider.default.childContextTypes.translate
|
|
73
76
|
};
|
|
74
77
|
FilterButton.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
78
|
+
dataName: _propTypes.default.string,
|
|
79
|
+
ariaLabel: _propTypes.default.string,
|
|
75
80
|
selected: _propTypes.default.bool,
|
|
76
81
|
label: _propTypes.default.string,
|
|
77
82
|
onClick: _propTypes.default.func
|
|
@@ -132,7 +137,8 @@ const AllCourses = (props, context) => {
|
|
|
132
137
|
value: searchValue,
|
|
133
138
|
onChange: handleSearch
|
|
134
139
|
},
|
|
135
|
-
onReset: handleSearchReset
|
|
140
|
+
onReset: handleSearchReset,
|
|
141
|
+
dataTestId: "all-courses-search-input"
|
|
136
142
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
137
143
|
className: _allCourses.default.sortSection
|
|
138
144
|
}, /*#__PURE__*/_react.default.createElement(_inputSwitch.default, {
|
|
@@ -163,7 +169,8 @@ const AllCourses = (props, context) => {
|
|
|
163
169
|
key: index,
|
|
164
170
|
className: _allCourses.default.filterButtonWrapper
|
|
165
171
|
}, /*#__PURE__*/_react.default.createElement(FilterButton, {
|
|
166
|
-
|
|
172
|
+
dataName: `filter-button-${value}`,
|
|
173
|
+
ariaLabel: `Filter by ${name}`,
|
|
167
174
|
selected: selected,
|
|
168
175
|
label: name,
|
|
169
176
|
onClick: handleFilterChange
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all-courses.js","names":["uncappedMap","convert","cap","FilterButton","props","context","selected","label","onClick","skin","primarySkinColor","buttonProps","customStyle","backgroundColor","color","transition","width","contextTypes","Provider","childContextTypes","translate","propTypes","PropTypes","bool","string","func","AllCourses","content","filters","sorting","options","onChange","list","loading","showCompleted","setShowCompleted","useState","searchValue","setSearchValue","sortView","undefined","filteredContent","useMemo","course","progress","contentResult","skill","searchValueIncluded","title","handleSearch","useCallback","value","handleSearchReset","handleShowCompletedToggle","prevShowCompleted","style","continueLearningWrapper","continueLearningTitle","continueLearningNumber","searchAndSortSection","searchWrapper","placeholder","sortSection","sortWrapper","filterWrapper","filterProps","index","name","handleFilterChange","filterButtonWrapper","divider","justifyContent","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","shape","CardsGrid","arrayOf","SelectOptionPropTypes","Select"],"sources":["../../../src/template/skill-detail/all-courses.js"],"sourcesContent":["import React, {useState, useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {get, filter, map, size} from 'lodash/fp';\nimport Provider from '../../atom/provider';\nimport Select, {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLink from '../../atom/button-link';\nimport SearchForm from '../../molecule/search-form';\nimport CardsGrid from '../../organism/cards-grid';\nimport searchValueIncluded from '../../util/search-value-included';\nimport InputSwitch from '../../atom/input-switch';\nimport style from './all-courses.css';\n\nconst uncappedMap = map.convert({cap: false});\n\nconst FilterButton = (props, context) => {\n const {selected, label, onClick} = props;\n const {skin} = context;\n const primarySkinColor = get('common.primary', skin);\n\n const buttonProps = {\n customStyle: {\n backgroundColor: selected ? primarySkinColor : '#E1E1E3',\n color: selected ? '#FFFFFF' : '#515161',\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out',\n width: 'fit-content'\n },\n label,\n onClick,\n 'data-name': 'filter-type-course-button'\n };\n\n return <ButtonLink {...buttonProps} />;\n};\n\nFilterButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nFilterButton.propTypes = {\n selected: PropTypes.bool,\n label: PropTypes.string,\n onClick: PropTypes.func\n};\n\nconst AllCourses = (props, context) => {\n const {content, filters, sorting} = props;\n const {options, onChange} = filters;\n const {list, loading} = content;\n const {translate} = context;\n const [showCompleted, setShowCompleted] = useState(true);\n const [searchValue, setSearchValue] = useState('');\n\n const sortView =\n sorting !== undefined ? (\n <div data-name=\"choice\">\n <Select {...sorting} aria-label=\"All courses sort\" />\n </div>\n ) : null;\n\n const filteredContent = useMemo(() => {\n return showCompleted ? list : filter(course => course.progress < 1, list);\n }, [list, showCompleted]);\n\n const contentResult = useMemo(() => {\n return filter(skill => searchValueIncluded(skill.title, searchValue), filteredContent);\n }, [filteredContent, searchValue]);\n\n const handleSearch = useCallback(\n value => {\n setSearchValue(value);\n },\n [setSearchValue]\n );\n\n const handleSearchReset = useCallback(() => {\n setSearchValue('');\n }, [setSearchValue]);\n\n const handleShowCompletedToggle = useCallback(() => {\n setShowCompleted(prevShowCompleted => !prevShowCompleted);\n }, []);\n\n return (\n <>\n <div className={style.continueLearningWrapper}>\n <span className={style.continueLearningTitle}>{translate('all_content')}</span>\n <span className={style.continueLearningNumber}>{size(contentResult)}</span>\n </div>\n <div className={style.searchAndSortSection}>\n <div className={style.searchWrapper}>\n <SearchForm\n search={{\n placeholder: translate('search_place_holder'),\n value: searchValue,\n onChange: handleSearch\n }}\n onReset={handleSearchReset}\n />\n </div>\n <div className={style.sortSection}>\n <InputSwitch\n id={'show-completed-courses-switch'}\n type=\"switch\"\n name={translate('show_completed')}\n title={translate('show_completed')}\n aria-label={'Show completed courses aria label'}\n value={showCompleted}\n onChange={handleShowCompletedToggle}\n />\n {sortView ? (\n <div className={style.sortWrapper}>\n {translate('sort_by')}\n {sortView}\n </div>\n ) : null}\n </div>\n </div>\n <div className={style.filterWrapper}>\n {size(options) > 2 && size(contentResult)\n ? uncappedMap((filterProps, index) => {\n const {name, value, selected} = filterProps;\n\n function handleFilterChange() {\n onChange(value);\n handleSearchReset();\n }\n\n return (\n <div key={index} className={style.filterButtonWrapper}>\n <FilterButton\n data-name={`filter-button-${value}`}\n selected={selected}\n label={name}\n onClick={handleFilterChange}\n />\n {value === 'ALL' ? <div className={style.divider} /> : null}\n </div>\n );\n }, options)\n : null}\n </div>\n <div>\n {size(contentResult) ? (\n <CardsGrid\n list={contentResult}\n loading={loading}\n customStyle={{justifyContent: 'left'}}\n />\n ) : (\n <div className={style.emptySearchResultContainer}>\n <div className={style.emptySearchResultTitle}>\n {translate('empty_search_result_title', {searchValue})}\n </div>\n <div className={style.emptySearchResultDescription}>\n {translate('empty_search_result_description')}\n </div>\n <div className={style.emptySearchResultClearSearch} onClick={handleSearchReset}>\n {translate('empty_search_result_clear_search')}\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nAllCourses.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nAllCourses.propTypes = {\n content: PropTypes.shape(CardsGrid.propTypes),\n filters: PropTypes.shape({\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(PropTypes.shape(SelectOptionPropTypes))\n }),\n sorting: PropTypes.shape(Select.propTypes)\n};\n\nexport default AllCourses;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"all-courses.js","names":["uncappedMap","convert","cap","FilterButton","props","context","dataName","ariaLabel","selected","label","onClick","skin","primarySkinColor","buttonProps","customStyle","backgroundColor","color","transition","width","contextTypes","Provider","childContextTypes","translate","propTypes","PropTypes","string","bool","func","AllCourses","content","filters","sorting","options","onChange","list","loading","showCompleted","setShowCompleted","useState","searchValue","setSearchValue","sortView","undefined","filteredContent","useMemo","course","progress","contentResult","skill","searchValueIncluded","title","handleSearch","useCallback","value","handleSearchReset","handleShowCompletedToggle","prevShowCompleted","style","continueLearningWrapper","continueLearningTitle","continueLearningNumber","searchAndSortSection","searchWrapper","placeholder","sortSection","sortWrapper","filterWrapper","filterProps","index","name","handleFilterChange","filterButtonWrapper","divider","justifyContent","emptySearchResultContainer","emptySearchResultTitle","emptySearchResultDescription","emptySearchResultClearSearch","shape","CardsGrid","arrayOf","SelectOptionPropTypes","Select"],"sources":["../../../src/template/skill-detail/all-courses.js"],"sourcesContent":["import React, {useState, useCallback, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {get, filter, map, size} from 'lodash/fp';\nimport Provider from '../../atom/provider';\nimport Select, {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLink from '../../atom/button-link';\nimport SearchForm from '../../molecule/search-form';\nimport CardsGrid from '../../organism/cards-grid';\nimport searchValueIncluded from '../../util/search-value-included';\nimport InputSwitch from '../../atom/input-switch';\nimport style from './all-courses.css';\n\nconst uncappedMap = map.convert({cap: false});\n\nconst FilterButton = (props, context) => {\n const {dataName, ariaLabel, selected, label, onClick} = props;\n const {skin} = context;\n const primarySkinColor = get('common.primary', skin);\n\n const buttonProps = {\n customStyle: {\n backgroundColor: selected ? primarySkinColor : '#E1E1E3',\n color: selected ? '#FFFFFF' : '#515161',\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out',\n width: 'fit-content'\n },\n label,\n onClick,\n 'data-name': dataName,\n 'aria-label': ariaLabel\n };\n\n return <ButtonLink {...buttonProps} />;\n};\n\nFilterButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nFilterButton.propTypes = {\n dataName: PropTypes.string,\n ariaLabel: PropTypes.string,\n selected: PropTypes.bool,\n label: PropTypes.string,\n onClick: PropTypes.func\n};\n\nconst AllCourses = (props, context) => {\n const {content, filters, sorting} = props;\n const {options, onChange} = filters;\n const {list, loading} = content;\n const {translate} = context;\n const [showCompleted, setShowCompleted] = useState(true);\n const [searchValue, setSearchValue] = useState('');\n\n const sortView =\n sorting !== undefined ? (\n <div data-name=\"choice\">\n <Select {...sorting} aria-label=\"All courses sort\" />\n </div>\n ) : null;\n\n const filteredContent = useMemo(() => {\n return showCompleted ? list : filter(course => course.progress < 1, list);\n }, [list, showCompleted]);\n\n const contentResult = useMemo(() => {\n return filter(skill => searchValueIncluded(skill.title, searchValue), filteredContent);\n }, [filteredContent, searchValue]);\n\n const handleSearch = useCallback(\n value => {\n setSearchValue(value);\n },\n [setSearchValue]\n );\n\n const handleSearchReset = useCallback(() => {\n setSearchValue('');\n }, [setSearchValue]);\n\n const handleShowCompletedToggle = useCallback(() => {\n setShowCompleted(prevShowCompleted => !prevShowCompleted);\n }, []);\n\n return (\n <>\n <div className={style.continueLearningWrapper}>\n <span className={style.continueLearningTitle}>{translate('all_content')}</span>\n <span className={style.continueLearningNumber}>{size(contentResult)}</span>\n </div>\n <div className={style.searchAndSortSection}>\n <div className={style.searchWrapper}>\n <SearchForm\n search={{\n placeholder: translate('search_place_holder'),\n value: searchValue,\n onChange: handleSearch\n }}\n onReset={handleSearchReset}\n dataTestId=\"all-courses-search-input\"\n />\n </div>\n <div className={style.sortSection}>\n <InputSwitch\n id={'show-completed-courses-switch'}\n type=\"switch\"\n name={translate('show_completed')}\n title={translate('show_completed')}\n aria-label={'Show completed courses aria label'}\n value={showCompleted}\n onChange={handleShowCompletedToggle}\n />\n {sortView ? (\n <div className={style.sortWrapper}>\n {translate('sort_by')}\n {sortView}\n </div>\n ) : null}\n </div>\n </div>\n <div className={style.filterWrapper}>\n {size(options) > 2 && size(contentResult)\n ? uncappedMap((filterProps, index) => {\n const {name, value, selected} = filterProps;\n\n function handleFilterChange() {\n onChange(value);\n handleSearchReset();\n }\n\n return (\n <div key={index} className={style.filterButtonWrapper}>\n <FilterButton\n dataName={`filter-button-${value}`}\n ariaLabel={`Filter by ${name}`}\n selected={selected}\n label={name}\n onClick={handleFilterChange}\n />\n {value === 'ALL' ? <div className={style.divider} /> : null}\n </div>\n );\n }, options)\n : null}\n </div>\n <div>\n {size(contentResult) ? (\n <CardsGrid\n list={contentResult}\n loading={loading}\n customStyle={{justifyContent: 'left'}}\n />\n ) : (\n <div className={style.emptySearchResultContainer}>\n <div className={style.emptySearchResultTitle}>\n {translate('empty_search_result_title', {searchValue})}\n </div>\n <div className={style.emptySearchResultDescription}>\n {translate('empty_search_result_description')}\n </div>\n <div className={style.emptySearchResultClearSearch} onClick={handleSearchReset}>\n {translate('empty_search_result_clear_search')}\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nAllCourses.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nAllCourses.propTypes = {\n content: PropTypes.shape(CardsGrid.propTypes),\n filters: PropTypes.shape({\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(PropTypes.shape(SelectOptionPropTypes))\n }),\n sorting: PropTypes.shape(Select.propTypes)\n};\n\nexport default AllCourses;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coorpacademy/components",
|
|
3
|
-
"version": "11.32.35-alpha.
|
|
3
|
+
"version": "11.32.35-alpha.19+5a181b5b1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -177,5 +177,5 @@
|
|
|
177
177
|
"last 2 versions",
|
|
178
178
|
"IE 11"
|
|
179
179
|
],
|
|
180
|
-
"gitHead": "
|
|
180
|
+
"gitHead": "5a181b5b1d5008049e9e93afe8507479627820b9"
|
|
181
181
|
}
|