@defra/forms-model 3.0.480 → 3.0.482

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 (176) hide show
  1. package/dist/module/form/form-editor/__stubs__/preview.js +83 -4
  2. package/dist/module/form/form-editor/__stubs__/preview.js.map +1 -1
  3. package/dist/module/form/form-editor/index.js +2 -2
  4. package/dist/module/form/form-editor/index.js.map +1 -1
  5. package/dist/module/form/form-editor/macros/types.js +2 -0
  6. package/dist/module/form/form-editor/macros/types.js.map +1 -0
  7. package/dist/module/form/form-editor/preview/autocomplete.js +20 -4
  8. package/dist/module/form/form-editor/preview/autocomplete.js.map +1 -1
  9. package/dist/module/form/form-editor/preview/checkbox-sortable.js +7 -2
  10. package/dist/module/form/form-editor/preview/checkbox-sortable.js.map +1 -1
  11. package/dist/module/form/form-editor/preview/checkbox.js +17 -0
  12. package/dist/module/form/form-editor/preview/checkbox.js.map +1 -0
  13. package/dist/module/form/form-editor/preview/component-elements.js +61 -0
  14. package/dist/module/form/form-editor/preview/component-elements.js.map +1 -0
  15. package/dist/module/form/form-editor/preview/constants.js +2 -0
  16. package/dist/module/form/form-editor/preview/constants.js.map +1 -0
  17. package/dist/module/form/form-editor/preview/content.js +94 -0
  18. package/dist/module/form/form-editor/preview/content.js.map +1 -0
  19. package/dist/module/form/form-editor/preview/controller/page-controller.js +260 -0
  20. package/dist/module/form/form-editor/preview/controller/page-controller.js.map +1 -0
  21. package/dist/module/form/form-editor/preview/date-input.js +7 -2
  22. package/dist/module/form/form-editor/preview/date-input.js.map +1 -1
  23. package/dist/module/form/form-editor/preview/email-address.js +7 -1
  24. package/dist/module/form/form-editor/preview/email-address.js.map +1 -1
  25. package/dist/module/form/form-editor/preview/fieldset-question.js +5 -0
  26. package/dist/module/form/form-editor/preview/fieldset-question.js.map +1 -1
  27. package/dist/module/form/form-editor/preview/helpers.js +81 -0
  28. package/dist/module/form/form-editor/preview/helpers.js.map +1 -0
  29. package/dist/module/form/form-editor/preview/index.js +6 -0
  30. package/dist/module/form/form-editor/preview/index.js.map +1 -1
  31. package/dist/module/form/form-editor/preview/list.js +59 -3
  32. package/dist/module/form/form-editor/preview/list.js.map +1 -1
  33. package/dist/module/form/form-editor/preview/long-answer.js +7 -1
  34. package/dist/module/form/form-editor/preview/long-answer.js.map +1 -1
  35. package/dist/module/form/form-editor/preview/markdown.js +53 -0
  36. package/dist/module/form/form-editor/preview/markdown.js.map +1 -0
  37. package/dist/module/form/form-editor/preview/month-year.js +7 -2
  38. package/dist/module/form/form-editor/preview/month-year.js.map +1 -1
  39. package/dist/module/form/form-editor/preview/number-only.js +5 -0
  40. package/dist/module/form/form-editor/preview/number-only.js.map +1 -1
  41. package/dist/module/form/form-editor/preview/phone-number.js +7 -1
  42. package/dist/module/form/form-editor/preview/phone-number.js.map +1 -1
  43. package/dist/module/form/form-editor/preview/preview.js +212 -0
  44. package/dist/module/form/form-editor/preview/preview.js.map +1 -0
  45. package/dist/module/form/form-editor/preview/question.js +48 -138
  46. package/dist/module/form/form-editor/preview/question.js.map +1 -1
  47. package/dist/module/form/form-editor/preview/radio-sortable.js +7 -2
  48. package/dist/module/form/form-editor/preview/radio-sortable.js.map +1 -1
  49. package/dist/module/form/form-editor/preview/radio.js +7 -2
  50. package/dist/module/form/form-editor/preview/radio.js.map +1 -1
  51. package/dist/module/form/form-editor/preview/select-sortable.js +38 -0
  52. package/dist/module/form/form-editor/preview/select-sortable.js.map +1 -0
  53. package/dist/module/form/form-editor/preview/select.js +11 -0
  54. package/dist/module/form/form-editor/preview/select.js.map +1 -0
  55. package/dist/module/form/form-editor/preview/short-answer.js +7 -1
  56. package/dist/module/form/form-editor/preview/short-answer.js.map +1 -1
  57. package/dist/module/form/form-editor/preview/supporting-evidence.js +7 -1
  58. package/dist/module/form/form-editor/preview/supporting-evidence.js.map +1 -1
  59. package/dist/module/form/form-editor/preview/types.js.map +1 -1
  60. package/dist/module/form/form-editor/preview/uk-address.js +7 -2
  61. package/dist/module/form/form-editor/preview/uk-address.js.map +1 -1
  62. package/dist/module/form/form-editor/preview/yes-no.js +7 -2
  63. package/dist/module/form/form-editor/preview/yes-no.js.map +1 -1
  64. package/dist/module/form/form-editor/types.js.map +1 -1
  65. package/dist/module/form/form-metadata/index.js +1 -5
  66. package/dist/module/form/form-metadata/index.js.map +1 -1
  67. package/dist/module/form/utils/index.js +1 -0
  68. package/dist/module/form/utils/index.js.map +1 -1
  69. package/dist/module/form/utils/list.js +15 -0
  70. package/dist/module/form/utils/list.js.map +1 -0
  71. package/dist/module/index.js.map +1 -1
  72. package/dist/module/stubs.js +1 -0
  73. package/dist/module/stubs.js.map +1 -1
  74. package/dist/types/form/form-editor/__stubs__/preview.d.ts +58 -11
  75. package/dist/types/form/form-editor/__stubs__/preview.d.ts.map +1 -1
  76. package/dist/types/form/form-editor/index.d.ts.map +1 -1
  77. package/dist/types/form/form-editor/macros/types.d.ts +62 -0
  78. package/dist/types/form/form-editor/macros/types.d.ts.map +1 -0
  79. package/dist/types/form/form-editor/preview/autocomplete.d.ts +3 -1
  80. package/dist/types/form/form-editor/preview/autocomplete.d.ts.map +1 -1
  81. package/dist/types/form/form-editor/preview/checkbox-sortable.d.ts.map +1 -1
  82. package/dist/types/form/form-editor/preview/checkbox.d.ts +4 -0
  83. package/dist/types/form/form-editor/preview/checkbox.d.ts.map +1 -0
  84. package/dist/types/form/form-editor/preview/component-elements.d.ts +35 -0
  85. package/dist/types/form/form-editor/preview/component-elements.d.ts.map +1 -0
  86. package/dist/types/form/form-editor/preview/constants.d.ts +2 -0
  87. package/dist/types/form/form-editor/preview/constants.d.ts.map +1 -0
  88. package/dist/types/form/form-editor/preview/content.d.ts +43 -0
  89. package/dist/types/form/form-editor/preview/content.d.ts.map +1 -0
  90. package/dist/types/form/form-editor/preview/controller/page-controller.d.ts +132 -0
  91. package/dist/types/form/form-editor/preview/controller/page-controller.d.ts.map +1 -0
  92. package/dist/types/form/form-editor/preview/date-input.d.ts.map +1 -1
  93. package/dist/types/form/form-editor/preview/email-address.d.ts.map +1 -1
  94. package/dist/types/form/form-editor/preview/fieldset-question.d.ts +2 -0
  95. package/dist/types/form/form-editor/preview/fieldset-question.d.ts.map +1 -1
  96. package/dist/types/form/form-editor/preview/helpers.d.ts +11 -0
  97. package/dist/types/form/form-editor/preview/helpers.d.ts.map +1 -0
  98. package/dist/types/form/form-editor/preview/index.d.ts +6 -0
  99. package/dist/types/form/form-editor/preview/list-sortable.d.ts +1 -1
  100. package/dist/types/form/form-editor/preview/list.d.ts +25 -0
  101. package/dist/types/form/form-editor/preview/list.d.ts.map +1 -1
  102. package/dist/types/form/form-editor/preview/long-answer.d.ts.map +1 -1
  103. package/dist/types/form/form-editor/preview/markdown.d.ts +9 -0
  104. package/dist/types/form/form-editor/preview/markdown.d.ts.map +1 -0
  105. package/dist/types/form/form-editor/preview/month-year.d.ts.map +1 -1
  106. package/dist/types/form/form-editor/preview/number-only.d.ts.map +1 -1
  107. package/dist/types/form/form-editor/preview/phone-number.d.ts.map +1 -1
  108. package/dist/types/form/form-editor/preview/preview.d.ts +126 -0
  109. package/dist/types/form/form-editor/preview/preview.d.ts.map +1 -0
  110. package/dist/types/form/form-editor/preview/question.d.ts +19 -93
  111. package/dist/types/form/form-editor/preview/question.d.ts.map +1 -1
  112. package/dist/types/form/form-editor/preview/radio-sortable.d.ts.map +1 -1
  113. package/dist/types/form/form-editor/preview/radio.d.ts.map +1 -1
  114. package/dist/types/form/form-editor/preview/select-sortable.d.ts +18 -0
  115. package/dist/types/form/form-editor/preview/select-sortable.d.ts.map +1 -0
  116. package/dist/types/form/form-editor/preview/select.d.ts +4 -0
  117. package/dist/types/form/form-editor/preview/select.d.ts.map +1 -0
  118. package/dist/types/form/form-editor/preview/short-answer.d.ts.map +1 -1
  119. package/dist/types/form/form-editor/preview/supporting-evidence.d.ts.map +1 -1
  120. package/dist/types/form/form-editor/preview/types.d.ts +13 -17
  121. package/dist/types/form/form-editor/preview/types.d.ts.map +1 -1
  122. package/dist/types/form/form-editor/preview/uk-address.d.ts.map +1 -1
  123. package/dist/types/form/form-editor/preview/yes-no.d.ts.map +1 -1
  124. package/dist/types/form/form-editor/types.d.ts +6 -4
  125. package/dist/types/form/form-editor/types.d.ts.map +1 -1
  126. package/dist/types/form/form-metadata/index.d.ts.map +1 -1
  127. package/dist/types/form/utils/index.d.ts +1 -0
  128. package/dist/types/form/utils/index.d.ts.map +1 -1
  129. package/dist/types/form/utils/list.d.ts +10 -0
  130. package/dist/types/form/utils/list.d.ts.map +1 -0
  131. package/dist/types/index.d.ts +1 -0
  132. package/dist/types/index.d.ts.map +1 -1
  133. package/dist/types/stubs.d.ts +1 -0
  134. package/dist/types/stubs.d.ts.map +1 -1
  135. package/package.json +1 -1
  136. package/schemas/form-metadata-input-schema.json +1 -2
  137. package/schemas/form-metadata-schema.json +1 -2
  138. package/schemas/question-type-full-schema.json +2 -1
  139. package/src/form/form-editor/__stubs__/preview.js +84 -4
  140. package/src/form/form-editor/index.ts +4 -2
  141. package/src/form/form-editor/macros/types.ts +65 -0
  142. package/src/form/form-editor/preview/autocomplete.js +21 -4
  143. package/src/form/form-editor/preview/checkbox-sortable.js +7 -2
  144. package/src/form/form-editor/preview/checkbox.js +17 -0
  145. package/src/form/form-editor/preview/component-elements.js +61 -0
  146. package/src/form/form-editor/preview/constants.js +1 -0
  147. package/src/form/form-editor/preview/content.js +93 -0
  148. package/src/form/form-editor/preview/controller/page-controller.js +284 -0
  149. package/src/form/form-editor/preview/date-input.js +8 -2
  150. package/src/form/form-editor/preview/email-address.js +7 -1
  151. package/src/form/form-editor/preview/fieldset-question.js +6 -0
  152. package/src/form/form-editor/preview/helpers.js +95 -0
  153. package/src/form/form-editor/preview/index.js +6 -0
  154. package/src/form/form-editor/preview/list.js +62 -3
  155. package/src/form/form-editor/preview/long-answer.js +7 -1
  156. package/src/form/form-editor/preview/markdown.js +50 -0
  157. package/src/form/form-editor/preview/month-year.js +7 -2
  158. package/src/form/form-editor/preview/number-only.js +5 -0
  159. package/src/form/form-editor/preview/phone-number.js +7 -1
  160. package/src/form/form-editor/preview/preview.js +211 -0
  161. package/src/form/form-editor/preview/question.js +47 -142
  162. package/src/form/form-editor/preview/radio-sortable.js +7 -2
  163. package/src/form/form-editor/preview/radio.js +7 -2
  164. package/src/form/form-editor/preview/select-sortable.js +43 -0
  165. package/src/form/form-editor/preview/select.js +11 -0
  166. package/src/form/form-editor/preview/short-answer.js +7 -1
  167. package/src/form/form-editor/preview/supporting-evidence.js +7 -1
  168. package/src/form/form-editor/preview/types.ts +18 -18
  169. package/src/form/form-editor/preview/uk-address.js +7 -2
  170. package/src/form/form-editor/preview/yes-no.js +7 -2
  171. package/src/form/form-editor/types.ts +6 -4
  172. package/src/form/form-metadata/index.ts +2 -5
  173. package/src/form/utils/index.ts +1 -0
  174. package/src/form/utils/list.ts +25 -0
  175. package/src/index.ts +1 -0
  176. package/src/stubs.ts +1 -0
