@ifsworld/granite-components 15.0.0 → 15.0.2

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 (165) hide show
  1. package/README.md +1 -1
  2. package/date-picker/lib/date-picker-base.d.ts +3 -3
  3. package/date-picker/lib/date-picker.module.d.ts +2 -2
  4. package/esm2022/carousel/ifsworld-granite-components-carousel.mjs +5 -0
  5. package/esm2022/carousel/index.mjs +3 -0
  6. package/esm2022/carousel/lib/carousel.component.mjs +156 -0
  7. package/esm2022/carousel/lib/carousel.module.mjs +31 -0
  8. package/esm2022/date-picker/ifsworld-granite-components-date-picker.mjs +5 -0
  9. package/esm2022/date-picker/index.mjs +5 -0
  10. package/esm2022/date-picker/lib/date-picker-base.mjs +53 -0
  11. package/esm2022/date-picker/lib/date-picker-trigger-for.directive.mjs +228 -0
  12. package/esm2022/date-picker/lib/date-picker.component.mjs +30 -0
  13. package/esm2022/date-picker/lib/date-picker.module.mjs +58 -0
  14. package/esm2022/date-picker/lib/date-range-picker.component.mjs +46 -0
  15. package/esm2022/file-upload/ifsworld-granite-components-file-upload.mjs +5 -0
  16. package/esm2022/file-upload/index.mjs +3 -0
  17. package/esm2022/file-upload/lib/directives/file-drag-and-drop.directive.mjs +102 -0
  18. package/esm2022/file-upload/lib/file-upload.component.mjs +182 -0
  19. package/esm2022/file-upload/lib/file-upload.constants.mjs +45 -0
  20. package/esm2022/file-upload/lib/file-upload.module.mjs +32 -0
  21. package/esm2022/file-upload/lib/file-upload.utils.mjs +13 -0
  22. package/esm2022/ifsworld-granite-components.mjs +5 -0
  23. package/esm2022/index.mjs +90 -0
  24. package/esm2022/lib/arrange-grid/arrange-grid-item.component.mjs +44 -0
  25. package/esm2022/lib/arrange-grid/arrange-grid.component.mjs +125 -0
  26. package/esm2022/lib/arrange-grid/arrange-grid.module.mjs +19 -0
  27. package/esm2022/lib/avatar/avatar-default-status/avatar-default-status.component.mjs +36 -0
  28. package/esm2022/lib/avatar/avatar.component.mjs +68 -0
  29. package/esm2022/lib/avatar/avatar.component.public-types.mjs +7 -0
  30. package/esm2022/lib/avatar/avatar.module.mjs +37 -0
  31. package/esm2022/lib/avatar/custom-avatar-status.directive.mjs +18 -0
  32. package/esm2022/lib/avatar/empty-avatar/empty-avatar.component.mjs +37 -0
  33. package/esm2022/lib/badge/badge.component.mjs +39 -0
  34. package/esm2022/lib/badge/badge.module.mjs +18 -0
  35. package/esm2022/lib/badge/testing/badge.harness.mjs +25 -0
  36. package/esm2022/lib/button/button.component.mjs +87 -0
  37. package/esm2022/lib/button/button.module.mjs +16 -0
  38. package/esm2022/lib/card-list/card/card-avatar.component.mjs +11 -0
  39. package/esm2022/lib/card-list/card/card-content/card-actions.component.mjs +11 -0
  40. package/esm2022/lib/card-list/card/card-content/card-body.component.mjs +11 -0
  41. package/esm2022/lib/card-list/card/card-content/card-content.component.mjs +11 -0
  42. package/esm2022/lib/card-list/card/card-content/card-footer.component.mjs +11 -0
  43. package/esm2022/lib/card-list/card/card-content/card-header-subtitle.component.mjs +11 -0
  44. package/esm2022/lib/card-list/card/card-content/card-header-title.component.mjs +11 -0
  45. package/esm2022/lib/card-list/card/card-content/card-header.component.mjs +11 -0
  46. package/esm2022/lib/card-list/card/card.component.mjs +11 -0
  47. package/esm2022/lib/card-list/card-list.component.mjs +24 -0
  48. package/esm2022/lib/card-list/card-list.module.mjs +68 -0
  49. package/esm2022/lib/checkbox/checkbox-group.component.mjs +17 -0
  50. package/esm2022/lib/checkbox/checkbox.component.mjs +99 -0
  51. package/esm2022/lib/checkbox/checkbox.module.mjs +17 -0
  52. package/esm2022/lib/chips/chip-input.mjs +195 -0
  53. package/esm2022/lib/chips/chip-list.component.mjs +567 -0
  54. package/esm2022/lib/chips/chip.component.mjs +288 -0
  55. package/esm2022/lib/chips/chips.module.mjs +31 -0
  56. package/esm2022/lib/collapsible-group/collapsible-group-body.directive.mjs +17 -0
  57. package/esm2022/lib/collapsible-group/collapsible-group-header.directive.mjs +17 -0
  58. package/esm2022/lib/collapsible-group/collapsible-group.component.mjs +46 -0
  59. package/esm2022/lib/collapsible-group/collapsible-group.module.mjs +33 -0
  60. package/esm2022/lib/contacts/contact-item/contact-item.component.mjs +27 -0
  61. package/esm2022/lib/contacts/contact-item-default-status/contact-item-default-status.component.mjs +20 -0
  62. package/esm2022/lib/contacts/contact-item-title/contact-item-title.component.mjs +15 -0
  63. package/esm2022/lib/contacts/contacts-profile/contacts-profile.component.mjs +18 -0
  64. package/esm2022/lib/contacts/contacts-trigger/contacts-trigger-data.mjs +24 -0
  65. package/esm2022/lib/contacts/contacts-trigger/contacts-trigger-for.directive.mjs +231 -0
  66. package/esm2022/lib/contacts/contacts-types/contacts.component.private-types.mjs +2 -0
  67. package/esm2022/lib/contacts/contacts-types/contacts.component.public-types.mjs +9 -0
  68. package/esm2022/lib/contacts/contacts.component.mjs +92 -0
  69. package/esm2022/lib/contacts/contacts.module.mjs +53 -0
  70. package/esm2022/lib/contacts/custom-profile.directive.mjs +16 -0
  71. package/esm2022/lib/contacts/custom-status.directive.mjs +18 -0
  72. package/esm2022/lib/core/animation.mjs +34 -0
  73. package/esm2022/lib/core/client-environment.mjs +20 -0
  74. package/esm2022/lib/core/common-behaviors/disabled.mjs +27 -0
  75. package/esm2022/lib/core/core.module.mjs +44 -0
  76. package/esm2022/lib/core/devices/client-input-desktop.directive.mjs +29 -0
  77. package/esm2022/lib/core/devices/client-input-touch.directive.mjs +29 -0
  78. package/esm2022/lib/core/devices/client-output-desktop.directive.mjs +29 -0
  79. package/esm2022/lib/core/devices/client-output-touch.directive.mjs +29 -0
  80. package/esm2022/lib/core/hide-on-overflow.directive.mjs +83 -0
  81. package/esm2022/lib/core/overlay-base.mjs +18 -0
  82. package/esm2022/lib/core/overlay-position-config.mjs +2 -0
  83. package/esm2022/lib/core/overlay-trigger-for-base.directive.mjs +121 -0
  84. package/esm2022/lib/core/overlay.service.mjs +90 -0
  85. package/esm2022/lib/core/pipes/pure-pipes.module.mjs +16 -0
  86. package/esm2022/lib/core/pipes/title.pipe.mjs +21 -0
  87. package/esm2022/lib/core/radio-checkbox-base.mjs +19 -0
  88. package/esm2022/lib/core/services/names-utils-service.mjs +51 -0
  89. package/esm2022/lib/core/theme.library.mjs +59 -0
  90. package/esm2022/lib/core/types.mjs +2 -0
  91. package/esm2022/lib/grid/grid.component.mjs +128 -0
  92. package/esm2022/lib/grid/grid.module.mjs +18 -0
  93. package/esm2022/lib/icon/icon.component.mjs +43 -0
  94. package/esm2022/lib/icon/icon.module.mjs +16 -0
  95. package/esm2022/lib/input-field/input-field.component.mjs +167 -0
  96. package/esm2022/lib/input-field/input-field.module.mjs +20 -0
  97. package/esm2022/lib/label/label.component.mjs +31 -0
  98. package/esm2022/lib/label/label.module.mjs +18 -0
  99. package/esm2022/lib/menu/divider.directive.mjs +23 -0
  100. package/esm2022/lib/menu/menu-base.mjs +364 -0
  101. package/esm2022/lib/menu/menu-desktop-animations.mjs +23 -0
  102. package/esm2022/lib/menu/menu-errors.mjs +37 -0
  103. package/esm2022/lib/menu/menu-item.component.mjs +89 -0
  104. package/esm2022/lib/menu/menu-panel.mjs +7 -0
  105. package/esm2022/lib/menu/menu-positions.mjs +9 -0
  106. package/esm2022/lib/menu/menu-touch-animations.mjs +137 -0
  107. package/esm2022/lib/menu/menu-touch-close.component.mjs +13 -0
  108. package/esm2022/lib/menu/menu-touch-title.component.mjs +59 -0
  109. package/esm2022/lib/menu/menu-trigger-for.directive.mjs +738 -0
  110. package/esm2022/lib/menu/menu.component.mjs +30 -0
  111. package/esm2022/lib/menu/menu.module.mjs +55 -0
  112. package/esm2022/lib/menu/testing/menu.harness.mjs +109 -0
  113. package/esm2022/lib/menu/title.directive.mjs +17 -0
  114. package/esm2022/lib/progress-bar/progress-bar-legend/progress-bar-legend.component.mjs +19 -0
  115. package/esm2022/lib/progress-bar/progress-bar-legend-base.mjs +17 -0
  116. package/esm2022/lib/progress-bar/progress-bar-legend-trigger-for.directive.mjs +54 -0
  117. package/esm2022/lib/progress-bar/progress-bar.component.mjs +92 -0
  118. package/esm2022/lib/progress-bar/progress-bar.model.mjs +2 -0
  119. package/esm2022/lib/progress-bar/progress-bar.module.mjs +44 -0
  120. package/esm2022/lib/radio-button/radio-button.component.mjs +119 -0
  121. package/esm2022/lib/radio-button/radio-button.module.mjs +17 -0
  122. package/esm2022/lib/radio-button/radio-group.component.mjs +17 -0
  123. package/esm2022/lib/toggle-switch/toggle-switch.component.mjs +100 -0
  124. package/esm2022/lib/toggle-switch/toggle-switch.module.mjs +16 -0
  125. package/esm2022/table/ifsworld-granite-components-table.mjs +5 -0
  126. package/esm2022/table/index.mjs +5 -0
  127. package/esm2022/table/lib/cell/cell-align/cell-align-classes.directive.mjs +26 -0
  128. package/esm2022/table/lib/cell/cell.mjs +15 -0
  129. package/esm2022/table/lib/cell/table-data-cell.component.mjs +25 -0
  130. package/esm2022/table/lib/cell/table-header-cell.component.mjs +14 -0
  131. package/esm2022/table/lib/column/table-column.directive.mjs +33 -0
  132. package/esm2022/table/lib/column-size/column-size.directive.mjs +34 -0
  133. package/esm2022/table/lib/table-constants.library.mjs +7 -0
  134. package/esm2022/table/lib/table.component.mjs +62 -0
  135. package/esm2022/table/lib/table.model.mjs +2 -0
  136. package/esm2022/table/lib/table.module.mjs +38 -0
  137. package/esm2022/tooltip/ifsworld-granite-components-tooltip.mjs +5 -0
  138. package/esm2022/tooltip/index.mjs +4 -0
  139. package/esm2022/tooltip/lib/Services/granite-tooltip.service.mjs +28 -0
  140. package/esm2022/tooltip/lib/tooltip-constants.library.mjs +4 -0
  141. package/esm2022/tooltip/lib/tooltip-trigger-for.directive.mjs +147 -0
  142. package/esm2022/tooltip/lib/tooltip.component.mjs +14 -0
  143. package/esm2022/tooltip/lib/tooltip.module.mjs +19 -0
  144. package/fesm2022/ifsworld-granite-components-carousel.mjs +9 -9
  145. package/fesm2022/ifsworld-granite-components-carousel.mjs.map +1 -1
  146. package/fesm2022/ifsworld-granite-components-date-picker.mjs +30 -34
  147. package/fesm2022/ifsworld-granite-components-date-picker.mjs.map +1 -1
  148. package/fesm2022/ifsworld-granite-components-file-upload.mjs +12 -13
  149. package/fesm2022/ifsworld-granite-components-file-upload.mjs.map +1 -1
  150. package/fesm2022/ifsworld-granite-components-table.mjs +29 -32
  151. package/fesm2022/ifsworld-granite-components-table.mjs.map +1 -1
  152. package/fesm2022/ifsworld-granite-components-tooltip.mjs +15 -16
  153. package/fesm2022/ifsworld-granite-components-tooltip.mjs.map +1 -1
  154. package/fesm2022/ifsworld-granite-components.mjs +323 -342
  155. package/fesm2022/ifsworld-granite-components.mjs.map +1 -1
  156. package/lib/contacts/contacts-trigger/contacts-trigger-data.d.ts +1 -1
  157. package/lib/core/overlay-base.d.ts +1 -1
  158. package/lib/core/radio-checkbox-base.d.ts +1 -1
  159. package/lib/menu/menu-base.d.ts +1 -1
  160. package/lib/progress-bar/progress-bar-legend-base.d.ts +1 -1
  161. package/package.json +21 -9
  162. package/src/lib/core/style/_mixins.scss +9 -10
  163. package/src/lib/core/style/_range-functions.scss +4 -6
  164. package/src/lib/core/style/_z-index.scss +4 -6
  165. package/table/lib/cell/cell.d.ts +1 -1
