@mtna/web-form-angular 1.0.0 → 1.0.1

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.
@@ -1,18 +1,31 @@
1
1
  import { toLetters } from '@mtna/core-ts';
2
2
  import { isDataCubeItem, isSection } from '@mtna/web-form-ts';
3
3
  import { FormStep, FormStepGroup, isFormStepGroup } from '../../form-stepper/models';
4
- export function generateFormSteps(items) {
4
+ /**
5
+ * Builds up an array of FormSteps or FormStepGroups based on what is found in the provided form items. For most typical
6
+ * forms this will mean that a step is generated for every section that is found in the form. It is assumed that all
7
+ * inputs are held within sections and therefore the sections are the steps that should be monitored for completeness.
8
+ * However, in some circumstances, like very short forms, it may be the case that there are no sections and that all
9
+ * the items are set directly on the form itself. In these circumstances the allSteps parameter can be set to true and
10
+ * a step will be produced for each form item found.
11
+ *
12
+ * @param items the items of the form
13
+ * @param allSteps flag indicating that a form step should be produced for every form item
14
+ */
15
+ export function generateFormSteps(items, allSteps = false) {
5
16
  // Build up an array of steps based on the form items
6
17
  return items.reduce((newArray, item) => {
7
18
  // The number of non-group steps, used to number the top level steps
8
19
  const count = newArray.filter((step) => !isFormStepGroup(step)).length;
9
- if (isSection(item)) {
20
+ if (allSteps) {
21
+ newArray.push(new FormStep(count + 1, item.name || 'No Title', item.instanceId, !item.required));
22
+ }
23
+ else if (isSection(item)) {
10
24
  // If the item is a Section, add a step
11
25
  newArray.push(new FormStep(count + 1, item.title.value || 'No Title', item.instanceId, !item.required));
12
26
  }
13
27
  else if (isDataCubeItem(item)) {
14
- // If the item is a DataCubeItem, add a step
15
- // and add a group step for the sub-sections
28
+ // If the item is a DataCubeItem, add a step and add a group step for the sub-sections
16
29
  newArray.push(new FormStep(count + 1, item.title.value || '', item.instanceId, !item.required));
17
30
  const subSectionSteps = item.items
18
31
  .filter(isSection)
@@ -22,4 +35,4 @@ export function generateFormSteps(items) {
22
35
  return newArray;
23
36
  }, []);
24
37
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtZm9ybS1zdGVwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dlYi1mb3JtLWFuZ3VsYXIvc3JjL2xpYi9jb3JlL3V0aWxpdGllcy9nZW5lcmF0ZS1mb3JtLXN0ZXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFZLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRixNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBc0I7SUFDdEQscURBQXFEO0lBQ3JELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQXlDLEVBQUUsSUFBYyxFQUFFLEVBQUU7UUFDaEYsb0VBQW9FO1FBQ3BFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBRXZFLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ25CLHVDQUF1QztZQUN2QyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUN6RzthQUFNLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9CLDRDQUE0QztZQUM1Qyw0Q0FBNEM7WUFDNUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFFaEcsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUs7aUJBQy9CLE1BQU0sQ0FBQyxTQUFTLENBQUM7aUJBQ2pCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksUUFBUSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN0SSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksYUFBYSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDM0U7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9MZXR0ZXJzIH0gZnJvbSAnQG10bmEvY29yZS10cyc7XG5pbXBvcnQgeyBGb3JtSXRlbSwgaXNEYXRhQ3ViZUl0ZW0sIGlzU2VjdGlvbiB9IGZyb20gJ0BtdG5hL3dlYi1mb3JtLXRzJztcblxuaW1wb3J0IHsgRm9ybVN0ZXAsIEZvcm1TdGVwR3JvdXAsIGlzRm9ybVN0ZXBHcm91cCB9IGZyb20gJy4uLy4uL2Zvcm0tc3RlcHBlci9tb2RlbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVGb3JtU3RlcHMoaXRlbXM6IEFycmF5PEZvcm1JdGVtPik6IEFycmF5PEZvcm1TdGVwIHwgRm9ybVN0ZXBHcm91cD4ge1xuICAvLyBCdWlsZCB1cCBhbiBhcnJheSBvZiBzdGVwcyBiYXNlZCBvbiB0aGUgZm9ybSBpdGVtc1xuICByZXR1cm4gaXRlbXMucmVkdWNlKChuZXdBcnJheTogQXJyYXk8Rm9ybVN0ZXAgfCBGb3JtU3RlcEdyb3VwPiwgaXRlbTogRm9ybUl0ZW0pID0+IHtcbiAgICAvLyBUaGUgbnVtYmVyIG9mIG5vbi1ncm91cCBzdGVwcywgdXNlZCB0byBudW1iZXIgdGhlIHRvcCBsZXZlbCBzdGVwc1xuICAgIGNvbnN0IGNvdW50ID0gbmV3QXJyYXkuZmlsdGVyKChzdGVwKSA9PiAhaXNGb3JtU3RlcEdyb3VwKHN0ZXApKS5sZW5ndGg7XG5cbiAgICBpZiAoaXNTZWN0aW9uKGl0ZW0pKSB7XG4gICAgICAvLyBJZiB0aGUgaXRlbSBpcyBhIFNlY3Rpb24sIGFkZCBhIHN0ZXBcbiAgICAgIG5ld0FycmF5LnB1c2gobmV3IEZvcm1TdGVwKGNvdW50ICsgMSwgaXRlbS50aXRsZS52YWx1ZSB8fCAnTm8gVGl0bGUnLCBpdGVtLmluc3RhbmNlSWQsICFpdGVtLnJlcXVpcmVkKSk7XG4gICAgfSBlbHNlIGlmIChpc0RhdGFDdWJlSXRlbShpdGVtKSkge1xuICAgICAgLy8gSWYgdGhlIGl0ZW0gaXMgYSBEYXRhQ3ViZUl0ZW0sIGFkZCBhIHN0ZXBcbiAgICAgIC8vIGFuZCBhZGQgYSBncm91cCBzdGVwIGZvciB0aGUgc3ViLXNlY3Rpb25zXG4gICAgICBuZXdBcnJheS5wdXNoKG5ldyBGb3JtU3RlcChjb3VudCArIDEsIGl0ZW0udGl0bGUudmFsdWUgfHwgJycsIGl0ZW0uaW5zdGFuY2VJZCwgIWl0ZW0ucmVxdWlyZWQpKTtcblxuICAgICAgY29uc3Qgc3ViU2VjdGlvblN0ZXBzID0gaXRlbS5pdGVtc1xuICAgICAgICAuZmlsdGVyKGlzU2VjdGlvbilcbiAgICAgICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+IG5ldyBGb3JtU3RlcChgJHtjb3VudCArIDF9JHt0b0xldHRlcnMoaW5kZXggKyAxKX1gLCBpdGVtLnRpdGxlLnZhbHVlIHx8ICcnLCBpdGVtLmluc3RhbmNlSWQsICFpdGVtLnJlcXVpcmVkKSk7XG4gICAgICBuZXdBcnJheS5wdXNoKG5ldyBGb3JtU3RlcEdyb3VwKHN1YlNlY3Rpb25TdGVwcywgaXRlbS5pbnN0YW5jZUlkLCBmYWxzZSkpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdBcnJheTtcbiAgfSwgW10pO1xufVxuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtZm9ybS1zdGVwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dlYi1mb3JtLWFuZ3VsYXIvc3JjL2xpYi9jb3JlL3V0aWxpdGllcy9nZW5lcmF0ZS1mb3JtLXN0ZXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFZLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQXNCLEVBQUUsUUFBUSxHQUFHLEtBQUs7SUFDeEUscURBQXFEO0lBQ3JELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQXlDLEVBQUUsSUFBYyxFQUFFLEVBQUU7UUFDaEYsb0VBQW9FO1FBQ3BFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3ZFLElBQUksUUFBUSxFQUFFO1lBQ1osUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUNsRzthQUFNLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFCLHVDQUF1QztZQUN2QyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUN6RzthQUFNLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9CLHNGQUFzRjtZQUN0RixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUVoRyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSztpQkFDL0IsTUFBTSxDQUFDLFNBQVMsQ0FBQztpQkFDakIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3RJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxhQUFhLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUMzRTtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b0xldHRlcnMgfSBmcm9tICdAbXRuYS9jb3JlLXRzJztcbmltcG9ydCB7IEZvcm1JdGVtLCBpc0RhdGFDdWJlSXRlbSwgaXNTZWN0aW9uIH0gZnJvbSAnQG10bmEvd2ViLWZvcm0tdHMnO1xuXG5pbXBvcnQgeyBGb3JtU3RlcCwgRm9ybVN0ZXBHcm91cCwgaXNGb3JtU3RlcEdyb3VwIH0gZnJvbSAnLi4vLi4vZm9ybS1zdGVwcGVyL21vZGVscyc7XG5cbi8qKlxuICogQnVpbGRzIHVwIGFuIGFycmF5IG9mIEZvcm1TdGVwcyBvciBGb3JtU3RlcEdyb3VwcyBiYXNlZCBvbiB3aGF0IGlzIGZvdW5kIGluIHRoZSBwcm92aWRlZCBmb3JtIGl0ZW1zLiBGb3IgbW9zdCB0eXBpY2FsXG4gKiBmb3JtcyB0aGlzIHdpbGwgbWVhbiB0aGF0IGEgc3RlcCBpcyBnZW5lcmF0ZWQgZm9yIGV2ZXJ5IHNlY3Rpb24gdGhhdCBpcyBmb3VuZCBpbiB0aGUgZm9ybS4gSXQgaXMgYXNzdW1lZCB0aGF0IGFsbFxuICogaW5wdXRzIGFyZSBoZWxkIHdpdGhpbiBzZWN0aW9ucyBhbmQgdGhlcmVmb3JlIHRoZSBzZWN0aW9ucyBhcmUgdGhlIHN0ZXBzIHRoYXQgc2hvdWxkIGJlIG1vbml0b3JlZCBmb3IgY29tcGxldGVuZXNzLlxuICogSG93ZXZlciwgaW4gc29tZSBjaXJjdW1zdGFuY2VzLCBsaWtlIHZlcnkgc2hvcnQgZm9ybXMsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IHRoZXJlIGFyZSBubyBzZWN0aW9ucyBhbmQgdGhhdCBhbGxcbiAqIHRoZSBpdGVtcyBhcmUgc2V0IGRpcmVjdGx5IG9uIHRoZSBmb3JtIGl0c2VsZi4gSW4gdGhlc2UgY2lyY3Vtc3RhbmNlcyB0aGUgYWxsU3RlcHMgcGFyYW1ldGVyIGNhbiBiZSBzZXQgdG8gdHJ1ZSBhbmRcbiAqIGEgc3RlcCB3aWxsIGJlIHByb2R1Y2VkIGZvciBlYWNoIGZvcm0gaXRlbSBmb3VuZC5cbiAqXG4gKiBAcGFyYW0gaXRlbXMgdGhlIGl0ZW1zIG9mIHRoZSBmb3JtXG4gKiBAcGFyYW0gYWxsU3RlcHMgZmxhZyBpbmRpY2F0aW5nIHRoYXQgYSBmb3JtIHN0ZXAgc2hvdWxkIGJlIHByb2R1Y2VkIGZvciBldmVyeSBmb3JtIGl0ZW1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRm9ybVN0ZXBzKGl0ZW1zOiBBcnJheTxGb3JtSXRlbT4sIGFsbFN0ZXBzID0gZmFsc2UpOiBBcnJheTxGb3JtU3RlcCB8IEZvcm1TdGVwR3JvdXA+IHtcbiAgLy8gQnVpbGQgdXAgYW4gYXJyYXkgb2Ygc3RlcHMgYmFzZWQgb24gdGhlIGZvcm0gaXRlbXNcbiAgcmV0dXJuIGl0ZW1zLnJlZHVjZSgobmV3QXJyYXk6IEFycmF5PEZvcm1TdGVwIHwgRm9ybVN0ZXBHcm91cD4sIGl0ZW06IEZvcm1JdGVtKSA9PiB7XG4gICAgLy8gVGhlIG51bWJlciBvZiBub24tZ3JvdXAgc3RlcHMsIHVzZWQgdG8gbnVtYmVyIHRoZSB0b3AgbGV2ZWwgc3RlcHNcbiAgICBjb25zdCBjb3VudCA9IG5ld0FycmF5LmZpbHRlcigoc3RlcCkgPT4gIWlzRm9ybVN0ZXBHcm91cChzdGVwKSkubGVuZ3RoO1xuICAgIGlmIChhbGxTdGVwcykge1xuICAgICAgbmV3QXJyYXkucHVzaChuZXcgRm9ybVN0ZXAoY291bnQgKyAxLCBpdGVtLm5hbWUgfHwgJ05vIFRpdGxlJywgaXRlbS5pbnN0YW5jZUlkLCAhaXRlbS5yZXF1aXJlZCkpO1xuICAgIH0gZWxzZSBpZiAoaXNTZWN0aW9uKGl0ZW0pKSB7XG4gICAgICAvLyBJZiB0aGUgaXRlbSBpcyBhIFNlY3Rpb24sIGFkZCBhIHN0ZXBcbiAgICAgIG5ld0FycmF5LnB1c2gobmV3IEZvcm1TdGVwKGNvdW50ICsgMSwgaXRlbS50aXRsZS52YWx1ZSB8fCAnTm8gVGl0bGUnLCBpdGVtLmluc3RhbmNlSWQsICFpdGVtLnJlcXVpcmVkKSk7XG4gICAgfSBlbHNlIGlmIChpc0RhdGFDdWJlSXRlbShpdGVtKSkge1xuICAgICAgLy8gSWYgdGhlIGl0ZW0gaXMgYSBEYXRhQ3ViZUl0ZW0sIGFkZCBhIHN0ZXAgYW5kIGFkZCBhIGdyb3VwIHN0ZXAgZm9yIHRoZSBzdWItc2VjdGlvbnNcbiAgICAgIG5ld0FycmF5LnB1c2gobmV3IEZvcm1TdGVwKGNvdW50ICsgMSwgaXRlbS50aXRsZS52YWx1ZSB8fCAnJywgaXRlbS5pbnN0YW5jZUlkLCAhaXRlbS5yZXF1aXJlZCkpO1xuXG4gICAgICBjb25zdCBzdWJTZWN0aW9uU3RlcHMgPSBpdGVtLml0ZW1zXG4gICAgICAgIC5maWx0ZXIoaXNTZWN0aW9uKVxuICAgICAgICAubWFwKChpdGVtLCBpbmRleCkgPT4gbmV3IEZvcm1TdGVwKGAke2NvdW50ICsgMX0ke3RvTGV0dGVycyhpbmRleCArIDEpfWAsIGl0ZW0udGl0bGUudmFsdWUgfHwgJycsIGl0ZW0uaW5zdGFuY2VJZCwgIWl0ZW0ucmVxdWlyZWQpKTtcbiAgICAgIG5ld0FycmF5LnB1c2gobmV3IEZvcm1TdGVwR3JvdXAoc3ViU2VjdGlvblN0ZXBzLCBpdGVtLmluc3RhbmNlSWQsIGZhbHNlKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0FycmF5O1xuICB9LCBbXSk7XG59XG4iXX0=
@@ -1312,18 +1312,31 @@ function flattenSteps(steps) {
1312
1312
  return steps.reduce((a, b) => a.concat(isFormStepGroup(b) ? b.steps : b), new Array());
1313
1313
  }
1314
1314
 
1315
- function generateFormSteps(items) {
1315
+ /**
1316
+ * Builds up an array of FormSteps or FormStepGroups based on what is found in the provided form items. For most typical
1317
+ * forms this will mean that a step is generated for every section that is found in the form. It is assumed that all
1318
+ * inputs are held within sections and therefore the sections are the steps that should be monitored for completeness.
1319
+ * However, in some circumstances, like very short forms, it may be the case that there are no sections and that all
1320
+ * the items are set directly on the form itself. In these circumstances the allSteps parameter can be set to true and
1321
+ * a step will be produced for each form item found.
1322
+ *
1323
+ * @param items the items of the form
1324
+ * @param allSteps flag indicating that a form step should be produced for every form item
1325
+ */
1326
+ function generateFormSteps(items, allSteps = false) {
1316
1327
  // Build up an array of steps based on the form items
1317
1328
  return items.reduce((newArray, item) => {
1318
1329
  // The number of non-group steps, used to number the top level steps
1319
1330
  const count = newArray.filter((step) => !isFormStepGroup(step)).length;
1320
- if (isSection(item)) {
1331
+ if (allSteps) {
1332
+ newArray.push(new FormStep(count + 1, item.name || 'No Title', item.instanceId, !item.required));
1333
+ }
1334
+ else if (isSection(item)) {
1321
1335
  // If the item is a Section, add a step
1322
1336
  newArray.push(new FormStep(count + 1, item.title.value || 'No Title', item.instanceId, !item.required));
1323
1337
  }
1324
1338
  else if (isDataCubeItem(item)) {
1325
- // If the item is a DataCubeItem, add a step
1326
- // and add a group step for the sub-sections
1339
+ // If the item is a DataCubeItem, add a step and add a group step for the sub-sections
1327
1340
  newArray.push(new FormStep(count + 1, item.title.value || '', item.instanceId, !item.required));
1328
1341
  const subSectionSteps = item.items
1329
1342
  .filter(isSection)