@mtna/web-form-angular 0.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.
Files changed (170) hide show
  1. package/_index.scss +25 -0
  2. package/bundles/mtna-web-form-angular.umd.js +4982 -0
  3. package/bundles/mtna-web-form-angular.umd.js.map +1 -0
  4. package/esm2015/lib/core/animations.js +8 -0
  5. package/esm2015/lib/core/api-config.js +3 -0
  6. package/esm2015/lib/core/index.js +7 -0
  7. package/esm2015/lib/core/pipes/coerce-date-item.pipe.js +23 -0
  8. package/esm2015/lib/core/pipes/coerce-form-group.pipe.js +35 -0
  9. package/esm2015/lib/core/pipes/date-quarter.pipe.js +43 -0
  10. package/esm2015/lib/core/pipes/get-auto-complete.pipe.js +42 -0
  11. package/esm2015/lib/core/pipes/get-available-quarters.pipe.js +29 -0
  12. package/esm2015/lib/core/pipes/get-form-control-error.pipe.js +20 -0
  13. package/esm2015/lib/core/pipes/get-list-icon.pipe.js +53 -0
  14. package/esm2015/lib/core/pipes/get-object-type.pipe.js +17 -0
  15. package/esm2015/lib/core/pipes/get-selected-option.pipe.js +20 -0
  16. package/esm2015/lib/core/pipes/index.js +71 -0
  17. package/esm2015/lib/core/pipes/items-with-value.pipe.js +30 -0
  18. package/esm2015/lib/core/pipes/sanitize-html.pipe.js +23 -0
  19. package/esm2015/lib/core/services/api.service.js +67 -0
  20. package/esm2015/lib/core/services/form-manager.service.js +465 -0
  21. package/esm2015/lib/core/services/index.js +5 -0
  22. package/esm2015/lib/core/services/ng-form.service.js +150 -0
  23. package/esm2015/lib/core/services/ui.service.js +333 -0
  24. package/esm2015/lib/core/utilities/find-form-control.js +29 -0
  25. package/esm2015/lib/core/utilities/find-form-item.js +25 -0
  26. package/esm2015/lib/core/utilities/flatten-steps.js +10 -0
  27. package/esm2015/lib/core/utilities/generate-form-steps.js +25 -0
  28. package/esm2015/lib/core/utilities/index.js +9 -0
  29. package/esm2015/lib/core/utilities/is-form-group.js +6 -0
  30. package/esm2015/lib/core/utilities/serializer-util.js +358 -0
  31. package/esm2015/lib/core/utilities/update-step-status.js +38 -0
  32. package/esm2015/lib/core/validators/index.js +3 -0
  33. package/esm2015/lib/core/validators/instant-validation-result-error-state-matcher.js +23 -0
  34. package/esm2015/lib/core/validators/validation-result-validator.js +19 -0
  35. package/esm2015/lib/file-upload/file-upload.component.js +66 -0
  36. package/esm2015/lib/file-upload/index.js +2 -0
  37. package/esm2015/lib/form/base-form-item.model.js +2 -0
  38. package/esm2015/lib/form/form-disabler.component.js +38 -0
  39. package/esm2015/lib/form/form-item.directive.js +22 -0
  40. package/esm2015/lib/form/form.component.js +250 -0
  41. package/esm2015/lib/form/form.module.js +214 -0
  42. package/esm2015/lib/form/index.js +5 -0
  43. package/esm2015/lib/form/white-list.model.js +11 -0
  44. package/esm2015/lib/form-item-controls/base-form-item-control.directive.js +58 -0
  45. package/esm2015/lib/form-item-controls/base-parent-item-control.directive.js +42 -0
  46. package/esm2015/lib/form-item-controls/base-single-selection-parent.directive.js +53 -0
  47. package/esm2015/lib/form-item-controls/date-range.component.js +84 -0
  48. package/esm2015/lib/form-item-controls/date.component.js +134 -0
  49. package/esm2015/lib/form-item-controls/dropdown.component.js +109 -0
  50. package/esm2015/lib/form-item-controls/index.js +8 -0
  51. package/esm2015/lib/form-item-controls/input.component.js +149 -0
  52. package/esm2015/lib/form-item-controls/year-quarter-range.component.js +75 -0
  53. package/esm2015/lib/form-item-controls/year-quarter.component.js +228 -0
  54. package/esm2015/lib/form-stepper/form-step-group.component.js +95 -0
  55. package/esm2015/lib/form-stepper/form-step-group.pipe.js +20 -0
  56. package/esm2015/lib/form-stepper/form-step.component.js +110 -0
  57. package/esm2015/lib/form-stepper/form-step.util.js +28 -0
  58. package/esm2015/lib/form-stepper/form-stepper.component.js +115 -0
  59. package/esm2015/lib/form-stepper/form-stepper.module.js +53 -0
  60. package/esm2015/lib/form-stepper/index.js +8 -0
  61. package/esm2015/lib/form-stepper/models/base-form-step.model.js +6 -0
  62. package/esm2015/lib/form-stepper/models/form-step-group.model.js +13 -0
  63. package/esm2015/lib/form-stepper/models/form-step.model.js +12 -0
  64. package/esm2015/lib/form-stepper/models/index.js +4 -0
  65. package/esm2015/lib/groups/form-item-dialog-data.model.js +14 -0
  66. package/esm2015/lib/groups/group-components.js +646 -0
  67. package/esm2015/lib/groups/index.js +3 -0
  68. package/esm2015/lib/groups/repeatable-item.component.js +23 -0
  69. package/esm2015/lib/item-header/index.js +2 -0
  70. package/esm2015/lib/item-header/item-header.component.js +108 -0
  71. package/esm2015/lib/static-form-items/index.js +3 -0
  72. package/esm2015/lib/static-form-items/ordered-list-item.js +50 -0
  73. package/esm2015/lib/static-form-items/unordered-list-item.js +52 -0
  74. package/esm2015/lib/step-card/index.js +2 -0
  75. package/esm2015/lib/step-card/step-card.component.js +53 -0
  76. package/esm2015/mtna-web-form-angular.js +5 -0
  77. package/esm2015/public-api.js +10 -0
  78. package/fesm2015/mtna-web-form-angular.js +4614 -0
  79. package/fesm2015/mtna-web-form-angular.js.map +1 -0
  80. package/lib/_index.scss +25 -0
  81. package/lib/core/_all-color.scss +25 -0
  82. package/lib/core/_all-theme.scss +28 -0
  83. package/lib/core/_all-typography.scss +25 -0
  84. package/lib/core/_core-theme.scss +43 -0
  85. package/lib/core/animations.d.ts +2 -0
  86. package/lib/core/api-config.d.ts +5 -0
  87. package/lib/core/index.d.ts +6 -0
  88. package/lib/core/pipes/coerce-date-item.pipe.d.ts +11 -0
  89. package/lib/core/pipes/coerce-form-group.pipe.d.ts +23 -0
  90. package/lib/core/pipes/date-quarter.pipe.d.ts +7 -0
  91. package/lib/core/pipes/get-auto-complete.pipe.d.ts +7 -0
  92. package/lib/core/pipes/get-available-quarters.pipe.d.ts +8 -0
  93. package/lib/core/pipes/get-form-control-error.pipe.d.ts +14 -0
  94. package/lib/core/pipes/get-list-icon.pipe.d.ts +7 -0
  95. package/lib/core/pipes/get-object-type.pipe.d.ts +7 -0
  96. package/lib/core/pipes/get-selected-option.pipe.d.ts +8 -0
  97. package/lib/core/pipes/index.d.ts +28 -0
  98. package/lib/core/pipes/items-with-value.pipe.d.ts +13 -0
  99. package/lib/core/pipes/sanitize-html.pipe.d.ts +10 -0
  100. package/lib/core/services/api.service.d.ts +41 -0
  101. package/lib/core/services/form-manager.service.d.ts +184 -0
  102. package/lib/core/services/index.d.ts +4 -0
  103. package/lib/core/services/ng-form.service.d.ts +76 -0
  104. package/lib/core/services/ui.service.d.ts +123 -0
  105. package/lib/core/utilities/find-form-control.d.ts +11 -0
  106. package/lib/core/utilities/find-form-item.d.ts +10 -0
  107. package/lib/core/utilities/flatten-steps.d.ts +7 -0
  108. package/lib/core/utilities/generate-form-steps.d.ts +3 -0
  109. package/lib/core/utilities/index.d.ts +8 -0
  110. package/lib/core/utilities/is-form-group.d.ts +3 -0
  111. package/lib/core/utilities/serializer-util.d.ts +81 -0
  112. package/lib/core/utilities/update-step-status.d.ts +14 -0
  113. package/lib/core/validators/index.d.ts +2 -0
  114. package/lib/core/validators/instant-validation-result-error-state-matcher.d.ts +13 -0
  115. package/lib/core/validators/validation-result-validator.d.ts +12 -0
  116. package/lib/file-upload/file-upload.component.d.ts +23 -0
  117. package/lib/file-upload/index.d.ts +1 -0
  118. package/lib/form/base-form-item.model.d.ts +15 -0
  119. package/lib/form/form-disabler.component.d.ts +6 -0
  120. package/lib/form/form-item.directive.d.ts +13 -0
  121. package/lib/form/form.component.d.ts +89 -0
  122. package/lib/form/form.module.d.ts +52 -0
  123. package/lib/form/index.d.ts +4 -0
  124. package/lib/form/white-list.model.d.ts +6 -0
  125. package/lib/form-item-controls/_date-item-theme.scss +29 -0
  126. package/lib/form-item-controls/_form-control-theme.scss +28 -0
  127. package/lib/form-item-controls/_year-quarter-item-theme.scss +28 -0
  128. package/lib/form-item-controls/base-form-item-control.directive.d.ts +26 -0
  129. package/lib/form-item-controls/base-parent-item-control.directive.d.ts +19 -0
  130. package/lib/form-item-controls/base-single-selection-parent.directive.d.ts +26 -0
  131. package/lib/form-item-controls/date-range.component.d.ts +12 -0
  132. package/lib/form-item-controls/date.component.d.ts +24 -0
  133. package/lib/form-item-controls/dropdown.component.d.ts +9 -0
  134. package/lib/form-item-controls/index.d.ts +7 -0
  135. package/lib/form-item-controls/input.component.d.ts +14 -0
  136. package/lib/form-item-controls/year-quarter-range.component.d.ts +9 -0
  137. package/lib/form-item-controls/year-quarter.component.d.ts +33 -0
  138. package/lib/form-stepper/_form-step-group-theme.scss +43 -0
  139. package/lib/form-stepper/_form-stepper-theme.scss +72 -0
  140. package/lib/form-stepper/form-step-group.component.d.ts +23 -0
  141. package/lib/form-stepper/form-step-group.pipe.d.ts +11 -0
  142. package/lib/form-stepper/form-step.component.d.ts +27 -0
  143. package/lib/form-stepper/form-step.util.d.ts +27 -0
  144. package/lib/form-stepper/form-stepper.component.d.ts +35 -0
  145. package/lib/form-stepper/form-stepper.module.d.ts +18 -0
  146. package/lib/form-stepper/index.d.ts +7 -0
  147. package/lib/form-stepper/models/base-form-step.model.d.ts +4 -0
  148. package/lib/form-stepper/models/form-step-group.model.d.ts +8 -0
  149. package/lib/form-stepper/models/form-step.model.d.ts +11 -0
  150. package/lib/form-stepper/models/index.d.ts +3 -0
  151. package/lib/groups/_checkbox-theme.scss +62 -0
  152. package/lib/groups/_form-group-theme.scss +32 -0
  153. package/lib/groups/_multiple-choice-theme.scss +65 -0
  154. package/lib/groups/_repeatable-item-theme.scss +28 -0
  155. package/lib/groups/form-item-dialog-data.model.d.ts +13 -0
  156. package/lib/groups/group-components.d.ts +221 -0
  157. package/lib/groups/index.d.ts +2 -0
  158. package/lib/groups/repeatable-item.component.d.ts +5 -0
  159. package/lib/item-header/_item-header-theme.scss +28 -0
  160. package/lib/item-header/index.d.ts +1 -0
  161. package/lib/item-header/item-header.component.d.ts +35 -0
  162. package/lib/static-form-items/index.d.ts +2 -0
  163. package/lib/static-form-items/ordered-list-item.d.ts +11 -0
  164. package/lib/static-form-items/unordered-list-item.d.ts +11 -0
  165. package/lib/step-card/_step-card-theme.scss +42 -0
  166. package/lib/step-card/index.d.ts +1 -0
  167. package/lib/step-card/step-card.component.d.ts +21 -0
  168. package/mtna-web-form-angular.d.ts +5 -0
  169. package/package.json +43 -0
  170. package/public-api.d.ts +9 -0
