@coorpacademy/components 10.5.4 → 10.5.7-alpha.5
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/course-section/index.js +5 -3
- package/es/molecule/course-section/index.js.map +1 -1
- package/es/molecule/course-section/style.css +2 -1
- package/es/molecule/course-section/test/fixtures/chapter.js +2 -1
- package/es/molecule/course-section/test/fixtures/chapter.js.map +1 -1
- package/es/molecule/course-section/test/fixtures/course.js +2 -1
- package/es/molecule/course-section/test/fixtures/course.js.map +1 -1
- package/es/molecule/course-sections/index.js +40 -0
- package/es/molecule/course-sections/index.js.map +1 -0
- package/es/molecule/course-sections/style.css +3 -0
- package/es/molecule/course-sections/test/fixtures/default.js +149 -0
- package/es/molecule/course-sections/test/fixtures/default.js.map +1 -0
- package/es/molecule/course-sections/test/fixtures/loading.js +9 -0
- package/es/molecule/course-sections/test/fixtures/loading.js.map +1 -0
- package/es/molecule/course-sections/test/fixtures.js +15 -0
- package/es/molecule/course-sections/test/fixtures.js.map +1 -0
- package/es/molecule/draggable/index.js +1 -1
- package/es/molecule/draggable/index.js.map +1 -1
- package/es/molecule/draggable/style.css +1 -5
- package/es/molecule/draggable-list/index.js +56 -0
- package/es/molecule/draggable-list/index.js.map +1 -0
- package/es/molecule/draggable-list/test/fixtures/course-sections.js +20 -0
- package/es/molecule/draggable-list/test/fixtures/course-sections.js.map +1 -0
- package/es/molecule/draggable-list/test/fixtures/dashboard-sections.js +26 -0
- package/es/molecule/draggable-list/test/fixtures/dashboard-sections.js.map +1 -0
- package/es/molecule/draggable-list/test/fixtures.js +2 -0
- package/es/molecule/draggable-list/test/fixtures.js.map +1 -1
- package/es/molecule/{setup-sections → draggable-list}/test/on-drop.js +17 -17
- package/es/molecule/draggable-list/test/on-drop.js.map +1 -0
- package/es/molecule/questions/qcm/index.js +37 -25
- package/es/molecule/questions/qcm/index.js.map +1 -1
- package/es/molecule/questions/qcm/style.css +48 -14
- package/es/molecule/questions/qcm/test/fixtures/default.js +8 -0
- package/es/molecule/questions/qcm/test/fixtures/default.js.map +1 -1
- package/es/molecule/questions/qcm/test/qcm.js +103 -0
- package/es/molecule/questions/qcm/test/qcm.js.map +1 -0
- package/es/molecule/questions/qcm-graphic/index.js +35 -17
- package/es/molecule/questions/qcm-graphic/index.js.map +1 -1
- package/es/molecule/questions/qcm-graphic/style.css +64 -13
- package/es/molecule/questions/qcm-graphic/test/qcm-graphic.js +65 -0
- package/es/molecule/questions/qcm-graphic/test/qcm-graphic.js.map +1 -0
- package/es/molecule/setup-section/style.css +1 -0
- package/es/molecule/setup-sections/index.js +7 -33
- package/es/molecule/setup-sections/index.js.map +1 -1
- package/es/molecule/wizard-summary/test/fixtures/organize-courses.js +106 -0
- package/es/molecule/wizard-summary/test/fixtures/organize-courses.js.map +1 -0
- package/es/molecule/wizard-summary/test/fixtures.js +2 -0
- package/es/molecule/wizard-summary/test/fixtures.js.map +1 -1
- package/es/organism/wizard-contents/index.js +6 -0
- package/es/organism/wizard-contents/index.js.map +1 -1
- package/es/organism/wizard-contents/test/fixtures/playlist-organize-courses.js +45 -0
- package/es/organism/wizard-contents/test/fixtures/playlist-organize-courses.js.map +1 -0
- package/es/organism/wizard-contents/test/fixtures.js +2 -0
- package/es/organism/wizard-contents/test/fixtures.js.map +1 -1
- package/es/template/back-office/brand-update/test/fixtures/wizard-organize-courses-playlist.js +22 -0
- package/es/template/back-office/brand-update/test/fixtures/wizard-organize-courses-playlist.js.map +1 -0
- package/es/template/back-office/brand-update/test/fixtures.js +2 -0
- package/es/template/back-office/brand-update/test/fixtures.js.map +1 -1
- package/es/util/get-shadow-box-color-from-primary.js +4 -0
- package/es/util/get-shadow-box-color-from-primary.js.map +1 -0
- package/es/util/test/get-shadow-box-color-from-primary.js +33 -0
- package/es/util/test/get-shadow-box-color-from-primary.js.map +1 -0
- package/es/variables/colors.css +3 -0
- package/lib/molecule/course-section/index.js +5 -3
- package/lib/molecule/course-section/index.js.map +1 -1
- package/lib/molecule/course-section/style.css +2 -1
- package/lib/molecule/course-section/test/fixtures/chapter.js +2 -1
- package/lib/molecule/course-section/test/fixtures/chapter.js.map +1 -1
- package/lib/molecule/course-section/test/fixtures/course.js +2 -1
- package/lib/molecule/course-section/test/fixtures/course.js.map +1 -1
- package/lib/molecule/course-sections/index.js +54 -0
- package/lib/molecule/course-sections/index.js.map +1 -0
- package/lib/molecule/course-sections/style.css +3 -0
- package/lib/molecule/course-sections/test/fixtures/default.js +154 -0
- package/lib/molecule/course-sections/test/fixtures/default.js.map +1 -0
- package/lib/molecule/course-sections/test/fixtures/loading.js +14 -0
- package/lib/molecule/course-sections/test/fixtures/loading.js.map +1 -0
- package/lib/molecule/course-sections/test/fixtures.js +25 -0
- package/lib/molecule/course-sections/test/fixtures.js.map +1 -0
- package/lib/molecule/draggable/index.js +1 -1
- package/lib/molecule/draggable/index.js.map +1 -1
- package/lib/molecule/draggable/style.css +1 -5
- package/lib/molecule/draggable-list/index.js +73 -0
- package/lib/molecule/draggable-list/index.js.map +1 -0
- package/lib/molecule/draggable-list/test/fixtures/course-sections.js +29 -0
- package/lib/molecule/draggable-list/test/fixtures/course-sections.js.map +1 -0
- package/lib/molecule/draggable-list/test/fixtures/dashboard-sections.js +37 -0
- package/lib/molecule/draggable-list/test/fixtures/dashboard-sections.js.map +1 -0
- package/lib/molecule/draggable-list/test/fixtures.js +3 -0
- package/lib/molecule/draggable-list/test/fixtures.js.map +1 -1
- package/lib/molecule/{setup-sections → draggable-list}/test/on-drop.js +19 -19
- package/lib/molecule/draggable-list/test/on-drop.js.map +1 -0
- package/lib/molecule/questions/qcm/index.js +44 -23
- package/lib/molecule/questions/qcm/index.js.map +1 -1
- package/lib/molecule/questions/qcm/style.css +48 -14
- package/lib/molecule/questions/qcm/test/fixtures/default.js +8 -0
- package/lib/molecule/questions/qcm/test/fixtures/default.js.map +1 -1
- package/lib/molecule/questions/qcm/test/qcm.js +115 -0
- package/lib/molecule/questions/qcm/test/qcm.js.map +1 -0
- package/lib/molecule/questions/qcm-graphic/index.js +33 -15
- package/lib/molecule/questions/qcm-graphic/index.js.map +1 -1
- package/lib/molecule/questions/qcm-graphic/style.css +64 -13
- package/lib/molecule/questions/qcm-graphic/test/qcm-graphic.js +76 -0
- package/lib/molecule/questions/qcm-graphic/test/qcm-graphic.js.map +1 -0
- package/lib/molecule/setup-section/style.css +1 -0
- package/lib/molecule/setup-sections/index.js +7 -37
- package/lib/molecule/setup-sections/index.js.map +1 -1
- package/lib/molecule/wizard-summary/test/fixtures/organize-courses.js +111 -0
- package/lib/molecule/wizard-summary/test/fixtures/organize-courses.js.map +1 -0
- package/lib/molecule/wizard-summary/test/fixtures.js +3 -0
- package/lib/molecule/wizard-summary/test/fixtures.js.map +1 -1
- package/lib/organism/wizard-contents/index.js +7 -0
- package/lib/organism/wizard-contents/index.js.map +1 -1
- package/lib/organism/wizard-contents/test/fixtures/playlist-organize-courses.js +54 -0
- package/lib/organism/wizard-contents/test/fixtures/playlist-organize-courses.js.map +1 -0
- package/lib/organism/wizard-contents/test/fixtures.js +3 -0
- package/lib/organism/wizard-contents/test/fixtures.js.map +1 -1
- package/lib/template/back-office/brand-update/test/fixtures/wizard-organize-courses-playlist.js +32 -0
- package/lib/template/back-office/brand-update/test/fixtures/wizard-organize-courses-playlist.js.map +1 -0
- package/lib/template/back-office/brand-update/test/fixtures.js +3 -0
- package/lib/template/back-office/brand-update/test/fixtures.js.map +1 -1
- package/lib/util/get-shadow-box-color-from-primary.js +12 -0
- package/lib/util/get-shadow-box-color-from-primary.js.map +1 -0
- package/lib/util/test/get-shadow-box-color-from-primary.js +40 -0
- package/lib/util/test/get-shadow-box-color-from-primary.js.map +1 -0
- package/lib/variables/colors.css +3 -0
- package/package.json +2 -2
- package/es/molecule/search/test/fixtures.js +0 -15
- package/es/molecule/search/test/fixtures.js.map +0 -1
- package/es/molecule/setup-sections/test/on-drop.js.map +0 -1
- package/lib/molecule/search/test/fixtures.js +0 -25
- package/lib/molecule/search/test/fixtures.js.map +0 -1
- package/lib/molecule/setup-sections/test/on-drop.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/molecule/course-sections/test/fixtures.js"],"names":["t","pass","MoleculeCourseSections","propTypes","value","key","not","undefined","renderComponentMacro","fixtureDefault","fixtureLoading"],"mappings":";;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,kBAAK,iEAAL,EAAwEA,CAAC,IAAI;AAC3EA,EAAAA,CAAC,CAACC,IAAF;AACA,wBAAQC,UAAuBC,SAA/B,EAA0C,CAACC,KAAD,EAAQC,GAAR,KAAgB;AACxDL,IAAAA,CAAC,CAACM,GAAF,CAAMF,KAAN,EAAaG,SAAb,EAAyB,2DAA0DF,GAAI,mEAAvF;AACD,GAFD;AAGD,CALD;AAOA,kBAAK,kEAAL,EAAyEG,wBAAzE,EAA+FN,SAA/F,EAAuHO,gBAAvH;AACA,kBAAK,kEAAL,EAAyED,wBAAzE,EAA+FN,SAA/F,EAAuHQ,gBAAvH","sourcesContent":["import test from 'ava';\nimport forEach from 'lodash/forEach';\nimport renderComponentMacro from '../../../test/helpers/render-component';\nimport MoleculeCourseSections from '..';\nimport fixtureDefault from './fixtures/default';\nimport fixtureLoading from './fixtures/loading';\n\ntest('Molecule › MoleculeCourseSections > should have valid propTypes', t => {\n t.pass();\n forEach(MoleculeCourseSections.propTypes, (value, key) => {\n t.not(value, undefined, `PropType for \"Molecule.MoleculeCourseSections.propTypes.${key}\" may not be undefined. Did you mistype the propTypes definition?`);\n });\n});\n\ntest('Molecule › MoleculeCourseSections › Default › should be rendered', renderComponentMacro, MoleculeCourseSections, fixtureDefault);\ntest('Molecule › MoleculeCourseSections › Loading › should be rendered', renderComponentMacro, MoleculeCourseSections, fixtureLoading);\n"],"file":"fixtures.js"}
|
|
@@ -48,7 +48,7 @@ const Draggable = props => {
|
|
|
48
48
|
onDrop(id);
|
|
49
49
|
}, [id, onDrop]);
|
|
50
50
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
51
|
-
className: (0, _classnames.default)(dragging ? _style.default.dragging : null, _style.default.
|
|
51
|
+
className: (0, _classnames.default)(dragging ? _style.default.dragging : null, _style.default.draggable),
|
|
52
52
|
onDragStart: dragStartHandler,
|
|
53
53
|
onDragOver: dragOverHandler,
|
|
54
54
|
onDragLeave: dragLeaveHandler,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/molecule/draggable/index.js"],"names":["preventDefault","e","stopPropagation","Draggable","props","id","dragging","onDragStart","onDragOver","onDragLeave","onDrop","children","dragStartHandler","dragOverHandler","dragLeaveHandler","dropHandler","style","
|
|
1
|
+
{"version":3,"sources":["../../../src/molecule/draggable/index.js"],"names":["preventDefault","e","stopPropagation","Draggable","props","id","dragging","onDragStart","onDragOver","onDragLeave","onDrop","children","dragStartHandler","dragOverHandler","dragLeaveHandler","dropHandler","style","draggable","propTypes","PropTypes","string","bool","func","element"],"mappings":";;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;AAEA,MAAMA,cAAc,GAAGC,CAAC,IAAIA,CAAC,CAACD,cAAF,EAA5B;;AACA,MAAME,eAAe,GAAGD,CAAC,IAAIA,CAAC,CAACC,eAAF,EAA7B;;AAEA,MAAMC,SAAS,GAAGC,KAAK,IAAI;AACzB,QAAM;AAACC,IAAAA,EAAD;AAAKC,IAAAA,QAAQ,GAAG,KAAhB;AAAuBC,IAAAA,WAAvB;AAAoCC,IAAAA,UAApC;AAAgDC,IAAAA,WAAhD;AAA6DC,IAAAA,MAA7D;AAAqEC,IAAAA;AAArE,MAAiFP,KAAvF;AAEA,QAAMQ,gBAAgB,GAAG,wBACvBX,CAAC,IAAI;AACHC,IAAAA,eAAe,CAACD,CAAD,CAAf;AACAM,IAAAA,WAAW,CAACF,EAAD,CAAX;AACD,GAJsB,EAKvB,CAACA,EAAD,EAAKE,WAAL,CALuB,CAAzB;AAOA,QAAMM,eAAe,GAAG,wBACtBZ,CAAC,IAAI;AACHD,IAAAA,cAAc,CAACC,CAAD,CAAd;AACAO,IAAAA,UAAU,CAACH,EAAD,CAAV;AACD,GAJqB,EAKtB,CAACA,EAAD,EAAKG,UAAL,CALsB,CAAxB;AAOA,QAAMM,gBAAgB,GAAG,wBACvBb,CAAC,IAAI;AACHD,IAAAA,cAAc,CAACC,CAAD,CAAd;AACAQ,IAAAA,WAAW,CAACJ,EAAD,CAAX;AACD,GAJsB,EAKvB,CAACA,EAAD,EAAKI,WAAL,CALuB,CAAzB;AAOA,QAAMM,WAAW,GAAG,wBAClBd,CAAC,IAAI;AACHD,IAAAA,cAAc,CAACC,CAAD,CAAd;AACAS,IAAAA,MAAM,CAACL,EAAD,CAAN;AACD,GAJiB,EAKlB,CAACA,EAAD,EAAKK,MAAL,CALkB,CAApB;AAQA,sBACE;AACE,IAAA,SAAS,EAAE,yBAAWJ,QAAQ,GAAGU,eAAMV,QAAT,GAAoB,IAAvC,EAA6CU,eAAMC,SAAnD,CADb;AAEE,IAAA,WAAW,EAAEL,gBAFf;AAGE,IAAA,UAAU,EAAEC,eAHd;AAIE,IAAA,WAAW,EAAEC,gBAJf;AAKE,IAAA,MAAM,EAAEC,WALV;AAME,IAAA,SAAS;AANX,KAQGJ,QARH,CADF;AAYD,CA5CD;;AA6CAR,SAAS,CAACe,SAAV,2CAAsB;AACpBb,EAAAA,EAAE,EAAEc,mBAAUC,MADM;AAEpBd,EAAAA,QAAQ,EAAEa,mBAAUE,IAFA;AAGpBd,EAAAA,WAAW,EAAEY,mBAAUG,IAHH;AAIpBd,EAAAA,UAAU,EAAEW,mBAAUG,IAJF;AAKpBb,EAAAA,WAAW,EAAEU,mBAAUG,IALH;AAMpBZ,EAAAA,MAAM,EAAES,mBAAUG,IANE;AAOpBX,EAAAA,QAAQ,EAAEQ,mBAAUI;AAPA,CAAtB;eAUepB,S","sourcesContent":["import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport style from './style.css';\n\nconst preventDefault = e => e.preventDefault();\nconst stopPropagation = e => e.stopPropagation();\n\nconst Draggable = props => {\n const {id, dragging = false, onDragStart, onDragOver, onDragLeave, onDrop, children} = props;\n\n const dragStartHandler = useCallback(\n e => {\n stopPropagation(e);\n onDragStart(id);\n },\n [id, onDragStart]\n );\n const dragOverHandler = useCallback(\n e => {\n preventDefault(e);\n onDragOver(id);\n },\n [id, onDragOver]\n );\n const dragLeaveHandler = useCallback(\n e => {\n preventDefault(e);\n onDragLeave(id);\n },\n [id, onDragLeave]\n );\n const dropHandler = useCallback(\n e => {\n preventDefault(e);\n onDrop(id);\n },\n [id, onDrop]\n );\n\n return (\n <div\n className={classnames(dragging ? style.dragging : null, style.draggable)}\n onDragStart={dragStartHandler}\n onDragOver={dragOverHandler}\n onDragLeave={dragLeaveHandler}\n onDrop={dropHandler}\n draggable\n >\n {children}\n </div>\n );\n};\nDraggable.propTypes = {\n id: PropTypes.string,\n dragging: PropTypes.bool,\n onDragStart: PropTypes.func,\n onDragOver: PropTypes.func,\n onDragLeave: PropTypes.func,\n onDrop: PropTypes.func,\n children: PropTypes.element\n};\n\nexport default Draggable;\n"],"file":"index.js"}
|
|
@@ -7,11 +7,6 @@
|
|
|
7
7
|
@value cm_grey_100 from colors;
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
.section {
|
|
11
|
-
display: flex;
|
|
12
|
-
justify-content: center;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
10
|
.draggable {
|
|
16
11
|
cursor: grab;
|
|
17
12
|
position: relative;
|
|
@@ -58,6 +53,7 @@
|
|
|
58
53
|
font-family: 'Open Sans';
|
|
59
54
|
font-weight: 600;
|
|
60
55
|
font-size: 14px;
|
|
56
|
+
border-radius: 7px;
|
|
61
57
|
}
|
|
62
58
|
|
|
63
59
|
@media mobile {
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
7
|
+
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
|
|
10
|
+
var _draggable = _interopRequireDefault(require("../draggable"));
|
|
11
|
+
|
|
12
|
+
var _setupSection = _interopRequireDefault(require("../setup-section"));
|
|
13
|
+
|
|
14
|
+
var _courseSection = _interopRequireDefault(require("../course-section"));
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
19
|
+
|
|
20
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
+
|
|
22
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
23
|
+
|
|
24
|
+
const ITEMS = {
|
|
25
|
+
'setup-section': _setupSection.default,
|
|
26
|
+
'course-section': _courseSection.default
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const DraggableList = ({
|
|
30
|
+
items,
|
|
31
|
+
onDrop,
|
|
32
|
+
itemType
|
|
33
|
+
}) => {
|
|
34
|
+
const [dragTo, setDragTo] = (0, _react.useState)(null);
|
|
35
|
+
const [dragFrom, setDragFrom] = (0, _react.useState)(null);
|
|
36
|
+
const dragStartHandler = (0, _react.useCallback)(id => {
|
|
37
|
+
setDragFrom(id);
|
|
38
|
+
}, [setDragFrom]);
|
|
39
|
+
const dragOverHandler = (0, _react.useCallback)(id => {
|
|
40
|
+
if (dragTo === id) return;
|
|
41
|
+
setDragTo(id);
|
|
42
|
+
}, [dragTo, setDragTo]);
|
|
43
|
+
const dragLeaveHandler = (0, _react.useCallback)(id => {
|
|
44
|
+
setDragTo(null);
|
|
45
|
+
}, [setDragTo]);
|
|
46
|
+
const dropHandler = (0, _react.useCallback)(id => {
|
|
47
|
+
if (onDrop && dragFrom) onDrop(dragFrom, id);
|
|
48
|
+
setDragTo(null);
|
|
49
|
+
setDragFrom(null);
|
|
50
|
+
}, [onDrop, setDragTo, setDragFrom, dragFrom]);
|
|
51
|
+
const Item = ITEMS[itemType];
|
|
52
|
+
const itemsView = items.map(item => /*#__PURE__*/_react.default.createElement(_draggable.default, {
|
|
53
|
+
key: item.id,
|
|
54
|
+
id: item.id,
|
|
55
|
+
dragging: dragTo === item.id,
|
|
56
|
+
onDragStart: dragStartHandler,
|
|
57
|
+
onDragOver: dragOverHandler,
|
|
58
|
+
onDragLeave: dragLeaveHandler,
|
|
59
|
+
onDrop: dropHandler
|
|
60
|
+
}, /*#__PURE__*/_react.default.createElement(Item, _extends({}, item, {
|
|
61
|
+
key: item.id
|
|
62
|
+
}))));
|
|
63
|
+
return /*#__PURE__*/_react.default.createElement("div", null, itemsView);
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
DraggableList.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
67
|
+
items: _propTypes.default.arrayOf(_propTypes.default.shape(_setupSection.default.propTypes)),
|
|
68
|
+
onDrop: _propTypes.default.func,
|
|
69
|
+
itemType: _propTypes.default.string
|
|
70
|
+
} : {};
|
|
71
|
+
var _default = DraggableList;
|
|
72
|
+
exports.default = _default;
|
|
73
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/molecule/draggable-list/index.js"],"names":["ITEMS","SetupSection","CourseSection","DraggableList","items","onDrop","itemType","dragTo","setDragTo","dragFrom","setDragFrom","dragStartHandler","id","dragOverHandler","dragLeaveHandler","dropHandler","Item","itemsView","map","item","propTypes","PropTypes","arrayOf","shape","func","string"],"mappings":";;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,MAAMA,KAAK,GAAG;AAAC,mBAAiBC,qBAAlB;AAAgC,oBAAkBC;AAAlD,CAAd;;AAEA,MAAMC,aAAa,GAAG,CAAC;AAACC,EAAAA,KAAD;AAAQC,EAAAA,MAAR;AAAgBC,EAAAA;AAAhB,CAAD,KAA+B;AACnD,QAAM,CAACC,MAAD,EAASC,SAAT,IAAsB,qBAAS,IAAT,CAA5B;AACA,QAAM,CAACC,QAAD,EAAWC,WAAX,IAA0B,qBAAS,IAAT,CAAhC;AAEA,QAAMC,gBAAgB,GAAG,wBACvBC,EAAE,IAAI;AACJF,IAAAA,WAAW,CAACE,EAAD,CAAX;AACD,GAHsB,EAIvB,CAACF,WAAD,CAJuB,CAAzB;AAOA,QAAMG,eAAe,GAAG,wBACtBD,EAAE,IAAI;AACJ,QAAIL,MAAM,KAAKK,EAAf,EAAmB;AACnBJ,IAAAA,SAAS,CAACI,EAAD,CAAT;AACD,GAJqB,EAKtB,CAACL,MAAD,EAASC,SAAT,CALsB,CAAxB;AAQA,QAAMM,gBAAgB,GAAG,wBACvBF,EAAE,IAAI;AACJJ,IAAAA,SAAS,CAAC,IAAD,CAAT;AACD,GAHsB,EAIvB,CAACA,SAAD,CAJuB,CAAzB;AAOA,QAAMO,WAAW,GAAG,wBAClBH,EAAE,IAAI;AACJ,QAAIP,MAAM,IAAII,QAAd,EAAwBJ,MAAM,CAACI,QAAD,EAAWG,EAAX,CAAN;AAExBJ,IAAAA,SAAS,CAAC,IAAD,CAAT;AACAE,IAAAA,WAAW,CAAC,IAAD,CAAX;AACD,GANiB,EAOlB,CAACL,MAAD,EAASG,SAAT,EAAoBE,WAApB,EAAiCD,QAAjC,CAPkB,CAApB;AAUA,QAAMO,IAAI,GAAGhB,KAAK,CAACM,QAAD,CAAlB;AACA,QAAMW,SAAS,GAAGb,KAAK,CAACc,GAAN,CAAUC,IAAI,iBAC9B,6BAAC,kBAAD;AACE,IAAA,GAAG,EAAEA,IAAI,CAACP,EADZ;AAEE,IAAA,EAAE,EAAEO,IAAI,CAACP,EAFX;AAGE,IAAA,QAAQ,EAAEL,MAAM,KAAKY,IAAI,CAACP,EAH5B;AAIE,IAAA,WAAW,EAAED,gBAJf;AAKE,IAAA,UAAU,EAAEE,eALd;AAME,IAAA,WAAW,EAAEC,gBANf;AAOE,IAAA,MAAM,EAAEC;AAPV,kBASE,6BAAC,IAAD,eAAUI,IAAV;AAAgB,IAAA,GAAG,EAAEA,IAAI,CAACP;AAA1B,KATF,CADgB,CAAlB;AAaA,sBAAO,0CAAMK,SAAN,CAAP;AACD,CAnDD;;AAqDAd,aAAa,CAACiB,SAAd,2CAA0B;AACxBhB,EAAAA,KAAK,EAAEiB,mBAAUC,OAAV,CAAkBD,mBAAUE,KAAV,CAAgBtB,sBAAamB,SAA7B,CAAlB,CADiB;AAExBf,EAAAA,MAAM,EAAEgB,mBAAUG,IAFM;AAGxBlB,EAAAA,QAAQ,EAAEe,mBAAUI;AAHI,CAA1B;eAMetB,a","sourcesContent":["import React, {useState, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport Draggable from '../draggable';\nimport SetupSection from '../setup-section';\nimport CourseSection from '../course-section';\n\nconst ITEMS = {'setup-section': SetupSection, 'course-section': CourseSection};\n\nconst DraggableList = ({items, onDrop, itemType}) => {\n const [dragTo, setDragTo] = useState(null);\n const [dragFrom, setDragFrom] = useState(null);\n\n const dragStartHandler = useCallback(\n id => {\n setDragFrom(id);\n },\n [setDragFrom]\n );\n\n const dragOverHandler = useCallback(\n id => {\n if (dragTo === id) return;\n setDragTo(id);\n },\n [dragTo, setDragTo]\n );\n\n const dragLeaveHandler = useCallback(\n id => {\n setDragTo(null);\n },\n [setDragTo]\n );\n\n const dropHandler = useCallback(\n id => {\n if (onDrop && dragFrom) onDrop(dragFrom, id);\n\n setDragTo(null);\n setDragFrom(null);\n },\n [onDrop, setDragTo, setDragFrom, dragFrom]\n );\n\n const Item = ITEMS[itemType];\n const itemsView = items.map(item => (\n <Draggable\n key={item.id}\n id={item.id}\n dragging={dragTo === item.id}\n onDragStart={dragStartHandler}\n onDragOver={dragOverHandler}\n onDragLeave={dragLeaveHandler}\n onDrop={dropHandler}\n >\n <Item {...item} key={item.id} />\n </Draggable>\n ));\n return <div>{itemsView}</div>;\n};\n\nDraggableList.propTypes = {\n items: PropTypes.arrayOf(PropTypes.shape(SetupSection.propTypes)),\n onDrop: PropTypes.func,\n itemType: PropTypes.string\n};\n\nexport default DraggableList;\n"],"file":"index.js"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
var _default2 = _interopRequireDefault(require("../../../course-sections/test/fixtures/default"));
|
|
7
|
+
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
|
|
10
|
+
const {
|
|
11
|
+
props: {
|
|
12
|
+
sections
|
|
13
|
+
}
|
|
14
|
+
} = _default2.default;
|
|
15
|
+
var _default = {
|
|
16
|
+
props: {
|
|
17
|
+
itemType: 'course-section',
|
|
18
|
+
items: sections,
|
|
19
|
+
onDrop: (dragged, dropped) => {
|
|
20
|
+
console.log('foo');
|
|
21
|
+
console.log({
|
|
22
|
+
dragged,
|
|
23
|
+
dropped
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.default = _default;
|
|
29
|
+
//# sourceMappingURL=course-sections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/molecule/draggable-list/test/fixtures/course-sections.js"],"names":["props","sections","courseSections","itemType","items","onDrop","dragged","dropped","console","log"],"mappings":";;;;;AAAA;;;;AAEA,MAAM;AACJA,EAAAA,KAAK,EAAE;AAACC,IAAAA;AAAD;AADH,IAEFC,iBAFJ;eAIe;AACbF,EAAAA,KAAK,EAAE;AACLG,IAAAA,QAAQ,EAAE,gBADL;AAELC,IAAAA,KAAK,EAAEH,QAFF;AAGLI,IAAAA,MAAM,EAAE,CAACC,OAAD,EAAUC,OAAV,KAAsB;AAC5BC,MAAAA,OAAO,CAACC,GAAR,CAAY,KAAZ;AACAD,MAAAA,OAAO,CAACC,GAAR,CAAY;AAACH,QAAAA,OAAD;AAAUC,QAAAA;AAAV,OAAZ;AACD;AANI;AADM,C","sourcesContent":["import courseSections from '../../../course-sections/test/fixtures/default';\n\nconst {\n props: {sections}\n} = courseSections;\n\nexport default {\n props: {\n itemType: 'course-section',\n items: sections,\n onDrop: (dragged, dropped) => {\n console.log('foo');\n console.log({dragged, dropped});\n }\n }\n};\n"],"file":"course-sections.js"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
var _analyticsBoutique = _interopRequireDefault(require("../../../setup-section/test/fixtures/analytics-boutique"));
|
|
7
|
+
|
|
8
|
+
var _analyticsBranch = _interopRequireDefault(require("../../../setup-section/test/fixtures/analytics-branch"));
|
|
9
|
+
|
|
10
|
+
var _analyticsRegion = _interopRequireDefault(require("../../../setup-section/test/fixtures/analytics-region"));
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
const {
|
|
15
|
+
props: boutique
|
|
16
|
+
} = _analyticsBoutique.default;
|
|
17
|
+
const {
|
|
18
|
+
props: branch
|
|
19
|
+
} = _analyticsBranch.default;
|
|
20
|
+
const {
|
|
21
|
+
props: region
|
|
22
|
+
} = _analyticsRegion.default;
|
|
23
|
+
var _default = {
|
|
24
|
+
props: {
|
|
25
|
+
itemType: 'setup-section',
|
|
26
|
+
items: [boutique, branch, region],
|
|
27
|
+
onDrop: (dragged, dropped) => {
|
|
28
|
+
console.log('foo');
|
|
29
|
+
console.log({
|
|
30
|
+
dragged,
|
|
31
|
+
dropped
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
exports.default = _default;
|
|
37
|
+
//# sourceMappingURL=dashboard-sections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/molecule/draggable-list/test/fixtures/dashboard-sections.js"],"names":["props","boutique","Boutique","branch","Branch","region","Region","itemType","items","onDrop","dragged","dropped","console","log"],"mappings":";;;;;AAAA;;AACA;;AACA;;;;AAEA,MAAM;AAACA,EAAAA,KAAK,EAAEC;AAAR,IAAoBC,0BAA1B;AACA,MAAM;AAACF,EAAAA,KAAK,EAAEG;AAAR,IAAkBC,wBAAxB;AACA,MAAM;AAACJ,EAAAA,KAAK,EAAEK;AAAR,IAAkBC,wBAAxB;eAEe;AACbN,EAAAA,KAAK,EAAE;AACLO,IAAAA,QAAQ,EAAE,eADL;AAELC,IAAAA,KAAK,EAAE,CAACP,QAAD,EAAWE,MAAX,EAAmBE,MAAnB,CAFF;AAGLI,IAAAA,MAAM,EAAE,CAACC,OAAD,EAAUC,OAAV,KAAsB;AAC5BC,MAAAA,OAAO,CAACC,GAAR,CAAY,KAAZ;AACAD,MAAAA,OAAO,CAACC,GAAR,CAAY;AAACH,QAAAA,OAAD;AAAUC,QAAAA;AAAV,OAAZ;AACD;AANI;AADM,C","sourcesContent":["import Boutique from '../../../setup-section/test/fixtures/analytics-boutique';\nimport Branch from '../../../setup-section/test/fixtures/analytics-branch';\nimport Region from '../../../setup-section/test/fixtures/analytics-region';\n\nconst {props: boutique} = Boutique;\nconst {props: branch} = Branch;\nconst {props: region} = Region;\n\nexport default {\n props: {\n itemType: 'setup-section',\n items: [boutique, branch, region],\n onDrop: (dragged, dropped) => {\n console.log('foo');\n console.log({dragged, dropped});\n }\n }\n};\n"],"file":"dashboard-sections.js"}
|
|
@@ -8,6 +8,8 @@ var _renderComponent = _interopRequireDefault(require("../../../test/helpers/ren
|
|
|
8
8
|
|
|
9
9
|
var _ = _interopRequireDefault(require(".."));
|
|
10
10
|
|
|
11
|
+
var _courseSections = _interopRequireDefault(require("./fixtures/course-sections"));
|
|
12
|
+
|
|
11
13
|
var _dashboardSections = _interopRequireDefault(require("./fixtures/dashboard-sections"));
|
|
12
14
|
|
|
13
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -18,5 +20,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
18
20
|
t.not(value, undefined, `PropType for "Molecule.MoleculeDraggableList.propTypes.${key}" may not be undefined. Did you mistype the propTypes definition?`);
|
|
19
21
|
});
|
|
20
22
|
});
|
|
23
|
+
(0, _ava.default)('Molecule › MoleculeDraggableList › CourseSections › should be rendered', _renderComponent.default, _.default, _courseSections.default);
|
|
21
24
|
(0, _ava.default)('Molecule › MoleculeDraggableList › DashboardSections › should be rendered', _renderComponent.default, _.default, _dashboardSections.default);
|
|
22
25
|
//# sourceMappingURL=fixtures.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/molecule/draggable-list/test/fixtures.js"],"names":["t","pass","MoleculeDraggableList","propTypes","value","key","not","undefined","renderComponentMacro","fixtureDashboardSections"],"mappings":";;AAAA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,kBAAK,gEAAL,EAAuEA,CAAC,IAAI;AAC1EA,EAAAA,CAAC,CAACC,IAAF;AACA,wBAAQC,UAAsBC,SAA9B,EAAyC,CAACC,KAAD,EAAQC,GAAR,KAAgB;AACvDL,IAAAA,CAAC,CAACM,GAAF,CAAMF,KAAN,EAAaG,SAAb,EAAyB,0DAAyDF,GAAI,mEAAtF;AACD,GAFD;AAGD,CALD;AAOA,kBAAK,2EAAL,
|
|
1
|
+
{"version":3,"sources":["../../../../src/molecule/draggable-list/test/fixtures.js"],"names":["t","pass","MoleculeDraggableList","propTypes","value","key","not","undefined","renderComponentMacro","fixtureCourseSections","fixtureDashboardSections"],"mappings":";;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,kBAAK,gEAAL,EAAuEA,CAAC,IAAI;AAC1EA,EAAAA,CAAC,CAACC,IAAF;AACA,wBAAQC,UAAsBC,SAA9B,EAAyC,CAACC,KAAD,EAAQC,GAAR,KAAgB;AACvDL,IAAAA,CAAC,CAACM,GAAF,CAAMF,KAAN,EAAaG,SAAb,EAAyB,0DAAyDF,GAAI,mEAAtF;AACD,GAFD;AAGD,CALD;AAOA,kBAAK,wEAAL,EAA+EG,wBAA/E,EAAqGN,SAArG,EAA4HO,uBAA5H;AACA,kBAAK,2EAAL,EAAkFD,wBAAlF,EAAwGN,SAAxG,EAA+HQ,0BAA/H","sourcesContent":["import test from 'ava';\nimport forEach from 'lodash/forEach';\nimport renderComponentMacro from '../../../test/helpers/render-component';\nimport MoleculeDraggableList from '..';\nimport fixtureCourseSections from './fixtures/course-sections';\nimport fixtureDashboardSections from './fixtures/dashboard-sections';\n\ntest('Molecule › MoleculeDraggableList > should have valid propTypes', t => {\n t.pass();\n forEach(MoleculeDraggableList.propTypes, (value, key) => {\n t.not(value, undefined, `PropType for \"Molecule.MoleculeDraggableList.propTypes.${key}\" may not be undefined. Did you mistype the propTypes definition?`);\n });\n});\n\ntest('Molecule › MoleculeDraggableList › CourseSections › should be rendered', renderComponentMacro, MoleculeDraggableList, fixtureCourseSections);\ntest('Molecule › MoleculeDraggableList › DashboardSections › should be rendered', renderComponentMacro, MoleculeDraggableList, fixtureDashboardSections);\n"],"file":"fixtures.js"}
|
|
@@ -18,7 +18,7 @@ var _ = _interopRequireDefault(require(".."));
|
|
|
18
18
|
|
|
19
19
|
var _style = _interopRequireDefault(require("../../draggable/style.css"));
|
|
20
20
|
|
|
21
|
-
var
|
|
21
|
+
var _dashboardSections = _interopRequireDefault(require("./fixtures/dashboard-sections"));
|
|
22
22
|
|
|
23
23
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
24
24
|
|
|
@@ -30,15 +30,15 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
|
|
|
30
30
|
});
|
|
31
31
|
(0, _ava.default)('should trigger onDrop handler', t => {
|
|
32
32
|
t.plan(7);
|
|
33
|
-
const elementToDrag =
|
|
34
|
-
const elementToDrop =
|
|
33
|
+
const elementToDrag = _dashboardSections.default.props.items[0].id;
|
|
34
|
+
const elementToDrop = _dashboardSections.default.props.items[2].id;
|
|
35
35
|
|
|
36
36
|
const dropHandler = (dragged, dropped) => {
|
|
37
37
|
t.is(dropped, elementToDrop);
|
|
38
38
|
t.is(dragged, elementToDrag);
|
|
39
39
|
};
|
|
40
40
|
|
|
41
|
-
const wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react.default.createElement(_.default, _extends({},
|
|
41
|
+
const wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react.default.createElement(_.default, _extends({}, _dashboardSections.default.props, {
|
|
42
42
|
onDrop: dropHandler
|
|
43
43
|
})), {
|
|
44
44
|
wrappingComponent: _renderComponent.wrappingComponent
|
|
@@ -55,12 +55,12 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
|
|
|
55
55
|
const dropEvent = {
|
|
56
56
|
preventDefault: () => t.pass()
|
|
57
57
|
};
|
|
58
|
-
wrapper.find(`.${_style.default.
|
|
59
|
-
wrapper.find(`.${_style.default.
|
|
60
|
-
wrapper.find(`.${_style.default.
|
|
61
|
-
wrapper.find(`.${_style.default.
|
|
62
|
-
wrapper.find(`.${_style.default.
|
|
63
|
-
wrapper.find(`.${_style.default.
|
|
58
|
+
wrapper.find(`.${_style.default.draggable}`).at(0).simulate('dragStart', dragStartEvent);
|
|
59
|
+
wrapper.find(`.${_style.default.draggable}`).at(0).simulate('dragOver', dragOverEvent);
|
|
60
|
+
wrapper.find(`.${_style.default.draggable}`).at(0).simulate('dragOver', dragOverEvent);
|
|
61
|
+
wrapper.find(`.${_style.default.draggable}`).at(0).simulate('dragLeave', dragLeaveEvent);
|
|
62
|
+
wrapper.find(`.${_style.default.draggable}`).at(2).simulate('dragOver', dragOverEvent);
|
|
63
|
+
wrapper.find(`.${_style.default.draggable}`).at(2).simulate('drop', dropEvent);
|
|
64
64
|
});
|
|
65
65
|
(0, _ava.default)('should skip drop event if dragStart is not called', t => {
|
|
66
66
|
t.plan(1);
|
|
@@ -69,7 +69,7 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
|
|
|
69
69
|
t.fail();
|
|
70
70
|
};
|
|
71
71
|
|
|
72
|
-
const wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react.default.createElement(_.default, _extends({},
|
|
72
|
+
const wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react.default.createElement(_.default, _extends({}, _dashboardSections.default.props, {
|
|
73
73
|
onDrop: dropHandler
|
|
74
74
|
})), {
|
|
75
75
|
wrappingComponent: _renderComponent.wrappingComponent
|
|
@@ -77,7 +77,7 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
|
|
|
77
77
|
const dropEvent = {
|
|
78
78
|
preventDefault: () => t.pass()
|
|
79
79
|
};
|
|
80
|
-
wrapper.find(`.${_style.default.
|
|
80
|
+
wrapper.find(`.${_style.default.draggable}`).at(2).simulate('drop', dropEvent);
|
|
81
81
|
});
|
|
82
82
|
(0, _ava.default)('should skip dragStart event if section id is not defined', t => {
|
|
83
83
|
t.plan(0);
|
|
@@ -86,7 +86,7 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
|
|
|
86
86
|
t.fail();
|
|
87
87
|
};
|
|
88
88
|
|
|
89
|
-
const wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react.default.createElement(_.default, _extends({}, (0, _set2.default)('
|
|
89
|
+
const wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react.default.createElement(_.default, _extends({}, (0, _set2.default)('items.0.id', '', _dashboardSections.default.props), {
|
|
90
90
|
onDrop: dropHandler
|
|
91
91
|
})), {
|
|
92
92
|
wrappingComponent: _renderComponent.wrappingComponent
|
|
@@ -103,11 +103,11 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
|
|
|
103
103
|
const dropEvent = {
|
|
104
104
|
preventDefault: () => {}
|
|
105
105
|
};
|
|
106
|
-
wrapper.find(`.${_style.default.
|
|
107
|
-
wrapper.find(`.${_style.default.
|
|
108
|
-
wrapper.find(`.${_style.default.
|
|
109
|
-
wrapper.find(`.${_style.default.
|
|
110
|
-
wrapper.find(`.${_style.default.
|
|
111
|
-
wrapper.find(`.${_style.default.
|
|
106
|
+
wrapper.find(`.${_style.default.draggable}`).at(0).simulate('dragStart', dragStartEvent);
|
|
107
|
+
wrapper.find(`.${_style.default.draggable}`).at(0).simulate('dragOver', dragOverEvent);
|
|
108
|
+
wrapper.find(`.${_style.default.draggable}`).at(0).simulate('dragOver', dragOverEvent);
|
|
109
|
+
wrapper.find(`.${_style.default.draggable}`).at(0).simulate('dragLeave', dragLeaveEvent);
|
|
110
|
+
wrapper.find(`.${_style.default.draggable}`).at(2).simulate('dragOver', dragOverEvent);
|
|
111
|
+
wrapper.find(`.${_style.default.draggable}`).at(2).simulate('drop', dropEvent);
|
|
112
112
|
});
|
|
113
113
|
//# sourceMappingURL=on-drop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/molecule/draggable-list/test/on-drop.js"],"names":["adapter","Adapter","t","plan","elementToDrag","fixtures","props","items","id","elementToDrop","dropHandler","dragged","dropped","is","wrapper","wrappingComponent","dragStartEvent","preventDefault","pass","dragOverEvent","dragLeaveEvent","dropEvent","find","style","draggable","at","simulate","fail"],"mappings":"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","sourcesContent":["import browserEnv from 'browser-env';\nimport test from 'ava';\nimport React from 'react';\nimport {mount, configure} from 'enzyme';\nimport {set} from 'lodash/fp';\nimport Adapter from 'enzyme-adapter-react-16';\nimport {wrappingComponent} from '../../../test/helpers/render-component';\nimport SetupSections from '..';\n// eslint-disable-next-line css-modules/no-unused-class\nimport style from '../../draggable/style.css';\nimport fixtures from './fixtures/dashboard-sections';\n\nbrowserEnv();\nconfigure({adapter: new Adapter()});\n\ntest('should trigger onDrop handler', t => {\n t.plan(7);\n\n const elementToDrag = fixtures.props.items[0].id;\n const elementToDrop = fixtures.props.items[2].id;\n\n const dropHandler = (dragged, dropped) => {\n t.is(dropped, elementToDrop);\n t.is(dragged, elementToDrag);\n };\n\n const wrapper = mount(<SetupSections {...fixtures.props} onDrop={dropHandler} />, {\n wrappingComponent\n });\n\n const dragStartEvent = {preventDefault: () => t.pass()};\n const dragOverEvent = {preventDefault: () => t.pass()};\n const dragLeaveEvent = {preventDefault: () => t.pass()};\n const dropEvent = {preventDefault: () => t.pass()};\n\n wrapper.find(`.${style.draggable}`).at(0).simulate('dragStart', dragStartEvent);\n wrapper.find(`.${style.draggable}`).at(0).simulate('dragOver', dragOverEvent);\n wrapper.find(`.${style.draggable}`).at(0).simulate('dragOver', dragOverEvent);\n wrapper.find(`.${style.draggable}`).at(0).simulate('dragLeave', dragLeaveEvent);\n wrapper.find(`.${style.draggable}`).at(2).simulate('dragOver', dragOverEvent);\n wrapper.find(`.${style.draggable}`).at(2).simulate('drop', dropEvent);\n});\n\ntest('should skip drop event if dragStart is not called', t => {\n t.plan(1);\n\n const dropHandler = (dragged, dropped) => {\n t.fail();\n };\n\n const wrapper = mount(<SetupSections {...fixtures.props} onDrop={dropHandler} />, {\n wrappingComponent\n });\n\n const dropEvent = {preventDefault: () => t.pass()};\n wrapper.find(`.${style.draggable}`).at(2).simulate('drop', dropEvent);\n});\n\ntest('should skip dragStart event if section id is not defined', t => {\n t.plan(0);\n\n const dropHandler = (dragged, dropped) => {\n t.fail();\n };\n\n const wrapper = mount(\n <SetupSections {...set('items.0.id', '', fixtures.props)} onDrop={dropHandler} />,\n {\n wrappingComponent\n }\n );\n\n const dragStartEvent = {preventDefault: () => {}};\n const dragOverEvent = {preventDefault: () => {}};\n const dragLeaveEvent = {preventDefault: () => {}};\n const dropEvent = {preventDefault: () => {}};\n\n wrapper.find(`.${style.draggable}`).at(0).simulate('dragStart', dragStartEvent);\n wrapper.find(`.${style.draggable}`).at(0).simulate('dragOver', dragOverEvent);\n wrapper.find(`.${style.draggable}`).at(0).simulate('dragOver', dragOverEvent);\n wrapper.find(`.${style.draggable}`).at(0).simulate('dragLeave', dragLeaveEvent);\n wrapper.find(`.${style.draggable}`).at(2).simulate('dragOver', dragOverEvent);\n wrapper.find(`.${style.draggable}`).at(2).simulate('drop', dropEvent);\n});\n"],"file":"on-drop.js"}
|
|
@@ -3,59 +3,79 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.default = void 0;
|
|
5
5
|
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
var _getOr2 = _interopRequireDefault(require("lodash/fp/getOr"));
|
|
9
|
-
|
|
10
|
-
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
7
|
|
|
12
8
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
9
|
|
|
14
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
11
|
|
|
12
|
+
var _getOr = _interopRequireDefault(require("lodash/fp/getOr"));
|
|
13
|
+
|
|
14
|
+
var _maxBy = _interopRequireDefault(require("lodash/fp/maxBy"));
|
|
15
|
+
|
|
16
16
|
var _provider = _interopRequireDefault(require("../../../atom/provider"));
|
|
17
17
|
|
|
18
18
|
var _style = require("../../../atom/label/style.css");
|
|
19
19
|
|
|
20
|
+
var _getShadowBoxColorFromPrimary = require("../../../util/get-shadow-box-color-from-primary");
|
|
21
|
+
|
|
20
22
|
var _style2 = _interopRequireDefault(require("./style.css"));
|
|
21
23
|
|
|
22
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
25
|
|
|
26
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
27
|
+
|
|
28
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
29
|
+
|
|
30
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
31
|
+
|
|
24
32
|
const QCM = (props, context) => {
|
|
25
33
|
const {
|
|
26
34
|
answers
|
|
27
35
|
} = props;
|
|
28
|
-
const longestAnswer = (0,
|
|
36
|
+
const longestAnswer = (0, _maxBy.default)(({
|
|
29
37
|
title
|
|
30
38
|
}) => title.length, answers);
|
|
31
|
-
const
|
|
39
|
+
const {
|
|
40
|
+
skin
|
|
41
|
+
} = context;
|
|
42
|
+
const primarySkinColor = (0, _getOr.default)('#00B0FF', 'common.primary', skin);
|
|
43
|
+
const answersViews = (0, _react.useMemo)(() => answers.map((answer, key) => {
|
|
32
44
|
const {
|
|
33
45
|
onClick,
|
|
34
46
|
title,
|
|
35
|
-
selected
|
|
47
|
+
selected,
|
|
48
|
+
'aria-label': ariaLabel
|
|
36
49
|
} = answer;
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
} = context;
|
|
40
|
-
const primarySkinColor = (0, _getOr2.default)('#00B0FF', 'common.primary', skin);
|
|
41
|
-
const selectedStyle = selected ? {
|
|
42
|
-
backgroundColor: primarySkinColor,
|
|
43
|
-
borderColor: primarySkinColor
|
|
44
|
-
} : null;
|
|
45
|
-
const className = (0, _classnames.default)(longestAnswer === answer ? _style2.default.longestAnswer : _style2.default.answer, selected ? _style2.default.selectedAnswer : _style2.default.unselectedAnswer);
|
|
50
|
+
const longAnswerClass = longestAnswer.title === title ? _style2.default.longestAnswer : _style2.default.answer;
|
|
51
|
+
const selectedAnswerClass = selected ? _style2.default.selectedAnswer : _style2.default.unselectedAnswer;
|
|
46
52
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
47
53
|
"data-name": "answer",
|
|
48
|
-
|
|
54
|
+
"aria-label": ariaLabel || title,
|
|
55
|
+
className: (0, _classnames.default)(longAnswerClass, _style.innerHTML, selectedAnswerClass),
|
|
49
56
|
onClick: onClick,
|
|
50
|
-
style:
|
|
57
|
+
style: _extends({}, selected && {
|
|
58
|
+
boxShadow: `0 4px 16px ${(0, _getShadowBoxColorFromPrimary.getShadowBoxColorFromPrimary)(primarySkinColor)}`
|
|
59
|
+
}),
|
|
51
60
|
"data-selected": selected,
|
|
52
|
-
key: key
|
|
61
|
+
key: key
|
|
62
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
63
|
+
"data-name": "answer-background",
|
|
64
|
+
style: {
|
|
65
|
+
backgroundColor: selected ? primarySkinColor : '#F4F4F5'
|
|
66
|
+
/* cm_grey_75 */
|
|
67
|
+
|
|
68
|
+
},
|
|
69
|
+
className: _style2.default.background
|
|
70
|
+
}), /*#__PURE__*/_react.default.createElement("span", {
|
|
71
|
+
"data-name": "answer-label",
|
|
72
|
+
className: _style2.default.answerText // eslint-disable-next-line react/no-danger
|
|
53
73
|
,
|
|
54
74
|
dangerouslySetInnerHTML: {
|
|
55
75
|
__html: title
|
|
56
76
|
}
|
|
57
|
-
});
|
|
58
|
-
});
|
|
77
|
+
}));
|
|
78
|
+
}), [answers, longestAnswer, primarySkinColor]);
|
|
59
79
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
60
80
|
"data-name": "qcm",
|
|
61
81
|
className: _style2.default.wrapper
|
|
@@ -69,7 +89,8 @@ QCM.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
69
89
|
answers: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
70
90
|
title: _propTypes.default.string,
|
|
71
91
|
selected: _propTypes.default.bool,
|
|
72
|
-
onClick: _propTypes.default.func
|
|
92
|
+
onClick: _propTypes.default.func,
|
|
93
|
+
'aria-label': _propTypes.default.string
|
|
73
94
|
}))
|
|
74
95
|
} : {};
|
|
75
96
|
var _default = QCM;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/molecule/questions/qcm/index.js"],"names":["QCM","props","context","answers","longestAnswer","title","length","answersViews","map","answer","key","onClick","selected","
|
|
1
|
+
{"version":3,"sources":["../../../../src/molecule/questions/qcm/index.js"],"names":["QCM","props","context","answers","longestAnswer","title","length","skin","primarySkinColor","answersViews","map","answer","key","onClick","selected","ariaLabel","longAnswerClass","style","selectedAnswerClass","selectedAnswer","unselectedAnswer","innerHTML","boxShadow","backgroundColor","background","answerText","__html","wrapper","contextTypes","Provider","childContextTypes","propTypes","PropTypes","arrayOf","shape","string","bool","func"],"mappings":";;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,MAAMA,GAAG,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;AAC9B,QAAM;AAACC,IAAAA;AAAD,MAAYF,KAAlB;AACA,QAAMG,aAAa,GAAG,oBAAM,CAAC;AAACC,IAAAA;AAAD,GAAD,KAAaA,KAAK,CAACC,MAAzB,EAAiCH,OAAjC,CAAtB;AACA,QAAM;AAACI,IAAAA;AAAD,MAASL,OAAf;AACA,QAAMM,gBAAgB,GAAG,oBAAM,SAAN,EAAiB,gBAAjB,EAAmCD,IAAnC,CAAzB;AAEA,QAAME,YAAY,GAAG,oBACnB,MACEN,OAAO,CAACO,GAAR,CAAY,CAACC,MAAD,EAASC,GAAT,KAAiB;AAC3B,UAAM;AAACC,MAAAA,OAAD;AAAUR,MAAAA,KAAV;AAAiBS,MAAAA,QAAjB;AAA2B,oBAAcC;AAAzC,QAAsDJ,MAA5D;AACA,UAAMK,eAAe,GAAGZ,aAAa,CAACC,KAAd,KAAwBA,KAAxB,GAAgCY,gBAAMb,aAAtC,GAAsDa,gBAAMN,MAApF;AACA,UAAMO,mBAAmB,GAAGJ,QAAQ,GAAGG,gBAAME,cAAT,GAA0BF,gBAAMG,gBAApE;AAEA,wBACE;AACE,mBAAU,QADZ;AAEE,oBAAYL,SAAS,IAAIV,KAF3B;AAGE,MAAA,SAAS,EAAE,yBAAWW,eAAX,EAA4BK,gBAA5B,EAAuCH,mBAAvC,CAHb;AAIE,MAAA,OAAO,EAAEL,OAJX;AAKE,MAAA,KAAK,eACCC,QAAQ,IAAI;AACdQ,QAAAA,SAAS,EAAG,cAAa,gEAA6Bd,gBAA7B,CAA+C;AAD1D,OADb,CALP;AAUE,uBAAeM,QAVjB;AAWE,MAAA,GAAG,EAAEF;AAXP,oBAaE;AACE,mBAAU,mBADZ;AAEE,MAAA,KAAK,EAAE;AAACW,QAAAA,eAAe,EAAET,QAAQ,GAAGN,gBAAH,GAAsB;AAAU;;AAA1D,OAFT;AAGE,MAAA,SAAS,EAAES,gBAAMO;AAHnB,MAbF,eAkBE;AACE,mBAAU,cADZ;AAEE,MAAA,SAAS,EAAEP,gBAAMQ,UAFnB,CAGE;AAHF;AAIE,MAAA,uBAAuB,EAAE;AAACC,QAAAA,MAAM,EAAErB;AAAT;AAJ3B,MAlBF,CADF;AA2BD,GAhCD,CAFiB,EAmCnB,CAACF,OAAD,EAAUC,aAAV,EAAyBI,gBAAzB,CAnCmB,CAArB;AAsCA,sBACE;AAAK,iBAAU,KAAf;AAAqB,IAAA,SAAS,EAAES,gBAAMU;AAAtC,KACGlB,YADH,CADF;AAKD,CAjDD;;AAmDAT,GAAG,CAAC4B,YAAJ,GAAmB;AACjBrB,EAAAA,IAAI,EAAEsB,kBAASC,iBAAT,CAA2BvB;AADhB,CAAnB;AAIAP,GAAG,CAAC+B,SAAJ,2CAAgB;AACd5B,EAAAA,OAAO,EAAE6B,mBAAUC,OAAV,CACPD,mBAAUE,KAAV,CAAgB;AACd7B,IAAAA,KAAK,EAAE2B,mBAAUG,MADH;AAEdrB,IAAAA,QAAQ,EAAEkB,mBAAUI,IAFN;AAGdvB,IAAAA,OAAO,EAAEmB,mBAAUK,IAHL;AAId,kBAAcL,mBAAUG;AAJV,GAAhB,CADO;AADK,CAAhB;eAWenC,G","sourcesContent":["import React, {useMemo} from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport getOr from 'lodash/fp/getOr';\nimport maxBy from 'lodash/fp/maxBy';\nimport Provider from '../../../atom/provider';\nimport {innerHTML} from '../../../atom/label/style.css';\nimport {getShadowBoxColorFromPrimary} from '../../../util/get-shadow-box-color-from-primary';\nimport style from './style.css';\n\nconst QCM = (props, context) => {\n const {answers} = props;\n const longestAnswer = maxBy(({title}) => title.length, answers);\n const {skin} = context;\n const primarySkinColor = getOr('#00B0FF', 'common.primary', skin);\n\n const answersViews = useMemo(\n () =>\n answers.map((answer, key) => {\n const {onClick, title, selected, 'aria-label': ariaLabel} = answer;\n const longAnswerClass = longestAnswer.title === title ? style.longestAnswer : style.answer;\n const selectedAnswerClass = selected ? style.selectedAnswer : style.unselectedAnswer;\n\n return (\n <div\n data-name=\"answer\"\n aria-label={ariaLabel || title}\n className={classnames(longAnswerClass, innerHTML, selectedAnswerClass)}\n onClick={onClick}\n style={{\n ...(selected && {\n boxShadow: `0 4px 16px ${getShadowBoxColorFromPrimary(primarySkinColor)}`\n })\n }}\n data-selected={selected}\n key={key}\n >\n <div\n data-name=\"answer-background\"\n style={{backgroundColor: selected ? primarySkinColor : '#F4F4F5' /* cm_grey_75 */}}\n className={style.background}\n />\n <span\n data-name=\"answer-label\"\n className={style.answerText}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: title}}\n />\n </div>\n );\n }),\n [answers, longestAnswer, primarySkinColor]\n );\n\n return (\n <div data-name=\"qcm\" className={style.wrapper}>\n {answersViews}\n </div>\n );\n};\n\nQCM.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nQCM.propTypes = {\n answers: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string,\n selected: PropTypes.bool,\n onClick: PropTypes.func,\n 'aria-label': PropTypes.string\n })\n )\n};\n\nexport default QCM;\n"],"file":"index.js"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
@value colors: "../../../variables/colors.css";
|
|
4
4
|
@value white from colors;
|
|
5
5
|
@value black from colors;
|
|
6
|
-
@value
|
|
6
|
+
@value box_shadow_light_dark from colors;
|
|
7
|
+
@value cm_blue_900 from colors;
|
|
7
8
|
|
|
8
9
|
.wrapper {
|
|
9
10
|
text-align: center;
|
|
@@ -18,14 +19,15 @@
|
|
|
18
19
|
font-size: 15px;
|
|
19
20
|
font-weight: 600;
|
|
20
21
|
background-color: white;
|
|
21
|
-
border:
|
|
22
|
-
border-radius: 3px;
|
|
22
|
+
border-radius: 8px;
|
|
23
23
|
box-sizing: border-box;
|
|
24
24
|
margin-bottom: 8px;
|
|
25
25
|
cursor: pointer;
|
|
26
26
|
padding: 11px 24px;
|
|
27
27
|
line-height: 24px;
|
|
28
28
|
white-space: normal;
|
|
29
|
+
overflow: hidden;
|
|
30
|
+
transition: all 0.25s linear;
|
|
29
31
|
}
|
|
30
32
|
|
|
31
33
|
.longestAnswer {
|
|
@@ -33,20 +35,56 @@
|
|
|
33
35
|
width: auto;
|
|
34
36
|
}
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
|
|
39
|
+
.background {
|
|
40
|
+
position: absolute;
|
|
41
|
+
width: 100%;
|
|
42
|
+
height: 100%;
|
|
43
|
+
top: 0;
|
|
44
|
+
left: 0;
|
|
45
|
+
transition: opacity 0.25s linear, background-color 0.25s linear;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.answerText {
|
|
49
|
+
position: relative;
|
|
50
|
+
color: cm_blue_900;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.selectedAnswer .answerText {
|
|
54
|
+
color: white;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.selectedAnswer:hover .background{
|
|
58
|
+
opacity: 0.8;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.selectedAnswer.answer:hover {
|
|
62
|
+
background-color: black;
|
|
38
63
|
}
|
|
39
64
|
|
|
40
|
-
.
|
|
41
|
-
|
|
65
|
+
.selectedAnswer .background{
|
|
66
|
+
opacity: 1;
|
|
42
67
|
}
|
|
43
68
|
|
|
69
|
+
.selectedAnswer,
|
|
44
70
|
.unselectedAnswer {
|
|
45
|
-
|
|
71
|
+
position: relative;
|
|
46
72
|
}
|
|
47
73
|
|
|
48
|
-
.
|
|
49
|
-
|
|
74
|
+
.unselectedAnswer {
|
|
75
|
+
box-shadow: 0px 4px 16px box_shadow_light_dark;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.unselectedAnswer .background {
|
|
79
|
+
opacity: 0;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.unselectedAnswer:hover .background{
|
|
83
|
+
opacity: 1;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.answer:last-child {
|
|
87
|
+
margin-bottom: 0;
|
|
50
88
|
}
|
|
51
89
|
|
|
52
90
|
@media mobile {
|
|
@@ -59,10 +97,6 @@
|
|
|
59
97
|
width: 100%;
|
|
60
98
|
}
|
|
61
99
|
|
|
62
|
-
.answer:hover {
|
|
63
|
-
background-color: white;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
100
|
.answer {
|
|
67
101
|
padding: 8px 24px;
|
|
68
102
|
}
|