@@ -0,0 +1,167 @@
1
+ import { FocusMonitor } from '@angular/cdk/a11y';
2
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
+ import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/cdk/a11y";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "../icon/icon.component";
8
+ const GRANITE_INPUT_INCLUDES = ['text', 'number', 'password', 'textarea'];
9
+ export class GraniteInputFieldComponent {
10
+ constructor(_focusMonitor) {
11
+ this._focusMonitor = _focusMonitor;
12
+ this.id = null;
13
+ this.name = null;
14
+ this.type = 'text';
15
+ this.value = '';
16
+ this.required = false;
17
+ this.readonly = false;
18
+ this.invalid = false;
19
+ this.disabled = false;
20
+ this.placeholder = '';
21
+ this.maxlength = 255;
22
+ this.countcharacters = false;
23
+ this.ariaLabel = null;
24
+ this.ariaLabelledby = null;
25
+ this.valueChange = new EventEmitter();
26
+ this._supported = true;
27
+ this._empty = false;
28
+ this._passwordFieldIcon = 'view';
29
+ this._passwordField = false;
30
+ this._currentCharCount = 0;
31
+ this._passwordToggled = false;
32
+ this._lastEmittedValue = '';
33
+ }
34
+ ngOnInit() {
35
+ this._validateType();
36
+ this._passwordField = this.type == 'password';
37
+ this._empty = this.value == null || this.value === '';
38
+ }
39
+ ngOnChanges(changes) {
40
+ if (changes.required) {
41
+ this.required = coerceBooleanProperty(changes.required.currentValue);
42
+ }
43
+ if (changes.readonly) {
44
+ this.readonly = coerceBooleanProperty(changes.readonly.currentValue);
45
+ }
46
+ if (changes.invalid) {
47
+ this.invalid = coerceBooleanProperty(changes.invalid.currentValue);
48
+ }
49
+ if (changes.disabled) {
50
+ this.disabled = coerceBooleanProperty(changes.disabled.currentValue);
51
+ }
52
+ if (changes.countcharacters) {
53
+ this.countcharacters = coerceBooleanProperty(changes.countcharacters.currentValue);
54
+ }
55
+ if (changes.value) {
56
+ this._empty = this.value == null || this.value === '';
57
+ }
58
+ if (changes.value || changes.maxlength || changes.countcharacters) {
59
+ this._applyCharacterCount(this.value?.toString());
60
+ }
61
+ if (changes.type) {
62
+ this._validateType();
63
+ }
64
+ }
65
+ focus(origin = 'program', options) {
66
+ if (this.type === 'text') {
67
+ this._focusMonitor.focusVia(this._getInputElement(), origin, options);
68
+ }
69
+ else if (this.type === 'textarea') {
70
+ this._focusMonitor.focusVia(this._getTextareaElement(), origin, options);
71
+ }
72
+ }
73
+ _togglePassword() {
74
+ if (this._passwordToggled) {
75
+ this._passwordToggled = false;
76
+ this.type = 'password';
77
+ this._passwordFieldIcon = 'view';
78
+ }
79
+ else {
80
+ this._passwordToggled = true;
81
+ this.type = 'text';
82
+ this._passwordFieldIcon = 'view-disabled';
83
+ }
84
+ }
85
+ _onInput(event) {
86
+ const inputEvent = event.target;
87
+ this._applyCharacterCount(inputEvent.value);
88
+ this._empty = inputEvent.value == null || inputEvent.value === '';
89
+ this._emitValueIfChanged(inputEvent.value);
90
+ }
91
+ _validateType() {
92
+ if (GRANITE_INPUT_INCLUDES.indexOf(this.type) < 0) {
93
+ this._supported = false;
94
+ throw Error(`Input type "${this.type}" isn't supported by graniteInputField.`);
95
+ }
96
+ }
97
+ _applyCharacterCount(inputString) {
98
+ if (this.countcharacters && inputString != null) {
99
+ this._currentCharCount = inputString.length;
100
+ if (this._currentCharCount > this.maxlength) {
101
+ inputString = inputString.slice(0, this.maxlength);
102
+ this.value = inputString;
103
+ this._emitValueIfChanged(inputString);
104
+ this._currentCharCount = this.maxlength;
105
+ }
106
+ }
107
+ }
108
+ _getInputElement() {
109
+ return this._inputElement.nativeElement;
110
+ }
111
+ _getTextareaElement() {
112
+ return this._textareaElement.nativeElement;
113
+ }
114
+ _emitValueIfChanged(value) {
115
+ if (value !== this._lastEmittedValue) {
116
+ this._lastEmittedValue = value;
117
+ this.valueChange.emit(value);
118
+ }
119
+ }
120
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteInputFieldComponent, deps: [{ token: i1.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component }); }
121
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GraniteInputFieldComponent, selector: "granite-input-field", inputs: { id: "id", name: "name", type: "type", value: "value", required: "required", readonly: "readonly", invalid: "invalid", disabled: "disabled", placeholder: "placeholder", prefixicon: "prefixicon", maxlength: "maxlength", countcharacters: "countcharacters", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"] }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "granite-input-field" }, viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["input"], descendants: true }, { propertyName: "_textareaElement", first: true, predicate: ["textarea"], descendants: true }], exportAs: ["graniteInputField"], usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"_supported\"\n class=\"granite-input-container\"\n [class.granite-input-disabled]=\"disabled\"\n [class.granite-input-readonly]=\"readonly\"\n [class.granite-input-disabled]=\"disabled\"\n [class.granite-input-readonly]=\"readonly\"\n>\n <div\n class=\"granite-input-top-row\"\n [class.granite-input-required]=\"required\"\n [class.granite-input-empty]=\"_empty\"\n [class.granite-input-disabled]=\"disabled\"\n [class.granite-input-readonly]=\"readonly\"\n [class.granite-input-invalid]=\"invalid\"\n >\n <div\n *ngIf=\"prefixicon\"\n class=\"granite-input-prepend\"\n [class.granite-input-required]=\"required\"\n [class.granite-input-empty]=\"_empty\"\n >\n <granite-icon class=\"granite-input-prepend-icon\">\n {{ prefixicon }}\n </granite-icon>\n </div>\n\n <ng-container\n *ngIf=\"type !== 'textarea'; then inputElement; else textareaElement\"\n ></ng-container>\n\n <ng-template #inputElement>\n <input\n #input\n [id]=\"id\"\n class=\"granite-input-base\"\n [class.granite-input-invalid]=\"invalid\"\n [class.granite-input-empty]=\"_empty\"\n [name]=\"name\"\n [attr.type]=\"type\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxlength\"\n [value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-invalid]=\"invalid\"\n (input)=\"_onInput($event)\"\n />\n </ng-template>\n\n <button\n *ngIf=\"_passwordField\"\n class=\"granite-input-append\"\n [class.granite-input-required]=\"required\"\n [class.granite-input-empty]=\"_empty\"\n (click)=\"_togglePassword()\"\n >\n <granite-icon class=\"granite-input-password-toggle-icon\">\n {{ _passwordFieldIcon }}\n </granite-icon>\n </button>\n\n <ng-container *ngIf=\"!_passwordField\">\n <ng-content select=\"[graniteInputSuffixButton]\"></ng-content>\n </ng-container>\n\n <ng-template #textareaElement>\n <textarea\n #textarea\n [id]=\"id\"\n class=\"granite-input-base granite-text-area\"\n [class.granite-input-invalid]=\"invalid\"\n [class.granite-input-empty]=\"_empty\"\n rows=\"1\"\n [name]=\"name\"\n [attr.type]=\"type\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n [attr.maxlength]=\"maxlength\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n (input)=\"_onInput($event)\"\n ></textarea>\n </ng-template>\n </div>\n\n <div *ngIf=\"countcharacters\" class=\"granite-input-bottom-row\">\n <div class=\"granite-input-char-count\">\n {{ _currentCharCount }}/{{ maxlength }}\n </div>\n </div>\n</div>\n", styles: [":host{transition:all .2s ease-out;width:14.5rem;box-sizing:border-box}:host *,:host *:before,:host *:after{box-sizing:inherit}.granite-input-container{width:inherit;font-size:var(--granite-font-size-body-small)}.granite-input-container .granite-input-top-row{display:inline-flex;width:inherit;position:relative;background:var(--granite-color-background)}.granite-input-container .granite-input-top-row:not(:focus-within){outline:var(--granite-border-width-regular) solid var(--granite-color-border-medium)}.granite-input-container .granite-input-top-row:hover:not(:focus-within){outline:var(--granite-border-width-regular) solid var(--granite-color-border-hard)}.granite-input-container .granite-input-top-row .granite-text-area{min-width:14.5rem;min-height:2rem}.granite-input-container .granite-input-top-row.granite-input-disabled,.granite-input-container .granite-input-top-row.granite-input-readonly{background-color:transparent;box-shadow:none}.granite-input-container .granite-input-top-row.granite-input-invalid:not(:focus-within){outline:var(--granite-border-width-regular) solid var(--granite-color-signal-failure)}.granite-input-container .granite-input-top-row .granite-input-base{appearance:none;outline:none;border:none;background-color:var(--granite-color-background-input);padding:var(--granite-spacing-8);width:inherit;color:var(--granite-color-text);font:inherit;font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-regular)}.granite-input-container .granite-input-top-row .granite-input-base::placeholder{color:var(--granite-color-text-hint)}.granite-input-container .granite-input-top-row .granite-input-base:required.granite-input-empty{background-color:var(--granite-color-background-failure)}.granite-input-container .granite-input-top-row .granite-input-base:required::placeholder{color:var(--granite-color-text-weak)}.granite-input-container .granite-input-top-row .granite-input-base:read-only{background-color:transparent}.granite-input-container .granite-input-top-row .granite-input-base:disabled{opacity:.3}.granite-input-container .granite-input-top-row .granite-input-base:hover::placeholder{color:var(--granite-color-text)}.granite-input-container .granite-input-top-row .granite-input-base:focus{box-shadow:inset 0 .125rem var(--granite-color-focus),inset .125rem 0 var(--granite-color-focus),inset -.125rem 0 var(--granite-color-focus),inset 0 -.125rem var(--granite-color-focus)}.granite-input-container .granite-input-top-row .granite-input-base:focus.granite-input-invalid{box-shadow:inset 0 -.125rem var(--granite-color-signal-failure),inset 0 .125rem var(--granite-color-signal-failure),inset .125rem 0 var(--granite-color-signal-failure),inset -.125rem 0 var(--granite-color-signal-failure)}.granite-input-container .granite-input-top-row .granite-input-base:focus::placeholder{color:transparent}.granite-input-container .granite-input-prepend{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;align-items:center;padding:0 var(--granite-spacing-8);background:var(--granite-color-background-input)}.granite-input-container .granite-input-prepend .granite-input-prepend-icon{width:1rem;height:1rem;color:var(--granite-color-text);box-shadow:none}.granite-input-container .granite-input-prepend.granite-input-required.granite-input-empty{background-color:var(--granite-color-background-failure)}.granite-input-container .granite-input-append{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;border:none;background-color:var(--granite-color-background-input);position:relative}.granite-input-container .granite-input-append:focus{box-shadow:inset 0 .125rem var(--granite-color-focus),inset .125rem 0 var(--granite-color-focus),inset -.125rem 0 var(--granite-color-focus),inset 0 -.125rem var(--granite-color-focus)}.granite-input-container .granite-input-append .granite-input-password-toggle-icon{width:max-content;height:max-content;color:var(--granite-color-text);box-shadow:none}.granite-input-container .granite-input-append.granite-input-required.granite-input-empty{background-color:var(--granite-color-background-failure)}.granite-input-container .granite-input-bottom-row{box-shadow:none}.granite-input-container .granite-input-char-count{background:var(--granite-color-background-warning);border-radius:0 0 .25rem .25rem;padding:var(--granite-spacing-8);background-size:contain;width:fit-content;box-shadow:none}.granite-input-container.granite-input-disabled,.granite-input-container.granite-input-readonly{background-color:transparent}:host ::ng-deep button[graniteInputSuffixButton]{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;border:none;background-color:var(--granite-color-background-input);position:relative;margin:0;border-radius:0}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.GraniteIconComponent, selector: "granite-icon", inputs: ["fontIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
122
+ }
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteInputFieldComponent, decorators: [{
124
+ type: Component,
125
+ args: [{ selector: 'granite-input-field', exportAs: 'graniteInputField', host: {
126
+ class: 'granite-input-field',
127
+ }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"_supported\"\n class=\"granite-input-container\"\n [class.granite-input-disabled]=\"disabled\"\n [class.granite-input-readonly]=\"readonly\"\n [class.granite-input-disabled]=\"disabled\"\n [class.granite-input-readonly]=\"readonly\"\n>\n <div\n class=\"granite-input-top-row\"\n [class.granite-input-required]=\"required\"\n [class.granite-input-empty]=\"_empty\"\n [class.granite-input-disabled]=\"disabled\"\n [class.granite-input-readonly]=\"readonly\"\n [class.granite-input-invalid]=\"invalid\"\n >\n <div\n *ngIf=\"prefixicon\"\n class=\"granite-input-prepend\"\n [class.granite-input-required]=\"required\"\n [class.granite-input-empty]=\"_empty\"\n >\n <granite-icon class=\"granite-input-prepend-icon\">\n {{ prefixicon }}\n </granite-icon>\n </div>\n\n <ng-container\n *ngIf=\"type !== 'textarea'; then inputElement; else textareaElement\"\n ></ng-container>\n\n <ng-template #inputElement>\n <input\n #input\n [id]=\"id\"\n class=\"granite-input-base\"\n [class.granite-input-invalid]=\"invalid\"\n [class.granite-input-empty]=\"_empty\"\n [name]=\"name\"\n [attr.type]=\"type\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxlength\"\n [value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-invalid]=\"invalid\"\n (input)=\"_onInput($event)\"\n />\n </ng-template>\n\n <button\n *ngIf=\"_passwordField\"\n class=\"granite-input-append\"\n [class.granite-input-required]=\"required\"\n [class.granite-input-empty]=\"_empty\"\n (click)=\"_togglePassword()\"\n >\n <granite-icon class=\"granite-input-password-toggle-icon\">\n {{ _passwordFieldIcon }}\n </granite-icon>\n </button>\n\n <ng-container *ngIf=\"!_passwordField\">\n <ng-content select=\"[graniteInputSuffixButton]\"></ng-content>\n </ng-container>\n\n <ng-template #textareaElement>\n <textarea\n #textarea\n [id]=\"id\"\n class=\"granite-input-base granite-text-area\"\n [class.granite-input-invalid]=\"invalid\"\n [class.granite-input-empty]=\"_empty\"\n rows=\"1\"\n [name]=\"name\"\n [attr.type]=\"type\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n [attr.maxlength]=\"maxlength\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n (input)=\"_onInput($event)\"\n ></textarea>\n </ng-template>\n </div>\n\n <div *ngIf=\"countcharacters\" class=\"granite-input-bottom-row\">\n <div class=\"granite-input-char-count\">\n {{ _currentCharCount }}/{{ maxlength }}\n </div>\n </div>\n</div>\n", styles: [":host{transition:all .2s ease-out;width:14.5rem;box-sizing:border-box}:host *,:host *:before,:host *:after{box-sizing:inherit}.granite-input-container{width:inherit;font-size:var(--granite-font-size-body-small)}.granite-input-container .granite-input-top-row{display:inline-flex;width:inherit;position:relative;background:var(--granite-color-background)}.granite-input-container .granite-input-top-row:not(:focus-within){outline:var(--granite-border-width-regular) solid var(--granite-color-border-medium)}.granite-input-container .granite-input-top-row:hover:not(:focus-within){outline:var(--granite-border-width-regular) solid var(--granite-color-border-hard)}.granite-input-container .granite-input-top-row .granite-text-area{min-width:14.5rem;min-height:2rem}.granite-input-container .granite-input-top-row.granite-input-disabled,.granite-input-container .granite-input-top-row.granite-input-readonly{background-color:transparent;box-shadow:none}.granite-input-container .granite-input-top-row.granite-input-invalid:not(:focus-within){outline:var(--granite-border-width-regular) solid var(--granite-color-signal-failure)}.granite-input-container .granite-input-top-row .granite-input-base{appearance:none;outline:none;border:none;background-color:var(--granite-color-background-input);padding:var(--granite-spacing-8);width:inherit;color:var(--granite-color-text);font:inherit;font-weight:var(--granite-font-weight-regular);line-height:var(--granite-line-height-regular)}.granite-input-container .granite-input-top-row .granite-input-base::placeholder{color:var(--granite-color-text-hint)}.granite-input-container .granite-input-top-row .granite-input-base:required.granite-input-empty{background-color:var(--granite-color-background-failure)}.granite-input-container .granite-input-top-row .granite-input-base:required::placeholder{color:var(--granite-color-text-weak)}.granite-input-container .granite-input-top-row .granite-input-base:read-only{background-color:transparent}.granite-input-container .granite-input-top-row .granite-input-base:disabled{opacity:.3}.granite-input-container .granite-input-top-row .granite-input-base:hover::placeholder{color:var(--granite-color-text)}.granite-input-container .granite-input-top-row .granite-input-base:focus{box-shadow:inset 0 .125rem var(--granite-color-focus),inset .125rem 0 var(--granite-color-focus),inset -.125rem 0 var(--granite-color-focus),inset 0 -.125rem var(--granite-color-focus)}.granite-input-container .granite-input-top-row .granite-input-base:focus.granite-input-invalid{box-shadow:inset 0 -.125rem var(--granite-color-signal-failure),inset 0 .125rem var(--granite-color-signal-failure),inset .125rem 0 var(--granite-color-signal-failure),inset -.125rem 0 var(--granite-color-signal-failure)}.granite-input-container .granite-input-top-row .granite-input-base:focus::placeholder{color:transparent}.granite-input-container .granite-input-prepend{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;align-items:center;padding:0 var(--granite-spacing-8);background:var(--granite-color-background-input)}.granite-input-container .granite-input-prepend .granite-input-prepend-icon{width:1rem;height:1rem;color:var(--granite-color-text);box-shadow:none}.granite-input-container .granite-input-prepend.granite-input-required.granite-input-empty{background-color:var(--granite-color-background-failure)}.granite-input-container .granite-input-append{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;border:none;background-color:var(--granite-color-background-input);position:relative}.granite-input-container .granite-input-append:focus{box-shadow:inset 0 .125rem var(--granite-color-focus),inset .125rem 0 var(--granite-color-focus),inset -.125rem 0 var(--granite-color-focus),inset 0 -.125rem var(--granite-color-focus)}.granite-input-container .granite-input-append .granite-input-password-toggle-icon{width:max-content;height:max-content;color:var(--granite-color-text);box-shadow:none}.granite-input-container .granite-input-append.granite-input-required.granite-input-empty{background-color:var(--granite-color-background-failure)}.granite-input-container .granite-input-bottom-row{box-shadow:none}.granite-input-container .granite-input-char-count{background:var(--granite-color-background-warning);border-radius:0 0 .25rem .25rem;padding:var(--granite-spacing-8);background-size:contain;width:fit-content;box-shadow:none}.granite-input-container.granite-input-disabled,.granite-input-container.granite-input-readonly{background-color:transparent}:host ::ng-deep button[graniteInputSuffixButton]{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;border:none;background-color:var(--granite-color-background-input);position:relative;margin:0;border-radius:0}\n"] }]
128
+ }], ctorParameters: () => [{ type: i1.FocusMonitor }], propDecorators: { id: [{
129
+ type: Input
130
+ }], name: [{
131
+ type: Input
132
+ }], type: [{
133
+ type: Input
134
+ }], value: [{
135
+ type: Input
136
+ }], required: [{
137
+ type: Input
138
+ }], readonly: [{
139
+ type: Input
140
+ }], invalid: [{
141
+ type: Input
142
+ }], disabled: [{
143
+ type: Input
144
+ }], placeholder: [{
145
+ type: Input
146
+ }], prefixicon: [{
147
+ type: Input
148
+ }], maxlength: [{
149
+ type: Input
150
+ }], countcharacters: [{
151
+ type: Input
152
+ }], ariaLabel: [{
153
+ type: Input,
154
+ args: ['aria-label']
155
+ }], ariaLabelledby: [{
156
+ type: Input,
157
+ args: ['aria-labelledby']
158
+ }], valueChange: [{
159
+ type: Output
160
+ }], _inputElement: [{
161
+ type: ViewChild,
162
+ args: ['input']
163
+ }], _textareaElement: [{
164
+ type: ViewChild,
165
+ args: ['textarea']
166
+ }] } });
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9pbnB1dC1maWVsZC9pbnB1dC1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL2lucHV0LWZpZWxkL2lucHV0LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOzs7OztBQUV2QixNQUFNLHNCQUFzQixHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFZMUUsTUFBTSxPQUFPLDBCQUEwQjtJQTREckMsWUFBb0IsYUFBMkI7UUFBM0Isa0JBQWEsR0FBYixhQUFhLENBQWM7UUExRC9DLE9BQUUsR0FBa0IsSUFBSSxDQUFDO1FBR3pCLFNBQUksR0FBa0IsSUFBSSxDQUFDO1FBRzNCLFNBQUksR0FBVyxNQUFNLENBQUM7UUFHdEIsVUFBSyxHQUFvQixFQUFFLENBQUM7UUFHNUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRzFCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFHekIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQU16QixjQUFTLEdBQVcsR0FBRyxDQUFDO1FBR3hCLG9CQUFlLEdBQVksS0FB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QUFRO3NCQURQLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO3VCQUFDLFlBQVk7Z0JBSW5CLGNBQWM7c0JBRGIsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBSWYsV0FBVztzQkFEbkIsTUFBTTtnQkFJQyxhQUFhO3NCQURwQixTQUFTO3VCQUFDLE9BQU87Z0JBSVYsZ0JBQWdCO3NCQUR2QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmNvbnN0IEdSQU5JVEVfSU5QVVRfSU5DTFVERVMgPSBbJ3RleHQnLCAnbnVtYmVyJywgJ3Bhc3N3b3JkJywgJ3RleHRhcmVhJ107XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dyYW5pdGUtaW5wdXQtZmllbGQnLFxuICBleHBvcnRBczogJ2dyYW5pdGVJbnB1dEZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZ3Jhbml0ZS1pbnB1dC1maWVsZCcsXG4gIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBHcmFuaXRlSW5wdXRGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgaWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIG5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHR5cGU6IHN0cmluZyA9ICd0ZXh0JztcblxuICBASW5wdXQoKVxuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyID0gJyc7XG5cbiAgQElucHV0KClcbiAgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKVxuICBwcmVmaXhpY29uOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgbWF4bGVuZ3RoOiBudW1iZXIgPSAyNTU7XG5cbiAgQElucHV0KClcbiAgY291bnRjaGFyYWN0ZXJzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdhcmlhLWxhYmVsJylcbiAgYXJpYUxhYmVsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoJ2FyaWEtbGFiZWxsZWRieScpXG4gIGFyaWFMYWJlbGxlZGJ5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKVxuICBwcml2YXRlIF9pbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZCgndGV4dGFyZWEnKVxuICBwcml2YXRlIF90ZXh0YXJlYUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XG5cbiAgX3N1cHBvcnRlZDogYm9vbGVhbiA9IHRydWU7XG4gIF9lbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBfcGFzc3dvcmRGaWVsZEljb246IHN0cmluZyA9ICd2aWV3JztcbiAgX3Bhc3N3b3JkRmllbGQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgX2N1cnJlbnRDaGFyQ291bnQgPSAwO1xuICBwcml2YXRlIF9wYXNzd29yZFRvZ2dsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbGFzdEVtaXR0ZWRWYWx1ZTogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsaWRhdGVUeXBlKCk7XG5cbiAgICB0aGlzLl9wYXNzd29yZEZpZWxkID0gdGhpcy50eXBlID09ICdwYXNzd29yZCc7XG4gICAgdGhpcy5fZW1wdHkgPSB0aGlzLnZhbHVlID09IG51bGwgfHwgdGhpcy52YWx1ZSA9PT0gJyc7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMucmVxdWlyZWQpIHtcbiAgICAgIHRoaXMucmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlcy5yZXF1aXJlZC5jdXJyZW50VmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLnJlYWRvbmx5KSB7XG4gICAgICB0aGlzLnJlYWRvbmx5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXMucmVhZG9ubHkuY3VycmVudFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmludmFsaWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlcy5pbnZhbGlkLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlcy5kaXNhYmxlZC5jdXJyZW50VmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmNvdW50Y2hhcmFjdGVycykge1xuICAgICAgdGhpcy5jb3VudGNoYXJhY3RlcnMgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoXG4gICAgICAgIGNoYW5nZXMuY291bnRjaGFyYWN0ZXJzLmN1cnJlbnRWYWx1ZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy52YWx1ZSkge1xuICAgICAgdGhpcy5fZW1wdHkgPSB0aGlzLnZhbHVlID09IG51bGwgfHwgdGhpcy52YWx1ZSA9PT0gJyc7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMudmFsdWUgfHwgY2hhbmdlcy5tYXhsZW5ndGggfHwgY2hhbmdlcy5jb3VudGNoYXJhY3RlcnMpIHtcbiAgICAgIHRoaXMuX2FwcGx5Q2hhcmFjdGVyQ291bnQodGhpcy52YWx1ZT8udG9TdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMudHlwZSkge1xuICAgICAgdGhpcy5fdmFsaWRhdGVUeXBlKCk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXMob3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJywgb3B0aW9ucz86IEZvY3VzT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgdGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuX2dldElucHV0RWxlbWVudCgpLCBvcmlnaW4sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAndGV4dGFyZWEnKSB7XG4gICAgICB0aGlzLl9mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5fZ2V0VGV4dGFyZWFFbGVtZW50KCksIG9yaWdpbiwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgX3RvZ2dsZVBhc3N3b3JkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9wYXNzd29yZFRvZ2dsZWQpIHtcbiAgICAgIHRoaXMuX3Bhc3N3b3JkVG9nZ2xlZCA9IGZhbHNlO1xuICAgICAgdGhpcy50eXBlID0gJ3Bhc3N3b3JkJztcbiAgICAgIHRoaXMuX3Bhc3N3b3JkRmllbGRJY29uID0gJ3ZpZXcnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9wYXNzd29yZFRvZ2dsZWQgPSB0cnVlO1xuICAgICAgdGhpcy50eXBlID0gJ3RleHQnO1xuICAgICAgdGhpcy5fcGFzc3dvcmRGaWVsZEljb24gPSAndmlldy1kaXNhYmxlZCc7XG4gICAgfVxuICB9XG5cbiAgX29uSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRFdmVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHRoaXMuX2FwcGx5Q2hhcmFjdGVyQ291bnQoaW5wdXRFdmVudC52YWx1ZSk7XG4gICAgdGhpcy5fZW1wdHkgPSBpbnB1dEV2ZW50LnZhbHVlID09IG51bGwgfHwgaW5wdXRFdmVudC52YWx1ZSA9PT0gJyc7XG4gICAgdGhpcy5fZW1pdFZhbHVlSWZDaGFuZ2VkKGlucHV0RXZlbnQudmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF92YWxpZGF0ZVR5cGUoKTogdm9pZCB7XG4gICAgaWYgKEdSQU5JVEVfSU5QVVRfSU5DTFVERVMuaW5kZXhPZih0aGlzLnR5cGUpIDwgMCkge1xuICAgICAgdGhpcy5fc3VwcG9ydGVkID0gZmFsc2U7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYElucHV0IHR5cGUgXCIke3RoaXMudHlwZX1cIiBpc24ndCBzdXBwb3J0ZWQgYnkgZ3Jhbml0ZUlucHV0RmllbGQuYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUNoYXJhY3RlckNvdW50KGlucHV0U3RyaW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb3VudGNoYXJhY3RlcnMgJiYgaW5wdXRTdHJpbmcgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fY3VycmVudENoYXJDb3VudCA9IGlucHV0U3RyaW5nLmxlbmd0aDtcblxuICAgICAgaWYgKHRoaXMuX2N1cnJlbnRDaGFyQ291bnQgPiB0aGlzLm1heGxlbmd0aCkge1xuICAgICAgICBpbnB1dFN0cmluZyA9IGlucHV0U3RyaW5nLnNsaWNlKDAsIHRoaXMubWF4bGVuZ3RoKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGlucHV0U3RyaW5nO1xuICAgICAgICB0aGlzLl9lbWl0VmFsdWVJZkNoYW5nZWQoaW5wdXRTdHJpbmcpO1xuICAgICAgICB0aGlzLl9jdXJyZW50Q2hhckNvdW50ID0gdGhpcy5tYXhsZW5ndGg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0SW5wdXRFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRleHRhcmVhRWxlbWVudCgpOiBIVE1MVGV4dEFyZWFFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fdGV4dGFyZWFFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIF9lbWl0VmFsdWVJZkNoYW5nZWQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fbGFzdEVtaXR0ZWRWYWx1ZSkge1xuICAgICAgdGhpcy5fbGFzdEVtaXR0ZWRWYWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCJfc3VwcG9ydGVkXCJcbiAgY2xhc3M9XCJncmFuaXRlLWlucHV0LWNvbnRhaW5lclwiXG4gIFtjbGFzcy5ncmFuaXRlLWlucHV0LWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2NsYXNzLmdyYW5pdGUtaW5wdXQtcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICBbY2xhc3MuZ3Jhbml0ZS1pbnB1dC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtjbGFzcy5ncmFuaXRlLWlucHV0LXJlYWRvbmx5XT1cInJlYWRvbmx5XCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZ3Jhbml0ZS1pbnB1dC10b3Atcm93XCJcbiAgICBbY2xhc3MuZ3Jhbml0ZS1pbnB1dC1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2NsYXNzLmdyYW5pdGUtaW5wdXQtZW1wdHldPVwiX2VtcHR5XCJcbiAgICBbY2xhc3MuZ3Jhbml0ZS1pbnB1dC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2NsYXNzLmdyYW5pdGUtaW5wdXQtcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgIFtjbGFzcy5ncmFuaXRlLWlucHV0LWludmFsaWRdPVwiaW52YWxpZFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInByZWZpeGljb25cIlxuICAgICAgY2xhc3M9XCJncmFuaXRlLWlucHV0LXByZXBlbmRcIlxuICAgICAgW2NsYXNzLmdyYW5pdGUtaW5wdXQtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgW2NsYXNzLmdyYW5pdGUtaW5wdXQtZW1wdHldPVwiX2VtcHR5XCJcbiAgICA+XG4gICAgICA8Z3Jhbml0ZS1pY29uIGNsYXNzPVwiZ3Jhbml0ZS1pbnB1dC1wcmVwZW5kLWljb25cIj5cbiAgICAgICAge3sgcHJlZml4aWNvbiB9fVxuICAgICAgPC9ncmFuaXRlLWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cInR5cGUgIT09ICd0ZXh0YXJlYSc7IHRoZW4gaW5wdXRFbGVtZW50OyBlbHNlIHRleHRhcmVhRWxlbWVudFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNpbnB1dEVsZW1lbnQ+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI2lucHV0XG4gICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgIGNsYXNzPVwiZ3Jhbml0ZS1pbnB1dC1iYXNlXCJcbiAgICAgICAgW2NsYXNzLmdyYW5pdGUtaW5wdXQtaW52YWxpZF09XCJpbnZhbGlkXCJcbiAgICAgICAgW2NsYXNzLmdyYW5pdGUtaW5wdXQtZW1wdHldPVwiX2VtcHR5XCJcbiAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgIFthdHRyLnR5cGVdPVwidHlwZVwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIFthdHRyLm1heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRieVwiXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpbnZhbGlkXCJcbiAgICAgICAgKGlucHV0KT1cIl9vbklucHV0KCRldmVudClcIlxuICAgICAgLz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJfcGFzc3dvcmRGaWVsZFwiXG4gICAgICBjbGFzcz1cImdyYW5pdGUtaW5wdXQtYXBwZW5kXCJcbiAgICAgIFtjbGFzcy5ncmFuaXRlLWlucHV0LXJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIFtjbGFzcy5ncmFuaXRlLWlucHV0LWVtcHR5XT1cIl9lbXB0eVwiXG4gICAgICAoY2xpY2spPVwiX3RvZ2dsZVBhc3N3b3JkKClcIlxuICAgID5cbiAgICAgIDxncmFuaXRlLWljb24gY2xhc3M9XCJncmFuaXRlLWlucHV0LXBhc3N3b3JkLXRvZ2dsZS1pY29uXCI+XG4gICAgICAgIHt7IF9wYXNzd29yZEZpZWxkSWNvbiB9fVxuICAgICAgPC9ncmFuaXRlLWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIV9wYXNzd29yZEZpZWxkXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZ3Jhbml0ZUlucHV0U3VmZml4QnV0dG9uXVwiPjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dGFyZWFFbGVtZW50PlxuICAgICAgPHRleHRhcmVhXG4gICAgICAgICN0ZXh0YXJlYVxuICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICBjbGFzcz1cImdyYW5pdGUtaW5wdXQtYmFzZSBncmFuaXRlLXRleHQtYXJlYVwiXG4gICAgICAgIFtjbGFzcy5ncmFuaXRlLWlucHV0LWludmFsaWRdPVwiaW52YWxpZFwiXG4gICAgICAgIFtjbGFzcy5ncmFuaXRlLWlucHV0LWVtcHR5XT1cIl9lbXB0eVwiXG4gICAgICAgIHJvd3M9XCIxXCJcbiAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgIFthdHRyLnR5cGVdPVwidHlwZVwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgIFthdHRyLm1heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRieVwiXG4gICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaW52YWxpZFwiXG4gICAgICAgIChpbnB1dCk9XCJfb25JbnB1dCgkZXZlbnQpXCJcbiAgICAgID48L3RleHRhcmVhPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJjb3VudGNoYXJhY3RlcnNcIiBjbGFzcz1cImdyYW5pdGUtaW5wdXQtYm90dG9tLXJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJncmFuaXRlLWlucHV0LWNoYXItY291bnRcIj5cbiAgICAgIHt7IF9jdXJyZW50Q2hhckNvdW50IH19L3t7IG1heGxlbmd0aCB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,20 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { GraniteInputFieldComponent } from './input-field.component';
4
+ import { GraniteIconModule } from '../icon/icon.module';
5
+ import { GraniteButtonModule } from '../button/button.module';
6
+ import * as i0 from "@angular/core";
7
+ export class GraniteInputFieldModule {
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteInputFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: GraniteInputFieldModule, declarations: [GraniteInputFieldComponent], imports: [CommonModule, GraniteIconModule, GraniteButtonModule], exports: [GraniteInputFieldComponent] }); }
10
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteInputFieldModule, imports: [CommonModule, GraniteIconModule, GraniteButtonModule] }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteInputFieldModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ imports: [CommonModule, GraniteIconModule, GraniteButtonModule],
16
+ declarations: [GraniteInputFieldComponent],
17
+ exports: [GraniteInputFieldComponent],
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmllbGQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9pbnB1dC1maWVsZC9pbnB1dC1maWVsZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBTzlELE1BQU0sT0FBTyx1QkFBdUI7K0dBQXZCLHVCQUF1QjtnSEFBdkIsdUJBQXVCLGlCQUhuQiwwQkFBMEIsYUFEL0IsWUFBWSxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixhQUVwRCwwQkFBMEI7Z0hBRXpCLHVCQUF1QixZQUp4QixZQUFZLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1COzs0RkFJbkQsdUJBQXVCO2tCQUxuQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FBQztvQkFDL0QsWUFBWSxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQzFDLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgR3Jhbml0ZUlucHV0RmllbGRDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmFuaXRlSWNvbk1vZHVsZSB9IGZyb20gJy4uL2ljb24vaWNvbi5tb2R1bGUnO1xuaW1wb3J0IHsgR3Jhbml0ZUJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24ubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgR3Jhbml0ZUljb25Nb2R1bGUsIEdyYW5pdGVCdXR0b25Nb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtHcmFuaXRlSW5wdXRGaWVsZENvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtHcmFuaXRlSW5wdXRGaWVsZENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEdyYW5pdGVJbnB1dEZpZWxkTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,31 @@
1
+ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
2
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class GraniteLabelComponent {
6
+ constructor() {
7
+ this.for = null;
8
+ this.form = null;
9
+ this.required = false;
10
+ }
11
+ ngOnChanges(changes) {
12
+ if (changes.required) {
13
+ this.required = coerceBooleanProperty(changes.required.currentValue);
14
+ }
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GraniteLabelComponent, selector: "granite-label", inputs: { for: "for", form: "form", required: "required" }, host: { classAttribute: "granite-label" }, exportAs: ["graniteLabel"], usesOnChanges: true, ngImport: i0, template: "<label [attr.for]=\"for\" [attr.form]=\"form\">\n <i *ngIf=\"required\" aria-label=\"required\">*</i>\n <ng-content></ng-content>\n</label>\n", styles: [":host{box-sizing:border-box;font:inherit;font-size:var(--granite-font-size-micro);color:var(--granite-color-text-weak)}:host *,:host *:before,:host *:after{box-sizing:inherit}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteLabelComponent, decorators: [{
20
+ type: Component,
21
+ args: [{ selector: 'granite-label', exportAs: 'graniteLabel', host: {
22
+ class: 'granite-label',
23
+ }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<label [attr.for]=\"for\" [attr.form]=\"form\">\n <i *ngIf=\"required\" aria-label=\"required\">*</i>\n <ng-content></ng-content>\n</label>\n", styles: [":host{box-sizing:border-box;font:inherit;font-size:var(--granite-font-size-micro);color:var(--granite-color-text-weak)}:host *,:host *:before,:host *:after{box-sizing:inherit}\n"] }]
24
+ }], propDecorators: { for: [{
25
+ type: Input
26
+ }], form: [{
27
+ type: Input
28
+ }], required: [{
29
+ type: Input
30
+ }] } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9sYWJlbC9sYWJlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL2xhYmVsL2xhYmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBWTlELE1BQU0sT0FBTyxxQkFBcUI7SUFWbEM7UUFZRSxRQUFHLEdBQWtCLElBQUksQ0FBQztRQUcxQixTQUFJLEdBQWtCLElBQUksQ0FBQztRQUczQixhQUFRLEdBQVksS0FBSyxDQUFDO0tBTzNCO0lBTEMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0gsQ0FBQzsrR0FkVSxxQkFBcUI7bUdBQXJCLHFCQUFxQiw2TUNuQmxDLGlKQUlBOzs0RkRlYSxxQkFBcUI7a0JBVmpDLFNBQVM7K0JBQ0UsZUFBZSxZQUNmLGNBQWMsUUFDbEI7d0JBQ0osS0FBSyxFQUFFLGVBQWU7cUJBQ3ZCLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUkvQyxHQUFHO3NCQURGLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ3Jhbml0ZS1sYWJlbCcsXG4gIGV4cG9ydEFzOiAnZ3Jhbml0ZUxhYmVsJyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZ3Jhbml0ZS1sYWJlbCcsXG4gIH0sXG4gIHRlbXBsYXRlVXJsOiAnLi9sYWJlbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xhYmVsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBHcmFuaXRlTGFiZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBmb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIGZvcm06IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnJlcXVpcmVkKSB7XG4gICAgICB0aGlzLnJlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXMucmVxdWlyZWQuY3VycmVudFZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxsYWJlbCBbYXR0ci5mb3JdPVwiZm9yXCIgW2F0dHIuZm9ybV09XCJmb3JtXCI+XG4gIDxpICpuZ0lmPVwicmVxdWlyZWRcIiBhcmlhLWxhYmVsPVwicmVxdWlyZWRcIj4qPC9pPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2xhYmVsPlxuIl19
@@ -0,0 +1,18 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { GraniteLabelComponent } from './label.component';
4
+ import * as i0 from "@angular/core";
5
+ export class GraniteLabelModule {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteLabelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: GraniteLabelModule, declarations: [GraniteLabelComponent], imports: [CommonModule], exports: [GraniteLabelComponent] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteLabelModule, imports: [CommonModule] }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteLabelModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ declarations: [GraniteLabelComponent],
14
+ imports: [CommonModule],
15
+ exports: [GraniteLabelComponent],
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9sYWJlbC9sYWJlbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBTzFELE1BQU0sT0FBTyxrQkFBa0I7K0dBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQUpkLHFCQUFxQixhQUMxQixZQUFZLGFBQ1oscUJBQXFCO2dIQUVwQixrQkFBa0IsWUFIbkIsWUFBWTs7NEZBR1gsa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNyQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgR3Jhbml0ZUxhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi9sYWJlbC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtHcmFuaXRlTGFiZWxDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZXhwb3J0czogW0dyYW5pdGVMYWJlbENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEdyYW5pdGVMYWJlbE1vZHVsZSB7fVxuIl19
@@ -0,0 +1,23 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class GraniteDividerDirective {
4
+ constructor() {
5
+ this.dividerDirection = 'top';
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteDividerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: GraniteDividerDirective, selector: "[graniteDivider]", inputs: { dividerDirection: "dividerDirection" }, host: { properties: { "class.granite-divider-top": "dividerDirection === \"top\"", "class.granite-divider-bottom": "dividerDirection === \"bottom\"" } }, exportAs: ["graniteDivider"], ngImport: i0 }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteDividerDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{
13
+ selector: '[graniteDivider]',
14
+ exportAs: 'graniteDivider',
15
+ host: {
16
+ '[class.granite-divider-top]': 'dividerDirection === "top"',
17
+ '[class.granite-divider-bottom]': 'dividerDirection === "bottom"',
18
+ },
19
+ }]
20
+ }], propDecorators: { dividerDirection: [{
21
+ type: Input
22
+ }] } });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGl2aWRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL21lbnUvZGl2aWRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBVWpELE1BQU0sT0FBTyx1QkFBdUI7SUFScEM7UUFVRSxxQkFBZ0IsR0FBVyxLQUFLLENBQUM7S0FDbEM7K0dBSFksdUJBQXVCO21HQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBUm5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsSUFBSSxFQUFFO3dCQUNKLDZCQUE2QixFQUFFLDRCQUE0Qjt3QkFDM0QsZ0NBQWdDLEVBQUUsK0JBQStCO3FCQUNsRTtpQkFDRjs4QkFHQyxnQkFBZ0I7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2dyYW5pdGVEaXZpZGVyXScsXG4gIGV4cG9ydEFzOiAnZ3Jhbml0ZURpdmlkZXInLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5ncmFuaXRlLWRpdmlkZXItdG9wXSc6ICdkaXZpZGVyRGlyZWN0aW9uID09PSBcInRvcFwiJyxcbiAgICAnW2NsYXNzLmdyYW5pdGUtZGl2aWRlci1ib3R0b21dJzogJ2RpdmlkZXJEaXJlY3Rpb24gPT09IFwiYm90dG9tXCInLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBHcmFuaXRlRGl2aWRlckRpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpXG4gIGRpdmlkZXJEaXJlY3Rpb246IHN0cmluZyA9ICd0b3AnO1xufVxuIl19