@carefirst/library 1.3.8 → 1.3.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. package/.eslintrc.json +31 -0
  2. package/ng-package.json +8 -0
  3. package/package.json +11 -14
  4. package/public/styles/colors.scss +2 -2
  5. package/public/styles/font.scss +2 -2
  6. package/src/lib/components/alert/alert.component.html +0 -0
  7. package/src/lib/components/alert/alert.component.scss +63 -0
  8. package/src/lib/components/alert/alert.component.spec.ts +23 -0
  9. package/src/lib/components/alert/alert.component.ts +73 -0
  10. package/src/lib/components/badge/badge.component.html +5 -0
  11. package/src/lib/components/badge/badge.component.scss +96 -0
  12. package/src/lib/components/badge/badge.component.spec.ts +23 -0
  13. package/src/lib/components/badge/badge.component.ts +61 -0
  14. package/src/lib/components/button/button.component.html +20 -0
  15. package/src/lib/components/button/button.component.scss +153 -0
  16. package/src/lib/components/button/button.component.spec.ts +21 -0
  17. package/src/lib/components/button/button.component.ts +94 -0
  18. package/src/lib/components/calendar/calendar.component.html +9 -0
  19. package/src/lib/components/calendar/calendar.component.scss +34 -0
  20. package/src/lib/components/calendar/calendar.component.spec.ts +23 -0
  21. package/src/lib/components/calendar/calendar.component.ts +53 -0
  22. package/src/lib/components/chat-bubble/chat-bubble.component.html +9 -0
  23. package/src/lib/components/chat-bubble/chat-bubble.component.scss +31 -0
  24. package/src/lib/components/chat-bubble/chat-bubble.component.spec.ts +23 -0
  25. package/src/lib/components/chat-bubble/chat-bubble.component.ts +43 -0
  26. package/src/lib/components/form-input/form-input.component.html +37 -0
  27. package/src/lib/components/form-input/form-input.component.scss +23 -0
  28. package/src/lib/components/form-input/form-input.component.spec.ts +23 -0
  29. package/src/lib/components/form-input/form-input.component.ts +95 -0
  30. package/src/lib/components/form-input-select/form-input-select.component.html +27 -0
  31. package/src/lib/components/form-input-select/form-input-select.component.scss +40 -0
  32. package/src/lib/components/form-input-select/form-input-select.component.spec.ts +23 -0
  33. package/src/lib/components/form-input-select/form-input-select.component.ts +61 -0
  34. package/src/lib/components/form-input-text-area/form-input-text-area.component.html +29 -0
  35. package/src/lib/components/form-input-text-area/form-input-text-area.component.scss +19 -0
  36. package/src/lib/components/form-input-text-area/form-input-text-area.component.spec.ts +23 -0
  37. package/src/lib/components/form-input-text-area/form-input-text-area.component.ts +76 -0
  38. package/src/lib/components/form-validation/form-validation.component.html +8 -0
  39. package/src/lib/components/form-validation/form-validation.component.scss +8 -0
  40. package/src/lib/components/form-validation/form-validation.component.spec.ts +23 -0
  41. package/src/lib/components/form-validation/form-validation.component.ts +34 -0
  42. package/src/lib/components/icon/icon.component.html +529 -0
  43. package/src/lib/components/icon/icon.component.scss +61 -0
  44. package/src/lib/components/icon/icon.component.spec.ts +21 -0
  45. package/src/lib/components/icon/icon.component.ts +40 -0
  46. package/src/lib/components/logo/logo.component.html +10 -0
  47. package/src/lib/components/logo/logo.component.scss +5 -0
  48. package/src/lib/components/logo/logo.component.spec.ts +23 -0
  49. package/src/lib/components/logo/logo.component.ts +21 -0
  50. package/src/lib/components/notification/notification.component.html +39 -0
  51. package/src/lib/components/notification/notification.component.scss +20 -0
  52. package/src/lib/components/notification/notification.component.spec.ts +21 -0
  53. package/src/lib/components/notification/notification.component.ts +23 -0
  54. package/src/lib/components/page/page.component.html +5 -0
  55. package/src/lib/components/page/page.component.scss +35 -0
  56. package/src/lib/components/page/page.component.spec.ts +21 -0
  57. package/src/lib/components/page/page.component.ts +42 -0
  58. package/src/lib/components/spacer/spacer.component.html +4 -0
  59. package/src/lib/components/spacer/spacer.component.scss +27 -0
  60. package/src/lib/components/spacer/spacer.component.spec.ts +21 -0
  61. package/src/lib/components/spacer/spacer.component.ts +43 -0
  62. package/src/lib/components/spinner/spinner.component.html +1 -0
  63. package/src/lib/components/spinner/spinner.component.scss +14 -0
  64. package/src/lib/components/spinner/spinner.component.spec.ts +23 -0
  65. package/src/lib/components/spinner/spinner.component.ts +33 -0
  66. package/src/lib/directives/button-loader.directive.spec.ts +8 -0
  67. package/src/lib/directives/button-loader.directive.ts +77 -0
  68. package/src/lib/interfaces/alert.interface.ts +20 -0
  69. package/src/lib/interfaces/icon.interface.ts +62 -0
  70. package/src/lib/interfaces/input.interface.ts +8 -0
  71. package/src/lib/interfaces/notification.interface.ts +15 -0
  72. package/src/lib/interfaces/spacer.interface.ts +6 -0
  73. package/src/lib/library.module.ts +66 -0
  74. package/src/lib/utils/attribute.util.ts +66 -0
  75. package/src/lib/utils/form-validators-utility.ts +186 -0
  76. package/{public-api.d.ts → src/public-api.ts} +21 -0
  77. package/tsconfig.lib.json +12 -0
  78. package/tsconfig.lib.prod.json +10 -0
  79. package/tsconfig.spec.json +14 -0
  80. package/esm2022/carefirst-library.mjs +0 -2
  81. package/esm2022/lib/components/alert/alert.component.mjs +0 -56
  82. package/esm2022/lib/components/button/button.component.mjs +0 -87
  83. package/esm2022/lib/components/calendar/calendar.component.mjs +0 -39
  84. package/esm2022/lib/components/form-input/form-input.component.mjs +0 -87
  85. package/esm2022/lib/components/form-input-select/form-input-select.component.mjs +0 -46
  86. package/esm2022/lib/components/form-input-text-area/form-input-text-area.component.mjs +0 -61
  87. package/esm2022/lib/components/form-validation/form-validation.component.mjs +0 -20
  88. package/esm2022/lib/components/icon/icon.component.mjs +0 -29
  89. package/esm2022/lib/components/logo/logo.component.mjs +0 -18
  90. package/esm2022/lib/components/notification/notification.component.mjs +0 -22
  91. package/esm2022/lib/components/page/page.component.mjs +0 -31
  92. package/esm2022/lib/components/spacer/spacer.component.mjs +0 -30
  93. package/esm2022/lib/directives/button-loader.directive.mjs +0 -41
  94. package/esm2022/lib/interfaces/alert.interface.mjs +0 -2
  95. package/esm2022/lib/interfaces/icon.interface.mjs +0 -52
  96. package/esm2022/lib/interfaces/input.interface.mjs +0 -2
  97. package/esm2022/lib/interfaces/notification.interface.mjs +0 -2
  98. package/esm2022/lib/interfaces/spacer.interface.mjs +0 -2
  99. package/esm2022/lib/library.module.mjs +0 -85
  100. package/esm2022/lib/utils/attribute.util.mjs +0 -34
  101. package/esm2022/lib/utils/form-validators-utility.mjs +0 -113
  102. package/esm2022/public-api.mjs +0 -21
  103. package/fesm2022/carefirst-library.mjs +0 -799
  104. package/fesm2022/carefirst-library.mjs.map +0 -1
  105. package/index.d.ts +0 -2
  106. package/lib/components/alert/alert.component.d.ts +0 -14
  107. package/lib/components/button/button.component.d.ts +0 -30
  108. package/lib/components/calendar/calendar.component.d.ts +0 -15
  109. package/lib/components/form-input/form-input.component.d.ts +0 -37
  110. package/lib/components/form-input-select/form-input-select.component.d.ts +0 -21
  111. package/lib/components/form-input-text-area/form-input-text-area.component.d.ts +0 -27
  112. package/lib/components/form-validation/form-validation.component.d.ts +0 -9
  113. package/lib/components/icon/icon.component.d.ts +0 -13
  114. package/lib/components/logo/logo.component.d.ts +0 -7
  115. package/lib/components/notification/notification.component.d.ts +0 -9
  116. package/lib/components/page/page.component.d.ts +0 -13
  117. package/lib/components/spacer/spacer.component.d.ts +0 -14
  118. package/lib/directives/button-loader.directive.d.ts +0 -12
  119. package/lib/interfaces/alert.interface.d.ts +0 -11
  120. package/lib/interfaces/icon.interface.d.ts +0 -4
  121. package/lib/interfaces/input.interface.d.ts +0 -4
  122. package/lib/interfaces/notification.interface.d.ts +0 -11
  123. package/lib/interfaces/spacer.interface.d.ts +0 -3
  124. package/lib/library.module.d.ts +0 -22
  125. package/lib/utils/attribute.util.d.ts +0 -4
  126. package/lib/utils/form-validators-utility.d.ts +0 -8
