case-editor-tools 1.0.0-beta.7 → 1.0.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.
Files changed (99) hide show
  1. package/constants/key-definitions.d.ts +16 -0
  2. package/constants/key-definitions.js +38 -0
  3. package/constants/key-definitions.js.map +1 -0
  4. package/exporter/index.d.ts +2 -0
  5. package/exporter/index.js +128 -0
  6. package/exporter/index.js.map +1 -0
  7. package/expression-utils/expressionGen.d.ts +2 -0
  8. package/expression-utils/expressionGen.js +31 -0
  9. package/expression-utils/expressionGen.js.map +1 -0
  10. package/expression-utils/studyEngineExpressions.d.ts +195 -0
  11. package/expression-utils/studyEngineExpressions.js +479 -0
  12. package/expression-utils/studyEngineExpressions.js.map +1 -0
  13. package/index.d.ts +0 -0
  14. package/index.js +3 -0
  15. package/index.js.map +1 -0
  16. package/item-editor-59f51ecc.js +542 -0
  17. package/item-editor-59f51ecc.js.map +1 -0
  18. package/logger/index.d.ts +1 -0
  19. package/logger/index.js +10 -0
  20. package/logger/index.js.map +1 -0
  21. package/logger/logger.d.ts +9 -0
  22. package/logger/logger.js +31 -0
  23. package/logger/logger.js.map +1 -0
  24. package/package.json +5 -5
  25. package/surveys/index.d.ts +3 -0
  26. package/surveys/index.js +29 -0
  27. package/surveys/index.js.map +1 -0
  28. package/surveys/responseTypeGenerators/likertGroupComponents.d.ts +27 -0
  29. package/surveys/responseTypeGenerators/likertGroupComponents.js +350 -0
  30. package/surveys/responseTypeGenerators/likertGroupComponents.js.map +1 -0
  31. package/surveys/responseTypeGenerators/matrixGroupComponent.d.ts +49 -0
  32. package/surveys/responseTypeGenerators/matrixGroupComponent.js +100 -0
  33. package/surveys/responseTypeGenerators/matrixGroupComponent.js.map +1 -0
  34. package/surveys/responseTypeGenerators/optionGroupComponents.d.ts +7 -0
  35. package/surveys/responseTypeGenerators/optionGroupComponents.js +129 -0
  36. package/surveys/responseTypeGenerators/optionGroupComponents.js.map +1 -0
  37. package/surveys/survey-editor/component-editor.d.ts +84 -0
  38. package/surveys/survey-editor/component-editor.js +112 -0
  39. package/surveys/survey-editor/component-editor.js.map +1 -0
  40. package/surveys/survey-editor/data-types.d.ts +13 -0
  41. package/surveys/survey-editor/data-types.js +3 -0
  42. package/surveys/survey-editor/data-types.js.map +1 -0
  43. package/surveys/survey-editor/item-editor.d.ts +66 -0
  44. package/surveys/survey-editor/item-editor.js +13 -0
  45. package/surveys/survey-editor/item-editor.js.map +1 -0
  46. package/surveys/survey-editor/survey-editor.d.ts +48 -0
  47. package/surveys/survey-editor/survey-editor.js +237 -0
  48. package/surveys/survey-editor/survey-editor.js.map +1 -0
  49. package/surveys/survey-engine-expressions.d.ts +130 -0
  50. package/surveys/survey-engine-expressions.js +448 -0
  51. package/surveys/survey-engine-expressions.js.map +1 -0
  52. package/surveys/survey-items.d.ts +72 -0
  53. package/surveys/survey-items.js +384 -0
  54. package/surveys/survey-items.js.map +1 -0
  55. package/surveys/types/group.d.ts +23 -0
  56. package/surveys/types/group.js +72 -0
  57. package/surveys/types/group.js.map +1 -0
  58. package/surveys/types/index.d.ts +4 -0
  59. package/surveys/types/index.js +22 -0
  60. package/surveys/types/index.js.map +1 -0
  61. package/surveys/types/item-properties.d.ts +223 -0
  62. package/surveys/types/item-properties.js +10 -0
  63. package/surveys/types/item-properties.js.map +1 -0
  64. package/surveys/types/item.d.ts +22 -0
  65. package/surveys/types/item.js +34 -0
  66. package/surveys/types/item.js.map +1 -0
  67. package/surveys/types/survey-definition.d.ts +23 -0
  68. package/surveys/types/survey-definition.js +69 -0
  69. package/surveys/types/survey-definition.js.map +1 -0
  70. package/surveys/utils/componentGenerators.d.ts +24 -0
  71. package/surveys/utils/componentGenerators.js +59 -0
  72. package/surveys/utils/componentGenerators.js.map +1 -0
  73. package/surveys/utils/optionDefGenerators.d.ts +84 -0
  74. package/surveys/utils/optionDefGenerators.js +211 -0
  75. package/surveys/utils/optionDefGenerators.js.map +1 -0
  76. package/surveys/utils/randomKeyGenerator.d.ts +1 -0
  77. package/surveys/utils/randomKeyGenerator.js +16 -0
  78. package/surveys/utils/randomKeyGenerator.js.map +1 -0
  79. package/surveys/utils/simple-generators.d.ts +14 -0
  80. package/surveys/utils/simple-generators.js +131 -0
  81. package/surveys/utils/simple-generators.js.map +1 -0
  82. package/surveys/utils/simple-question-editor.d.ts +14 -0
  83. package/surveys/utils/simple-question-editor.js +47 -0
  84. package/surveys/utils/simple-question-editor.js.map +1 -0
  85. package/types/duration.d.ts +9 -0
  86. package/types/duration.js +29 -0
  87. package/types/duration.js.map +1 -0
  88. package/types/expression.d.ts +4 -0
  89. package/types/expression.js +23 -0
  90. package/types/expression.js.map +1 -0
  91. package/types/messageConfig.d.ts +49 -0
  92. package/types/messageConfig.js +23 -0
  93. package/types/messageConfig.js.map +1 -0
  94. package/types/study.d.ts +15 -0
  95. package/types/study.js +3 -0
  96. package/types/study.js.map +1 -0
  97. package/types/studyRules.d.ts +9 -0
  98. package/types/studyRules.js +36 -0
  99. package/types/studyRules.js.map +1 -0
