@pie-element/inline-dropdown 4.10.16-next.1 → 4.11.2

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.
Files changed (40) hide show
  1. package/CHANGELOG.md +461 -0
  2. package/LICENSE.md +5 -0
  3. package/configure/CHANGELOG.md +405 -0
  4. package/configure/lib/defaults.js +18 -1
  5. package/configure/lib/defaults.js.map +1 -1
  6. package/configure/lib/index.js +15 -1
  7. package/configure/lib/index.js.map +1 -1
  8. package/configure/lib/inline-dropdown-toolbar.js +54 -47
  9. package/configure/lib/inline-dropdown-toolbar.js.map +1 -1
  10. package/configure/lib/main.js +227 -159
  11. package/configure/lib/main.js.map +1 -1
  12. package/configure/lib/markupUtils.js +1 -1
  13. package/configure/lib/markupUtils.js.map +1 -1
  14. package/configure/lib/utils.js +17 -0
  15. package/configure/lib/utils.js.map +1 -0
  16. package/configure/package.json +5 -5
  17. package/controller/CHANGELOG.md +85 -0
  18. package/controller/lib/defaults.js +1 -1
  19. package/controller/lib/index.js +28 -1
  20. package/controller/lib/index.js.map +1 -1
  21. package/controller/lib/utils.js +1 -1
  22. package/controller/lib/utils.js.map +1 -1
  23. package/controller/package.json +2 -2
  24. package/docs/config-schema.json +94 -0
  25. package/docs/config-schema.json.md +73 -1
  26. package/docs/demo/config.js +2 -2
  27. package/docs/demo/generate.js +19 -20
  28. package/docs/pie-schema.json +27 -0
  29. package/docs/pie-schema.json.md +20 -0
  30. package/lib/index.js +4 -1
  31. package/lib/index.js.map +1 -1
  32. package/lib/inline-dropdown.js +31 -21
  33. package/lib/inline-dropdown.js.map +1 -1
  34. package/package.json +6 -6
  35. package/configure/lib/__tests__/inline-dropdown-toolbar.test.js +0 -124
  36. package/configure/lib/__tests__/main.test.js +0 -516
  37. package/configure/lib/__tests__/markupUtils.test.js +0 -108
  38. package/controller/lib/__tests__/index.test.js +0 -942
  39. package/docs/demo/pie.manifest.json +0 -11
  40. package/lib/__tests__/inline-dropdown.test.js +0 -121
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "4.10.16-next.1",
7
+ "version": "4.11.2",
8
8
  "description": "",
