@pie-element/ebsr 8.10.1-next.9 → 8.11.0

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/CHANGELOG.md CHANGED
@@ -3,6 +3,25 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [8.11.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/ebsr@8.10.0...@pie-element/ebsr@8.11.0) (2023-06-13)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * update libs PD-2722, PD-2827, PD-2832 ([834ecf9](https://github.com/pie-framework/pie-elements/commit/834ecf92cc7204c851c68f0945ad5d52e453c9d0))
12
+ * update pie-libs ([649fb8f](https://github.com/pie-framework/pie-elements/commit/649fb8f535172d76b3ffc676ec53b2726432808c))
13
+ * update pie-libs PD-2150, PD-2795 ([ff6f64a](https://github.com/pie-framework/pie-elements/commit/ff6f64afa6ccaa8a060c986b1637c680e68c62b6))
14
+
15
+
16
+ ### Features
17
+
18
+ * **ebsr:** add hidden heading for screen readers PD-2883 ([a24604a](https://github.com/pie-framework/pie-elements/commit/a24604ae12179d5b7a70e4b96b7c1c896d010051))
19
+ * add mathMlOptions PD-2150 ([0c6984c](https://github.com/pie-framework/pie-elements/commit/0c6984cf042141eac36badfbab1c46d8d42f71ee))
20
+
21
+
22
+
23
+
24
+
6
25
  # [8.10.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/ebsr@8.9.3...@pie-element/ebsr@8.10.0) (2023-05-23)
7
26
 
8
27
 
@@ -3,6 +3,24 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [8.9.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/ebsr-configure@8.8.0...@pie-element/ebsr-configure@8.9.0) (2023-06-13)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * update libs PD-2722, PD-2827, PD-2832 ([834ecf9](https://github.com/pie-framework/pie-elements/commit/834ecf92cc7204c851c68f0945ad5d52e453c9d0))
12
+ * update pie-libs ([649fb8f](https://github.com/pie-framework/pie-elements/commit/649fb8f535172d76b3ffc676ec53b2726432808c))
13
+ * update pie-libs PD-2150, PD-2795 ([ff6f64a](https://github.com/pie-framework/pie-elements/commit/ff6f64afa6ccaa8a060c986b1637c680e68c62b6))
14
+
15
+
16
+ ### Features
17
+
18
+ * add mathMlOptions PD-2150 ([0c6984c](https://github.com/pie-framework/pie-elements/commit/0c6984cf042141eac36badfbab1c46d8d42f71ee))
19
+
20
+
21
+
22
+
23
+
6
24
  # [8.8.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/ebsr-configure@8.7.3...@pie-element/ebsr-configure@8.8.0) (2023-05-23)
7
25
 
8
26
 
@@ -79,6 +79,10 @@ var defaultConfig = {
79
79
  prompt: 300,
80
80
  rationale: 300,
81
81
  choices: 300
82
+ },
83
+ mathMlOptions: {
84
+ mmlOutput: false,
85
+ mmlEditing: false
82
86
  }
83
87
  };
84
88
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/defaults.js"],"names":["defaultConfig","addChoiceButton","settings","label","choiceMode","choicePrefix","deleteChoice","feedback","lockChoiceOrder","prompt","rationale","settingsPanelDisabled","studentInstructions","teacherInstructions","choicesLayout","gridColumns","spellCheck","enabled","maxImageWidth","choices","maxImageHeight","partModel","base","rationaleEnabled","feedbackEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","spellCheckEnabled","model","partLabels","partLabelType","partA","partB","configuration","partialScoring","scoringType"],"mappings":"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","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\n\nconst defaultConfig = {\n addChoiceButton: {\n settings: true,\n label: 'Add a Choice',\n },\n choiceMode: {\n settings: true,\n label: 'Response Type',\n },\n choicePrefix: {\n settings: true,\n label: 'Choice Labels',\n },\n deleteChoice: {\n settings: true,\n },\n feedback: {\n settings: true,\n label: 'Feedback',\n },\n lockChoiceOrder: {\n settings: true,\n label: 'Lock Choice Order',\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n },\n settingsPanelDisabled: true,\n studentInstructions: {\n settings: false,\n label: 'Student Instructions',\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n },\n choicesLayout: {\n settings: false,\n label: 'Choices Layout',\n },\n gridColumns: {\n label: 'Grid columns',\n },\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 636,\n choices: 636,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n choices: 300,\n },\n};\n\nconst partModel = (base) => ({\n choiceMode: 'radio',\n choices: [],\n choicePrefix: 'numbers',\n prompt: 'Prompt',\n rationaleEnabled: true,\n feedbackEnabled: false,\n promptEnabled: true,\n teacherInstructions: '',\n rationale: '',\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n spellCheckEnabled: true,\n choicesLayout: 'vertical',\n gridColumns: '2',\n ...base,\n});\n\nexport default {\n model: {\n partLabels: true,\n partLabelType: 'Letters',\n // partialScoring: false,\n partA: partModel({ prompt: 'Prompt A' }),\n partB: partModel({ prompt: 'Prompt B' }),\n },\n configuration: {\n partialScoring: {\n label: 'Allow Partial Scoring',\n // this will turn off partial scoring toggle in the settings tab by default for the interaction\n // as we'd like partial scoring to be controlled from the environment entirely\n // if any other consumers would like to enable it for themselves, they can do so from their model directly.\n settings: false,\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type',\n },\n partA: cloneDeep(defaultConfig),\n partB: cloneDeep(defaultConfig),\n partLabels: {\n settings: true,\n label: 'Part Labels',\n },\n settingsPanelDisabled: false,\n },\n};\n"],"file":"defaults.js"}
1
+ {"version":3,"sources":["../src/defaults.js"],"names":["defaultConfig","addChoiceButton","settings","label","choiceMode","choicePrefix","deleteChoice","feedback","lockChoiceOrder","prompt","rationale","settingsPanelDisabled","studentInstructions","teacherInstructions","choicesLayout","gridColumns","spellCheck","enabled","maxImageWidth","choices","maxImageHeight","mathMlOptions","mmlOutput","mmlEditing","partModel","base","rationaleEnabled","feedbackEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","spellCheckEnabled","model","partLabels","partLabelType","partA","partB","configuration","partialScoring","scoringType"],"mappings":"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","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\n\nconst defaultConfig = {\n addChoiceButton: {\n settings: true,\n label: 'Add a Choice',\n },\n choiceMode: {\n settings: true,\n label: 'Response Type',\n },\n choicePrefix: {\n settings: true,\n label: 'Choice Labels',\n },\n deleteChoice: {\n settings: true,\n },\n feedback: {\n settings: true,\n label: 'Feedback',\n },\n lockChoiceOrder: {\n settings: true,\n label: 'Lock Choice Order',\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n },\n settingsPanelDisabled: true,\n studentInstructions: {\n settings: false,\n label: 'Student Instructions',\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n },\n choicesLayout: {\n settings: false,\n label: 'Choices Layout',\n },\n gridColumns: {\n label: 'Grid columns',\n },\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 636,\n choices: 636,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n choices: 300,\n },\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n};\n\nconst partModel = (base) => ({\n choiceMode: 'radio',\n choices: [],\n choicePrefix: 'numbers',\n prompt: 'Prompt',\n rationaleEnabled: true,\n feedbackEnabled: false,\n promptEnabled: true,\n teacherInstructions: '',\n rationale: '',\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n spellCheckEnabled: true,\n choicesLayout: 'vertical',\n gridColumns: '2',\n ...base,\n});\n\nexport default {\n model: {\n partLabels: true,\n partLabelType: 'Letters',\n // partialScoring: false,\n partA: partModel({ prompt: 'Prompt A' }),\n partB: partModel({ prompt: 'Prompt B' }),\n },\n configuration: {\n partialScoring: {\n label: 'Allow Partial Scoring',\n // this will turn off partial scoring toggle in the settings tab by default for the interaction\n // as we'd like partial scoring to be controlled from the environment entirely\n // if any other consumers would like to enable it for themselves, they can do so from their model directly.\n settings: false,\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type',\n },\n partA: cloneDeep(defaultConfig),\n partB: cloneDeep(defaultConfig),\n partLabels: {\n settings: true,\n label: 'Part Labels',\n },\n settingsPanelDisabled: false,\n },\n};\n"],"file":"defaults.js"}
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@pie-element/ebsr-configure",
3
3
  "private": true,
4
- "version": "8.8.0",
4
+ "version": "8.9.0",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
8
8
  "author": "",
9
9
  "dependencies": {
10
10
  "@material-ui/core": "^3.9.2",
11
- "@pie-element/multiple-choice": "^7.12.0",
11
+ "@pie-element/multiple-choice": "^7.13.0",
12
12
  "@pie-framework/pie-configure-events": "^1.2.0",
13
- "@pie-lib/config-ui": "^11.6.10",
13
+ "@pie-lib/config-ui": "^11.8.1",
14
14
  "lodash": "^4.17.15",
15
15
  "prop-types": "^15.6.2",
16
16
  "react": "^16.8.1",
@@ -65,6 +65,10 @@ const defaultConfig = {
65
65
  rationale: 300,
66
66
  choices: 300,
67
67
  },
68
+ mathMlOptions: {
69
+ mmlOutput: false,
70
+ mmlEditing: false,
71
+ },
68
72
  };
69
73
 
70
74
  const partModel = (base) => ({
@@ -281,6 +281,22 @@
281
281
  "title": "choices"
282
282
  }
283
283
  }
284
+ },
285
+ "mathMlOptions": {
286
+ "title": "ConfigureMathMLProp",
287
+ "type": "object",
288
+ "properties": {
289
+ "mmlOutput": {
290
+ "description": "Indicates if model should have mathML output instead of latex",
291
+ "type": "number",
292
+ "title": "mmlOutput"
293
+ },
294
+ "mmlEditing": {
295
+ "description": "Indicates if mathML that's already in model should be editable",
296
+ "type": "number",
297
+ "title": "mmlEditing"
298
+ }
299
+ }
284
300
  }
285
301
  }
286
302
  },
@@ -562,6 +578,22 @@
562
578
  "title": "choices"
563
579
  }
564
580
  }
581
+ },
582
+ "mathMlOptions": {
583
+ "title": "ConfigureMathMLProp",
584
+ "type": "object",
585
+ "properties": {
586
+ "mmlOutput": {
587
+ "description": "Indicates if model should have mathML output instead of latex",
588
+ "type": "number",
589
+ "title": "mmlOutput"
590
+ },
591
+ "mmlEditing": {
592
+ "description": "Indicates if mathML that's already in model should be editable",
593
+ "type": "number",
594
+ "title": "mmlEditing"
595
+ }
596
+ }
565
597
  }
566
598
  }
567
599
  },
@@ -964,6 +996,22 @@
964
996
  "title": "choices"
965
997
  }
966
998
  }
999
+ },
1000
+ "mathMlOptions": {
1001
+ "title": "ConfigureMathMLProp",
1002
+ "type": "object",
1003
+ "properties": {
1004
+ "mmlOutput": {
1005
+ "description": "Indicates if model should have mathML output instead of latex",
1006
+ "type": "number",
1007
+ "title": "mmlOutput"
1008
+ },
1009
+ "mmlEditing": {
1010
+ "description": "Indicates if mathML that's already in model should be editable",
1011
+ "type": "number",
1012
+ "title": "mmlEditing"
1013
+ }
1014
+ }
967
1015
  }
968
1016
  }
969
1017
  },
@@ -1008,6 +1056,22 @@
1008
1056
  "title": "choices"
1009
1057
  }
1010
1058
  }
1059
+ },
1060
+ "ConfigureMathMLProp": {
1061
+ "title": "ConfigureMathMLProp",
1062
+ "type": "object",
1063
+ "properties": {
1064
+ "mmlOutput": {
1065
+ "description": "Indicates if model should have mathML output instead of latex",
1066
+ "type": "number",
1067
+ "title": "mmlOutput"
1068
+ },
1069
+ "mmlEditing": {
1070
+ "description": "Indicates if mathML that's already in model should be editable",
1071
+ "type": "number",
1072
+ "title": "mmlEditing"
1073
+ }
1074
+ }
1011
1075
  }
1012
1076
  },