@@ -1,8 +1,10 @@
1
- import { Question } from "./question.js";
1
+ import { ComponentType } from "../../../components/enums.js";
2
+ import { PreviewComponent } from "./preview.js";
3
+ import { Question, QuestionComponentElements } from "./question.js";
2
4
  const DefaultListConst = {
3
5
  TextElementId: 'radioText',
4
6
  HintElementId: 'radioHint',
5
- Template: Question.PATH + 'radios.njk',
7
+ Template: PreviewComponent.PATH + 'radios.njk',
6
8
  Input: 'listInput',
7
9
  RenderName: 'listInputField'
8
10
  };
@@ -24,7 +26,59 @@ export function listsElementToMap(listElements) {
24
26
  const entries = listElements ? listElements.map(listItemMapper) : [];
25
27
  return new Map(entries);
26
28
  }
29
+
30
+ /**
31
+ * @param {Item} item
32
+ * @returns {ListElement}
33
+ */
34
+ export function listItemToListElement(item) {
35
+ return {
36
+ text: item.text,
37
+ label: {
38
+ text: item.text,
39
+ classes: ''
40
+ },
41
+ value: item.value,
42
+ id: item.id ?? '',
43
+ hint: item.hint
44
+ };
45
+ }
46
+
47
+ /**
48
+ * @implements {QuestionElements}
49
+ */
50
+ export class ListComponentElements extends QuestionComponentElements {
51
+ /**
52
+ * @type {List}
53
+ * @protected
54
+ */
55
+ _list;
56
+
57
+ /**
58
+ * @param {SelectionComponentsDef} component
59
+ * @param {List} list
60
+ */
61
+ constructor(component, list) {
62
+ super(component);
63
+ this._list = list;
64
+ }
65
+
66
+ /**
67
+ * @returns {BaseSettings}
68
+ * @protected
69
+ */
70
+ _getValues() {
71
+ return {
72
+ ...super._getValues(),
73
+ items: this._list.items.map(listItemToListElement)
74
+ };
75
+ }
76
+ }
27
77
  export class ListQuestion extends Question {
78
+ /**
79
+ * @type {ComponentType}
80
+ */
81
+ componentType = ComponentType.List;
28
82
  /**
29
83
  * @type {string}
30
84
  * @protected
@@ -187,6 +241,8 @@ export class ListQuestion extends Question {
187
241
 
188
242
  /**
189
243
  * @import { ListElement, ListItemReadonly } from '~/src/form/form-editor/types.js'
190
- * @import { ListElements, QuestionRenderer, DefaultComponent, GovukFieldset } from '~/src/form/form-editor/preview/types.js'
244
+ * @import { SelectionComponentsDef, ListComponentsDef } from '~/src/components/types.js'
245
+ * @import { List, Item } from '~/src/form/form-definition/types.js'
246
+ * @import { ListElements, QuestionRenderer, DefaultComponent, GovukFieldset, BaseSettings, QuestionElements } from '~/src/form/form-editor/preview/types.js'
191
247
  */
192
248
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","names":["Question","DefaultListConst","TextElementId","HintElementId","Template","PATH","Input","RenderName","listItemMapper","listElement","id","listsElementToMap","listElements","entries","map","Map","ListQuestion","_questionTemplate","_listElements","listRenderId","listRenderName","_list","constructor","questionRenderer","items","values","createListFromElements","renderInput","afterInputs","list","length","formGroup","html","afterInputsHTML","name","fieldset","fieldSet","hint","push","set","render","delete","key","iterator","Array","from","listItem","hintText","_highlight","text","classes","getHighlight","undefined","label","updateText","get","updateHint","updateValue","value"],"sources":["../../../../../src/form/form-editor/preview/list.js"],"sourcesContent":["import { Question } from '~/src/form/form-editor/preview/question.js'\n\nconst DefaultListConst = {\n TextElementId: 'radioText',\n HintElementId: 'radioHint',\n Template: Question.PATH + 'radios.njk',\n Input: 'listInput',\n RenderName: 'listInputField'\n}\n\n/**\n * @param {ListElement} listElement\n * @returns {[string, ListElement]}\n */\nexport function listItemMapper(listElement) {\n return [listElement.id, listElement]\n}\n\n/**\n *\n * @param { ListElement[]| undefined } listElements\n * @returns {Map<string, ListElement>}\n */\nexport function listsElementToMap(listElements) {\n const entries = listElements ? listElements.map(listItemMapper) : []\n return new Map(entries)\n}\n\nexport class ListQuestion extends Question {\n /**\n * @type {string}\n * @protected\n */\n _questionTemplate = DefaultListConst.Template\n /** @type {ListElements} */\n _listElements\n listRenderId = DefaultListConst.Input\n listRenderName = DefaultListConst.RenderName\n\n /**\n * @type {Map<string, ListElement>}\n * @protected\n */\n _list\n\n /**\n * @param {ListElements} listElements\n * @param {QuestionRenderer} questionRenderer\n */\n constructor(listElements, questionRenderer) {\n super(listElements, questionRenderer)\n\n const items = /** @type {ListElement[]} */ (listElements.values.items)\n this._list = this.createListFromElements(items)\n this._listElements = listElements\n }\n\n /**\n * @returns {{\n * formGroup?: {afterInputs: {html: string}};\n * hint: DefaultComponent;\n * name: string;\n * fieldset?: GovukFieldset;\n * id: string;\n * items: ListItemReadonly[]\n * }}\n */\n get renderInput() {\n const afterInputs =\n /** @type {{ formGroup?: { afterInputs: { html: string } } }} */ (\n this.list.length\n ? {}\n : {\n formGroup: {\n afterInputs: {\n html: this._listElements.afterInputsHTML\n }\n }\n }\n )\n\n return {\n id: this.listRenderId,\n name: this.listRenderName,\n fieldset: this.fieldSet,\n hint: this.hint,\n items: this.list,\n ...afterInputs\n }\n }\n\n /**\n *\n * @param {ListElement} listElement\n */\n push(listElement) {\n this._list.set(listElement.id, listElement)\n this.render()\n }\n\n /**\n * @param {string} key\n */\n delete(key) {\n this._list.delete(key)\n this.render()\n }\n\n /**\n * @param {ListElement[]} listElements\n * @returns {Map<string, ListElement>}\n */\n createListFromElements(listElements) {\n this._list = listsElementToMap(listElements)\n return this._list\n }\n\n /**\n * @returns {ListItemReadonly[]}\n */\n get list() {\n const iterator = /** @type {MapIterator<ListElement>} */ (\n this._list.values()\n )\n return Array.from(iterator).map((listItem) => {\n const hintText =\n this._highlight === `${listItem.id}-hint` && !listItem.hint?.text.length\n ? 'Hint text'\n : (listItem.hint?.text ?? '')\n\n const hint = {\n hint: hintText\n ? {\n text: hintText,\n classes: this.getHighlight(listItem.id + '-hint')\n }\n : undefined\n }\n\n const text = listItem.text.length ? listItem.text : 'Item text'\n\n return {\n ...listItem,\n text,\n ...hint,\n label: {\n text: listItem.text,\n classes: this.getHighlight(listItem.id + '-label')\n }\n }\n })\n }\n\n /**\n *\n * @param {string | undefined} id\n * @param {string} text\n */\n updateText(id, text) {\n if (!id) {\n return\n }\n\n const listItem = this._list.get(id)\n if (listItem) {\n listItem.text = text\n this.render()\n }\n }\n\n /**\n *\n * @param {string | undefined} id\n * @param {string} hint\n */\n updateHint(id, hint) {\n if (!id) {\n return\n }\n\n const listItem = this._list.get(id)\n if (listItem) {\n listItem.hint = {\n ...listItem.hint,\n text: hint\n }\n this.render()\n }\n }\n\n /**\n * @param {string | undefined} id\n * @param {string} value\n */\n updateValue(id, value) {\n if (!id) {\n return\n }\n\n const listItem = this._list.get(id)\n if (listItem) {\n listItem.value = value\n this.render()\n }\n }\n}\n\n/**\n * @import { ListElement, ListItemReadonly } from '~/src/form/form-editor/types.js'\n * @import { ListElements, QuestionRenderer, DefaultComponent, GovukFieldset } from '~/src/form/form-editor/preview/types.js'\n */\n"],"mappings":"AAAA,SAASA,QAAQ;AAEjB,MAAMC,gBAAgB,GAAG;EACvBC,aAAa,EAAE,WAAW;EAC1BC,aAAa,EAAE,WAAW;EAC1BC,QAAQ,EAAEJ,QAAQ,CAACK,IAAI,GAAG,YAAY;EACtCC,KAAK,EAAE,WAAW;EAClBC,UAAU,EAAE;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAACC,WAAW,EAAE;EAC1C,OAAO,CAACA,WAAW,CAACC,EAAE,EAAED,WAAW,CAAC;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,iBAAiBA,CAACC,YAAY,EAAE;EAC9C,MAAMC,OAAO,GAAGD,YAAY,GAAGA,YAAY,CAACE,GAAG,CAACN,cAAc,CAAC,GAAG,EAAE;EACpE,OAAO,IAAIO,GAAG,CAACF,OAAO,CAAC;AACzB;AAEA,OAAO,MAAMG,YAAY,SAAShB,QAAQ,CAAC;EACzC;AACF;AACA;AACA;EACEiB,iBAAiB,GAAGhB,gBAAgB,CAACG,QAAQ;EAC7C;EACAc,aAAa;EACbC,YAAY,GAAGlB,gBAAgB,CAACK,KAAK;EACrCc,cAAc,GAAGnB,gBAAgB,CAACM,UAAU;;EAE5C;AACF;AACA;AACA;EACEc,KAAK;;EAEL;AACF;AACA;AACA;EACEC,WAAWA,CAACV,YAAY,EAAEW,gBAAgB,EAAE;IAC1C,KAAK,CAACX,YAAY,EAAEW,gBAAgB,CAAC;IAErC,MAAMC,KAAK,GAAG,4BAA8BZ,YAAY,CAACa,MAAM,CAACD,KAAM;IACtE,IAAI,CAACH,KAAK,GAAG,IAAI,CAACK,sBAAsB,CAACF,KAAK,CAAC;IAC/C,IAAI,CAACN,aAAa,GAAGN,YAAY;EACnC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIe,WAAWA,CAAA,EAAG;IAChB,MAAMC,WAAW,GACf;IACE,IAAI,CAACC,IAAI,CAACC,MAAM,GACZ,CAAC,CAAC,GACF;MACEC,SAAS,EAAE;QACTH,WAAW,EAAE;UACXI,IAAI,EAAE,IAAI,CAACd,aAAa,CAACe;QAC3B;MACF;IACF,CACL;IAEH,OAAO;MACLvB,EAAE,EAAE,IAAI,CAACS,YAAY;MACrBe,IAAI,EAAE,IAAI,CAACd,cAAc;MACzBe,QAAQ,EAAE,IAAI,CAACC,QAAQ;MACvBC,IAAI,EAAE,IAAI,CAACA,IAAI;MACfb,KAAK,EAAE,IAAI,CAACK,IAAI;MAChB,GAAGD;IACL,CAAC;EACH;;EAEA;AACF;AACA;AACA;EACEU,IAAIA,CAAC7B,WAAW,EAAE;IAChB,IAAI,CAACY,KAAK,CAACkB,GAAG,CAAC9B,WAAW,CAACC,EAAE,EAAED,WAAW,CAAC;IAC3C,IAAI,CAAC+B,MAAM,CAAC,CAAC;EACf;;EAEA;AACF;AACA;EACEC,MAAMA,CAACC,GAAG,EAAE;IACV,IAAI,CAACrB,KAAK,CAACoB,MAAM,CAACC,GAAG,CAAC;IACtB,IAAI,CAACF,MAAM,CAAC,CAAC;EACf;;EAEA;AACF;AACA;AACA;EACEd,sBAAsBA,CAACd,YAAY,EAAE;IACnC,IAAI,CAACS,KAAK,GAAGV,iBAAiB,CAACC,YAAY,CAAC;IAC5C,OAAO,IAAI,CAACS,KAAK;EACnB;;EAEA;AACF;AACA;EACE,IAAIQ,IAAIA,CAAA,EAAG;IACT,MAAMc,QAAQ,GAAG;IACf,IAAI,CAACtB,KAAK,CAACI,MAAM,CAAC,CACnB;IACD,OAAOmB,KAAK,CAACC,IAAI,CAACF,QAAQ,CAAC,CAAC7B,GAAG,CAAEgC,QAAQ,IAAK;MAC5C,MAAMC,QAAQ,GACZ,IAAI,CAACC,UAAU,KAAK,GAAGF,QAAQ,CAACpC,EAAE,OAAO,IAAI,CAACoC,QAAQ,CAACT,IAAI,EAAEY,IAAI,CAACnB,MAAM,GACpE,WAAW,GACVgB,QAAQ,CAACT,IAAI,EAAEY,IAAI,IAAI,EAAG;MAEjC,MAAMZ,IAAI,GAAG;QACXA,IAAI,EAAEU,QAAQ,GACV;UACEE,IAAI,EAAEF,QAAQ;UACdG,OAAO,EAAE,IAAI,CAACC,YAAY,CAACL,QAAQ,CAACpC,EAAE,GAAG,OAAO;QAClD,CAAC,GACD0C;MACN,CAAC;MAED,MAAMH,IAAI,GAAGH,QAAQ,CAACG,IAAI,CAACnB,MAAM,GAAGgB,QAAQ,CAACG,IAAI,GAAG,WAAW;MAE/D,OAAO;QACL,GAAGH,QAAQ;QACXG,IAAI;QACJ,GAAGZ,IAAI;QACPgB,KAAK,EAAE;UACLJ,IAAI,EAAEH,QAAQ,CAACG,IAAI;UACnBC,OAAO,EAAE,IAAI,CAACC,YAAY,CAACL,QAAQ,CAACpC,EAAE,GAAG,QAAQ;QACnD;MACF,CAAC;IACH,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;EACE4C,UAAUA,CAAC5C,EAAE,EAAEuC,IAAI,EAAE;IACnB,IAAI,CAACvC,EAAE,EAAE;MACP;IACF;IAEA,MAAMoC,QAAQ,GAAG,IAAI,CAACzB,KAAK,CAACkC,GAAG,CAAC7C,EAAE,CAAC;IACnC,IAAIoC,QAAQ,EAAE;MACZA,QAAQ,CAACG,IAAI,GAAGA,IAAI;MACpB,IAAI,CAACT,MAAM,CAAC,CAAC;IACf;EACF;;EAEA;AACF;AACA;AACA;AACA;EACEgB,UAAUA,CAAC9C,EAAE,EAAE2B,IAAI,EAAE;IACnB,IAAI,CAAC3B,EAAE,EAAE;MACP;IACF;IAEA,MAAMoC,QAAQ,GAAG,IAAI,CAACzB,KAAK,CAACkC,GAAG,CAAC7C,EAAE,CAAC;IACnC,IAAIoC,QAAQ,EAAE;MACZA,QAAQ,CAACT,IAAI,GAAG;QACd,GAAGS,QAAQ,CAACT,IAAI;QAChBY,IAAI,EAAEZ;MACR,CAAC;MACD,IAAI,CAACG,MAAM,CAAC,CAAC;IACf;EACF;;EAEA;AACF;AACA;AACA;EACEiB,WAAWA,CAAC/C,EAAE,EAAEgD,KAAK,EAAE;IACrB,IAAI,CAAChD,EAAE,EAAE;MACP;IACF;IAEA,MAAMoC,QAAQ,GAAG,IAAI,CAACzB,KAAK,CAACkC,GAAG,CAAC7C,EAAE,CAAC;IACnC,IAAIoC,QAAQ,EAAE;MACZA,QAAQ,CAACY,KAAK,GAAGA,KAAK;MACtB,IAAI,CAAClB,MAAM,CAAC,CAAC;IACf;EACF;AACF;;AAEA;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"file":"list.js","names":["ComponentType","PreviewComponent","Question","QuestionComponentElements","DefaultListConst","TextElementId","HintElementId","Template","PATH","Input","RenderName","listItemMapper","listElement","id","listsElementToMap","listElements","entries","map","Map","listItemToListElement","item","text","label","classes","value","hint","ListComponentElements","_list","constructor","component","list","_getValues","items","ListQuestion","componentType","List","_questionTemplate","_listElements","listRenderId","listRenderName","questionRenderer","values","createListFromElements","renderInput","afterInputs","length","formGroup","html","afterInputsHTML","name","fieldset","fieldSet","push","set","render","delete","key","iterator","Array","from","listItem","hintText","_highlight","getHighlight","undefined","updateText","get","updateHint","updateValue"],"sources":["../../../../../src/form/form-editor/preview/list.js"],"sourcesContent":["import { ComponentType } from '~/src/components/enums.js'\nimport { PreviewComponent } from '~/src/form/form-editor/preview/preview.js'\nimport {\n Question,\n QuestionComponentElements\n} from '~/src/form/form-editor/preview/question.js'\n\nconst DefaultListConst = {\n TextElementId: 'radioText',\n HintElementId: 'radioHint',\n Template: PreviewComponent.PATH + 'radios.njk',\n Input: 'listInput',\n RenderName: 'listInputField'\n}\n\n/**\n * @param {ListElement} listElement\n * @returns {[string, ListElement]}\n */\nexport function listItemMapper(listElement) {\n return [listElement.id, listElement]\n}\n\n/**\n *\n * @param { ListElement[]| undefined } listElements\n * @returns {Map<string, ListElement>}\n */\nexport function listsElementToMap(listElements) {\n const entries = listElements ? listElements.map(listItemMapper) : []\n return new Map(entries)\n}\n\n/**\n * @param {Item} item\n * @returns {ListElement}\n */\nexport function listItemToListElement(item) {\n return {\n text: item.text,\n label: {\n text: item.text,\n classes: ''\n },\n value: item.value,\n id: item.id ?? '',\n hint: item.hint\n }\n}\n\n/**\n * @implements {QuestionElements}\n */\nexport class ListComponentElements extends QuestionComponentElements {\n /**\n * @type {List}\n * @protected\n */\n _list\n\n /**\n * @param {SelectionComponentsDef} component\n * @param {List} list\n */\n constructor(component, list) {\n super(component)\n this._list = list\n }\n\n /**\n * @returns {BaseSettings}\n * @protected\n */\n _getValues() {\n return {\n ...super._getValues(),\n items: this._list.items.map(listItemToListElement)\n }\n }\n}\n\nexport class ListQuestion extends Question {\n /**\n * @type {ComponentType}\n */\n componentType = ComponentType.List\n /**\n * @type {string}\n * @protected\n */\n _questionTemplate = DefaultListConst.Template\n /** @type {ListElements} */\n _listElements\n listRenderId = DefaultListConst.Input\n listRenderName = DefaultListConst.RenderName\n\n /**\n * @type {Map<string, ListElement>}\n * @protected\n */\n _list\n\n /**\n * @param {ListElements} listElements\n * @param {QuestionRenderer} questionRenderer\n */\n constructor(listElements, questionRenderer) {\n super(listElements, questionRenderer)\n\n const items = /** @type {ListElement[]} */ (listElements.values.items)\n this._list = this.createListFromElements(items)\n this._listElements = listElements\n }\n\n /**\n * @returns {{\n * formGroup?: {afterInputs: {html: string}};\n * hint: DefaultComponent;\n * name: string;\n * fieldset?: GovukFieldset;\n * id: string;\n * items: ListItemReadonly[]\n * }}\n */\n get renderInput() {\n const afterInputs =\n /** @type {{ formGroup?: { afterInputs: { html: string } } }} */ (\n this.list.length\n ? {}\n : {\n formGroup: {\n afterInputs: {\n html: this._listElements.afterInputsHTML\n }\n }\n }\n )\n\n return {\n id: this.listRenderId,\n name: this.listRenderName,\n fieldset: this.fieldSet,\n hint: this.hint,\n items: this.list,\n ...afterInputs\n }\n }\n\n /**\n *\n * @param {ListElement} listElement\n */\n push(listElement) {\n this._list.set(listElement.id, listElement)\n this.render()\n }\n\n /**\n * @param {string} key\n */\n delete(key) {\n this._list.delete(key)\n this.render()\n }\n\n /**\n * @param {ListElement[]} listElements\n * @returns {Map<string, ListElement>}\n */\n createListFromElements(listElements) {\n this._list = listsElementToMap(listElements)\n return this._list\n }\n\n /**\n * @returns {ListItemReadonly[]}\n */\n get list() {\n const iterator = /** @type {MapIterator<ListElement>} */ (\n this._list.values()\n )\n return Array.from(iterator).map((listItem) => {\n const hintText =\n this._highlight === `${listItem.id}-hint` && !listItem.hint?.text.length\n ? 'Hint text'\n : (listItem.hint?.text ?? '')\n\n const hint = {\n hint: hintText\n ? {\n text: hintText,\n classes: this.getHighlight(listItem.id + '-hint')\n }\n : undefined\n }\n\n const text = listItem.text.length ? listItem.text : 'Item text'\n\n return {\n ...listItem,\n text,\n ...hint,\n label: {\n text: listItem.text,\n classes: this.getHighlight(listItem.id + '-label')\n }\n }\n })\n }\n\n /**\n *\n * @param {string | undefined} id\n * @param {string} text\n */\n updateText(id, text) {\n if (!id) {\n return\n }\n\n const listItem = this._list.get(id)\n if (listItem) {\n listItem.text = text\n this.render()\n }\n }\n\n /**\n *\n * @param {string | undefined} id\n * @param {string} hint\n */\n updateHint(id, hint) {\n if (!id) {\n return\n }\n\n const listItem = this._list.get(id)\n if (listItem) {\n listItem.hint = {\n ...listItem.hint,\n text: hint\n }\n this.render()\n }\n }\n\n /**\n * @param {string | undefined} id\n * @param {string} value\n */\n updateValue(id, value) {\n if (!id) {\n return\n }\n\n const listItem = this._list.get(id)\n if (listItem) {\n listItem.value = value\n this.render()\n }\n }\n}\n\n/**\n * @import { ListElement, ListItemReadonly } from '~/src/form/form-editor/types.js'\n * @import { SelectionComponentsDef, ListComponentsDef } from '~/src/components/types.js'\n * @import { List, Item } from '~/src/form/form-definition/types.js'\n * @import { ListElements, QuestionRenderer, DefaultComponent, GovukFieldset, BaseSettings, QuestionElements } from '~/src/form/form-editor/preview/types.js'\n */\n"],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,16 @@
1
+ import { ComponentType } from "../../../components/enums.js";
2
+ import { PreviewComponent } from "./preview.js";
1
3
  import { Question } from "./question.js";
2
4
  export class LongAnswerQuestion extends Question {
5
+ /**
6
+ * @type {ComponentType}
7
+ */
8
+ componentType = ComponentType.MultilineTextField;
3
9
  /**
4
10
  * @type {string}
5
11
  * @protected
6
12
  */
7
- _questionTemplate = Question.PATH + 'textarea.njk';
13
+ _questionTemplate = PreviewComponent.PATH + 'textarea.njk';
8
14
  /**
9
15
  * @type {string}
10
16
  * @protected
@@ -1 +1 @@
1
- {"version":3,"file":"long-answer.js","names":["Question","LongAnswerQuestion","_questionTemplate","PATH","_fieldName"],"sources":["../../../../../src/form/form-editor/preview/long-answer.js"],"sourcesContent":["import { Question } from '~/src/form/form-editor/preview/question.js'\n\nexport class LongAnswerQuestion extends Question {\n /**\n * @type {string}\n * @protected\n */\n _questionTemplate = Question.PATH + 'textarea.njk'\n /**\n * @type {string}\n * @protected\n */\n _fieldName = 'longAnswerField'\n}\n"],"mappings":"AAAA,SAASA,QAAQ;AAEjB,OAAO,MAAMC,kBAAkB,SAASD,QAAQ,CAAC;EAC/C;AACF;AACA;AACA;EACEE,iBAAiB,GAAGF,QAAQ,CAACG,IAAI,GAAG,cAAc;EAClD;AACF;AACA;AACA;EACEC,UAAU,GAAG,iBAAiB;AAChC","ignoreList":[]}
1
+ {"version":3,"file":"long-answer.js","names":["ComponentType","PreviewComponent","Question","LongAnswerQuestion","componentType","MultilineTextField","_questionTemplate","PATH","_fieldName"],"sources":["../../../../../src/form/form-editor/preview/long-answer.js"],"sourcesContent":["import { ComponentType } from '~/src/components/enums.js'\nimport { PreviewComponent } from '~/src/form/form-editor/preview/preview.js'\nimport { Question } from '~/src/form/form-editor/preview/question.js'\n\nexport class LongAnswerQuestion extends Question {\n /**\n * @type {ComponentType}\n */\n componentType = ComponentType.MultilineTextField\n /**\n * @type {string}\n * @protected\n */\n _questionTemplate = PreviewComponent.PATH + 'textarea.njk'\n /**\n * @type {string}\n * @protected\n */\n _fieldName = 'longAnswerField'\n}\n"],"mappings":"AAAA,SAASA,aAAa;AACtB,SAASC,gBAAgB;AACzB,SAASC,QAAQ;AAEjB,OAAO,MAAMC,kBAAkB,SAASD,QAAQ,CAAC;EAC/C;AACF;AACA;EACEE,aAAa,GAAGJ,aAAa,CAACK,kBAAkB;EAChD;AACF;AACA;AACA;EACEC,iBAAiB,GAAGL,gBAAgB,CAACM,IAAI,GAAG,cAAc;EAC1D;AACF;AACA;AACA;EACEC,UAAU,GAAG,iBAAiB;AAChC","ignoreList":[]}
@@ -0,0 +1,53 @@
1
+ import { ComponentType } from "../../../components/enums.js";
2
+ import { Content } from "./content.js";
3
+ import { PreviewComponent } from "./preview.js";
4
+ import { markdownToHtml } from "../../../utils/markdown.js";
5
+
6
+ /**
7
+ * @class Markdown
8
+ * @classdesc
9
+ * Base of Content preview classes
10
+ */
11
+ export class Markdown extends Content {
12
+ /**
13
+ * @type {string}
14
+ * @protected
15
+ */
16
+ _fieldName = 'markdown';
17
+ /**
18
+ * @type {ComponentType}
19
+ */
20
+ componentType = ComponentType.Markdown;
21
+
22
+ /**
23
+ * @type {string}
24
+ * @protected
25
+ */
26
+ _questionTemplate = PreviewComponent.PATH + 'markdown.njk';
27
+ /**
28
+ * @param {QuestionElements} htmlElements
29
+ * @param {QuestionRenderer} questionRenderer
30
+ */
31
+ constructor(htmlElements, questionRenderer) {
32
+ super(htmlElements, questionRenderer);
33
+ const {
34
+ content
35
+ } = htmlElements.values;
36
+ this._content = markdownToHtml(content);
37
+ }
38
+
39
+ /**
40
+ * @param {string} value
41
+ * @protected
42
+ */
43
+ _setContent(value) {
44
+ super._setContent(markdownToHtml(value));
45
+ }
46
+ }
47
+
48
+ /**
49
+ * @import { ListenerRow, BaseSettings, QuestionElements, QuestionBaseModel, GovukFieldset, DefaultComponent, QuestionRenderer } from '~/src/form/form-editor/preview/types.js'
50
+ * @import { FormComponentsDef, ContentComponentsDef, ComponentDef } from '~/src/components/types.js'
51
+ * @import { ListElement, ListItemReadonly } from '~/src/form/form-editor/types.js'
52
+ */
53
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","names":["ComponentType","Content","PreviewComponent","markdownToHtml","Markdown","_fieldName","componentType","_questionTemplate","PATH","constructor","htmlElements","questionRenderer","content","values","_content","_setContent","value"],"sources":["../../../../../src/form/form-editor/preview/markdown.js"],"sourcesContent":["import { ComponentType } from '~/src/components/enums.js'\nimport { Content } from '~/src/form/form-editor/preview/content.js'\nimport { PreviewComponent } from '~/src/form/form-editor/preview/preview.js'\nimport { markdownToHtml } from '~/src/utils/markdown.js'\n\n/**\n * @class Markdown\n * @classdesc\n * Base of Content preview classes\n */\nexport class Markdown extends Content {\n /**\n * @type {string}\n * @protected\n */\n _fieldName = 'markdown'\n /**\n * @type {ComponentType}\n */\n componentType = ComponentType.Markdown\n\n /**\n * @type {string}\n * @protected\n */\n _questionTemplate = PreviewComponent.PATH + 'markdown.njk'\n /**\n * @param {QuestionElements} htmlElements\n * @param {QuestionRenderer} questionRenderer\n */\n constructor(htmlElements, questionRenderer) {\n super(htmlElements, questionRenderer)\n const { content } = htmlElements.values\n this._content = markdownToHtml(content)\n }\n\n /**\n * @param {string} value\n * @protected\n */\n _setContent(value) {\n super._setContent(markdownToHtml(value))\n }\n}\n\n/**\n * @import { ListenerRow, BaseSettings, QuestionElements, QuestionBaseModel, GovukFieldset, DefaultComponent, QuestionRenderer } from '~/src/form/form-editor/preview/types.js'\n * @import { FormComponentsDef, ContentComponentsDef, ComponentDef } from '~/src/components/types.js'\n * @import { ListElement, ListItemReadonly } from '~/src/form/form-editor/types.js'\n */\n"],"mappings":"AAAA,SAASA,aAAa;AACtB,SAASC,OAAO;AAChB,SAASC,gBAAgB;AACzB,SAASC,cAAc;;AAEvB;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,QAAQ,SAASH,OAAO,CAAC;EACpC;AACF;AACA;AACA;EACEI,UAAU,GAAG,UAAU;EACvB;AACF;AACA;EACEC,aAAa,GAAGN,aAAa,CAACI,QAAQ;;EAEtC;AACF;AACA;AACA;EACEG,iBAAiB,GAAGL,gBAAgB,CAACM,IAAI,GAAG,cAAc;EAC1D;AACF;AACA;AACA;EACEC,WAAWA,CAACC,YAAY,EAAEC,gBAAgB,EAAE;IAC1C,KAAK,CAACD,YAAY,EAAEC,gBAAgB,CAAC;IACrC,MAAM;MAAEC;IAAQ,CAAC,GAAGF,YAAY,CAACG,MAAM;IACvC,IAAI,CAACC,QAAQ,GAAGX,cAAc,CAACS,OAAO,CAAC;EACzC;;EAEA;AACF;AACA;AACA;EACEG,WAAWA,CAACC,KAAK,EAAE;IACjB,KAAK,CAACD,WAAW,CAACZ,cAAc,CAACa,KAAK,CAAC,CAAC;EAC1C;AACF;;AAEA;AACA;AACA;AACA;AACA","ignoreList":[]}
@@ -1,11 +1,16 @@
1
+ import { ComponentType } from "../../../components/enums.js";
1
2
  import { FieldsetQuestion } from "./fieldset-question.js";
2
- import { Question } from "../../../index.js";
3
+ import { PreviewComponent } from "./preview.js";
3
4
  export class MonthYearQuestion extends FieldsetQuestion {
5
+ /**
6
+ * @type {ComponentType}
7
+ */
8
+ componentType = ComponentType.MonthYearField;
4
9
  /**
5
10
  * @type {string}
6
11
  * @protected
7
12
  */
8
- _questionTemplate = Question.PATH + 'monthyearfield.njk';
13
+ _questionTemplate = PreviewComponent.PATH + 'monthyearfield.njk';
9
14
  _fieldName = 'monthYear';
10
15
 
11
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"month-year.js","names":["FieldsetQuestion","Question","MonthYearQuestion","_questionTemplate","PATH","_fieldName","customRenderFields","items","name","classes"],"sources":["../../../../../src/form/form-editor/preview/month-year.js"],"sourcesContent":["import { FieldsetQuestion } from '~/src/form/form-editor/preview/fieldset-question.js'\nimport { Question } from '~/src/index.js'\n\nexport class MonthYearQuestion extends FieldsetQuestion {\n /**\n * @type {string}\n * @protected\n */\n _questionTemplate = Question.PATH + 'monthyearfield.njk'\n _fieldName = 'monthYear'\n\n /**\n * @returns {Partial<QuestionBaseModel>}\n */\n get customRenderFields() {\n return {\n items: [\n { name: 'month', classes: 'govuk-input--width-2' },\n { name: 'year', classes: 'govuk-input--width-4' }\n ]\n }\n }\n}\n/**\n * @import { QuestionBaseModel } from '~/src/form/form-editor/preview/types.js'\n */\n"],"mappings":"AAAA,SAASA,gBAAgB;AACzB,SAASC,QAAQ;AAEjB,OAAO,MAAMC,iBAAiB,SAASF,gBAAgB,CAAC;EACtD;AACF;AACA;AACA;EACEG,iBAAiB,GAAGF,QAAQ,CAACG,IAAI,GAAG,oBAAoB;EACxDC,UAAU,GAAG,WAAW;;EAExB;AACF;AACA;EACE,IAAIC,kBAAkBA,CAAA,EAAG;IACvB,OAAO;MACLC,KAAK,EAAE,CACL;QAAEC,IAAI,EAAE,OAAO;QAAEC,OAAO,EAAE;MAAuB,CAAC,EAClD;QAAED,IAAI,EAAE,MAAM;QAAEC,OAAO,EAAE;MAAuB,CAAC;IAErD,CAAC;EACH;AACF;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"file":"month-year.js","names":["ComponentType","FieldsetQuestion","PreviewComponent","MonthYearQuestion","componentType","MonthYearField","_questionTemplate","PATH","_fieldName","customRenderFields","items","name","classes"],"sources":["../../../../../src/form/form-editor/preview/month-year.js"],"sourcesContent":["import { ComponentType } from '~/src/components/enums.js'\nimport { FieldsetQuestion } from '~/src/form/form-editor/preview/fieldset-question.js'\nimport { PreviewComponent } from '~/src/form/form-editor/preview/preview.js'\n\nexport class MonthYearQuestion extends FieldsetQuestion {\n /**\n * @type {ComponentType}\n */\n componentType = ComponentType.MonthYearField\n /**\n * @type {string}\n * @protected\n */\n _questionTemplate = PreviewComponent.PATH + 'monthyearfield.njk'\n _fieldName = 'monthYear'\n\n /**\n * @returns {Partial<QuestionBaseModel>}\n */\n get customRenderFields() {\n return {\n items: [\n { name: 'month', classes: 'govuk-input--width-2' },\n { name: 'year', classes: 'govuk-input--width-4' }\n ]\n }\n }\n}\n/**\n * @import { QuestionBaseModel } from '~/src/form/form-editor/preview/types.js'\n */\n"],"mappings":"AAAA,SAASA,aAAa;AACtB,SAASC,gBAAgB;AACzB,SAASC,gBAAgB;AAEzB,OAAO,MAAMC,iBAAiB,SAASF,gBAAgB,CAAC;EACtD;AACF;AACA;EACEG,aAAa,GAAGJ,aAAa,CAACK,cAAc;EAC5C;AACF;AACA;AACA;EACEC,iBAAiB,GAAGJ,gBAAgB,CAACK,IAAI,GAAG,oBAAoB;EAChEC,UAAU,GAAG,WAAW;;EAExB;AACF;AACA;EACE,IAAIC,kBAAkBA,CAAA,EAAG;IACvB,OAAO;MACLC,KAAK,EAAE,CACL;QAAEC,IAAI,EAAE,OAAO;QAAEC,OAAO,EAAE;MAAuB,CAAC,EAClD;QAAED,IAAI,EAAE,MAAM;QAAEC,OAAO,EAAE;MAAuB,CAAC;IAErD,CAAC;EACH;AACF;AACA;AACA;AACA","ignoreList":[]}
@@ -1,5 +1,10 @@
1
+ import { ComponentType } from "../../../components/enums.js";
1
2
  import { Question } from "./question.js";
2
3
  export class NumberOnlyQuestion extends Question {
4
+ /**
5
+ * @type {ComponentType}
6
+ */
7
+ componentType = ComponentType.NumberField;
3
8
  /**
4
9
  * @returns {Partial<QuestionBaseModel>}
5
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"number-only.js","names":["Question","NumberOnlyQuestion","customRenderFields","type"],"sources":["../../../../../src/form/form-editor/preview/number-only.js"],"sourcesContent":["import { Question } from '~/src/form/form-editor/preview/question.js'\n\nexport class NumberOnlyQuestion extends Question {\n /**\n * @returns {Partial<QuestionBaseModel>}\n */\n get customRenderFields() {\n return {\n type: 'number'\n }\n }\n}\n\n/**\n * @import { QuestionBaseModel } from '~/src/form/form-editor/preview/types.js'\n */\n"],"mappings":"AAAA,SAASA,QAAQ;AAEjB,OAAO,MAAMC,kBAAkB,SAASD,QAAQ,CAAC;EAC/C;AACF;AACA;EACE,IAAIE,kBAAkBA,CAAA,EAAG;IACvB,OAAO;MACLC,IAAI,EAAE;IACR,CAAC;EACH;AACF;;AAEA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"file":"number-only.js","names":["ComponentType","Question","NumberOnlyQuestion","componentType","NumberField","customRenderFields","type"],"sources":["../../../../../src/form/form-editor/preview/number-only.js"],"sourcesContent":["import { ComponentType } from '~/src/components/enums.js'\nimport { Question } from '~/src/form/form-editor/preview/question.js'\n\nexport class NumberOnlyQuestion extends Question {\n /**\n * @type {ComponentType}\n */\n componentType = ComponentType.NumberField\n /**\n * @returns {Partial<QuestionBaseModel>}\n */\n get customRenderFields() {\n return {\n type: 'number'\n }\n }\n}\n\n/**\n * @import { QuestionBaseModel } from '~/src/form/form-editor/preview/types.js'\n */\n"],"mappings":"AAAA,SAASA,aAAa;AACtB,SAASC,QAAQ;AAEjB,OAAO,MAAMC,kBAAkB,SAASD,QAAQ,CAAC;EAC/C;AACF;AACA;EACEE,aAAa,GAAGH,aAAa,CAACI,WAAW;EACzC;AACF;AACA;EACE,IAAIC,kBAAkBA,CAAA,EAAG;IACvB,OAAO;MACLC,IAAI,EAAE;IACR,CAAC;EACH;AACF;;AAEA;AACA;AACA","ignoreList":[]}
@@ -1,6 +1,12 @@
1
+ import { ComponentType } from "../../../components/enums.js";
2
+ import { PreviewComponent } from "./preview.js";
1
3
  import { Question } from "./question.js";
2
4
  export class PhoneNumberQuestion extends Question {
3
- _questionTemplate = Question.PATH + 'telephonenumberfield.njk';
5
+ /**
6
+ * @type {ComponentType}
7
+ */
8
+ componentType = ComponentType.TelephoneNumberField;
9
+ _questionTemplate = PreviewComponent.PATH + 'telephonenumberfield.njk';
4
10
  _fieldName = 'phoneNumberField';
5
11
  }
6
12
 
@@ -1 +1 @@
1
- {"version":3,"file":"phone-number.js","names":["Question","PhoneNumberQuestion","_questionTemplate","PATH","_fieldName"],"sources":["../../../../../src/form/form-editor/preview/phone-number.js"],"sourcesContent":["import { Question } from '~/src/form/form-editor/preview/question.js'\n\nexport class PhoneNumberQuestion extends Question {\n _questionTemplate = Question.PATH + 'telephonenumberfield.njk'\n _fieldName = 'phoneNumberField'\n}\n\n/**\n * @import { QuestionBaseModel } from '~/src/form/form-editor/preview/question.js'\n */\n"],"mappings":"AAAA,SAASA,QAAQ;AAEjB,OAAO,MAAMC,mBAAmB,SAASD,QAAQ,CAAC;EAChDE,iBAAiB,GAAGF,QAAQ,CAACG,IAAI,GAAG,0BAA0B;EAC9DC,UAAU,GAAG,kBAAkB;AACjC;;AAEA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"file":"phone-number.js","names":["ComponentType","PreviewComponent","Question","PhoneNumberQuestion","componentType","TelephoneNumberField","_questionTemplate","PATH","_fieldName"],"sources":["../../../../../src/form/form-editor/preview/phone-number.js"],"sourcesContent":["import { ComponentType } from '~/src/components/enums.js'\nimport { PreviewComponent } from '~/src/form/form-editor/preview/preview.js'\nimport { Question } from '~/src/form/form-editor/preview/question.js'\n\nexport class PhoneNumberQuestion extends Question {\n /**\n * @type {ComponentType}\n */\n componentType = ComponentType.TelephoneNumberField\n _questionTemplate = PreviewComponent.PATH + 'telephonenumberfield.njk'\n _fieldName = 'phoneNumberField'\n}\n\n/**\n * @import { QuestionBaseModel } from '~/src/form/form-editor/preview/question.js'\n */\n"],"mappings":"AAAA,SAASA,aAAa;AACtB,SAASC,gBAAgB;AACzB,SAASC,QAAQ;AAEjB,OAAO,MAAMC,mBAAmB,SAASD,QAAQ,CAAC;EAChD;AACF;AACA;EACEE,aAAa,GAAGJ,aAAa,CAACK,oBAAoB;EAClDC,iBAAiB,GAAGL,gBAAgB,CAACM,IAAI,GAAG,0BAA0B;EACtEC,UAAU,GAAG,kBAAkB;AACjC;;AAEA;AACA;AACA","ignoreList":[]}
@@ -0,0 +1,212 @@
1
+ import { ComponentType } from "../../../components/enums.js";
2
+ import { HIGHLIGHT_CLASS } from "./constants.js";
3
+
4
+ /**
5
+ * @abstract
6
+ */
7
+ export class PreviewComponent {
8
+ static PATH = 'preview-components/';
9
+ /**
10
+ * @abstract
11
+ * @type {ComponentType}
12
+ */
13
+ componentType = ComponentType.Details;
14
+ /**
15
+ * @abstract
16
+ * @type {string}
17
+ * @protected
18
+ */
19
+ _questionTemplate = '';
20
+ /**
21
+ * @type { string|null }
22
+ * @protected
23
+ */
24
+ _highlight = null;
25
+ /**
26
+ * @abstract
27
+ * @type {string}
28
+ * @protected
29
+ */
30
+ _fieldName = '';
31
+ /**
32
+ * @type {QuestionRenderer}
33
+ * @protected
34
+ */
35
+ _questionRenderer;
36
+
37
+ /**
38
+ * @type {QuestionElements}
39
+ * @protected
40
+ */
41
+ _htmlElements;
42
+ /**
43
+ * @type {boolean}
44
+ * @protected
45
+ */
46
+ _highlighted = false;
47
+
48
+ /**
49
+ * @param {QuestionElements} htmlElements
50
+ * @param {QuestionRenderer} questionRenderer
51
+ */
52
+ constructor(htmlElements, questionRenderer) {
53
+ const {
54
+ question,
55
+ optional
56
+ } = htmlElements.values;
57
+
58
+ /**
59
+ * @type {QuestionElements}
60
+ * @protected
61
+ */
62
+ this._htmlElements = htmlElements;
63
+ /**
64
+ * @type {string}
65
+ * @private
66
+ */
67
+ this._question = question;
68
+ /**
69
+ * @type {boolean}
70
+ * @private
71
+ */
72
+ this._optional = optional;
73
+ /**
74
+ *
75
+ * @type {QuestionRenderer}
76
+ * @protected
77
+ */
78
+ this._questionRenderer = questionRenderer;
79
+ }
80
+
81
+ /**
82
+ * @param {string} element
83
+ * @returns {string}
84
+ * @protected
85
+ */
86
+ getHighlight(element) {
87
+ return this._highlight === element ? ' highlight' : '';
88
+ }
89
+ get titleText() {
90
+ const optionalText = this._optional ? ' (optional)' : '';
91
+ return (!this._question ? 'Question' : this._question) + optionalText;
92
+ }
93
+
94
+ /**
95
+ * @protected
96
+ * @type {DefaultComponent}
97
+ */
98
+ get label() {
99
+ return {
100
+ text: this.titleText,
101
+ classes: 'govuk-label--l' + this.getHighlight('question')
102
+ };
103
+ }
104
+
105
+ /**
106
+ * @protected
107
+ * @type {GovukFieldset}
108
+ */
109
+ get fieldSet() {
110
+ return {
111
+ legend: {
112
+ text: this.titleText,
113
+ classes: 'govuk-fieldset__legend--l' + this.getHighlight('question')
114
+ }
115
+ };
116
+ }
117
+
118
+ /**
119
+ * @returns {Partial<QuestionBaseModel>}
120
+ */
121
+ get customRenderFields() {
122
+ return {};
123
+ }
124
+
125
+ /**
126
+ *
127
+ * @returns {QuestionBaseModel}
128
+ * @protected
129
+ */
130
+ _renderInput() {
131
+ return {
132
+ id: this._fieldName,
133
+ name: this._fieldName,
134
+ classes: this._highlighted ? HIGHLIGHT_CLASS : ''
135
+ };
136
+ }
137
+
138
+ /**
139
+ * @type {QuestionBaseModel}
140
+ */
141
+ get renderInput() {
142
+ return {
143
+ ...this._renderInput(),
144
+ ...this.customRenderFields
145
+ };
146
+ }
147
+ render() {
148
+ this._questionRenderer.render(this._questionTemplate, this.renderInput);
149
+ }
150
+
151
+ /**
152
+ * @type {string}
153
+ */
154
+ get question() {
155
+ return this._question;
156
+ }
157
+
158
+ /**
159
+ * @param {string} value
160
+ */
161
+ set question(value) {
162
+ this._question = value;
163
+ this.render();
164
+ }
165
+ get optional() {
166
+ return this._optional;
167
+ }
168
+
169
+ /**
170
+ * @param {boolean} value
171
+ */
172
+ set optional(value) {
173
+ this._optional = value;
174
+ this.render();
175
+ }
176
+
177
+ /**
178
+ * @type {string | null}
179
+ */
180
+ get highlight() {
181
+ return this._highlight;
182
+ }
183
+
184
+ /**
185
+ * @param {string | null} value
186
+ */
187
+ set highlight(value) {
188
+ this._highlight = value;
189
+ this.render();
190
+ }
191
+
192
+ /**
193
+ * no render
194
+ */
195
+ highlightContent() {
196
+ this._highlighted = true;
197
+ }
198
+
199
+ /**
200
+ * no render
201
+ */
202
+ unHighlightContent() {
203
+ this._highlighted = false;
204
+ }
205
+ }
206
+
207
+ /**
208
+ * @import { ListenerRow, BaseSettings, QuestionElements, QuestionBaseModel, GovukFieldset, DefaultComponent, QuestionRenderer } from '~/src/form/form-editor/preview/types.js'
209
+ * @import { FormComponentsDef, ContentComponentsDef, ComponentDef } from '~/src/components/types.js'
210
+ * @import { ListElement, ListItemReadonly } from '~/src/form/form-editor/types.js'
211
+ */
212
+ //# sourceMappingURL=preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.js","names":["ComponentType","HIGHLIGHT_CLASS","PreviewComponent","PATH","componentType","Details","_questionTemplate","_highlight","_fieldName","_questionRenderer","_htmlElements","_highlighted","constructor","htmlElements","questionRenderer","question","optional","values","_question","_optional","getHighlight","element","titleText","optionalText","label","text","classes","fieldSet","legend","customRenderFields","_renderInput","id","name","renderInput","render","value","highlight","highlightContent","unHighlightContent"],"sources":["../../../../../src/form/form-editor/preview/preview.js"],"sourcesContent":["import { ComponentType } from '~/src/components/enums.js'\nimport { HIGHLIGHT_CLASS } from '~/src/form/form-editor/preview/constants.js'\n\n/**\n * @abstract\n */\nexport class PreviewComponent {\n static PATH = 'preview-components/'\n /**\n * @abstract\n * @type {ComponentType}\n */\n componentType = ComponentType.Details\n /**\n * @abstract\n * @type {string}\n * @protected\n */\n _questionTemplate = ''\n /**\n * @type { string|null }\n * @protected\n */\n _highlight = null\n /**\n * @abstract\n * @type {string}\n * @protected\n */\n _fieldName = ''\n /**\n * @type {QuestionRenderer}\n * @protected\n */\n _questionRenderer\n\n /**\n * @type {QuestionElements}\n * @protected\n */\n _htmlElements\n /**\n * @type {boolean}\n * @protected\n */\n _highlighted = false\n\n /**\n * @param {QuestionElements} htmlElements\n * @param {QuestionRenderer} questionRenderer\n */\n constructor(htmlElements, questionRenderer) {\n const { question, optional } = htmlElements.values\n\n /**\n * @type {QuestionElements}\n * @protected\n */\n this._htmlElements = htmlElements\n /**\n * @type {string}\n * @private\n */\n this._question = question\n /**\n * @type {boolean}\n * @private\n */\n this._optional = optional\n /**\n *\n * @type {QuestionRenderer}\n * @protected\n */\n this._questionRenderer = questionRenderer\n }\n\n /**\n * @param {string} element\n * @returns {string}\n * @protected\n */\n getHighlight(element) {\n return this._highlight === element ? ' highlight' : ''\n }\n\n get titleText() {\n const optionalText = this._optional ? ' (optional)' : ''\n return (!this._question ? 'Question' : this._question) + optionalText\n }\n\n /**\n * @protected\n * @type {DefaultComponent}\n */\n get label() {\n return {\n text: this.titleText,\n classes: 'govuk-label--l' + this.getHighlight('question')\n }\n }\n\n /**\n * @protected\n * @type {GovukFieldset}\n */\n get fieldSet() {\n return {\n legend: {\n text: this.titleText,\n classes: 'govuk-fieldset__legend--l' + this.getHighlight('question')\n }\n }\n }\n\n /**\n * @returns {Partial<QuestionBaseModel>}\n */\n get customRenderFields() {\n return {}\n }\n\n /**\n *\n * @returns {QuestionBaseModel}\n * @protected\n */\n _renderInput() {\n return {\n id: this._fieldName,\n name: this._fieldName,\n classes: this._highlighted ? HIGHLIGHT_CLASS : ''\n }\n }\n\n /**\n * @type {QuestionBaseModel}\n */\n get renderInput() {\n return {\n ...this._renderInput(),\n ...this.customRenderFields\n }\n }\n\n render() {\n this._questionRenderer.render(this._questionTemplate, this.renderInput)\n }\n\n /**\n * @type {string}\n */\n get question() {\n return this._question\n }\n\n /**\n * @param {string} value\n */\n set question(value) {\n this._question = value\n this.render()\n }\n\n get optional() {\n return this._optional\n }\n\n /**\n * @param {boolean} value\n */\n set optional(value) {\n this._optional = value\n this.render()\n }\n\n /**\n * @type {string | null}\n */\n get highlight() {\n return this._highlight\n }\n\n /**\n * @param {string | null} value\n */\n set highlight(value) {\n this._highlight = value\n this.render()\n }\n\n /**\n * no render\n */\n highlightContent() {\n this._highlighted = true\n }\n\n /**\n * no render\n */\n unHighlightContent() {\n this._highlighted = false\n }\n}\n\n/**\n * @import { ListenerRow, BaseSettings, QuestionElements, QuestionBaseModel, GovukFieldset, DefaultComponent, QuestionRenderer } from '~/src/form/form-editor/preview/types.js'\n * @import { FormComponentsDef, ContentComponentsDef, ComponentDef } from '~/src/components/types.js'\n * @import { ListElement, ListItemReadonly } from '~/src/form/form-editor/types.js'\n */\n"],"mappings":"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","ignoreList":[]}