@@ -0,0 +1,19 @@
1
+ import { AbstractControl, FormGroup } from '@angular/forms';
2
+ import { ValueItem } from '@mtna/web-form-ts';
3
+ import { BaseFormItemControl } from './base-form-item-control.directive';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Base control class for a FormItem with nested FormItems.
7
+ * If a FormItem contains an 'optionItemMap', its component class should extend this class.
8
+ */
9
+ export declare abstract class BaseParentItemControl<I extends ValueItem<unknown>, C extends AbstractControl> extends BaseFormItemControl<I, C> {
10
+ /** FormControl representing this item's value.
11
+ * If this item has items in its 'optionItemMap', this control is nested inside a FormGroup wrapper */
12
+ get control(): C | null | undefined;
13
+ set control(control: C | null | undefined);
14
+ parentIds: string[];
15
+ /** FormGroup wrapping this item's FormControl, & FormControls for any nested form items */
16
+ controlWrapper: FormGroup | undefined;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseParentItemControl<any, any>, never>;
18
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BaseParentItemControl<any, any>, never, never, { "control": "control"; "parentIds": "parentIds"; }, {}, never>;
19
+ }
@@ -0,0 +1,26 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { MatRadioChange } from '@angular/material/radio';
4
+ import { MatSelectChange } from '@angular/material/select';
5
+ import { DropdownItem, FormOptionSelector, MultipleChoiceItem, StringOption } from '@mtna/web-form-ts';
6
+ import { MtnaWfUIService } from '../core/services/ui.service';
7
+ import { BaseParentItemControl } from './base-parent-item-control.directive';
8
+ import * as i0 from "@angular/core";
9
+ export declare abstract class BaseSingleSelectionParent<I extends DropdownItem | MultipleChoiceItem> extends BaseParentItemControl<I, FormControl> implements OnInit {
10
+ protected uiService: MtnaWfUIService;
11
+ /**
12
+ * `MatRadioChange` and `MatSelectChange` output only the newly selected option.
13
+ * We use this to toggle items of a previously selected option.
14
+ */
15
+ protected selectedOption: FormOptionSelector<StringOption> | undefined;
16
+ constructor(uiService: MtnaWfUIService);
17
+ ngOnInit(): void;
18
+ /**
19
+ * Toggles the 'selected' value of the previous & newly selected options,
20
+ * then calls toggleFormItems to change their enabled/disabled items
21
+ * @param change MatRadioChange from the radio group
22
+ */
23
+ selectionChange(change: MatRadioChange | MatSelectChange): void;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseSingleSelectionParent<any>, never>;
25
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BaseSingleSelectionParent<any>, never, never, {}, {}, never>;
26
+ }
@@ -0,0 +1,12 @@
1
+ import { FormGroup } from '@angular/forms';
2
+ import { DateItem, OffsetDateRangeItem } from '@mtna/web-form-ts';
3
+ import { BaseFormItemControl } from './base-form-item-control.directive';
4
+ import * as i0 from "@angular/core";
5
+ export declare class MtnaWfDateRangeComponent extends BaseFormItemControl<OffsetDateRangeItem, FormGroup> {
6
+ get item(): OffsetDateRangeItem;
7
+ set item(item: OffsetDateRangeItem);
8
+ _startItem: DateItem;
9
+ _endItem: DateItem;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<MtnaWfDateRangeComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<MtnaWfDateRangeComponent, "mtna-wf-date-range", never, {}, {}, never, never>;
12
+ }
@@ -0,0 +1,24 @@
1
+ import { AfterViewInit } from '@angular/core';
2
+ import { MatDatepicker } from '@angular/material/datepicker';
3
+ import { MtnaLogger } from '@mtna/core-angular';
4
+ import { DateItem, DateRange } from '@mtna/web-form-ts';
5
+ import { BaseFormItemControl } from './base-form-item-control.directive';
6
+ import * as i0 from "@angular/core";
7
+ export declare class MtnaWfDateComponent extends BaseFormItemControl<DateItem> implements AfterViewInit {
8
+ static dateFormItemComponentInstances: number;
9
+ dateItemClass: boolean;
10
+ get format(): string | null | undefined;
11
+ set format(f: string | null | undefined);
12
+ private _format;
13
+ rangeLimits: DateRange<Date | null> | null | undefined;
14
+ picker: MatDatepicker<Date> | undefined;
15
+ constructor(logger: MtnaLogger);
16
+ ngAfterViewInit(): void;
17
+ /**
18
+ * Manually change the parse and display formats of the date picker.
19
+ * @see https://github.com/angular/components/issues/8355#issuecomment-376783293
20
+ */
21
+ private configureDatePickerFormatter;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<MtnaWfDateComponent, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<MtnaWfDateComponent, "mtna-wf-date-item", never, { "format": "format"; "rangeLimits": "rangeLimits"; }, {}, never, never>;
24
+ }
@@ -0,0 +1,9 @@
1
+ import { DropdownItem } from '@mtna/web-form-ts';
2
+ import { MtnaWfUIService } from '../core/services/ui.service';
3
+ import { BaseSingleSelectionParent } from './base-single-selection-parent.directive';
4
+ import * as i0 from "@angular/core";
5
+ export declare class MtnaWfDropdownComponent extends BaseSingleSelectionParent<DropdownItem> {
6
+ constructor(uiService: MtnaWfUIService);
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<MtnaWfDropdownComponent, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<MtnaWfDropdownComponent, "mtna-wf-dropdown-item", never, {}, {}, never, never>;
9
+ }
@@ -0,0 +1,7 @@
1
+ export * from './base-form-item-control.directive';
2
+ export * from './date.component';
3
+ export * from './date-range.component';
4
+ export * from './dropdown.component';
5
+ export * from './input.component';
6
+ export * from './year-quarter.component';
7
+ export * from './year-quarter-range.component';
@@ -0,0 +1,14 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { DecimalAnswerItem, ParagraphAnswerItem, ShortAnswerItem, WholeNumberAnswerItem } from '@mtna/web-form-ts';
4
+ import { BaseFormItemControl } from './base-form-item-control.directive';
5
+ import * as i0 from "@angular/core";
6
+ export declare class MtnaWfInputComponent<I extends DecimalAnswerItem | ParagraphAnswerItem | ShortAnswerItem | WholeNumberAnswerItem> extends BaseFormItemControl<I, FormControl> {
7
+ protected elementRef: ElementRef;
8
+ readonly isParagraph: boolean;
9
+ readonly isNumberInput: boolean;
10
+ constructor(elementRef: ElementRef);
11
+ private _hasHostAttributes;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<MtnaWfInputComponent<any>, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<MtnaWfInputComponent<any>, "mtna-wf-input-item[mtnaWfDecimalItem], mtna-wf-input-item[mtnaWfParagraphItem], mtna-wf-input-item[mtnaWfShortAnswerItem], mtna-wf-input-item[mtnaWfWholeNumberItem],", never, {}, {}, never, never>;
14
+ }
@@ -0,0 +1,9 @@
1
+ import { FormGroup } from '@angular/forms';
2
+ import { YearQuarterRangeItem } from '@mtna/web-form-ts';
3
+ import { BaseFormItemControl } from './base-form-item-control.directive';
4
+ import * as i0 from "@angular/core";
5
+ export declare class MtnaWfYearQuarterRangeComponent extends BaseFormItemControl<YearQuarterRangeItem, FormGroup> {
6
+ yearQuarterRangeClass: boolean;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<MtnaWfYearQuarterRangeComponent, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<MtnaWfYearQuarterRangeComponent, "mtna-wf-year-quarter-range-item", never, {}, {}, never, never>;
9
+ }
@@ -0,0 +1,33 @@
1
+ import { AfterViewInit, InjectionToken, OnDestroy, OnInit } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { DateRange, YearQuarter, YearQuarterRangeItem } from '@mtna/web-form-ts';
4
+ import { BaseFormItemControl } from './base-form-item-control.directive';
5
+ import * as i0 from "@angular/core";
6
+ export declare const MTNA_WF_DEFAULT_YEAR_RANGE: InjectionToken<MtnaWfDefaultYearRange>;
7
+ export interface MtnaWfDefaultYearRange {
8
+ numPastYears: number;
9
+ numFutureYears: number;
10
+ }
11
+ export declare class MtnaWfYearQuarterComponent extends BaseFormItemControl<YearQuarterRangeItem> implements AfterViewInit, OnDestroy, OnInit {
12
+ yearQuarterItemClass: boolean;
13
+ rangeLimits: DateRange<YearQuarter> | null | undefined;
14
+ _quarterControl: FormControl;
15
+ _yearControl: FormControl;
16
+ _yearSelection: number[];
17
+ private destroyObs;
18
+ private defaultYearRange;
19
+ constructor(defaultYearRange?: MtnaWfDefaultYearRange);
20
+ ngAfterViewInit(): void;
21
+ ngOnDestroy(): void;
22
+ ngOnInit(): void;
23
+ /**
24
+ * Sets the quarter value to `null` if the year & quarter is out of bounds of the range limits.
25
+ * Otherwise, returns original value
26
+ *
27
+ * @param value `[number, number]` The selected [year, quarter] value
28
+ * @returns `[number, number]` The original [year, quarter] value OR [year, null]
29
+ */
30
+ private withinRangeLimits;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<MtnaWfYearQuarterComponent, [{ optional: true; }]>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<MtnaWfYearQuarterComponent, "mtna-wf-year-quarter-item", never, { "rangeLimits": "rangeLimits"; }, {}, never, never>;
33
+ }
@@ -0,0 +1,43 @@
1
+ @use 'sass:map';
2
+ @use '~@angular/material' as mat;
3
+
4
+ @mixin color($theme) {
5
+ $config: mat.get-color-config($theme);
6
+ $primary: map.get($config, primary);
7
+ $accent: map.get($config, accent);
8
+ $foreground: map.get($config, foreground);
9
+
10
+ mtna-wf-step-group {
11
+ &.mat-primary {
12
+ @include _form-step-group-palette($primary, $foreground);
13
+ }
14
+ &.mat-accent {
15
+ @include _form-step-group-palette($accent, $foreground);
16
+ }
17
+ }
18
+ }
19
+
20
+ @mixin typography($theme) {
21
+ }
22
+
23
+ @mixin theme($theme) {
24
+ $config: mat.get-color-config($theme);
25
+ @if $config != null {
26
+ @include color($theme);
27
+ }
28
+
29
+ $typography-config: mat.get-typography-config($theme);
30
+ @if $typography-config != null {
31
+ @include typography($theme);
32
+ }
33
+ }
34
+
35
+ @mixin _form-step-group-palette($mainPalette, $foreground) {
36
+ border-color: mat.get-color-from-palette($mainPalette, default);
37
+ .collapse-button::after {
38
+ background-color: mat.get-color-from-palette($mainPalette, 50);
39
+ }
40
+ .show-more {
41
+ color: mat.get-color-from-palette($foreground, secondary-text);
42
+ }
43
+ }
@@ -0,0 +1,72 @@
1
+ @use 'sass:map';
2
+ @use '~@angular/material' as mat;
3
+
4
+ @mixin color($theme) {
5
+ $config: mat.get-color-config($theme);
6
+ $primary: map.get($config, primary);
7
+ $accent: map.get($config, accent);
8
+ $foreground: map.get($config, foreground);
9
+
10
+ mtna-wf-stepper {
11
+ border-right-color: mat.get-color-from-palette($foreground, divider);
12
+ &.mat-primary {
13
+ @include _form-stepper-palette($primary, $accent, $foreground);
14
+ }
15
+ &.mat-accent {
16
+ @include _form-stepper-palette($accent, $primary, $foreground);
17
+ }
18
+ }
19
+ mtna-wf-step {
20
+ &.mat-primary {
21
+ @include _form-step-palette($primary, $foreground);
22
+ }
23
+ &.mat-accent {
24
+ @include _form-step-palette($accent, $foreground);
25
+ }
26
+ }
27
+ }
28
+
29
+ @mixin typography($theme) {
30
+ }
31
+
32
+ @mixin theme($theme) {
33
+ $config: mat.get-color-config($theme);
34
+ @if $config != null {
35
+ @include color($theme);
36
+ }
37
+
38
+ $typography-config: mat.get-typography-config($theme);
39
+ @if $typography-config != null {
40
+ @include typography($theme);
41
+ }
42
+ }
43
+
44
+ @mixin _form-stepper-palette($mainPalette, $secondaryPalette, $foreground) {
45
+ background-color: mat.get-color-from-palette($mainPalette, 50);
46
+ mtna-wf-step.clickable li {
47
+ &:hover {
48
+ background-color: mat.get-color-from-palette($mainPalette, default, 0.12);
49
+ }
50
+ &::after {
51
+ background-color: mat.get-color-from-palette($secondaryPalette, default);
52
+ }
53
+ &.active-step {
54
+ background-color: mat.get-color-from-palette($mainPalette, default, 0.04);
55
+ }
56
+ }
57
+ mtna-wf-step.disabled li {
58
+ color: mat.get-color-from-palette($foreground, disabled-text);
59
+ .step-status {
60
+ color: mat.get-color-from-palette($foreground, disabled-text);
61
+ }
62
+ }
63
+ mat-divider {
64
+ background-color: mat.get-color-from-palette($mainPalette, default);
65
+ }
66
+ }
67
+
68
+ @mixin _form-step-palette($mainPalette, $foreground) {
69
+ li .step-status {
70
+ color: mat.get-color-from-palette($foreground, secondary-text);
71
+ }
72
+ }
@@ -0,0 +1,23 @@
1
+ import { ElementRef, EventEmitter } from '@angular/core';
2
+ import { CanColor } from '@angular/material/core';
3
+ import { FormStep } from './models/index';
4
+ import * as i0 from "@angular/core";
5
+ declare const _FormStepMixinBase: import("@angular/material/core/common-behaviors/constructor").Constructor<CanColor> & import("@angular/material/core/common-behaviors/constructor").AbstractConstructor<CanColor> & {
6
+ new (_elementRef: ElementRef): {
7
+ _elementRef: ElementRef;
8
+ };
9
+ };
10
+ export declare class MtnaWfFormStepGroupComponent extends _FormStepMixinBase implements CanColor {
11
+ /** Whether all but the first step is hidden*/
12
+ collapsed: boolean;
13
+ incompleteIcon: string | null | undefined;
14
+ /** Steps to be displayed */
15
+ get steps(): FormStep[];
16
+ set steps(steps: FormStep[]);
17
+ private _steps;
18
+ selected: EventEmitter<FormStep>;
19
+ constructor(elementRef: ElementRef);
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<MtnaWfFormStepGroupComponent, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<MtnaWfFormStepGroupComponent, "mtna-wf-step-group", never, { "color": "color"; "collapsed": "collapsed"; "incompleteIcon": "incompleteIcon"; "steps": "steps"; }, { "selected": "selected"; }, never, never>;
22
+ }
23
+ export {};
@@ -0,0 +1,11 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import { FormStep, FormStepGroup } from './models/index';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Pipe to determine if a FormStep is a FormStepGroup or a single step.
6
+ */
7
+ export declare class MtnaWfFormStepGroupPipe implements PipeTransform {
8
+ transform(step: FormStep | FormStepGroup): step is FormStepGroup;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<MtnaWfFormStepGroupPipe, never>;
10
+ static ɵpipe: i0.ɵɵPipeDeclaration<MtnaWfFormStepGroupPipe, "mtnaWfStepGroupPipe">;
11
+ }
@@ -0,0 +1,27 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { CanColor } from '@angular/material/core';
3
+ import { FormStep } from './models/index';
4
+ import * as i0 from "@angular/core";
5
+ declare const _FormStepMixinBase: import("@angular/material/core/common-behaviors/constructor").Constructor<CanColor> & import("@angular/material/core/common-behaviors/constructor").AbstractConstructor<CanColor> & {
6
+ new (_elementRef: ElementRef): {
7
+ _elementRef: ElementRef;
8
+ };
9
+ };
10
+ export declare class MtnaWfFormStepComponent extends _FormStepMixinBase implements CanColor {
11
+ disabled: boolean;
12
+ get step(): FormStep;
13
+ set step(step: FormStep);
14
+ private _step;
15
+ get clickable(): boolean;
16
+ set clickable(clickable: boolean);
17
+ private _clickable;
18
+ incompleteIcon: string | null | undefined;
19
+ constructor(elementRef: ElementRef);
20
+ /**
21
+ * Prevents click event if this step is not clickable
22
+ */
23
+ _haltClickEvent(event: Event): void;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<MtnaWfFormStepComponent, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<MtnaWfFormStepComponent, "mtna-wf-step", never, { "color": "color"; "step": "step"; "clickable": "clickable"; "incompleteIcon": "incompleteIcon"; }, {}, never, never>;
26
+ }
27
+ export {};
@@ -0,0 +1,27 @@
1
+ import { CircleStatus } from '@mtna/core-angular';
2
+ import { FormStep } from './models/index';
3
+ /**
4
+ * Determines if every step matches a given status
5
+ * @param statusToCheck CircleStatus to match against
6
+ * @param steps FormSteps with statuses to check
7
+ * @param includeDisabled If false or not supplied, disabled steps are excluded from check
8
+ * @param includeOptional If false or not supplied, optional steps are excluded from check
9
+ * @param exclusionIds string[] IDs of steps to exclude from check
10
+ */
11
+ export declare function everyStepStatus(statusToCheck: CircleStatus, steps: Array<FormStep>, includeDisabled?: boolean, includeOptional?: boolean): boolean;
12
+ /**
13
+ * Determines if every step matches a given status
14
+ * @param statusToCheck CircleStatus to match against
15
+ * @param steps FormSteps with statuses to check
16
+ * @param exclusionIds string[] IDs of steps to exclude from check
17
+ */
18
+ export declare function everyStepStatus(statusToCheck: CircleStatus, steps: Array<FormStep>, exclusionIds?: Array<string>): boolean;
19
+ /**
20
+ * Determines if every step matches a given status
21
+ * @param statusToCheck CircleStatus to match against
22
+ * @param steps FormSteps with statuses to check
23
+ * @param includeDisabled If false or not supplied, disabled steps are excluded from check
24
+ * @param includeOptional If false or not supplied, optional steps are excluded from check
25
+ * @param exclusionIds string[] IDs of steps to exclude from check
26
+ */
27
+ export declare function everyStepStatus(statusToCheck: CircleStatus, steps: Array<FormStep>, includeDisabled?: boolean, includeOptional?: boolean, exclusionIds?: Array<string>): boolean;
@@ -0,0 +1,35 @@
1
+ import { ElementRef, EventEmitter } from '@angular/core';
2
+ import { CanColor } from '@angular/material/core';
3
+ import { FormStepGroup } from './models/form-step-group.model';
4
+ import { FormStep } from './models/form-step.model';
5
+ import * as i0 from "@angular/core";
6
+ declare const _FormStepperMixinBase: import("@angular/material/core/common-behaviors/constructor").Constructor<CanColor> & import("@angular/material/core/common-behaviors/constructor").AbstractConstructor<CanColor> & {
7
+ new (_elementRef: ElementRef): {
8
+ _elementRef: ElementRef;
9
+ };
10
+ };
11
+ /**
12
+ * Vertical stepper component, ability to show step statuses and allows clicking each step.
13
+ *
14
+ * @export
15
+ * @author Will Davis <will.davis@mtna.us>
16
+ */
17
+ export declare class MtnaWfFormStepperComponent extends _FormStepperMixinBase implements CanColor {
18
+ incompleteIcon: string | null | undefined;
19
+ /** Form steps */
20
+ steps: Array<FormStep | FormStepGroup>;
21
+ /** When a step is selected */
22
+ selected: EventEmitter<FormStep>;
23
+ constructor(elementRef: ElementRef);
24
+ /**
25
+ * Improves effeciency of the *ngFor loop that creates the steps.
26
+ *
27
+ * @param index index of loop
28
+ * @param step current step in loop
29
+ * @returns unique string to key each item in the loop
30
+ */
31
+ _trackStep(index: number, step: FormStep | FormStepGroup): string | number;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<MtnaWfFormStepperComponent, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<MtnaWfFormStepperComponent, "mtna-wf-stepper", never, { "color": "color"; "incompleteIcon": "incompleteIcon"; "steps": "steps"; }, { "selected": "selected"; }, never, never>;
34
+ }
35
+ export {};
@@ -0,0 +1,18 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./form-step.component";
3
+ import * as i2 from "./form-step-group.component";
4
+ import * as i3 from "./form-step-group.pipe";
5
+ import * as i4 from "./form-stepper.component";
6
+ import * as i5 from "@angular/common";
7
+ import * as i6 from "@angular/flex-layout";
8
+ import * as i7 from "@angular/material/divider";
9
+ import * as i8 from "@mtna/core-angular";
10
+ import * as i9 from "@angular/material/core";
11
+ import * as i10 from "@angular/material/button";
12
+ import * as i11 from "@angular/material/tooltip";
13
+ import * as i12 from "@angular/material/icon";
14
+ export declare class MtnaWfFormStepperModule {
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<MtnaWfFormStepperModule, never>;
16
+ static ɵmod: i0.ɵɵNgModuleDeclaration<MtnaWfFormStepperModule, [typeof i1.MtnaWfFormStepComponent, typeof i2.MtnaWfFormStepGroupComponent, typeof i3.MtnaWfFormStepGroupPipe, typeof i4.MtnaWfFormStepperComponent], [typeof i5.CommonModule, typeof i6.FlexLayoutModule, typeof i7.MatDividerModule, typeof i8.MtnaStatusCircleModule, typeof i9.MatRippleModule, typeof i10.MatButtonModule, typeof i11.MatTooltipModule, typeof i12.MatIconModule], [typeof i1.MtnaWfFormStepComponent, typeof i2.MtnaWfFormStepGroupComponent, typeof i3.MtnaWfFormStepGroupPipe, typeof i4.MtnaWfFormStepperComponent]>;
17
+ static ɵinj: i0.ɵɵInjectorDeclaration<MtnaWfFormStepperModule>;
18
+ }
@@ -0,0 +1,7 @@
1
+ export * from './form-step-group.component';
2
+ export * from './form-step-group.pipe';
3
+ export * from './form-step.component';
4
+ export * from './form-step.util';
5
+ export * from './form-stepper.component';
6
+ export * from './form-stepper.module';
7
+ export * from './models/index';
@@ -0,0 +1,4 @@
1
+ export declare class BaseFormStep {
2
+ instanceId: string;
3
+ constructor(instanceId: string);
4
+ }
@@ -0,0 +1,8 @@
1
+ import { BaseFormStep } from './base-form-step.model';
2
+ import { FormStep } from './form-step.model';
3
+ export declare class FormStepGroup extends BaseFormStep {
4
+ steps: FormStep[];
5
+ collapsed: boolean;
6
+ constructor(steps: FormStep[], instanceId: string, collapsed?: boolean);
7
+ }
8
+ export declare function isFormStepGroup(something: unknown): something is FormStepGroup;
@@ -0,0 +1,11 @@
1
+ import { CircleStatus } from '@mtna/core-angular';
2
+ import { BaseFormStep } from './base-form-step.model';
3
+ export declare class FormStep extends BaseFormStep {
4
+ num: number | string;
5
+ label: string;
6
+ optional: boolean;
7
+ active: boolean;
8
+ disabledText?: string;
9
+ status: CircleStatus;
10
+ constructor(num: number | string, label: string, instanceId: string, optional?: boolean);
11
+ }
@@ -0,0 +1,3 @@
1
+ export * from './base-form-step.model';
2
+ export * from './form-step-group.model';
3
+ export * from './form-step.model';
@@ -0,0 +1,62 @@
1
+ @use 'sass:map';
2
+ @use '~@angular/material' as mat;
3
+
4
+ @mixin color($theme) {
5
+ $config: mat.get-color-config($theme);
6
+ $primary: map.get($config, primary);
7
+ $accent: map.get($config, accent);
8
+ $foreground: map.get($config, foreground);
9
+ $warn: map.get($config, warn);
10
+
11
+ mtna-wf-checkbox-item.read-only .mat-checkbox {
12
+ .mat-checkbox-label {
13
+ color: mat.get-color-from-palette($foreground, disabled);
14
+ }
15
+ .mat-checkbox-inner-container .mat-checkbox-frame {
16
+ border-color: mat.get-color-from-palette($foreground, disabled);
17
+ }
18
+
19
+ &.mat-checkbox-checked:not(.mat-checkbox-disabled),
20
+ &.mat-checkbox-indeterminate:not(.mat-checkbox-disabled) {
21
+ &.mat-primary {
22
+ @include _wf-checkbox-color($primary);
23
+ }
24
+ &.mat-accent {
25
+ @include _wf-checkbox-color($accent);
26
+ }
27
+ .mat-checkbox-label {
28
+ color: mat.get-color-from-palette($foreground, text);
29
+ }
30
+ }
31
+ }
32
+
33
+ mtna-wf-checkbox-item .checkbox-error {
34
+ color: mat.get-color-from-palette($warn, default);
35
+ }
36
+ }
37
+
38
+ @mixin typography($theme) {
39
+ }
40
+
41
+ @mixin theme($theme) {
42
+ $config: mat.get-color-config($theme);
43
+ @if $config != null {
44
+ @include color($theme);
45
+ }
46
+
47
+ $typography-config: mat.get-typography-config($theme);
48
+ @if $typography-config != null {
49
+ @include typography($theme);
50
+ }
51
+ }
52
+
53
+ @mixin _wf-checkbox-color($palette) {
54
+ .mat-checkbox-inner-container {
55
+ .mat-checkbox-background {
56
+ background-color: mat.get-color-from-palette($palette);
57
+ }
58
+ .mat-checkbox-frame {
59
+ border-color: mat.get-color-from-palette($palette);
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,32 @@
1
+ @use 'sass:map';
2
+ @use '~@angular/material' as mat;
3
+
4
+ @mixin color($theme) {
5
+ $config: mat.get-color-config($theme);
6
+ $foreground: map.get($config, foreground);
7
+ $secondary-text: mat.get-color-from-palette($foreground, secondary-text);
8
+
9
+ mtna-wf-group {
10
+ .mat-list .mat-list-item {
11
+ p,
12
+ .mat-list-icon {
13
+ color: $secondary-text;
14
+ }
15
+ }
16
+ }
17
+ }
18
+
19
+ @mixin typography($theme) {
20
+ }
21
+
22
+ @mixin theme($theme) {
23
+ $config: mat.get-color-config($theme);
24
+ @if $config != null {
25
+ @include color($theme);
26
+ }
27
+
28
+ $typography-config: mat.get-typography-config($theme);
29
+ @if $typography-config != null {
30
+ @include typography($theme);
31
+ }
32
+ }
@@ -0,0 +1,65 @@
1
+ @use 'sass:map';
2
+ @use '~@angular/material' as mat;
3
+
4
+ @mixin color($theme) {
5
+ $config: mat.get-color-config($theme);
6
+ $primary: map.get($config, primary);
7
+ $accent: map.get($config, accent);
8
+ $foreground: map.get($config, foreground);
9
+
10
+ mtna-wf-multiple-choice-item.read-only {
11
+ .mat-radio-button {
12
+ .mat-radio-outer-circle {
13
+ border-color: mat.get-color-from-palette($foreground, disabled);
14
+ }
15
+ .mat-radio-label-content {
16
+ color: mat.get-color-from-palette($foreground, disabled);
17
+ }
18
+
19
+ .mat-radio-ripple .mat-ripple-element,
20
+ .mat-radio-inner-circle {
21
+ background-color: mat.get-color-from-palette($foreground, disabled);
22
+ }
23
+ &.mat-radio-checked {
24
+ .mat-radio-label-content {
25
+ color: mat.get-color-from-palette($foreground, text);
26
+ }
27
+ &.mat-primary {
28
+ @include _wf-multiple-choice-radio-color($primary);
29
+ }
30
+
31
+ &.mat-accent {
32
+ @include _wf-multiple-choice-radio-color($accent);
33
+ }
34
+ }
35
+ }
36
+ }
37
+ }
38
+
39
+ @mixin typography($theme) {
40
+ }
41
+
42
+ @mixin theme($theme) {
43
+ $config: mat.get-color-config($theme);
44
+ @if $config != null {
45
+ @include color($theme);
46
+ }
47
+
48
+ $typography-config: mat.get-typography-config($theme);
49
+ @if $typography-config != null {
50
+ @include typography($theme);
51
+ }
52
+ }
53
+
54
+ @mixin _wf-multiple-choice-radio-color($palette) {
55
+ .mat-radio-outer-circle {
56
+ border-color: mat.get-color-from-palette($palette, 0.8);
57
+ }
58
+
59
+ .mat-radio-inner-circle,
60
+ .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple),
61
+ &.mat-radio-checked .mat-radio-persistent-ripple,
62
+ &:active .mat-radio-persistent-ripple {
63
+ background-color: mat.get-color-from-palette($palette, 0.8);
64
+ }
65
+ }