1013
1077
  "$schema": "http://json-schema.org/draft-07/schema#"
@@ -214,6 +214,18 @@ Indicates the max dimension for images in rationale
214
214
 
215
215
  Indicates the max dimension for images in choices
216
216
 
217
+ ## `mathMlOptions` (object)
218
+
219
+ Properties of the `mathMlOptions` object:
220
+
221
+ ### `mmlOutput` (number)
222
+
223
+ Indicates if model should have mathML output instead of latex
224
+
225
+ ### `mmlEditing` (number)
226
+
227
+ Indicates if mathML that's already in model should be editable
228
+
217
229
  # `partB` (object, required)
218
230
 
219
231
  Properties of the `partB` object:
@@ -426,6 +438,18 @@ Indicates the max dimension for images in rationale
426
438
 
427
439
  Indicates the max dimension for images in choices
428
440
 
441
+ ## `mathMlOptions` (object)
442
+
443
+ Properties of the `mathMlOptions` object:
444
+
445
+ ### `mmlOutput` (number)
446
+
447
+ Indicates if model should have mathML output instead of latex
448
+
449
+ ### `mmlEditing` (number)
450
+
451
+ Indicates if mathML that's already in model should be editable
452
+
429
453
  # `partLabels` (object)
430
454
 
431
455
  Properties of the `partLabels` object:
