@ifsworld/granite-components 3.1.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/bundles/ifsworld-granite-components.umd.js +323 -4
  2. package/bundles/ifsworld-granite-components.umd.js.map +1 -1
  3. package/bundles/ifsworld-granite-components.umd.min.js +3 -3
  4. package/bundles/ifsworld-granite-components.umd.min.js.map +1 -1
  5. package/esm2015/ifsworld-granite-components.js +5 -0
  6. package/esm2015/ifsworld-granite-components.js.map +1 -1
  7. package/esm2015/ifsworld-granite-components.metadata.json +1 -1
  8. package/esm2015/index.js +5 -0
  9. package/esm2015/index.js.map +1 -1
  10. package/esm2015/index.metadata.json +1 -1
  11. package/esm2015/lib/core/pipes/pure-pipes.module.js +11 -0
  12. package/esm2015/lib/core/pipes/pure-pipes.module.js.map +1 -0
  13. package/esm2015/lib/core/pipes/pure-pipes.module.metadata.json +1 -0
  14. package/esm2015/lib/core/pipes/title.pipe.js +17 -0
  15. package/esm2015/lib/core/pipes/title.pipe.js.map +1 -0
  16. package/esm2015/lib/core/pipes/title.pipe.metadata.json +1 -0
  17. package/esm2015/lib/input-field/input-field.component.js +144 -0
  18. package/esm2015/lib/input-field/input-field.component.js.map +1 -0
  19. package/esm2015/lib/input-field/input-field.component.metadata.json +1 -0
  20. package/esm2015/lib/input-field/input-field.module.js +15 -0
  21. package/esm2015/lib/input-field/input-field.module.js.map +1 -0
  22. package/esm2015/lib/input-field/input-field.module.metadata.json +1 -0
  23. package/esm2015/lib/table/cell/cell.js +12 -0
  24. package/esm2015/lib/table/cell/cell.js.map +1 -0
  25. package/esm2015/lib/table/cell/cell.metadata.json +1 -0
  26. package/esm2015/lib/table/cell/table-data-cell.component.js +21 -0
  27. package/esm2015/lib/table/cell/table-data-cell.component.js.map +1 -0
  28. package/esm2015/lib/table/cell/table-data-cell.component.metadata.json +1 -0
  29. package/esm2015/lib/table/cell/table-header-cell.component.js +13 -0
  30. package/esm2015/lib/table/cell/table-header-cell.component.js.map +1 -0
  31. package/esm2015/lib/table/cell/table-header-cell.component.metadata.json +1 -0
  32. package/esm2015/lib/table/column/table-column.directive.js +16 -0
  33. package/esm2015/lib/table/column/table-column.directive.js.map +1 -0
  34. package/esm2015/lib/table/column/table-column.directive.metadata.json +1 -0
  35. package/esm2015/lib/table/table-constants.library.js +4 -0
  36. package/esm2015/lib/table/table-constants.library.js.map +1 -0
  37. package/esm2015/lib/table/table-constants.library.metadata.json +1 -0
  38. package/esm2015/lib/table/table.component.js +28 -0
  39. package/esm2015/lib/table/table.component.js.map +1 -0
  40. package/esm2015/lib/table/table.component.metadata.json +1 -0
  41. package/esm2015/lib/table/table.module.js +24 -0
  42. package/esm2015/lib/table/table.module.js.map +1 -0
  43. package/esm2015/lib/table/table.module.metadata.json +1 -0
  44. package/fesm2015/ifsworld-granite-components.js +278 -2
  45. package/fesm2015/ifsworld-granite-components.js.map +1 -1
  46. package/ifsworld-granite-components.d.ts +5 -0
  47. package/ifsworld-granite-components.metadata.json +1 -1
  48. package/index.d.ts +5 -0
  49. package/lib/core/pipes/pure-pipes.module.d.ts +2 -0
  50. package/lib/core/pipes/title.pipe.d.ts +4 -0
  51. package/lib/input-field/input-field.component.d.ts +39 -0
  52. package/lib/input-field/input-field.module.d.ts +2 -0
  53. package/lib/table/cell/cell.d.ts +5 -0
  54. package/lib/table/cell/table-data-cell.component.d.ts +11 -0
  55. package/lib/table/cell/table-header-cell.component.d.ts +3 -0
  56. package/lib/table/column/table-column.directive.d.ts +13 -0
  57. package/lib/table/table-constants.library.d.ts +3 -0
  58. package/lib/table/table.component.d.ts +16 -0
  59. package/lib/table/table.module.d.ts +2 -0
  60. package/package.json +1 -1
  61. package/src/lib/core/style/_mixins.scss +10 -0
  62. package/src/lib/core/style/_responsive.scss +1 -0
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/coercion'), require('rxjs'), require('rxjs/operators'), require('@angular/cdk/testing'), require('@angular/cdk/overlay'), require('@angular/cdk/portal'), require('@angular/cdk/a11y'), require('@angular/cdk/keycodes'), require('@angular/animations'), require('@angular/cdk/bidi'), require('@angular/cdk/platform'), require('@angular/cdk/collections')) :
3
- typeof define === 'function' && define.amd ? define('@ifsworld/granite-components', ['exports', '@angular/core', '@angular/common', '@angular/cdk/coercion', 'rxjs', 'rxjs/operators', '@angular/cdk/testing', '@angular/cdk/overlay', '@angular/cdk/portal', '@angular/cdk/a11y', '@angular/cdk/keycodes', '@angular/animations', '@angular/cdk/bidi', '@angular/cdk/platform', '@angular/cdk/collections'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.ifsworld = global.ifsworld || {}, global.ifsworld['granite-components'] = {}), global.ng.core, global.ng.common, global.ng.cdk.coercion, global.rxjs, global.rxjs.operators, global.ng.cdk.testing, global.ng.cdk.overlay, global.ng.cdk.portal, global.ng.cdk.a11y, global.ng.cdk.keycodes, global.ng.animations, global.ng.cdk.bidi, global.ng.cdk.platform, global.ng.cdk.collections));
5
- }(this, (function (exports, core, common, coercion, rxjs, operators, testing, overlay, portal, a11y, keycodes, animations, bidi, platform, collections) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/coercion'), require('rxjs'), require('rxjs/operators'), require('@angular/cdk/testing'), require('@angular/cdk/overlay'), require('@angular/cdk/portal'), require('@angular/cdk/a11y'), require('@angular/cdk/keycodes'), require('@angular/animations'), require('@angular/cdk/bidi'), require('@angular/cdk/platform'), require('@angular/cdk/collections'), require('@angular/cdk/table')) :
3
+ typeof define === 'function' && define.amd ? define('@ifsworld/granite-components', ['exports', '@angular/core', '@angular/common', '@angular/cdk/coercion', 'rxjs', 'rxjs/operators', '@angular/cdk/testing', '@angular/cdk/overlay', '@angular/cdk/portal', '@angular/cdk/a11y', '@angular/cdk/keycodes', '@angular/animations', '@angular/cdk/bidi', '@angular/cdk/platform', '@angular/cdk/collections', '@angular/cdk/table'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.ifsworld = global.ifsworld || {}, global.ifsworld['granite-components'] = {}), global.ng.core, global.ng.common, global.ng.cdk.coercion, global.rxjs, global.rxjs.operators, global.ng.cdk.testing, global.ng.cdk.overlay, global.ng.cdk.portal, global.ng.cdk.a11y, global.ng.cdk.keycodes, global.ng.animations, global.ng.cdk.bidi, global.ng.cdk.platform, global.ng.cdk.collections, global.ng.cdk.table));
5
+ }(this, (function (exports, core, common, coercion, rxjs, operators, testing, overlay, portal, a11y, keycodes, animations, bidi, platform, collections, table) { 'use strict';
6
6
 
7
7
  var GraniteArrangeGridItemComponent = /** @class */ (function () {
8
8
  function GraniteArrangeGridItemComponent(element) {
@@ -2925,6 +2925,315 @@
2925
2925
  },] }
2926
2926
  ];
2927
2927
 
2928
+ var GraniteTableColumnDirective = /** @class */ (function () {
2929
+ function GraniteTableColumnDirective() {
2930
+ }
2931
+ return GraniteTableColumnDirective;
2932
+ }());
2933
+ GraniteTableColumnDirective.decorators = [
2934
+ { type: core.Directive, args: [{
2935
+ // eslint-disable-next-line @angular-eslint/directive-selector
2936
+ selector: 'granite-table-column',
2937
+ },] }
2938
+ ];
2939
+ GraniteTableColumnDirective.propDecorators = {
2940
+ name: [{ type: core.Input }],
2941
+ title: [{ type: core.Input }],
2942
+ staticType: [{ type: core.Input }],
2943
+ tableCellTemplateRef: [{ type: core.ContentChild, args: ['graniteTableCellTemplate', { static: false },] }]
2944
+ };
2945
+
2946
+ var TableConstants = /** @class */ (function () {
2947
+ function TableConstants() {
2948
+ }
2949
+ return TableConstants;
2950
+ }());
2951
+ TableConstants.CELL_ID_PREFIX = 'granite-cell';
2952
+
2953
+ var GraniteTableComponent = /** @class */ (function () {
2954
+ function GraniteTableComponent() {
2955
+ this.ariaLabel = null;
2956
+ this.cellIdPrefix = TableConstants.CELL_ID_PREFIX;
2957
+ }
2958
+ GraniteTableComponent.prototype.ngAfterContentInit = function () {
2959
+ this.columns = this.tableColumnsComponent.toArray();
2960
+ this.renderedColumns = this.columns.map(function (column) { return column.name; });
2961
+ };
2962
+ return GraniteTableComponent;
2963
+ }());
2964
+ GraniteTableComponent.decorators = [
2965
+ { type: core.Component, args: [{
2966
+ selector: 'granite-table',
2967
+ template: "<cdk-table\n [dataSource]=\"dataSource\"\n multiTemplateDataRows\n [trackBy]=\"trackBy\"\n [attr.aria-label]=\"ariaLabel\"\n>\n <ng-container\n *ngFor=\"let column of columns; index as columnI\"\n [cdkColumnDef]=\"column.name\"\n >\n <!-- Cell Header -->\n <cdk-header-cell *cdkHeaderCellDef graniteTableHeaderCell>\n {{ (column.title ? column.title : column.name) | graniteTitle }}\n </cdk-header-cell>\n\n <!-- Cell Data -->\n <cdk-cell\n graniteTableDataCell\n *cdkCellDef=\"let row; let rowI = dataIndex\"\n [id]=\"cellIdPrefix + '-' + rowI + '-' + columnI\"\n [value]=\"row[column.name]\"\n [rowIndex]=\"rowI\"\n [columnIndex]=\"columnI\"\n [staticType]=\"column.staticType\"\n [column]=\"column\"\n [tableCellTemplateRef]=\"column.tableCellTemplateRef\"\n [row]=\"row\"\n ></cdk-cell>\n </ng-container>\n\n <cdk-header-row *cdkHeaderRowDef=\"renderedColumns\"></cdk-header-row>\n <cdk-row\n *cdkRowDef=\"let row; let rowI = dataIndex; columns: renderedColumns\"\n [attr.aria-rowindex]=\"rowI + 1\"\n ></cdk-row>\n</cdk-table>\n",
2968
+ changeDetection: core.ChangeDetectionStrategy.OnPush,
2969
+ styles: [":host{box-sizing:border-box}:host *,:host :after,:host :before{box-sizing:inherit}cdk-table{flex-direction:column;background-color:var(--granite-color-background-variant)}cdk-header-row,cdk-row,cdk-table{display:flex}cdk-cell,cdk-header-cell{flex:1;height:calc(var(--granite-spacing-m) * 2.5)}cdk-cell{border-top:1px solid var(--granite-color-border-soft)}"]
2970
+ },] }
2971
+ ];
2972
+ GraniteTableComponent.propDecorators = {
2973
+ dataSource: [{ type: core.Input }],
2974
+ trackBy: [{ type: core.Input }],
2975
+ ariaLabel: [{ type: core.Input, args: ['aria-label',] }],
2976
+ tableColumnsComponent: [{ type: core.ContentChildren, args: [GraniteTableColumnDirective,] }]
2977
+ };
2978
+
2979
+ var GraniteCell = /** @class */ (function () {
2980
+ function GraniteCell() {
2981
+ }
2982
+ return GraniteCell;
2983
+ }());
2984
+ GraniteCell.decorators = [
2985
+ { type: core.Directive }
2986
+ ];
2987
+ GraniteCell.propDecorators = {
2988
+ id: [{ type: core.Input }],
2989
+ column: [{ type: core.Input }]
2990
+ };
2991
+
2992
+ var GraniteTableDataCellComponent = /** @class */ (function (_super) {
2993
+ __extends(GraniteTableDataCellComponent, _super);
2994
+ function GraniteTableDataCellComponent() {
2995
+ return _super !== null && _super.apply(this, arguments) || this;
2996
+ }
2997
+ return GraniteTableDataCellComponent;
2998
+ }(GraniteCell));
2999
+ GraniteTableDataCellComponent.decorators = [
3000
+ { type: core.Component, args: [{
3001
+ // eslint-disable-next-line @angular-eslint/component-selector
3002
+ selector: 'cdk-cell[graniteTableDataCell]',
3003
+ template: "<span class=\"granite-table-data-cell-static-container\">\n <ng-template\n [ngTemplateOutlet]=\"tableCellTemplateRef || defaultTableCellTemplate\"\n [ngTemplateOutletContext]=\"{\n data: value,\n rowIndex: rowIndex,\n columnIndex: columnIndex,\n column: column,\n row: row\n }\"\n ></ng-template>\n</span>\n\n<ng-template #defaultTableCellTemplate>\n <ng-container [ngSwitch]=\"staticType\">\n <ng-container *ngSwitchCase=\"'badge'\">\n <granite-badge>{{ value }}</granite-badge>\n </ng-container>\n <ng-container *ngSwitchDefault>{{ value }}</ng-container>\n </ng-container>\n</ng-template>\n",
3004
+ styles: [":host{box-sizing:border-box}:host *,:host :after,:host :before{box-sizing:inherit}.granite-table-data-cell-static-container{padding:var(--granite-spacing-s);height:inherit;font-size:var(--granite-font-size-body-small);line-height:var(--granite-line-height-regular);display:flex;justify-content:center;align-items:center;color:var(--granite-color-text)}"]
3005
+ },] }
3006
+ ];
3007
+ GraniteTableDataCellComponent.propDecorators = {
3008
+ value: [{ type: core.Input }],
3009
+ staticType: [{ type: core.Input }],
3010
+ rowIndex: [{ type: core.Input }],
3011
+ columnIndex: [{ type: core.Input }],
3012
+ tableCellTemplateRef: [{ type: core.Input }],
3013
+ row: [{ type: core.Input }]
3014
+ };
3015
+
3016
+ var GraniteTableHeaderCellComponent = /** @class */ (function (_super) {
3017
+ __extends(GraniteTableHeaderCellComponent, _super);
3018
+ function GraniteTableHeaderCellComponent() {
3019
+ return _super !== null && _super.apply(this, arguments) || this;
3020
+ }
3021
+ return GraniteTableHeaderCellComponent;
3022
+ }(GraniteCell));
3023
+ GraniteTableHeaderCellComponent.decorators = [
3024
+ { type: core.Component, args: [{
3025
+ // eslint-disable-next-line @angular-eslint/component-selector
3026
+ selector: 'cdk-header-cell[graniteTableHeaderCell]',
3027
+ template: "<span class=\"granite-table-header-cell-title\">\n <ng-content></ng-content>\n</span>\n",
3028
+ styles: [":host{box-sizing:border-box}:host *,:host :after,:host :before{box-sizing:inherit}.granite-table-header-cell-title{padding:var(--granite-spacing-s);height:inherit;font-size:var(--granite-font-size-micro);line-height:var(--granite-line-height-flowing);letter-spacing:.015em;font-weight:400;display:flex;justify-content:center;align-items:center;color:var(--granite-color-text-weak)}"]
3029
+ },] }
3030
+ ];
3031
+
3032
+ var GraniteTitlePipe = /** @class */ (function () {
3033
+ function GraniteTitlePipe() {
3034
+ }
3035
+ GraniteTitlePipe.prototype.transform = function (value) {
3036
+ var words = value.split(/(?=[A-Z ])/);
3037
+ return words
3038
+ .map(function (word) { return word.trim(); })
3039
+ .filter(Boolean)
3040
+ .map(function (word) { return word.charAt(0).toLocaleUpperCase() + word.slice(1); })
3041
+ .join(' ');
3042
+ };
3043
+ return GraniteTitlePipe;
3044
+ }());
3045
+ GraniteTitlePipe.decorators = [
3046
+ { type: core.Pipe, args: [{
3047
+ name: 'graniteTitle',
3048
+ },] }
3049
+ ];
3050
+
3051
+ var PurePipesModule = /** @class */ (function () {
3052
+ function PurePipesModule() {
3053
+ }
3054
+ return PurePipesModule;
3055
+ }());
3056
+ PurePipesModule.decorators = [
3057
+ { type: core.NgModule, args: [{
3058
+ exports: [GraniteTitlePipe],
3059
+ declarations: [GraniteTitlePipe],
3060
+ },] }
3061
+ ];
3062
+
3063
+ var GraniteTableModule = /** @class */ (function () {
3064
+ function GraniteTableModule() {
3065
+ }
3066
+ return GraniteTableModule;
3067
+ }());
3068
+ GraniteTableModule.decorators = [
3069
+ { type: core.NgModule, args: [{
3070
+ declarations: [
3071
+ GraniteTableComponent,
3072
+ GraniteTableDataCellComponent,
3073
+ GraniteTableHeaderCellComponent,
3074
+ GraniteTableColumnDirective,
3075
+ ],
3076
+ imports: [common.CommonModule, table.CdkTableModule, GraniteBadgeModule, PurePipesModule],
3077
+ exports: [GraniteTableComponent, GraniteTableColumnDirective],
3078
+ },] }
3079
+ ];
3080
+
3081
+ var GRANITE_INPUT_INCLUDES = ['text', 'number', 'password', 'textarea'];
3082
+ var GraniteInputFieldComponent = /** @class */ (function () {
3083
+ function GraniteInputFieldComponent(_focusMonitor) {
3084
+ this._focusMonitor = _focusMonitor;
3085
+ this.id = null;
3086
+ this.name = null;
3087
+ this.type = 'text';
3088
+ this.value = '';
3089
+ this.required = false;
3090
+ this.readonly = false;
3091
+ this.invalid = false;
3092
+ this.disabled = false;
3093
+ this.placeholder = '';
3094
+ this.maxlength = 255;
3095
+ this.countcharacters = false;
3096
+ this.ariaLabel = null;
3097
+ this.ariaLabelledby = null;
3098
+ this.valueChange = new core.EventEmitter();
3099
+ this._supported = true;
3100
+ this._empty = false;
3101
+ this._passwordFieldIcon = 'view';
3102
+ this._passwordField = false;
3103
+ this._passwordToggled = false;
3104
+ this._currentCharCount = 0;
3105
+ }
3106
+ GraniteInputFieldComponent.prototype.ngOnInit = function () {
3107
+ this._validateType();
3108
+ this._passwordField = this.type == 'password';
3109
+ this._empty = this.value == null || this.value === '';
3110
+ };
3111
+ GraniteInputFieldComponent.prototype.ngOnChanges = function (changes) {
3112
+ if (changes.required) {
3113
+ this.required = coercion.coerceBooleanProperty(changes.required.currentValue);
3114
+ }
3115
+ if (changes.readonly) {
3116
+ this.readonly = coercion.coerceBooleanProperty(changes.readonly.currentValue);
3117
+ }
3118
+ if (changes.invalid) {
3119
+ this.invalid = coercion.coerceBooleanProperty(changes.invalid.currentValue);
3120
+ }
3121
+ if (changes.disabled) {
3122
+ this.disabled = coercion.coerceBooleanProperty(changes.disabled.currentValue);
3123
+ }
3124
+ if (changes.countcharacters) {
3125
+ this.countcharacters = coercion.coerceBooleanProperty(changes.countcharacters.currentValue);
3126
+ }
3127
+ if (changes.value) {
3128
+ this._empty = this.value == null || this.value === '';
3129
+ }
3130
+ if (changes.type) {
3131
+ this._validateType();
3132
+ }
3133
+ };
3134
+ GraniteInputFieldComponent.prototype.focus = function (origin, options) {
3135
+ if (origin === void 0) { origin = 'program'; }
3136
+ if (this.type === 'text') {
3137
+ this._focusMonitor.focusVia(this._getInputElement(), origin, options);
3138
+ }
3139
+ else if (this.type === 'textarea') {
3140
+ this._focusMonitor.focusVia(this._getTextareaElement(), origin, options);
3141
+ }
3142
+ };
3143
+ GraniteInputFieldComponent.prototype._togglePassword = function () {
3144
+ if (this._passwordToggled) {
3145
+ this._passwordToggled = false;
3146
+ this.type = 'password';
3147
+ this._passwordFieldIcon = 'view';
3148
+ }
3149
+ else {
3150
+ this._passwordToggled = true;
3151
+ this.type = 'text';
3152
+ this._passwordFieldIcon = 'view-disabled';
3153
+ }
3154
+ };
3155
+ GraniteInputFieldComponent.prototype._onKeyUp = function (event) {
3156
+ var inputEvent = event.target;
3157
+ this._applyCharacterCount(inputEvent.value);
3158
+ this._empty = inputEvent.value == null || inputEvent.value === '';
3159
+ this.valueChange.emit(inputEvent.value);
3160
+ };
3161
+ GraniteInputFieldComponent.prototype._onInput = function (event) {
3162
+ var inputEvent = event.target;
3163
+ this._empty = inputEvent.value == null || inputEvent.value === '';
3164
+ this.valueChange.emit(inputEvent.value);
3165
+ };
3166
+ GraniteInputFieldComponent.prototype._validateType = function () {
3167
+ if (GRANITE_INPUT_INCLUDES.indexOf(this.type) < 0) {
3168
+ this._supported = false;
3169
+ throw Error("Input type \"" + this.type + "\" isn't supported by graniteInputField.");
3170
+ }
3171
+ };
3172
+ GraniteInputFieldComponent.prototype._applyCharacterCount = function (inputString) {
3173
+ if (this.countcharacters) {
3174
+ this._currentCharCount = inputString.length;
3175
+ if (this._currentCharCount > this.maxlength) {
3176
+ inputString = inputString.slice(0, this.maxlength);
3177
+ this._currentCharCount = this.maxlength;
3178
+ }
3179
+ }
3180
+ };
3181
+ GraniteInputFieldComponent.prototype._getInputElement = function () {
3182
+ return this._inputElement.nativeElement;
3183
+ };
3184
+ GraniteInputFieldComponent.prototype._getTextareaElement = function () {
3185
+ return this._textareaElement.nativeElement;
3186
+ };
3187
+ return GraniteInputFieldComponent;
3188
+ }());
3189
+ GraniteInputFieldComponent.decorators = [
3190
+ { type: core.Component, args: [{
3191
+ selector: 'granite-input-field',
3192
+ exportAs: 'graniteInputField',
3193
+ 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 >\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 (keyup)=\"_onKeyUp($event)\"\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-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 (keyup)=\"_onKeyUp($event)\"\n (input)=\"_onInput($event)\"\n ></textarea>\n </ng-template>\n\n <div\n class=\"granite-input-hover-bar\"\n [class.granite-input-invalid]=\"invalid\"\n [class.granite-input-empty]=\"_empty\"\n ></div>\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",
3194
+ host: {
3195
+ class: 'granite-input-field',
3196
+ },
3197
+ changeDetection: core.ChangeDetectionStrategy.OnPush,
3198
+ styles: [":host{transition:all .2s ease-out;width:calc(var(--granite-spacing-3-xl) * 3.625);height:var(--granite-spacing-xl);box-sizing:border-box}:host *,:host :after,:host :before{box-sizing:inherit}.granite-input-container{height:inherit;width:inherit;font-size:var(--granite-font-size-body-small)}.granite-input-container .granite-input-top-row{display:inline-flex;width:inherit;height:inherit;position:relative;background:var(--granite-color-background)}.granite-input-container .granite-input-top-row:hover .granite-input-hover-bar{height:calc(var(--granite-spacing-xs)/2)}.granite-input-container .granite-input-top-row:hover .granite-input-hover-bar.granite-input-invalid.granite-input-empty{background-color:var(--granite-color-focus)}.granite-input-container .granite-input-top-row .granite-text-area{min-width:calc(var(--granite-spacing-3-xl) * 3.625);min-height:var(--granite-spacing-xl)}.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-disabled .granite-input-hover-bar,.granite-input-container .granite-input-top-row.granite-input-readonly .granite-input-hover-bar{background-color:transparent}.granite-input-container .granite-input-top-row .granite-input-base{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;border:none;background-color:var(--granite-color-background-input);padding:var(--granite-spacing-s);width:inherit;height:inherit;color:var(--granite-color-text);font:inherit;font-weight:var(--granite-font-weight-regular);line-height:100%}.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::-moz-placeholder{color:var(--granite-color-text-weak)}.granite-input-container .granite-input-top-row .granite-input-base:required:-ms-input-placeholder{color:var(--granite-color-text-weak)}.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:-moz-read-only{background-color:transparent}.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::-moz-placeholder{color:var(--granite-color-text-hint)}.granite-input-container .granite-input-top-row .granite-input-base:-ms-input-placeholder{color:var(--granite-color-text-hint)}.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:hover::-moz-placeholder{color:var(--granite-color-text)}.granite-input-container .granite-input-top-row .granite-input-base:hover:-ms-input-placeholder{color:var(--granite-color-text)}.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 calc(var(--granite-spacing-xs)/2) var(--granite-color-focus),inset calc(var(--granite-spacing-xs)/2) 0 var(--granite-color-focus),inset calc(var(--granite-spacing-xs)/2 * -1) 0 var(--granite-color-focus),inset 0 calc(var(--granite-spacing-xs)/2 * -1) var(--granite-color-focus)}.granite-input-container .granite-input-top-row .granite-input-base:focus.granite-input-invalid{box-shadow:inset 0 calc(var(--granite-spacing-xs)/2 * -1) var(--granite-color-signal-failure),inset 0 calc(var(--granite-spacing-xs)/2) var(--granite-color-focus),inset calc(var(--granite-spacing-xs)/2) 0 var(--granite-color-focus),inset calc(var(--granite-spacing-xs)/2 * -1) 0 var(--granite-color-focus)}.granite-input-container .granite-input-top-row .granite-input-base:focus::-moz-placeholder{color:transparent}.granite-input-container .granite-input-top-row .granite-input-base:focus:-ms-input-placeholder{color:transparent}.granite-input-container .granite-input-top-row .granite-input-base:focus::placeholder{color:transparent}.granite-input-container .granite-input-top-row .granite-input-hover-bar{height:calc(var(--granite-spacing-xs)/4);background-color:var(--granite-color-border-hard);position:absolute;width:inherit;bottom:0}.granite-input-container .granite-input-top-row .granite-input-hover-bar.granite-input-invalid{background-color:var(--granite-color-signal-failure)}.granite-input-container .granite-input-top-row:focus-within .granite-input-hover-bar{background-color:transparent}.granite-input-container .granite-input-prepend{display:flex;align-items:center;padding:0 var(--granite-spacing-s);background:var(--granite-color-background-input)}.granite-input-container .granite-input-prepend .granite-input-prepend-icon{width:var(--granite-spacing-m);height:var(--granite-spacing-m);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 calc(var(--granite-spacing-xs)/2) var(--granite-color-focus),inset calc(var(--granite-spacing-xs)/2) 0 var(--granite-color-focus),inset calc(var(--granite-spacing-xs)/2 * -1) 0 var(--granite-color-focus),inset 0 calc(var(--granite-spacing-xs)/2 * -1) var(--granite-color-focus)}.granite-input-container .granite-input-append .granite-input-password-toggle-icon{width:-webkit-max-content;width:-moz-max-content;width:max-content;height:-webkit-max-content;height:-moz-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 var(--granite-spacing-xs) var(--granite-spacing-xs);padding:var(--granite-spacing-s);background-size:contain;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;box-shadow:none}.granite-input-container.granite-input-disabled,.granite-input-container.granite-input-readonly{background-color:transparent}"]
3199
+ },] }
3200
+ ];
3201
+ GraniteInputFieldComponent.ctorParameters = function () { return [
3202
+ { type: a11y.FocusMonitor }
3203
+ ]; };
3204
+ GraniteInputFieldComponent.propDecorators = {
3205
+ id: [{ type: core.Input }],
3206
+ name: [{ type: core.Input }],
3207
+ type: [{ type: core.Input }],
3208
+ value: [{ type: core.Input }],
3209
+ required: [{ type: core.Input }],
3210
+ readonly: [{ type: core.Input }],
3211
+ invalid: [{ type: core.Input }],
3212
+ disabled: [{ type: core.Input }],
3213
+ placeholder: [{ type: core.Input }],
3214
+ prefixicon: [{ type: core.Input }],
3215
+ maxlength: [{ type: core.Input }],
3216
+ countcharacters: [{ type: core.Input }],
3217
+ ariaLabel: [{ type: core.Input, args: ['aria-label',] }],
3218
+ ariaLabelledby: [{ type: core.Input, args: ['aria-labelledby',] }],
3219
+ valueChange: [{ type: core.Output }],
3220
+ _inputElement: [{ type: core.ViewChild, args: ['input',] }],
3221
+ _textareaElement: [{ type: core.ViewChild, args: ['textarea',] }]
3222
+ };
3223
+
3224
+ var GraniteInputFieldModule = /** @class */ (function () {
3225
+ function GraniteInputFieldModule() {
3226
+ }
3227
+ return GraniteInputFieldModule;
3228
+ }());
3229
+ GraniteInputFieldModule.decorators = [
3230
+ { type: core.NgModule, args: [{
3231
+ imports: [common.CommonModule, GraniteIconModule, GraniteButtonModule],
3232
+ declarations: [GraniteInputFieldComponent],
3233
+ exports: [GraniteInputFieldComponent],
3234
+ },] }
3235
+ ];
3236
+
2928
3237
  var ɵ0 = deviceDesktop.output;
2929
3238
  /**
2930
3239
  * Directive used to tell components and their sub components that client output
@@ -3066,6 +3375,8 @@
3066
3375
  exports.GraniteGridModule = GraniteGridModule;
3067
3376
  exports.GraniteIconComponent = GraniteIconComponent;
3068
3377
  exports.GraniteIconModule = GraniteIconModule;
3378
+ exports.GraniteInputFieldComponent = GraniteInputFieldComponent;
3379
+ exports.GraniteInputFieldModule = GraniteInputFieldModule;
3069
3380
  exports.GraniteMenuComponent = GraniteMenuComponent;
3070
3381
  exports.GraniteMenuHarness = GraniteMenuHarness;
3071
3382
  exports.GraniteMenuItemComponent = GraniteMenuItemComponent;
@@ -3076,6 +3387,9 @@
3076
3387
  exports.GraniteMenuTriggerForDirective = GraniteMenuTriggerForDirective;
3077
3388
  exports.GraniteRadioButtonComponent = GraniteRadioButtonComponent;
3078
3389
  exports.GraniteRadioButtonModule = GraniteRadioButtonModule;
3390
+ exports.GraniteTableColumnDirective = GraniteTableColumnDirective;
3391
+ exports.GraniteTableComponent = GraniteTableComponent;
3392
+ exports.GraniteTableModule = GraniteTableModule;
3079
3393
  exports.GraniteToggleSwitchComponent = GraniteToggleSwitchComponent;
3080
3394
  exports.GraniteToggleSwitchModule = GraniteToggleSwitchModule;
3081
3395
  exports._MenuBaseComponent = _MenuBaseComponent;
@@ -3088,6 +3402,11 @@
3088
3402
  exports.ɵa = GRANITE_MENU_PANEL;
3089
3403
  exports.ɵc = getEaseOutSteep;
3090
3404
  exports.ɵd = getEaseLinear;
3405
+ exports.ɵe = GraniteTableDataCellComponent;
3406
+ exports.ɵf = GraniteCell;
3407
+ exports.ɵg = GraniteTableHeaderCellComponent;
3408
+ exports.ɵh = PurePipesModule;
3409
+ exports.ɵi = GraniteTitlePipe;
3091
3410
 
3092
3411
  Object.defineProperty(exports, '__esModule', { value: true });
3093
3412