@@ -0,0 +1,27 @@
1
+ import { Expression, ItemComponent, ItemGroupComponent } from "survey-engine/data_types";
2
+ import { ResponsiveBipolarLikertArrayProps, ResponsiveSingleChoiceArrayProps } from "../types";
3
+ export interface LikertGroupRow {
4
+ key: string;
5
+ content: Map<string, string>;
6
+ descriptions?: ItemComponent[];
7
+ hideTopBorder?: boolean;
8
+ hideLabels?: boolean;
9
+ optionDisabled?: Array<{
10
+ optionKey: string;
11
+ exp: Expression;
12
+ }>;
13
+ displayCondition?: Expression;
14
+ }
15
+ export declare const initLikertScaleGroup: (key: string, rows: Array<LikertGroupRow>, scaleOptions: {
16
+ key: string;
17
+ className?: string | undefined;
18
+ content: Map<string, string>;
19
+ }[], stackOnSmallScreen?: boolean | undefined, displayCondition?: Expression | undefined) => ItemGroupComponent;
20
+ export declare const initResponsiveSingleChoiceArray: (rgKey: string, props: ResponsiveSingleChoiceArrayProps, displayCondition?: Expression | undefined) => ItemGroupComponent;
21
+ export declare const initResponsiveBipolarLikertArray: (rgKey: string, props: ResponsiveBipolarLikertArrayProps, displayCondition?: Expression | undefined) => ItemGroupComponent;
22
+ export declare const initLikertScaleItem: (key: string, options: {
23
+ key: string;
24
+ className?: string | undefined;
25
+ content?: Map<string, string> | undefined;
26
+ disabled?: Expression | undefined;
27
+ }[], stackOnSmallScreen?: boolean | undefined, displayCondition?: Expression | undefined) => ItemGroupComponent;
@@ -0,0 +1,350 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var surveys_surveyEditor_componentEditor = require('../survey-editor/component-editor.js');
6
+ var surveys_utils_randomKeyGenerator = require('../utils/randomKeyGenerator.js');
7
+ var surveys_utils_simpleGenerators = require('../utils/simple-generators.js');
8
+ require('../types/item-properties.js');
9
+
10
+ const initLikertScaleGroup = (key, rows, scaleOptions, stackOnSmallScreen, displayCondition) => {
11
+ const groupEdit = new surveys_surveyEditor_componentEditor.ComponentEditor(undefined, {
12
+ key: key,
13
+ isGroup: true,
14
+ role: 'likertGroup',
15
+ });
16
+ if (displayCondition) {
17
+ groupEdit.setDisplayCondition(displayCondition);
18
+ }
19
+ rows.forEach((row, index) => {
20
+ groupEdit.addItemComponent({
21
+ key: surveys_utils_randomKeyGenerator.generateRandomKey(4),
22
+ role: 'text',
23
+ style: [{
24
+ key: 'className', value: 'fw-bold' + (index !== 0 ? ' pt-1 mt-2' : '') + ((!row.hideTopBorder && index > 0) ? ' border-top border-1 border-grey-2' : '') + (row.descriptions ? ' mb-0' : ' mb-1')
25
+ }, { key: 'variant', value: 'h6' }],
26
+ content: surveys_utils_simpleGenerators.generateLocStrings(row.content),
27
+ });
28
+ if (row.descriptions) {
29
+ row.descriptions.forEach(desc => {
30
+ groupEdit.addItemComponent(desc);
31
+ });
32
+ }
33
+ const item = initLikertScaleItem(row.key, scaleOptions.map(option => {
34
+ var _a, _b;
35
+ return {
36
+ key: option.key,
37
+ className: option.className,
38
+ content: row.hideLabels ? undefined : option.content,
39
+ disabled: (_b = (_a = row.optionDisabled) === null || _a === void 0 ? void 0 : _a.find(cond => cond.optionKey === option.key)) === null || _b === void 0 ? void 0 : _b.exp,
40
+ };
41
+ }), stackOnSmallScreen, row.displayCondition);
42
+ groupEdit.addItemComponent(item);
43
+ });
44
+ return groupEdit.getComponent();
45
+ };
46
+ const initResponsiveSingleChoiceArray = (rgKey, props, displayCondition) => {
47
+ var _a, _b;
48
+ const groupEdit = new surveys_surveyEditor_componentEditor.ComponentEditor(undefined, {
49
+ key: rgKey,
50
+ isGroup: true,
51
+ role: 'responsiveSingleChoiceArray',
52
+ });
53
+ if (displayCondition) {
54
+ groupEdit.setDisplayCondition(displayCondition);
55
+ }
56
+ const style = [
57
+ { key: 'defaultMode', value: props.defaultMode },
58
+ ];
59
+ if (props.responsiveModes) {
60
+ if (props.responsiveModes.sm) {
61
+ style.push({ key: 'smMode', value: props.responsiveModes.sm });
62
+ }
63
+ if (props.responsiveModes.md) {
64
+ style.push({ key: 'mdMode', value: props.responsiveModes.md });
65
+ }
66
+ if (props.responsiveModes.lg) {
67
+ style.push({ key: 'lgMode', value: props.responsiveModes.lg });
68
+ }
69
+ if (props.responsiveModes.xl) {
70
+ style.push({ key: 'xlMode', value: props.responsiveModes.xl });
71
+ }
72
+ if (props.responsiveModes.xxl) {
73
+ style.push({ key: 'xxlMode', value: props.responsiveModes.xxl });
74
+ }
75
+ }
76
+ if (props.rgClassName) {
77
+ style.push({ key: 'className', value: props.rgClassName });
78
+ }
79
+ if (props.verticalModeProps) {
80
+ if (props.verticalModeProps.useReverseOptionOrder) {
81
+ style.push({ key: 'verticalModeReverseOrder', value: 'true' });
82
+ }
83
+ }
84
+ if (props.tableModeProps) {
85
+ style.push({ key: 'tableModeClassName', value: 'table-borderless mb-0 ' + props.tableModeProps.className });
86
+ if (props.tableModeProps.layout) {
87
+ style.push({ key: 'tableModeLayout', value: props.tableModeProps.layout });
88
+ }
89
+ if (props.tableModeProps.firstColWidth) {
90
+ style.push({ key: 'tableModeFirstColWidth', value: props.tableModeProps.firstColWidth });
91
+ }
92
+ }
93
+ groupEdit.setStyles(style);
94
+ const defaultBorderClass = 'border-bottom border-grey-2';
95
+ let tableModeOptionHeaderClassName = undefined;
96
+ if (!((_a = props.tableModeProps) === null || _a === void 0 ? void 0 : _a.hideRowBorder)) {
97
+ tableModeOptionHeaderClassName = defaultBorderClass;
98
+ }
99
+ if ((_b = props.tableModeProps) === null || _b === void 0 ? void 0 : _b.optionHeaderClassName) {
100
+ tableModeOptionHeaderClassName += ' ' + props.tableModeProps.optionHeaderClassName;
101
+ }
102
+ const optionStyles = [];
103
+ if (tableModeOptionHeaderClassName) {
104
+ optionStyles.push({ key: 'tableModeClassName', value: tableModeOptionHeaderClassName });
105
+ }
106
+ groupEdit.addItemComponent({
107
+ key: 'header',
108
+ role: 'options',
109
+ style: optionStyles.length > 0 ? optionStyles : undefined,
110
+ items: props.scaleOptions.map(option => {
111
+ return {
112
+ key: option.key,
113
+ role: 'option',
114
+ style: option.className ? [{ key: 'className', value: option.className }] : undefined,
115
+ content: !Array.isArray(option.content) ? surveys_utils_simpleGenerators.generateLocStrings(option.content) : undefined,
116
+ items: Array.isArray(option.content) ? option.content.map((cont, index) => {
117
+ return {
118
+ key: index.toFixed(),
119
+ role: 'text',
120
+ content: surveys_utils_simpleGenerators.generateLocStrings(cont.content),
121
+ style: cont.className ? [{ key: 'className', value: cont.className }] : undefined,
122
+ };
123
+ }) : [],
124
+ };
125
+ })
126
+ });
127
+ props.rows.forEach((row, index) => {
128
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
129
+ let tableModeRowClassName = undefined;
130
+ let horizontalModeRowClassName = undefined;
131
+ let verticalModeRowClassName = undefined;
132
+ const isLast = index === props.rows.length - 1;
133
+ if (!((_a = props.tableModeProps) === null || _a === void 0 ? void 0 : _a.hideRowBorder) && !isLast) {
134
+ tableModeRowClassName = defaultBorderClass;
135
+ }
136
+ if ((_b = row.tableModeProps) === null || _b === void 0 ? void 0 : _b.className) {
137
+ tableModeRowClassName += ' ' + ((_c = row.tableModeProps) === null || _c === void 0 ? void 0 : _c.className);
138
+ }
139
+ if (!((_d = props.horizontalModeProps) === null || _d === void 0 ? void 0 : _d.hideRowBorder) && !isLast) {
140
+ horizontalModeRowClassName = defaultBorderClass;
141
+ }
142
+ if ((_e = row.horizontalModeProps) === null || _e === void 0 ? void 0 : _e.className) {
143
+ horizontalModeRowClassName += ' ' + ((_f = row.horizontalModeProps) === null || _f === void 0 ? void 0 : _f.className);
144
+ }
145
+ if (!((_g = props.verticalModeProps) === null || _g === void 0 ? void 0 : _g.hideRowBorder) && !isLast) {
146
+ verticalModeRowClassName = defaultBorderClass;
147
+ }
148
+ if ((_h = row.verticalModeProps) === null || _h === void 0 ? void 0 : _h.className) {
149
+ verticalModeRowClassName += ' ' + ((_j = row.verticalModeProps) === null || _j === void 0 ? void 0 : _j.className);
150
+ }
151
+ const rowStyles = [];
152
+ if (tableModeRowClassName) {
153
+ rowStyles.push({ key: 'tableModeClassName', value: tableModeRowClassName });
154
+ }
155
+ if (horizontalModeRowClassName) {
156
+ rowStyles.push({ key: 'horizontalModeClassName', value: horizontalModeRowClassName });
157
+ }
158
+ if (verticalModeRowClassName) {
159
+ rowStyles.push({ key: 'verticalModeClassName', value: verticalModeRowClassName });
160
+ }
161
+ if ((_k = row.horizontalModeProps) === null || _k === void 0 ? void 0 : _k.labelPlacement) {
162
+ rowStyles.push({ key: 'horizontalModeLabelPlacement', value: row.horizontalModeProps.labelPlacement });
163
+ }
164
+ groupEdit.addItemComponent({
165
+ key: row.key,
166
+ role: 'row',
167
+ displayCondition: row.displayCondition,
168
+ style: rowStyles.length > 0 ? rowStyles : undefined,
169
+ content: !Array.isArray(row.content) ? surveys_utils_simpleGenerators.generateLocStrings(row.content) : undefined,
170
+ items: Array.isArray(row.content) ? row.content.map((cont, index) => {
171
+ return {
172
+ key: index.toFixed(),
173
+ role: 'text',
174
+ content: surveys_utils_simpleGenerators.generateLocStrings(cont.content),
175
+ style: cont.className ? [{ key: 'className', value: cont.className }] : undefined,
176
+ };
177
+ }) : [],
178
+ });
179
+ });
180
+ return groupEdit.getComponent();
181
+ };
182
+ const initResponsiveBipolarLikertArray = (rgKey, props, displayCondition) => {
183
+ var _a;
184
+ const groupEdit = new surveys_surveyEditor_componentEditor.ComponentEditor(undefined, {
185
+ key: rgKey,
186
+ isGroup: true,
187
+ role: 'responsiveBipolarLikertScaleArray',
188
+ });
189
+ if (displayCondition) {
190
+ groupEdit.setDisplayCondition(displayCondition);
191
+ }
192
+ const style = [
193
+ { key: 'defaultMode', value: props.defaultMode },
194
+ ];
195
+ if (props.responsiveModes) {
196
+ if (props.responsiveModes.sm) {
197
+ style.push({ key: 'smMode', value: props.responsiveModes.sm });
198
+ }
199
+ if (props.responsiveModes.md) {
200
+ style.push({ key: 'mdMode', value: props.responsiveModes.md });
201
+ }
202
+ if (props.responsiveModes.lg) {
203
+ style.push({ key: 'lgMode', value: props.responsiveModes.lg });
204
+ }
205
+ if (props.responsiveModes.xl) {
206
+ style.push({ key: 'xlMode', value: props.responsiveModes.xl });
207
+ }
208
+ if (props.responsiveModes.xxl) {
209
+ style.push({ key: 'xxlMode', value: props.responsiveModes.xxl });
210
+ }
211
+ }
212
+ if (props.rgClassName) {
213
+ style.push({ key: 'className', value: props.rgClassName });
214
+ }
215
+ if (props.withLabelRowModeProps) {
216
+ if (props.withLabelRowModeProps.maxLabelWidth) {
217
+ style.push({ key: 'labelRowMaxLabelWidth', value: props.withLabelRowModeProps.maxLabelWidth });
218
+ }
219
+ }
220
+ style.push({ key: 'labelRowPosition', value: ((_a = props.withLabelRowModeProps) === null || _a === void 0 ? void 0 : _a.useBottomLabel) ? 'bottom' : 'top' });
221
+ if (props.tableModeProps) {
222
+ style.push({ key: 'tableModeClassName', value: 'table-borderless mb-0 ' + props.tableModeProps.className });
223
+ if (props.tableModeProps.layout) {
224
+ style.push({ key: 'tableModeLayout', value: props.tableModeProps.layout });
225
+ }
226
+ if (props.tableModeProps.labelColWidth) {
227
+ style.push({ key: 'tableModeLabelColWidth', value: props.tableModeProps.labelColWidth });
228
+ }
229
+ }
230
+ groupEdit.setStyles(style);
231
+ const defaultBorderClass = 'border-bottom border-grey-2';
232
+ groupEdit.addItemComponent({
233
+ key: 'options',
234
+ role: 'options',
235
+ items: props.scaleOptions.map(option => {
236
+ return {
237
+ key: option.key,
238
+ role: 'option',
239
+ };
240
+ })
241
+ });
242
+ props.rows.forEach((row, index) => {
243
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
244
+ let tableModeRowClassName = undefined;
245
+ let withLabelRowModeClassName = undefined;
246
+ let verticalModeRowClassName = undefined;
247
+ const isLast = index === props.rows.length - 1;
248
+ if (!((_a = props.tableModeProps) === null || _a === void 0 ? void 0 : _a.hideRowBorder) && !isLast) {
249
+ tableModeRowClassName = defaultBorderClass;
250
+ }
251
+ if ((_b = row.tableModeProps) === null || _b === void 0 ? void 0 : _b.className) {
252
+ tableModeRowClassName += ' ' + ((_c = row.tableModeProps) === null || _c === void 0 ? void 0 : _c.className);
253
+ }
254
+ if (!((_d = props.withLabelRowModeProps) === null || _d === void 0 ? void 0 : _d.hideRowBorder) && !isLast) {
255
+ withLabelRowModeClassName = defaultBorderClass;
256
+ }
257
+ if ((_e = row.withLabelRowModeProps) === null || _e === void 0 ? void 0 : _e.className) {
258
+ withLabelRowModeClassName += ' ' + ((_f = row.withLabelRowModeProps) === null || _f === void 0 ? void 0 : _f.className);
259
+ }
260
+ if (!((_g = props.verticalModeProps) === null || _g === void 0 ? void 0 : _g.hideRowBorder) && !isLast) {
261
+ verticalModeRowClassName = defaultBorderClass;
262
+ }
263
+ if ((_h = row.verticalModeProps) === null || _h === void 0 ? void 0 : _h.className) {
264
+ verticalModeRowClassName += ' ' + ((_j = row.verticalModeProps) === null || _j === void 0 ? void 0 : _j.className);
265
+ }
266
+ const rowStyles = [];
267
+ if (tableModeRowClassName) {
268
+ rowStyles.push({ key: 'tableModeClassName', value: tableModeRowClassName });
269
+ }
270
+ if (withLabelRowModeClassName) {
271
+ rowStyles.push({ key: 'withLabelRowModeClassName', value: withLabelRowModeClassName });
272
+ }
273
+ if (verticalModeRowClassName) {
274
+ rowStyles.push({ key: 'verticalModeClassName', value: verticalModeRowClassName });
275
+ }
276
+ const startLabel = {
277
+ key: 'start',
278
+ role: 'start',
279
+ content: !Array.isArray(row.startLabel) ? surveys_utils_simpleGenerators.generateLocStrings(row.startLabel) : undefined,
280
+ items: Array.isArray(row.startLabel) ? row.startLabel.map((cont, index) => {
281
+ return {
282
+ key: index.toFixed(),
283
+ role: 'text',
284
+ content: surveys_utils_simpleGenerators.generateLocStrings(cont.content),
285
+ style: cont.className ? [{ key: 'className', value: cont.className }] : undefined,
286
+ };
287
+ }) : [],
288
+ };
289
+ const endLabel = {
290
+ key: 'end',
291
+ role: 'end',
292
+ content: !Array.isArray(row.endLabel) ? surveys_utils_simpleGenerators.generateLocStrings(row.endLabel) : undefined,
293
+ items: Array.isArray(row.endLabel) ? row.endLabel.map((cont, index) => {
294
+ return {
295
+ key: index.toFixed(),
296
+ role: 'text',
297
+ content: surveys_utils_simpleGenerators.generateLocStrings(cont.content),
298
+ style: cont.className ? [{ key: 'className', value: cont.className }] : undefined,
299
+ };
300
+ }) : [],
301
+ };
302
+ groupEdit.addItemComponent({
303
+ key: row.key,
304
+ role: 'row',
305
+ displayCondition: row.displayCondition,
306
+ style: rowStyles.length > 0 ? rowStyles : undefined,
307
+ items: [
308
+ startLabel, endLabel
309
+ ],
310
+ });
311
+ });
312
+ return groupEdit.getComponent();
313
+ };
314
+ const initLikertScaleItem = (key, options, stackOnSmallScreen, displayCondition) => {
315
+ // init group
316
+ const groupEdit = new surveys_surveyEditor_componentEditor.ComponentEditor(undefined, {
317
+ key: key,
318
+ isGroup: true,
319
+ role: 'likert',
320
+ });
321
+ groupEdit.setDisplayCondition(displayCondition);
322
+ if (stackOnSmallScreen) {
323
+ groupEdit.setStyles([
324
+ { key: 'responsive', value: 'stackOnSmallScreen' }
325
+ ]);
326
+ }
327
+ options.forEach((option) => {
328
+ const optionComponent = new surveys_surveyEditor_componentEditor.ComponentEditor(undefined, {
329
+ key: option.key,
330
+ role: 'option',
331
+ });
332
+ if (option.content) {
333
+ optionComponent.setContent(surveys_utils_simpleGenerators.generateLocStrings(option.content));
334
+ }
335
+ if (option.className) {
336
+ optionComponent.setStyles([{
337
+ key: 'className', value: option.className
338
+ }]);
339
+ }
340
+ optionComponent.setDisabled(option.disabled);
341
+ groupEdit.addItemComponent(optionComponent.getComponent());
342
+ });
343
+ return groupEdit.getComponent();
344
+ };
345
+
346
+ exports.initLikertScaleGroup = initLikertScaleGroup;
347
+ exports.initLikertScaleItem = initLikertScaleItem;
348
+ exports.initResponsiveBipolarLikertArray = initResponsiveBipolarLikertArray;
349
+ exports.initResponsiveSingleChoiceArray = initResponsiveSingleChoiceArray;
350
+ //# sourceMappingURL=likertGroupComponents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"likertGroupComponents.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,49 @@
1
+ import { ComponentProperties, Expression, ItemGroupComponent } from "survey-engine/data_types";
2
+ interface HeaderRow {
3
+ role: 'headerRow';
4
+ key: string;
5
+ displayCondition?: Expression;
6
+ disabled?: Expression;
7
+ cells: Array<{
8
+ role: 'text';
9
+ key: string;
10
+ content?: Map<string, string>;
11
+ description?: Map<string, string>;
12
+ }>;
13
+ }
14
+ interface RadioRow {
15
+ role: 'radioRow';
16
+ key: string;
17
+ displayCondition?: Expression;
18
+ disabled?: Expression;
19
+ cells: Array<{
20
+ role: 'label' | 'option';
21
+ key: string;
22
+ content?: Map<string, string>;
23
+ description?: Map<string, string>;
24
+ }>;
25
+ }
26
+ export interface ResponseRowCell {
27
+ role: 'label' | 'check' | 'input' | 'numberInput' | 'dropDownGroup';
28
+ key: string;
29
+ content?: Map<string, string>;
30
+ description?: Map<string, string>;
31
+ properties?: ComponentProperties;
32
+ items?: Array<{
33
+ role: 'option';
34
+ key: string;
35
+ content?: Map<string, string>;
36
+ disabled?: Expression;
37
+ displayCondition?: Expression;
38
+ }>;
39
+ }
40
+ interface ResponseRow {
41
+ role: 'responseRow';
42
+ key: string;
43
+ displayCondition?: Expression;
44
+ disabled?: Expression;
45
+ cells: Array<ResponseRowCell>;
46
+ }
47
+ declare type MatrixRow = HeaderRow | RadioRow | ResponseRow;
48
+ export declare const initMatrixQuestion: (key: string, rows: Array<MatrixRow>, order?: Expression | undefined) => ItemGroupComponent;
49
+ export {};
@@ -0,0 +1,100 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var surveys_surveyEditor_componentEditor = require('../survey-editor/component-editor.js');
6
+ var surveys_utils_simpleGenerators = require('../utils/simple-generators.js');
7
+ require('../types/item-properties.js');
8
+ require('../utils/randomKeyGenerator.js');
9
+
10
+ const initMatrixQuestion = (key, rows, order) => {
11
+ // init group
12
+ const groupEdit = new surveys_surveyEditor_componentEditor.ComponentEditor(undefined, {
13
+ key: key,
14
+ isGroup: true,
15
+ role: 'matrix',
16
+ });
17
+ groupEdit.setOrder(order ? order : {
18
+ name: 'sequential'
19
+ });
20
+ // init rows
21
+ rows.forEach(rowDef => {
22
+ const rowEditor = new surveys_surveyEditor_componentEditor.ComponentEditor(undefined, {
23
+ key: rowDef.key,
24
+ role: rowDef.role,
25
+ });
26
+ if (rowDef.displayCondition) {
27
+ rowEditor.setDisplayCondition(rowDef.displayCondition);
28
+ }
29
+ if (rowDef.disabled) {
30
+ rowEditor.setDisabled(rowDef.disabled);
31
+ }
32
+ switch (rowDef.role) {
33
+ case 'headerRow':
34
+ rowDef.cells.forEach(cell => {
35
+ const cellEditor = new surveys_surveyEditor_componentEditor.ComponentEditor(undefined, {
36
+ key: cell.key,
37
+ role: cell.role,
38
+ });
39
+ if (cell.content) {
40
+ cellEditor.setContent(surveys_utils_simpleGenerators.generateLocStrings(cell.content));
41
+ }
42
+ if (cell.description) {
43
+ cellEditor.setDescription(surveys_utils_simpleGenerators.generateLocStrings(cell.description));
44
+ }
45
+ rowEditor.addItemComponent(cellEditor.getComponent());
46
+ });
47
+ break;
48
+ case 'radioRow':
49
+ rowDef.cells.forEach(cell => {
50
+ const cellEditor = new surveys_surveyEditor_componentEditor.ComponentEditor(undefined, {
51
+ key: cell.key,
52
+ role: cell.role,
53
+ });
54
+ if (cell.content) {
55
+ cellEditor.setContent(surveys_utils_simpleGenerators.generateLocStrings(cell.content));
56
+ }
57
+ if (cell.description) {
58
+ cellEditor.setDescription(surveys_utils_simpleGenerators.generateLocStrings(cell.description));
59
+ }
60
+ rowEditor.addItemComponent(cellEditor.getComponent());
61
+ });
62
+ break;
63
+ case 'responseRow':
64
+ rowDef.cells.forEach(cell => {
65
+ const cellEditor = new surveys_surveyEditor_componentEditor.ComponentEditor(undefined, {
66
+ key: cell.key,
67
+ role: cell.role,
68
+ });
69
+ if (cell.content) {
70
+ cellEditor.setContent(surveys_utils_simpleGenerators.generateLocStrings(cell.content));
71
+ }
72
+ if (cell.description) {
73
+ cellEditor.setDescription(surveys_utils_simpleGenerators.generateLocStrings(cell.description));
74
+ }
75
+ cellEditor.setProperties(cell.properties);
76
+ if (cell.items) {
77
+ cell.items.forEach(opt => {
78
+ const cellOptionEditor = new surveys_surveyEditor_componentEditor.ComponentEditor(undefined, {
79
+ key: opt.key,
80
+ role: opt.role,
81
+ });
82
+ if (opt.content) {
83
+ cellOptionEditor.setContent(surveys_utils_simpleGenerators.generateLocStrings(opt.content));
84
+ }
85
+ cellOptionEditor.setDisabled(opt.disabled);
86
+ cellOptionEditor.setDisplayCondition(opt.displayCondition);
87
+ cellEditor.addItemComponent(cellOptionEditor.getComponent());
88
+ });
89
+ }
90
+ rowEditor.addItemComponent(cellEditor.getComponent());
91
+ });
92
+ break;
93
+ }
94
+ groupEdit.addItemComponent(rowEditor.getComponent());
95
+ });
96
+ return groupEdit.getComponent();
97
+ };
98
+
99
+ exports.initMatrixQuestion = initMatrixQuestion;
100
+ //# sourceMappingURL=matrixGroupComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matrixGroupComponent.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,7 @@
1
+ import { Expression, ItemComponent, ItemGroupComponent } from "survey-engine/data_types";
2
+ import { OptionDef } from "../types";
3
+ export declare const optionDefToItemComponent: (optionDef: OptionDef) => ItemComponent;
4
+ export declare const initSingleChoiceGroup: (key: string, optionItems: OptionDef[], order?: Expression | undefined) => ItemGroupComponent;
5
+ export declare const initMultipleChoiceGroup: (key: string, optionItems: OptionDef[], order?: Expression | undefined) => ItemGroupComponent;
6
+ export declare const initDropdownGroup: (key: string, optionItems: OptionDef[], order?: Expression | undefined, groupDisabled?: Expression | undefined, groupContent?: Map<string, string> | undefined, groupDescription?: Map<string, string> | undefined) => ItemGroupComponent;
7
+ export declare const initSliderCategoricalGroup: (key: string, optionItems: OptionDef[], order?: Expression | undefined, groupDisabled?: Expression | undefined) => ItemGroupComponent;
@@ -0,0 +1,129 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var surveys_surveyEditor_componentEditor = require('../survey-editor/component-editor.js');
6
+ var surveys_utils_simpleGenerators = require('../utils/simple-generators.js');
7
+ require('../types/item-properties.js');
8
+ require('../utils/randomKeyGenerator.js');
9
+
10
+ const optionDefToItemComponent = (optionDef) => {
11
+ const isGroup = optionDef.items && optionDef.items.length > 0;
12
+ const optEditor = new surveys_surveyEditor_componentEditor.ComponentEditor(undefined, {
13
+ key: optionDef.key,
14
+ role: optionDef.role,
15
+ isGroup: isGroup
16
+ });
17
+ if (isGroup) {
18
+ optEditor.setOrder({
19
+ name: 'sequential'
20
+ });
21
+ }
22
+ if (optionDef.content) {
23
+ optEditor.setContent(surveys_utils_simpleGenerators.generateLocStrings(optionDef.content));
24
+ }
25
+ if (optionDef.description) {
26
+ optEditor.setDescription(surveys_utils_simpleGenerators.generateLocStrings(optionDef.description));
27
+ }
28
+ switch (optionDef.role) {
29
+ case 'date':
30
+ optEditor.setDType('date');
31
+ break;
32
+ case 'numberInput':
33
+ optEditor.setDType('number');
34
+ break;
35
+ case 'timeInput':
36
+ optEditor.setDType('number');
37
+ break;
38
+ }
39
+ if (optionDef.displayCondition) {
40
+ optEditor.setDisplayCondition(optionDef.displayCondition);
41
+ }
42
+ if (optionDef.disabled) {
43
+ optEditor.setDisabled(optionDef.disabled);
44
+ }
45
+ if (optionDef.style) {
46
+ optEditor.setStyles(optionDef.style);
47
+ }
48
+ if (optionDef.optionProps) {
49
+ if (typeof (optionDef.optionProps.min) === 'number') {
50
+ optionDef.optionProps.min = { dtype: 'num', num: optionDef.optionProps.min };
51
+ }
52
+ if (typeof (optionDef.optionProps.max) === 'number') {
53
+ optionDef.optionProps.max = { dtype: 'num', num: optionDef.optionProps.max };
54
+ }
55
+ if (typeof (optionDef.optionProps.stepSize) === 'number') {
56
+ optionDef.optionProps.stepSize = { dtype: 'num', num: optionDef.optionProps.stepSize };
57
+ }
58
+ optEditor.setProperties(optionDef.optionProps);
59
+ }
60
+ if (optionDef.items) {
61
+ if (optionDef.role === 'text') {
62
+ optionDef.items.forEach((item, index) => {
63
+ const textItem = item;
64
+ optEditor.addItemComponent({
65
+ key: index.toFixed(),
66
+ role: 'text',
67
+ content: surveys_utils_simpleGenerators.generateLocStrings(textItem.content),
68
+ style: textItem.className ? [{ key: 'className', value: textItem.className }] : undefined
69
+ });
70
+ });
71
+ }
72
+ else {
73
+ optionDef.items.forEach((item) => {
74
+ const clozeItem = item;
75
+ const comp = optionDefToItemComponent(clozeItem);
76
+ optEditor.addItemComponent(comp);
77
+ });
78
+ }
79
+ }
80
+ return optEditor.getComponent();
81
+ };
82
+ const initResponseGroup = (type, key, optionItems, order, groupDisabled, groupContent, groupDescription) => {
83
+ // init group
84
+ const groupEdit = new surveys_surveyEditor_componentEditor.ComponentEditor(undefined, {
85
+ key: key,
86
+ isGroup: true,
87
+ role: type,
88
+ });
89
+ groupEdit.setOrder(order ? order : {
90
+ name: 'sequential'
91
+ });
92
+ if (groupDisabled) {
93
+ groupEdit.setDisabled(groupDisabled);
94
+ }
95
+ if (groupContent) {
96
+ groupEdit.setContent(groupContent);
97
+ }
98
+ if (groupDescription) {
99
+ groupEdit.setDescription(groupDescription);
100
+ }
101
+ // add option items
102
+ optionItems.forEach(optionDef => {
103
+ groupEdit.addItemComponent(optionDefToItemComponent(optionDef));
104
+ });
105
+ return groupEdit.getComponent();
106
+ };
107
+ const initSingleChoiceGroup = (key, optionItems, order) => {
108
+ // init group
109
+ return initResponseGroup('singleChoiceGroup', key, optionItems, order);
110
+ };
111
+ const initMultipleChoiceGroup = (key, optionItems, order) => {
112
+ // init group
113
+ return initResponseGroup('multipleChoiceGroup', key, optionItems, order);
114
+ };
115
+ const initDropdownGroup = (key, optionItems, order, groupDisabled, groupContent, groupDescription) => {
116
+ // init group
117
+ return initResponseGroup('dropDownGroup', key, optionItems, order, groupDisabled, groupContent ? surveys_utils_simpleGenerators.generateLocStrings(groupContent) : undefined, groupDescription ? surveys_utils_simpleGenerators.generateLocStrings(groupDescription) : undefined);
118
+ };
119
+ const initSliderCategoricalGroup = (key, optionItems, order, groupDisabled) => {
120
+ // init group
121
+ return initResponseGroup('sliderCategorical', key, optionItems, order, groupDisabled);
122
+ };
123
+
124
+ exports.initDropdownGroup = initDropdownGroup;
125
+ exports.initMultipleChoiceGroup = initMultipleChoiceGroup;
126
+ exports.initSingleChoiceGroup = initSingleChoiceGroup;
127
+ exports.initSliderCategoricalGroup = initSliderCategoricalGroup;
128
+ exports.optionDefToItemComponent = optionDefToItemComponent;
129
+ //# sourceMappingURL=optionGroupComponents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optionGroupComponents.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}