@@ -736,6 +760,18 @@ Indicates the max dimension for images in rationale
736
760
 
737
761
  Indicates the max dimension for images in choices
738
762
 
763
+ ### `mathMlOptions` (object)
764
+
765
+ Properties of the `mathMlOptions` object:
766
+
767
+ #### `mmlOutput` (number)
768
+
769
+ Indicates if model should have mathML output instead of latex
770
+
771
+ #### `mmlEditing` (number)
772
+
773
+ Indicates if mathML that's already in model should be editable
774
+
739
775
  ## `ConfigureProp` (object)
740
776
 
741
777
  Properties of the `ConfigureProp` object:
@@ -766,4 +802,16 @@ Indicates the max dimension for images in rationale
766
802
 
767
803
  ### `choices` (number)
768
804
 
769
- Indicates the max dimension for images in choices
805
+ Indicates the max dimension for images in choices
806
+
807
+ ## `ConfigureMathMLProp` (object)
808
+
809
+ Properties of the `ConfigureMathMLProp` object:
810
+
811
+ ### `mmlOutput` (number)
812
+
813
+ Indicates if model should have mathML output instead of latex
814
+
815
+ ### `mmlEditing` (number)
816
+
817
+ Indicates if mathML that's already in model should be editable
@@ -561,6 +561,22 @@
561
561
  "title": "choices"