@@ -0,0 +1,29 @@
1
+ <!-- ngModel -->
2
+ <ion-textarea
3
+ [style]="'min-height: ' + minHeight + '; max-height: ' + maxHeight"
4
+ *ngIf="!control"
5
+ [placeholder]="placeholder"
6
+ [ngClass]="{ 'text-center': inputTextCenter }"
7
+ [label]="label"
8
+ [labelPlacement]="inputLabelPlacement"
9
+ fill="outline"
10
+ [autocapitalize]="autoCapitalize"
11
+ [autoGrow]="true"
12
+ mode="md"
13
+ (ionInput)="valueChange.emit($event.detail.value ?? undefined)"
14
+ [value]="value"></ion-textarea>
15
+ <!-- Form Control -->
16
+ <ion-textarea
17
+ [style]="'min-height: ' + minHeight + '; max-height: ' + maxHeight"
18
+ *ngIf="control"
19
+ [placeholder]="placeholder"
20
+ [ngClass]="{ 'text-center': inputTextCenter }"
21
+ [label]="label"
22
+ [labelPlacement]="inputLabelPlacement"
23
+ fill="outline"
24
+ [autocapitalize]="autoCapitalize"
25
+ [autoGrow]="true"
26
+ mode="md"
27
+ [formControl]="control"
28
+ (ionInput)="valueChange.emit($event.detail.value ?? undefined)"></ion-textarea>
29
+ <cf-form-validation *ngIf="control" [control]="control"></cf-form-validation>
@@ -0,0 +1,19 @@
1
+ /*===============================================
2
+ ================== Form Items ===================
3
+ ===============================================*/
4
+ ion-textarea {
5
+ font-family: 'Roboto', sans-serif;
6
+ font-weight: 400;
7
+ font-style: normal;
8
+ font-size: 1.6rem;
9
+ color: var(--cf-app-text-color-default);
10
+ text-align: start;
11
+ --border-radius: 8px !important; //--- important overrides the fill option
12
+ --highlight-color-focused: var(--cf-app-color-primary);
13
+ --highlight-color-invalid: var(--cf-app-system-color-error);
14
+ --highlight-color-valid: var(--cf-app-color-primary);
15
+ }
16
+
17
+ ion-textarea.text-center {
18
+ text-align: center;
19
+ }
@@ -0,0 +1,23 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { FormInputTextAreaComponent } from './form-input-text-area.component';
4
+
5
+ describe('FormInputTextAreaComponent', () => {
6
+ let component: FormInputTextAreaComponent;
7
+ let fixture: ComponentFixture<FormInputTextAreaComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ imports: [FormInputTextAreaComponent]
12
+ })
13
+ .compileComponents();
14
+
15
+ fixture = TestBed.createComponent(FormInputTextAreaComponent);
16
+ component = fixture.componentInstance;
17
+ fixture.detectChanges();
18
+ });
19
+
20
+ it('should create', () => {
21
+ expect(component).toBeTruthy();
22
+ });
23
+ });
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Carefirst Library Form Input Text Area
3
+ *
4
+ * @file form-input-text-area.component
5
+ * @description Contains all the logic for generating a CareFirst Form Input Text Area
6
+ * @author Arno Jansen van Vuuren
7
+ * @since 2023 - 12 - 18
8
+ * @usage <cf-form-input-text-area label="Label Name" %labelPlacement% %textCenter% %autoCapitalize% %(valueChange)="currentValue"% %[(value)]="twoWayComs"% %[control]%="formName.controls.controlName"></cf-form-input-text-area>
9
+ * disable input by disabling the form control
10
+ */
11
+
12
+ import { Component, EventEmitter, Input, Output, type OnChanges, type SimpleChanges } from '@angular/core';
13
+ import type { FormControl } from '@angular/forms';
14
+ //--- Utils
15
+ import { validateStringValue, checkTruthAttribute } from '../../utils/attribute.util';
16
+
17
+ /**==============================================
18
+ * @interface inputTextAreaC
19
+ * @description Define available input values
20
+ */
21
+ const inputTextAreaC = {
22
+ labelPlacement: ['fixed', 'floating', 'stacked', 'start', 'end'],
23
+ autoCapitalize: ['off', 'none', 'on', 'sentences', 'words', 'characters'],
24
+ } as const;
25
+
26
+ @Component({
27
+ selector: 'cf-form-input-text-area',
28
+ templateUrl: './form-input-text-area.component.html',
29
+ styleUrl: './form-input-text-area.component.scss',
30
+ })
31
+ export class FormInputTextAreaComponent implements OnChanges {
32
+ @Input() label!: string;
33
+ @Input() labelPlacement?: (typeof inputTextAreaC.labelPlacement)[number];
34
+ @Input() placeholder?: string | undefined;
35
+ @Input() autoCapitalize?: (typeof inputTextAreaC.autoCapitalize)[number];
36
+ @Input() control?: FormControl | null;
37
+ @Input() textCenter?: boolean | string | undefined;
38
+ @Input() minHeight?: string | 'none' = 'none';
39
+ @Input() maxHeight?: string | 'none' = 'none';
40
+
41
+ //--- ngModel
42
+ @Input() value: string | undefined;
43
+ @Output() valueChange = new EventEmitter<typeof this.value>();
44
+
45
+ //--- Local variables
46
+ inputLabelPlacement: typeof this.labelPlacement;
47
+ inputClear = true;
48
+ inputTextCenter = false;
49
+ inputAutoCapitalize: typeof this.autoCapitalize;
50
+
51
+ /**----------------------------------------------------------------
52
+ * @name ngOnChanges
53
+ * @description Detect changes to input values
54
+ * @param {SimpleChanges} changes
55
+ */
56
+ ngOnChanges(changes: SimpleChanges): void {
57
+ //--- Label Placement
58
+ this.inputLabelPlacement =
59
+ validateStringValue<(typeof inputTextAreaC.labelPlacement)[number]>(
60
+ changes,
61
+ 'labelPlacement',
62
+ inputTextAreaC.labelPlacement.slice(),
63
+ this.inputLabelPlacement
64
+ ) || 'floating';
65
+ //--- Text Center
66
+ this.inputTextCenter = checkTruthAttribute(changes, 'textCenter', this.inputTextCenter);
67
+ //--- Auto Capitalize
68
+ this.inputAutoCapitalize =
69
+ validateStringValue<(typeof inputTextAreaC.autoCapitalize)[number]>(
70
+ changes,
71
+ 'autoCapitalize',
72
+ inputTextAreaC.autoCapitalize.slice(),
73
+ this.inputAutoCapitalize
74
+ ) || 'none';
75
+ }
76
+ }
@@ -0,0 +1,8 @@
1
+ <div *ngIf="control?.dirty && control?.errors" class="form-valid-feedback">
2
+ <div *ngFor="let error of this.control?.errors | keyvalue">
3
+ <p class="body-medium" *ngIf="error.key === 'email'">*Invalid email format</p>
4
+ <p class="body-medium" *ngIf="error.key === 'minlength'">*Length required: {{ error.value.requiredLength - error.value.actualLength }}</p>
5
+ <p class="body-medium" *ngIf="error.key === 'maxlength'">*Max Length: {{ error.value.requiredLength }}</p>
6
+ <p class="body-medium" *ngIf="error.key === 'errorMessage'">*{{ error.value }}</p>
7
+ </div>
8
+ </div>
@@ -0,0 +1,8 @@
1
+ .form-valid-feedback {
2
+ padding: 4px 0 0 10px;
3
+ p {
4
+ font-size: 1.2rem;
5
+ text-align: left;
6
+ color: var(--cf-app-system-color-error);
7
+ }
8
+ }
@@ -0,0 +1,23 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { FormValidationComponent } from './form-validation.component';
4
+
5
+ describe('FormValidationComponent', () => {
6
+ let component: FormValidationComponent;
7
+ let fixture: ComponentFixture<FormValidationComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ imports: [FormValidationComponent]
12
+ })
13
+ .compileComponents();
14
+
15
+ fixture = TestBed.createComponent(FormValidationComponent);
16
+ component = fixture.componentInstance;
17
+ fixture.detectChanges();
18
+ });
19
+
20
+ it('should create', () => {
21
+ expect(component).toBeTruthy();
22
+ });
23
+ });
@@ -0,0 +1,34 @@
1
+ /**
2
+ * CareFirst Library Form Validation Feedback
3
+ *
4
+ * @file form-validation.component
5
+ * @description Contains all the logic for generating CareFirst Form Validation Feedback
6
+ * @author Arno Jansen van Vuuren
7
+ * @since 2023 - 12 - 05
8
+ * @usage <cf-form-validation [control]="formName.get('controlName')"></cf-form-validation>
9
+ */
10
+
11
+ import { Component, Input, type OnChanges, type SimpleChanges } from '@angular/core';
12
+ //--- Interfaces
13
+ import type { FormControl } from '@angular/forms';
14
+
15
+ @Component({
16
+ selector: 'cf-form-validation',
17
+ templateUrl: './form-validation.component.html',
18
+ styleUrl: './form-validation.component.scss',
19
+ })
20
+ export class FormValidationComponent implements OnChanges {
21
+ //--- Receive form control
22
+ @Input() control!: FormControl | null;
23
+
24
+ /**----------------------------------------------------------------
25
+ * @name ngOnChanges
26
+ * @description Detect changes to input values
27
+ * @param {SimpleChanges} changes
28
+ */
29
+ ngOnChanges(changes: SimpleChanges): void {
30
+ if (changes['control'] && changes['control'].currentValue) {
31
+ this.control = changes['control'].currentValue;
32
+ }
33
+ }
34
+ }