9
9
  "scripts": {
10
10
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -13,10 +13,10 @@
13
13
  "dependencies": {
14
14
  "@material-ui/core": "^3.9.2",
15
15
  "@pie-framework/pie-player-events": "^0.1.0",
16
- "@pie-lib/correct-answer-toggle": "^2.3.35",
17
- "@pie-lib/mask-markup": "^1.12.3",
18
- "@pie-lib/math-rendering": "^2.3.13",
19
- "@pie-lib/render-ui": "^4.12.5",
16
+ "@pie-lib/correct-answer-toggle": "^2.3.67",
17
+ "@pie-lib/mask-markup": "^1.13.17",
18
+ "@pie-lib/math-rendering": "^2.5.13",
19
+ "@pie-lib/render-ui": "^4.14.17",
20
20
  "classnames": "^2.2.5",
21
21
  "lodash": "^4.17.10",
22
22
  "prop-types": "^15.6.1",
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "author": "",
27
27
  "license": "ISC",
28
- "gitHead": "0e14ff981bcdc8a89a0e58484026496701bfdbc3",
28
+ "gitHead": "6e11b6009ac44f9c404de46777dd756d1ef38eed",
29
29
  "main": "lib/index.js",
30
30
  "module": "src/index.js"
31
31
  }
@@ -1,124 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
-
7
- var _enzyme = require("enzyme");
8
-
9
- var _react = _interopRequireDefault(require("react"));
10
-
11
- var _inlineDropdownToolbar = require("../inline-dropdown-toolbar");
12
-
13
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14
-
15
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
16
-
17
- describe('Main', function () {
18
- var onAddChoice = jest.fn();
19
- var onRemoveChoice = jest.fn();
20
- var onSelectChoice = jest.fn();
21
- var onToolbarDone = jest.fn();
22
- var value = {
23
- change: jest.fn().mockReturnValue({
24
- setNodeByKey: jest.fn().mockReturnValue({
25
- moveFocusTo: jest.fn().mockReturnValue({
26
- moveAnchorTo: jest.fn()
27
- })
28
- })
29
- }),
30
- document: {
31
- getNextText: jest.fn().mockReturnValue({
32
- key: '1'
33
- })
34
- }
35
- };
36
-
37
- var wrapper = function wrapper() {
38
- var defaults = {
39
- onAddChoice: onAddChoice,
40
- onRemoveChoice: onRemoveChoice,
41
- onSelectChoice: onSelectChoice,
42
- node: {
43
- key: '1',
44
- data: {
45
- toJSON: jest.fn(),
46
- get: function get(key) {
47
- if (key === 'index') {
48
- return '0';
49
- }
50
-
51
- return 'cow';
52
- }
53
- }
54
- },
55
- value: value,
56
- onToolbarDone: onToolbarDone,
57
- choices: [{
58
- label: 'cow ',
59
- value: '0',
60
- correct: true
61
- }, {
62
- label: 'dog ',
63
- value: '1',
64
- correct: false
65
- }, {
66
- label: 'cat ',
67
- value: '2',
68
- correct: false
69
- }]
70
- };
71
-
72
- var props = _objectSpread({}, defaults);
73
-
74
- return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_inlineDropdownToolbar.RespAreaToolbar, props), {
75
- disableLifecycleMethods: true
76
- });
77
- };
78
-
79
- describe('snapshot', function () {
80
- it('Renders', function () {
81
- expect(wrapper()).toMatchSnapshot();
82
- });
83
- });
84
- describe('logic', function () {
85
- var w;
86
- beforeEach(function () {
87
- w = wrapper();
88
- });
89
- describe('onRespAreaChange', function () {
90
- it('sets state', function () {
91
- w.instance().onRespAreaChange('<div>test</div>');
92
- expect(w.instance().state.respAreaMarkup).toEqual('<div>test</div>');
93
- });
94
- });
95
- describe('onDone', function () {
96
- it('does not call onAddChoice if choice is empty', function () {
97
- w.instance().onDone('<div><p></p></div>');
98
- expect(onAddChoice).not.toBeCalled();
99
- });
100
- it('calls onAddChoice if choice not empty', function () {
101
- w.instance().onDone('<div>test</div>');
102
- expect(onAddChoice).toBeCalledWith('0', '<div>test</div>');
103
- });
104
- });
105
- describe('onSelectChoice', function () {
106
- it('calls onToolbarDone and onSelectChoice', function () {
107
- w.instance().onSelectChoice('cat', '2');
108
- expect(onToolbarDone).toBeCalled();
109
- expect(onSelectChoice).toBeCalledWith('2');
110
- });
111
- });
112
- describe('onRemoveChoice', function () {
113
- it('calls onToolbarChange if removed value is the one selected as correct', function () {
114
- w.instance().onRemoveChoice('cow', '0');
115
- expect(onToolbarDone).toBeCalled();
116
- });
117
- it('calls onRemoveChoice if removed value is not the one selected as correct', function () {
118
- w.instance().onRemoveChoice('cat', '2');
119
- expect(onRemoveChoice).toBeCalledWith('2');
120
- });
121
- });
122
- });
123
- });
124
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vaW5saW5lLWRyb3Bkb3duLXRvb2xiYXIudGVzdC5qc3giXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJvbkFkZENob2ljZSIsImplc3QiLCJmbiIsIm9uUmVtb3ZlQ2hvaWNlIiwib25TZWxlY3RDaG9pY2UiLCJvblRvb2xiYXJEb25lIiwidmFsdWUiLCJjaGFuZ2UiLCJtb2NrUmV0dXJuVmFsdWUiLCJzZXROb2RlQnlLZXkiLCJtb3ZlRm9jdXNUbyIsIm1vdmVBbmNob3JUbyIsImRvY3VtZW50IiwiZ2V0TmV4dFRleHQiLCJrZXkiLCJ3cmFwcGVyIiwiZGVmYXVsdHMiLCJub2RlIiwiZGF0YSIsInRvSlNPTiIsImdldCIsImNob2ljZXMiLCJsYWJlbCIsImNvcnJlY3QiLCJwcm9wcyIsImRpc2FibGVMaWZlY3ljbGVNZXRob2RzIiwiaXQiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJ3IiwiYmVmb3JlRWFjaCIsImluc3RhbmNlIiwib25SZXNwQXJlYUNoYW5nZSIsInN0YXRlIiwicmVzcEFyZWFNYXJrdXAiLCJ0b0VxdWFsIiwib25Eb25lIiwibm90IiwidG9CZUNhbGxlZCIsInRvQmVDYWxsZWRXaXRoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7Ozs7O0FBRUFBLFFBQVEsQ0FBQyxNQUFELEVBQVMsWUFBTTtBQUNyQixNQUFJQyxXQUFXLEdBQUdDLElBQUksQ0FBQ0MsRUFBTCxFQUFsQjtBQUNBLE1BQUlDLGNBQWMsR0FBR0YsSUFBSSxDQUFDQyxFQUFMLEVBQXJCO0FBQ0EsTUFBSUUsY0FBYyxHQUFHSCxJQUFJLENBQUNDLEVBQUwsRUFBckI7QUFDQSxNQUFJRyxhQUFhLEdBQUdKLElBQUksQ0FBQ0MsRUFBTCxFQUFwQjtBQUVBLE1BQU1JLEtBQUssR0FBRztBQUNaQyxJQUFBQSxNQUFNLEVBQUVOLElBQUksQ0FBQ0MsRUFBTCxHQUFVTSxlQUFWLENBQTBCO0FBQ2hDQyxNQUFBQSxZQUFZ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QUNuRkcsUUFBQUEsQ0FBQyxDQUFDRSxRQUFGLEdBQWE1QixjQUFiLENBQTRCLEtBQTVCLEVBQW1DLEdBQW5DO0FBRUF3QixRQUFBQSxNQUFNLENBQUN4QixjQUFELENBQU4sQ0FBdUJvQyxjQUF2QixDQUFzQyxHQUF0QztBQUNELE9BSkMsQ0FBRjtBQUtELEtBWk8sQ0FBUjtBQWFELEdBbkRPLENBQVI7QUFvREQsQ0ExSE8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNoYWxsb3cgfSBmcm9tICdlbnp5bWUnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgUmVzcEFyZWFUb29sYmFyIH0gZnJvbSAnLi4vaW5saW5lLWRyb3Bkb3duLXRvb2xiYXInO1xuXG5kZXNjcmliZSgnTWFpbicsICgpID0+IHtcbiAgbGV0IG9uQWRkQ2hvaWNlID0gamVzdC5mbigpO1xuICBsZXQgb25SZW1vdmVDaG9pY2UgPSBqZXN0LmZuKCk7XG4gIGxldCBvblNlbGVjdENob2ljZSA9IGplc3QuZm4oKTtcbiAgbGV0IG9uVG9vbGJhckRvbmUgPSBqZXN0LmZuKCk7XG5cbiAgY29uc3QgdmFsdWUgPSB7XG4gICAgY2hhbmdlOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHtcbiAgICAgIHNldE5vZGVCeUtleTogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG4gICAgICAgIG1vdmVGb2N1c1RvOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHtcbiAgICAgICAgICBtb3ZlQW5jaG9yVG86IGplc3QuZm4oKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9KSxcbiAgICBkb2N1bWVudDoge1xuICAgICAgZ2V0TmV4dFRleHQ6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe1xuICAgICAgICBrZXk6ICcxJ1xuICAgICAgfSlcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgd3JhcHBlciA9ICgpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIG9uQWRkQ2hvaWNlLFxuICAgICAgb25SZW1vdmVDaG9pY2UsXG4gICAgICBvblNlbGVjdENob2ljZSxcbiAgICAgIG5vZGU6IHtcbiAgICAgICAga2V5OiAnMScsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB0b0pTT046IGplc3QuZm4oKSxcbiAgICAgICAgICBnZXQ6IChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdpbmRleCcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICcwJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuICdjb3cnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHZhbHVlLFxuICAgICAgb25Ub29sYmFyRG9uZSxcbiAgICAgIGNob2ljZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnY293ICcsXG4gICAgICAgICAgdmFsdWU6ICcwJyxcbiAgICAgICAgICBjb3JyZWN0OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ2RvZyAnLFxuICAgICAgICAgIHZhbHVlOiAnMScsXG4gICAgICAgICAgY29ycmVjdDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnY2F0ICcsXG4gICAgICAgICAgdmFsdWU6ICcyJyxcbiAgICAgICAgICBjb3JyZWN0OiBmYWxzZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMgfTtcblxuICAgIHJldHVybiBzaGFsbG93KDxSZXNwQXJlYVRvb2xiYXIgey4uLnByb3BzfSAvPiwgeyBkaXNhYmxlTGlmZWN5Y2xlTWV0aG9kczogdHJ1ZSB9KTtcbiAgfTtcblxuICBkZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gICAgaXQoJ1JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICBleHBlY3Qod3JhcHBlcigpKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2xvZ2ljJywgKCkgPT4ge1xuICAgIGxldCB3O1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcigpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uUmVzcEFyZWFDaGFuZ2UnLCAoKSA9PiB7XG4gICAgICBpdCgnc2V0cyBzdGF0ZScsICgpID0+IHtcbiAgICAgICAgdy5pbnN0YW5jZSgpLm9uUmVzcEFyZWFDaGFuZ2UoJzxkaXY+dGVzdDwvZGl2PicpO1xuXG4gICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuc3RhdGUucmVzcEFyZWFNYXJrdXApLnRvRXF1YWwoJzxkaXY+dGVzdDwvZGl2PicpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25Eb25lJywgKCkgPT4ge1xuICAgICAgaXQoJ2RvZXMgbm90IGNhbGwgb25BZGRDaG9pY2UgaWYgY2hvaWNlIGlzIGVtcHR5JywgKCkgPT4ge1xuICAgICAgICB3Lmluc3RhbmNlKCkub25Eb25lKCc8ZGl2PjxwPjwvcD48L2Rpdj4nKTtcblxuICAgICAgICBleHBlY3Qob25BZGRDaG9pY2UpLm5vdC50b0JlQ2FsbGVkKCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2NhbGxzIG9uQWRkQ2hvaWNlIGlmIGNob2ljZSBub3QgZW1wdHknLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vbkRvbmUoJzxkaXY+dGVzdDwvZGl2PicpO1xuXG4gICAgICAgIGV4cGVjdChvbkFkZENob2ljZSkudG9CZUNhbGxlZFdpdGgoJzAnLCAnPGRpdj50ZXN0PC9kaXY+Jyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvblNlbGVjdENob2ljZScsICAoKSA9PiB7XG4gICAgICBpdCgnY2FsbHMgb25Ub29sYmFyRG9uZSBhbmQgb25TZWxlY3RDaG9pY2UnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblNlbGVjdENob2ljZSgnY2F0JywgJzInKTtcblxuICAgICAgICBleHBlY3Qob25Ub29sYmFyRG9uZSkudG9CZUNhbGxlZCgpO1xuICAgICAgICBleHBlY3Qob25TZWxlY3RDaG9pY2UpLnRvQmVDYWxsZWRXaXRoKCcyJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvblJlbW92ZUNob2ljZScsICgpID0+IHtcbiAgICAgIGl0KCdjYWxscyBvblRvb2xiYXJDaGFuZ2UgaWYgcmVtb3ZlZCB2YWx1ZSBpcyB0aGUgb25lIHNlbGVjdGVkIGFzIGNvcnJlY3QnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblJlbW92ZUNob2ljZSgnY293JywgJzAnKTtcblxuICAgICAgICBleHBlY3Qob25Ub29sYmFyRG9uZSkudG9CZUNhbGxlZCgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdjYWxscyBvblJlbW92ZUNob2ljZSBpZiByZW1vdmVkIHZhbHVlIGlzIG5vdCB0aGUgb25lIHNlbGVjdGVkIGFzIGNvcnJlY3QnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblJlbW92ZUNob2ljZSgnY2F0JywgJzInKTtcblxuICAgICAgICBleHBlY3Qob25SZW1vdmVDaG9pY2UpLnRvQmVDYWxsZWRXaXRoKCcyJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==