562
562
  }
563
563
  }
564
+ },
565
+ "mathMlOptions": {
566
+ "title": "ConfigureMathMLProp",
567
+ "type": "object",
568
+ "properties": {
569
+ "mmlOutput": {
570
+ "description": "Indicates if model should have mathML output instead of latex",
571
+ "type": "number",
572
+ "title": "mmlOutput"
573
+ },
574
+ "mmlEditing": {
575
+ "description": "Indicates if mathML that's already in model should be editable",
576
+ "type": "number",
577
+ "title": "mmlEditing"
578
+ }
579
+ }
564
580
  }
565
581
  }
566
582
  },
@@ -606,6 +622,22 @@
606
622
  }
607
623
  }
608
624
  },
625
+ "ConfigureMathMLProp": {
626
+ "title": "ConfigureMathMLProp",
627
+ "type": "object",
628
+ "properties": {
629
+ "mmlOutput": {
630
+ "description": "Indicates if model should have mathML output instead of latex",
631
+ "type": "number",
632
+ "title": "mmlOutput"
633
+ },
634
+ "mmlEditing": {
635
+ "description": "Indicates if mathML that's already in model should be editable",
636
+ "type": "number",
637
+ "title": "mmlEditing"
638
+ }
639
+ }
640
+ },
609
641
  "Part": {
610
642
  "title": "Part",
611
643
  "type": "object",
@@ -422,6 +422,18 @@ Indicates the max dimension for images in rationale
422
422
 
423
423
  Indicates the max dimension for images in choices
424
424
 
425
+ ### `mathMlOptions` (object)
426
+
427
+ Properties of the `mathMlOptions` object:
428
+
429
+ #### `mmlOutput` (number)
430
+
431
+ Indicates if model should have mathML output instead of latex
432
+
433
+ #### `mmlEditing` (number)
434
+
435
+ Indicates if mathML that's already in model should be editable
436
+
425
437
  ## `ConfigureProp` (object)
426
438
 
427
439
  Properties of the `ConfigureProp` object:
@@ -454,6 +466,18 @@ Indicates the max dimension for images in rationale
454
466
 
455
467
  Indicates the max dimension for images in choices
456
468
 
469
+ ## `ConfigureMathMLProp` (object)
470
+
471
+ Properties of the `ConfigureMathMLProp` object:
472
+
473
+ ### `mmlOutput` (number)
474
+
475
+ Indicates if model should have mathML output instead of latex
476
+
477
+ ### `mmlEditing` (number)
478
+
479
+ Indicates if mathML that's already in model should be editable
480
+
457
481
  ## `Part` (object)
458
482
 
459
483
  Properties of the `Part` object:
package/lib/index.js CHANGED
@@ -194,7 +194,7 @@ var Ebsr = /*#__PURE__*/function (_HTMLElement) {
194
194
  value: function _render() {
195
195
  this.ariaLabel = 'Two-Part Question';
196
196
  this.role = 'region';
197
- this.innerHTML = "\n <".concat(MC_TAG_NAME, " id=\"a\"></").concat(MC_TAG_NAME, ">\n <").concat(MC_TAG_NAME, " id=\"b\"></").concat(MC_TAG_NAME, ">\n "); // when item is re-rendered (due to connectedCallback), if the custom element is already defined,
197
+ this.innerHTML = "\n <style>\n .srOnly {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n left: -10000px;\n top: auto;\n }\n </style>\n <h2 class=\"srOnly\">Two-Part Question</h2>\n <".concat(MC_TAG_NAME, " id=\"a\"></").concat(MC_TAG_NAME, ">\n <").concat(MC_TAG_NAME, " id=\"b\"></").concat(MC_TAG_NAME, ">\n "); // when item is re-rendered (due to connectedCallback), if the custom element is already defined,
198
198
  // we need to set the model and session, otherwise the setters are not reached again
199
199
 
200
200
  if (customElements.get(MC_TAG_NAME)) {
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["SESSION_CHANGED","SessionChangedEvent","TYPE","MC_TAG_NAME","log","EbsrMC","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","length","isSessionComplete","session","b","Ebsr","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","key","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","m","whenDefined","then","setPartModel","partA","partB","s","setPartSession","part","mode","model","keyMode","choicePrefix","value","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","_render","addEventListener","onSessionUpdated","removeEventListener","ariaLabel","role","innerHTML","HTMLElement"],"mappings":"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","sourcesContent":["import { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport get from 'lodash/get';\nimport debug from 'debug';\n\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\nconst log = debug('pie-elements:ebsr');\n\nclass EbsrMC extends MultipleChoice {\n}\n\nconst defineMultipleChoice = () => {\n if (!customElements.get(MC_TAG_NAME)) {\n customElements.define(MC_TAG_NAME, EbsrMC);\n }\n};\n\ndefineMultipleChoice();\n\nconst isNonEmptyArray = (a) => Array.isArray(a) && a.length > 0;\n\nexport const isSessionComplete = (session) => {\n const a = get(session, 'value.partA.value');\n const b = get(session, 'value.partB.value');\n\n return isNonEmptyArray(a) && isNonEmptyArray(b);\n};\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n }\n\n onSessionUpdated = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target.getAttribute('id');\n\n if (id) {\n const key = `part${id.toUpperCase()}`;\n\n if (e.update) {\n this._model[key] = e.update;\n }\n //TODO: accessing a private property here. The session event should contain the update in future to prevent this.\n this.dispatchSessionChanged(e.srcElement._session, key);\n }\n };\n\n set model(m) {\n this._model = m;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\n }\n\n set session(s) {\n this._session = s;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n });\n }\n\n get session() {\n return this._session;\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key] && part) {\n const { mode } = this._model;\n\n part.model = {\n ...this._model[key],\n mode,\n keyMode: this._model[key].choicePrefix,\n };\n }\n }\n\n setPartSession(part, key) {\n if (this._session && this._model && part) {\n const { value } = this._session;\n part.session = value && value[key] ? value[key] : { id: key };\n }\n }\n\n dispatchSessionChanged(partSession, key) {\n this._session.value = {\n ...this._session.value,\n [key]: partSession,\n };\n\n log('[onSessionChanged] session: ', this._session);\n const complete = isSessionComplete(this._session);\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n }\n\n get partA() {\n return this.querySelector(`${MC_TAG_NAME}#a`);\n }\n\n get partB() {\n return this.querySelector(`${MC_TAG_NAME}#b`);\n }\n\n connectedCallback() {\n this._render();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n _render() {\n this.ariaLabel = 'Two-Part Question';\n this.role = 'region';\n this.innerHTML = `\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n `;\n\n // when item is re-rendered (due to connectedCallback), if the custom element is already defined,\n // we need to set the model and session, otherwise the setters are not reached again\n if (customElements.get(MC_TAG_NAME)) {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n }\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["SESSION_CHANGED","SessionChangedEvent","TYPE","MC_TAG_NAME","log","EbsrMC","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","length","isSessionComplete","session","b","Ebsr","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","key","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","m","whenDefined","then","setPartModel","partA","partB","s","setPartSession","part","mode","model","keyMode","choicePrefix","value","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","_render","addEventListener","onSessionUpdated","removeEventListener","ariaLabel","role","innerHTML","HTMLElement"],"mappings":"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","sourcesContent":["import { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport get from 'lodash/get';\nimport debug from 'debug';\n\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\nconst log = debug('pie-elements:ebsr');\n\nclass EbsrMC extends MultipleChoice {}\n\nconst defineMultipleChoice = () => {\n if (!customElements.get(MC_TAG_NAME)) {\n customElements.define(MC_TAG_NAME, EbsrMC);\n }\n};\n\ndefineMultipleChoice();\n\nconst isNonEmptyArray = (a) => Array.isArray(a) && a.length > 0;\n\nexport const isSessionComplete = (session) => {\n const a = get(session, 'value.partA.value');\n const b = get(session, 'value.partB.value');\n\n return isNonEmptyArray(a) && isNonEmptyArray(b);\n};\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n }\n\n onSessionUpdated = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target.getAttribute('id');\n\n if (id) {\n const key = `part${id.toUpperCase()}`;\n\n if (e.update) {\n this._model[key] = e.update;\n }\n //TODO: accessing a private property here. The session event should contain the update in future to prevent this.\n this.dispatchSessionChanged(e.srcElement._session, key);\n }\n };\n\n set model(m) {\n this._model = m;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\n }\n\n set session(s) {\n this._session = s;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n });\n }\n\n get session() {\n return this._session;\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key] && part) {\n const { mode } = this._model;\n\n part.model = {\n ...this._model[key],\n mode,\n keyMode: this._model[key].choicePrefix,\n };\n }\n }\n\n setPartSession(part, key) {\n if (this._session && this._model && part) {\n const { value } = this._session;\n part.session = value && value[key] ? value[key] : { id: key };\n }\n }\n\n dispatchSessionChanged(partSession, key) {\n this._session.value = {\n ...this._session.value,\n [key]: partSession,\n };\n\n log('[onSessionChanged] session: ', this._session);\n const complete = isSessionComplete(this._session);\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n }\n\n get partA() {\n return this.querySelector(`${MC_TAG_NAME}#a`);\n }\n\n get partB() {\n return this.querySelector(`${MC_TAG_NAME}#b`);\n }\n\n connectedCallback() {\n this._render();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n _render() {\n this.ariaLabel = 'Two-Part Question';\n this.role = 'region';\n this.innerHTML = `\n <style>\n .srOnly {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n left: -10000px;\n top: auto;\n }\n </style>\n <h2 class=\"srOnly\">Two-Part Question</h2>\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n `;\n\n // when item is re-rendered (due to connectedCallback), if the custom element is already defined,\n // we need to set the model and session, otherwise the setters are not reached again\n if (customElements.get(MC_TAG_NAME)) {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n }\n }\n}\n"],"file":"index.js"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@pie-element/ebsr",
3
- "version": "8.10.1-next.9+0fa0d8045",
3
+ "version": "8.11.0",
4
4
  "description": "",
5
5
  "repository": "pie-framework/pie-elements",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
9
9
  "dependencies": {
10
- "@pie-element/multiple-choice": "^7.12.1-next.9+0fa0d8045",
10
+ "@pie-element/multiple-choice": "^7.13.0",
11
11
  "@pie-framework/pie-player-events": "^0.1.0",
12
12
  "classnames": "^2.2.5",
13
13
  "debug": "^4.1.1",
@@ -15,7 +15,7 @@
15
15
  },
16
16
  "author": "pie framework developers",
17
17
  "license": "ISC",
18
- "gitHead": "0fa0d8045bc4a52f43c9cf75a296ec81016869e1",
18
+ "gitHead": "731f663c04dc7c43e67fe03c2fb18404fa387e04",
19
19
  "scripts": {
20
20
  "postpublish": "../../scripts/postpublish"
21
21
  },
package/src/index.js CHANGED
@@ -7,8 +7,7 @@ const SESSION_CHANGED = SessionChangedEvent.TYPE;
7
7
  const MC_TAG_NAME = 'ebsr-multiple-choice';
8
8
  const log = debug('pie-elements:ebsr');
9
9
 
10
- class EbsrMC extends MultipleChoice {
11
- }
10
+ class EbsrMC extends MultipleChoice {}
12
11
 
13
12
  const defineMultipleChoice = () => {
14
13
  if (!customElements.get(MC_TAG_NAME)) {
@@ -128,6 +127,19 @@ export default class Ebsr extends HTMLElement {
128
127
  this.ariaLabel = 'Two-Part Question';
129
128
  this.role = 'region';
130
129
  this.innerHTML = `
130
+ <style>
131
+ .srOnly {
132
+ position: absolute;
133
+ width: 1px;
134
+ height: 1px;
135
+ padding: 0;
136
+ margin: -1px;
137
+ overflow: hidden;
138
+ left: -10000px;
139
+ top: auto;
140
+ }
141
+ </style>
142
+ <h2 class="srOnly">Two-Part Question</h2>
131
143
  <${MC_TAG_NAME} id="a"></${MC_TAG_NAME}>
132
144
  <${MC_TAG_NAME} id="b"></${MC_TAG_NAME}>
133
145
  `;