@fundamental-ngx/core 0.33.0-rc.86 → 0.33.0-rc.87

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 (104) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/package.json +1 -1
  6. package/bar/package.json +1 -1
  7. package/breadcrumb/package.json +1 -1
  8. package/bundles/fundamental-ngx-core-checkbox.umd.js +16 -2
  9. package/bundles/fundamental-ngx-core-checkbox.umd.js.map +1 -1
  10. package/busy-indicator/package.json +1 -1
  11. package/button/package.json +1 -1
  12. package/calendar/package.json +1 -1
  13. package/card/package.json +1 -1
  14. package/carousel/package.json +1 -1
  15. package/checkbox/bundles/fundamental-ngx-core-checkbox.umd.js +16 -2
  16. package/checkbox/bundles/fundamental-ngx-core-checkbox.umd.js.map +1 -1
  17. package/checkbox/checkbox/checkbox.component.d.ts +7 -1
  18. package/checkbox/esm2015/checkbox/checkbox.component.js +17 -3
  19. package/checkbox/esm2015/checkbox/checkbox.component.js.map +1 -1
  20. package/checkbox/esm2015/checkbox/checkbox.component.metadata.json +1 -1
  21. package/checkbox/fesm2015/fundamental-ngx-core-checkbox.js +17 -3
  22. package/checkbox/fesm2015/fundamental-ngx-core-checkbox.js.map +1 -1
  23. package/checkbox/fundamental-ngx-core-checkbox.metadata.json +1 -1
  24. package/checkbox/package.json +1 -1
  25. package/combobox/package.json +1 -1
  26. package/date-picker/package.json +1 -1
  27. package/datetime/package.json +1 -1
  28. package/datetime-picker/package.json +1 -1
  29. package/dialog/package.json +1 -1
  30. package/dynamic-page/package.json +1 -1
  31. package/dynamic-side-content/package.json +1 -1
  32. package/esm2015/checkbox/checkbox/checkbox.component.js +17 -3
  33. package/esm2015/checkbox/checkbox/checkbox.component.js.map +1 -1
  34. package/esm2015/checkbox/checkbox/checkbox.component.metadata.json +1 -1
  35. package/facets/package.json +1 -1
  36. package/feed-input/package.json +1 -1
  37. package/feed-list-item/package.json +1 -1
  38. package/fesm2015/fundamental-ngx-core-checkbox.js +17 -3
  39. package/fesm2015/fundamental-ngx-core-checkbox.js.map +1 -1
  40. package/file-uploader/package.json +1 -1
  41. package/fixed-card-layout/package.json +1 -1
  42. package/flexible-column-layout/package.json +1 -1
  43. package/form/package.json +1 -1
  44. package/formatted-text/package.json +1 -1
  45. package/grid-list/package.json +1 -1
  46. package/icon/package.json +1 -1
  47. package/illustrated-message/package.json +1 -1
  48. package/infinite-scroll/package.json +1 -1
  49. package/info-label/package.json +1 -1
  50. package/inline-help/package.json +1 -1
  51. package/input-group/package.json +1 -1
  52. package/layout-grid/package.json +1 -1
  53. package/layout-panel/package.json +1 -1
  54. package/link/package.json +1 -1
  55. package/list/package.json +1 -1
  56. package/menu/package.json +1 -1
  57. package/message-box/package.json +1 -1
  58. package/message-strip/package.json +1 -1
  59. package/message-toast/package.json +1 -1
  60. package/micro-process-flow/package.json +1 -1
  61. package/mobile-mode/package.json +1 -1
  62. package/multi-input/package.json +1 -1
  63. package/nested-list/package.json +1 -1
  64. package/notification/package.json +1 -1
  65. package/object-identifier/package.json +1 -1
  66. package/object-marker/package.json +1 -1
  67. package/object-number/package.json +1 -1
  68. package/object-status/package.json +1 -1
  69. package/package.json +1 -1
  70. package/pagination/package.json +1 -1
  71. package/panel/package.json +1 -1
  72. package/popover/package.json +1 -1
  73. package/product-switch/package.json +1 -1
  74. package/quick-view/package.json +1 -1
  75. package/radio/package.json +1 -1
  76. package/rating-indicator/package.json +1 -1
  77. package/resizable-card-layout/package.json +1 -1
  78. package/scroll-spy/package.json +1 -1
  79. package/segmented-button/package.json +1 -1
  80. package/select/package.json +1 -1
  81. package/shared/package.json +1 -1
  82. package/shellbar/package.json +1 -1
  83. package/side-navigation/package.json +1 -1
  84. package/slider/package.json +1 -1
  85. package/split-button/package.json +1 -1
  86. package/splitter/package.json +1 -1
  87. package/status-indicator/package.json +1 -1
  88. package/step-input/package.json +1 -1
  89. package/switch/package.json +1 -1
  90. package/table/package.json +1 -1
  91. package/tabs/package.json +1 -1
  92. package/text/package.json +1 -1
  93. package/tile/package.json +1 -1
  94. package/time/package.json +1 -1
  95. package/time-picker/package.json +1 -1
  96. package/timeline/package.json +1 -1
  97. package/title/package.json +1 -1
  98. package/token/package.json +1 -1
  99. package/toolbar/package.json +1 -1
  100. package/tree/package.json +1 -1
  101. package/upload-collection/package.json +1 -1
  102. package/utils/package.json +1 -1
  103. package/vertical-navigation/package.json +1 -1
  104. package/wizard/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/action-bar",
3
- "version": "0.33.0-rc.86",
3
+ "version": "0.33.0-rc.87",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "~12.0.5",
6
6
  "@angular/core": "~12.0.5"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/action-sheet",
3
- "version": "0.33.0-rc.86",
3
+ "version": "0.33.0-rc.87",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "~12.0.5",
6
6
  "@angular/core": "~12.0.5"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/alert",
3
- "version": "0.33.0-rc.86",
3
+ "version": "0.33.0-rc.87",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "~12.0.5",
6
6
  "@angular/core": "~12.0.5"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/avatar",
3
- "version": "0.33.0-rc.86",
3
+ "version": "0.33.0-rc.87",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "~12.0.5",
6
6
  "@angular/core": "~12.0.5"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/avatar-group",
3
- "version": "0.33.0-rc.86",
3
+ "version": "0.33.0-rc.87",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "~12.0.5",
6
6
  "@angular/core": "~12.0.5"
package/bar/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/bar",
3
- "version": "0.33.0-rc.86",
3
+ "version": "0.33.0-rc.87",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "~12.0.5",
6
6
  "@angular/core": "~12.0.5"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/breadcrumb",
3
- "version": "0.33.0-rc.86",
3
+ "version": "0.33.0-rc.87",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "~12.0.5",
6
6
  "@angular/core": "~12.0.5"
@@ -31,6 +31,8 @@
31
31
  this.position = 'relative';
32
32
  /** @hidden */
33
33
  this.outline = 'none';
34
+ /** Emits event on focus change */
35
+ this.focusChange = new core.EventEmitter();
34
36
  /** Values returned by control. */
35
37
  this.values = { trueValue: true, falseValue: false, thirdStateValue: null };
36
38
  /** @hidden Reference to callback provided by FormControl.*/
@@ -150,6 +152,17 @@
150
152
  event.preventDefault();
151
153
  }
152
154
  };
155
+ /** Handles blur event */
156
+ CheckboxComponent.prototype.onBlur = function () {
157
+ if (typeof this.onTouched === 'function') {
158
+ this.onTouched();
159
+ }
160
+ this.focusChange.emit(false);
161
+ };
162
+ /** Handles focus event */
163
+ CheckboxComponent.prototype.onFocus = function () {
164
+ this.focusChange.emit(true);
165
+ };
153
166
  /** @hidden Based on current control value sets new control state. */
154
167
  CheckboxComponent.prototype._setState = function () {
155
168
  if (this._compare(this.checkboxValue, this.values.trueValue)) {
@@ -202,7 +215,7 @@
202
215
  CheckboxComponent.decorators = [
203
216
  { type: core.Component, args: [{
204
217
  selector: 'fd-checkbox',
205
- template: "<input\n #inputLabel\n type=\"checkbox\"\n class=\"fd-checkbox\"\n [id]=\"inputId\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [indeterminate]=\"isIndeterminate\"\n [attr.tabindex]=\"tabIndexValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-required]=\"required\"\n [class.fd-checkbox--compact]=\"compact\"\n [ngClass]=\"state ? 'is-' + state : ''\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"nextValue()\"\n (keydown)=\"checkByKey($event)\"\n (keyup)=\"handleInputKeyUp($event)\"\n (click)=\"$event.stopPropagation()\"\n/>\n\n<label\n class=\"fd-checkbox__label\"\n #labelElement\n [for]=\"inputId\"\n [ngClass]=\"labelClass\"\n [attr.title]=\"title\"\n [class.fd-checkbox__label--compact]=\"compact\"\n (click)=\"checkByClick($event)\"\n>\n <ng-container *ngIf=\"label\">\n <span class=\"fd-checkbox__text\">\n {{ label }}\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"!label\">\n <span class=\"fd-checkbox__text\">\n <ng-content></ng-content>\n </span>\n </ng-container>\n</label>\n",
218
+ template: "<input\n #inputLabel\n type=\"checkbox\"\n class=\"fd-checkbox\"\n [id]=\"inputId\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [indeterminate]=\"isIndeterminate\"\n [attr.tabindex]=\"tabIndexValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-required]=\"required\"\n [class.fd-checkbox--compact]=\"compact\"\n [ngClass]=\"state ? 'is-' + state : ''\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"nextValue()\"\n (keydown)=\"checkByKey($event)\"\n (keyup)=\"handleInputKeyUp($event)\"\n (click)=\"$event.stopPropagation()\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n/>\n\n<label\n class=\"fd-checkbox__label\"\n #labelElement\n [for]=\"inputId\"\n [ngClass]=\"labelClass\"\n [attr.title]=\"title\"\n [class.fd-checkbox__label--compact]=\"compact\"\n (click)=\"checkByClick($event)\"\n>\n <ng-container *ngIf=\"label\">\n <span class=\"fd-checkbox__text\">\n {{ label }}\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"!label\">\n <span class=\"fd-checkbox__text\">\n <ng-content></ng-content>\n </span>\n </ng-container>\n</label>\n",
206
219
  encapsulation: core.ViewEncapsulation.None,
207
220
  changeDetection: core.ChangeDetectionStrategy.OnPush,
208
221
  providers: [
@@ -243,7 +256,8 @@
243
256
  required: [{ type: core.Input }],
244
257
  _values: [{ type: core.Input, args: ['values',] }],
245
258
  position: [{ type: core.HostBinding, args: ['style.position',] }],
246
- outline: [{ type: core.HostBinding, args: ['style.outline',] }]
259
+ outline: [{ type: core.HostBinding, args: ['style.outline',] }],
260
+ focusChange: [{ type: core.Output }]
247
261
  };
248
262
 
249
263
  var CheckboxModule = /** @class */ (function () {
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-checkbox.umd.js","sources":["../../../../libs/core/src/lib/checkbox/checkbox/checkbox.component.ts","../../../../libs/core/src/lib/checkbox/checkbox.module.ts","../../../../libs/core/src/lib/checkbox/fundamental-ngx-core-checkbox.ts"],"sourcesContent":["import {\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FdCheckboxValues } from './fd-checkbox-values.interface';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n LIST_ITEM_COMPONENT,\n ListItemInterface,\n compareObjects,\n KeyUtil,\n ContentDensityService\n} from '@fundamental-ngx/core/utils';\nimport { SPACE } from '@angular/cdk/keycodes';\nimport { Subscription } from 'rxjs';\nimport { FormStates } from '@fundamental-ngx/core/shared';\n\nlet checkboxUniqueId = 0;\n\nexport type fdCheckboxTypes = 'checked' | 'unchecked' | 'indeterminate' | 'force-checked';\n\n@Component({\n selector: 'fd-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n ],\n host: { '[attr.tabindex]': '-1' }\n})\nexport class CheckboxComponent implements ControlValueAccessor, OnInit, OnDestroy {\n /** @hidden */\n @ViewChild('inputLabel')\n inputLabel: ElementRef;\n\n /** @hidden */\n @ViewChild('labelElement')\n labelElement: ElementRef;\n\n /** Sets the `aria-label` attribute to the element. */\n @Input()\n ariaLabel = '';\n\n /** Sets the `aria-labelledby` attribute to the element. */\n @Input()\n ariaLabelledBy = null;\n\n /** Sets the `aria-describedby` attribute to the element. */\n @Input()\n ariaDescribedBy: string;\n\n /** sets checkbox tooltip */\n @Input()\n title: string;\n\n /** Sets [id] property of input, binds input with input label using [for] property. */\n @Input()\n inputId = `fd-checkbox-${checkboxUniqueId++}`;\n\n /** State of control, changes visual appearance of control. */\n @Input()\n state: FormStates;\n\n /** Sets [name] property of input. */\n @Input()\n name: string;\n\n /** Sets text of control label. */\n @Input()\n label: string;\n\n /** Allows to disable/enable control. */\n @Input()\n disabled: boolean;\n\n /** Allows to minimize control to compact mode. */\n @Input()\n compact?: boolean;\n\n /** Enables controls third state. */\n @Input()\n tristate: boolean;\n\n /** Allows to prevent user from manually selecting controls third state. */\n @Input()\n tristateSelectable = true;\n\n /** Assigns given class to checkbox label element */\n @Input()\n labelClass: string;\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** Sets values returned by control. */\n @Input('values')\n set _values(checkboxValues: FdCheckboxValues) {\n this.values = { ...this.values, ...checkboxValues };\n }\n\n /** @hidden */\n @HostBinding('style.position')\n readonly position = 'relative';\n\n /** @hidden */\n @HostBinding('style.outline')\n readonly outline = 'none';\n\n /** Values returned by control. */\n public values: FdCheckboxValues = { trueValue: true, falseValue: false, thirdStateValue: null };\n /** Stores current checkbox value. */\n public checkboxValue: any;\n /** Stores current checkbox state. */\n public checkboxState: fdCheckboxTypes;\n /** @hidden */\n private _previousState: fdCheckboxTypes;\n\n /** @hidden Reference to callback provided by FormControl.*/\n public onTouched = () => {};\n /** @hidden Reference to callback provided by FormControl.*/\n public onValueChange = (_) => {};\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n @Attribute('tabIndexValue') public tabIndexValue: number = 0,\n private _platform: Platform,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() private _contentDensityService: ContentDensityService,\n @Optional() @Inject(LIST_ITEM_COMPONENT) private _listItemComponent: ListItemInterface\n ) {\n this.tabIndexValue = tabIndexValue;\n }\n\n /** @hidden */\n ngOnInit(): void {\n if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._contentDensityListener.subscribe((density) => {\n this.compact = density !== 'cozy';\n this._changeDetectorRef.markForCheck();\n })\n );\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden Used to define if control is in 'indeterminate' state.*/\n get isIndeterminate(): boolean {\n return this.checkboxState === 'indeterminate';\n }\n\n /** @hidden Used to define if control is in 'checked' / 'unchecked' state. */\n get isChecked(): boolean {\n return this.checkboxState === 'checked' || this.checkboxState === 'force-checked';\n }\n\n /** @hidden ControlValueAccessor interface\n * - sets new control value\n * - updates control state\n * */\n public writeValue(value: any): void {\n this.checkboxValue = value;\n this._setState();\n this._detectChanges();\n }\n\n /** @hidden ControlValueAccessor interface method - sets onValueChange callback.*/\n public registerOnChange(fn: any): void {\n this.onValueChange = fn;\n }\n\n /** @hidden prevent event from propagating */\n public muteKey(event: KeyboardEvent | MouseEvent): void {\n event.stopPropagation();\n }\n\n /** @hidden ControlValueAccessor interface method - sets onTouched callback.*/\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /** @hidden Called by FormControl - used to disable / enable control.*/\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n this._detectChanges();\n }\n\n /** @hidden Updates checkbox Indeterminate state on mouse click on IE11 */\n public checkByClick(event: MouseEvent): void {\n this._nextValueEvent(true, event);\n this.muteKey(event);\n }\n\n /** @hidden Updates checkbox Indeterminate state on space bar key on IE11 */\n public checkByKey(event: KeyboardEvent): void {\n if (this._isSpaceBarEvent(event) && this._platform.TRIDENT) {\n this._nextValueEvent();\n this.muteKey(event);\n }\n }\n\n /** @hidden Based on current control state:\n * - sets next control value\n * - emits new control value\n * - updates control state based on new control value\n * */\n public nextValue(previousValue?: fdCheckboxTypes): void {\n switch (previousValue || this.checkboxState) {\n case 'checked':\n this.checkboxValue = this.values.falseValue;\n break;\n case 'unchecked':\n this.checkboxValue =\n this.tristate && this.tristateSelectable ? this.values.thirdStateValue : this.values.trueValue;\n break;\n case 'indeterminate':\n case 'force-checked':\n this.checkboxValue = this.values.trueValue;\n this.inputLabel.nativeElement.checked = true;\n break;\n default:\n this.checkboxValue =\n this.tristate && this.tristateSelectable ? this.values.thirdStateValue : this.values.trueValue;\n break;\n }\n this._setState();\n this.onValueChange(this.checkboxValue);\n this._detectChanges();\n }\n\n /** Space event should be handled separately, when used inside list component and in firefox browser */\n handleInputKeyUp(event: KeyboardEvent): void {\n event.stopPropagation();\n if (this._listItemComponent && this._platform.FIREFOX && KeyUtil.isKeyCode(event, SPACE)) {\n event.preventDefault();\n }\n }\n\n /** @hidden Based on current control value sets new control state. */\n private _setState(): void {\n if (this._compare(this.checkboxValue, this.values.trueValue)) {\n this.checkboxState = 'checked';\n } else if (this._compare(this.checkboxValue, this.values.falseValue)) {\n this.checkboxState = 'unchecked';\n } else if (this.tristate && this._compare(this.checkboxValue, this.values.thirdStateValue)) {\n this.checkboxState = 'indeterminate';\n } else if (!this.checkboxValue) {\n this.checkboxState = 'unchecked';\n }\n this._previousState = this.checkboxState;\n }\n\n /** @hidden */\n private _nextValueEvent(triggeredByClick?: boolean, event?: MouseEvent): void {\n if (\n this._platform.TRIDENT &&\n this._previousState === 'indeterminate' &&\n this.checkboxState === 'indeterminate'\n ) {\n this.checkboxState = 'force-checked';\n this._detectChanges();\n /** Prevents from keeping the old value */\n if (triggeredByClick) {\n this.nextValue('force-checked');\n if (event) {\n this.muteKey(event);\n event.preventDefault();\n }\n }\n }\n }\n\n /** @hidden Compares values */\n private _compare(val1: any, val2: any): boolean {\n return typeof val1 === 'object' ? compareObjects(val1, val2) : val1 === val2;\n }\n\n /** @hidden Determines event source based on key code */\n private _isSpaceBarEvent(event: KeyboardEvent): boolean {\n return KeyUtil.isKeyCode(event, SPACE);\n }\n\n /** Method to trigger change detection in component */\n private _detectChanges(): void {\n if (!this._changeDetectorRef['destroyed']) {\n this._changeDetectorRef.detectChanges();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [CheckboxComponent],\n imports: [CommonModule, FormsModule],\n exports: [CheckboxComponent]\n})\nexport class CheckboxModule {}\n",null],"names":["Subscription","KeyUtil","SPACE","compareObjects","Component","ViewEncapsulation","ChangeDetectionStrategy","NG_VALUE_ACCESSOR","forwardRef","ElementRef","Attribute","Platform","ChangeDetectorRef","ContentDensityService","Optional","Inject","LIST_ITEM_COMPONENT","ViewChild","Input","HostBinding","NgModule","CommonModule","FormsModule"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-checkbox.umd.js","sources":["../../../../libs/core/src/lib/checkbox/checkbox/checkbox.component.ts","../../../../libs/core/src/lib/checkbox/checkbox.module.ts","../../../../libs/core/src/lib/checkbox/fundamental-ngx-core-checkbox.ts"],"sourcesContent":["import {\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FdCheckboxValues } from './fd-checkbox-values.interface';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n LIST_ITEM_COMPONENT,\n ListItemInterface,\n compareObjects,\n KeyUtil,\n ContentDensityService\n} from '@fundamental-ngx/core/utils';\nimport { SPACE } from '@angular/cdk/keycodes';\nimport { Subscription } from 'rxjs';\nimport { FormStates } from '@fundamental-ngx/core/shared';\n\nlet checkboxUniqueId = 0;\n\nexport type fdCheckboxTypes = 'checked' | 'unchecked' | 'indeterminate' | 'force-checked';\n\n@Component({\n selector: 'fd-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n ],\n host: { '[attr.tabindex]': '-1' }\n})\nexport class CheckboxComponent implements ControlValueAccessor, OnInit, OnDestroy {\n /** @hidden */\n @ViewChild('inputLabel')\n inputLabel: ElementRef;\n\n /** @hidden */\n @ViewChild('labelElement')\n labelElement: ElementRef;\n\n /** Sets the `aria-label` attribute to the element. */\n @Input()\n ariaLabel = '';\n\n /** Sets the `aria-labelledby` attribute to the element. */\n @Input()\n ariaLabelledBy = null;\n\n /** Sets the `aria-describedby` attribute to the element. */\n @Input()\n ariaDescribedBy: string;\n\n /** sets checkbox tooltip */\n @Input()\n title: string;\n\n /** Sets [id] property of input, binds input with input label using [for] property. */\n @Input()\n inputId = `fd-checkbox-${checkboxUniqueId++}`;\n\n /** State of control, changes visual appearance of control. */\n @Input()\n state: FormStates;\n\n /** Sets [name] property of input. */\n @Input()\n name: string;\n\n /** Sets text of control label. */\n @Input()\n label: string;\n\n /** Allows to disable/enable control. */\n @Input()\n disabled: boolean;\n\n /** Allows to minimize control to compact mode. */\n @Input()\n compact?: boolean;\n\n /** Enables controls third state. */\n @Input()\n tristate: boolean;\n\n /** Allows to prevent user from manually selecting controls third state. */\n @Input()\n tristateSelectable = true;\n\n /** Assigns given class to checkbox label element */\n @Input()\n labelClass: string;\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** Sets values returned by control. */\n @Input('values')\n set _values(checkboxValues: FdCheckboxValues) {\n this.values = { ...this.values, ...checkboxValues };\n }\n\n /** @hidden */\n @HostBinding('style.position')\n readonly position = 'relative';\n\n /** @hidden */\n @HostBinding('style.outline')\n readonly outline = 'none';\n\n /** Emits event on focus change */\n @Output() focusChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Values returned by control. */\n public values: FdCheckboxValues = { trueValue: true, falseValue: false, thirdStateValue: null };\n /** Stores current checkbox value. */\n public checkboxValue: any;\n /** Stores current checkbox state. */\n public checkboxState: fdCheckboxTypes;\n /** @hidden */\n private _previousState: fdCheckboxTypes;\n\n /** @hidden Reference to callback provided by FormControl.*/\n public onTouched = () => {};\n /** @hidden Reference to callback provided by FormControl.*/\n public onValueChange = (_) => {};\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n @Attribute('tabIndexValue') public tabIndexValue: number = 0,\n private _platform: Platform,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() private _contentDensityService: ContentDensityService,\n @Optional() @Inject(LIST_ITEM_COMPONENT) private _listItemComponent: ListItemInterface\n ) {\n this.tabIndexValue = tabIndexValue;\n }\n\n /** @hidden */\n ngOnInit(): void {\n if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._contentDensityListener.subscribe((density) => {\n this.compact = density !== 'cozy';\n this._changeDetectorRef.markForCheck();\n })\n );\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden Used to define if control is in 'indeterminate' state.*/\n get isIndeterminate(): boolean {\n return this.checkboxState === 'indeterminate';\n }\n\n /** @hidden Used to define if control is in 'checked' / 'unchecked' state. */\n get isChecked(): boolean {\n return this.checkboxState === 'checked' || this.checkboxState === 'force-checked';\n }\n\n /** @hidden ControlValueAccessor interface\n * - sets new control value\n * - updates control state\n * */\n public writeValue(value: any): void {\n this.checkboxValue = value;\n this._setState();\n this._detectChanges();\n }\n\n /** @hidden ControlValueAccessor interface method - sets onValueChange callback.*/\n public registerOnChange(fn: any): void {\n this.onValueChange = fn;\n }\n\n /** @hidden prevent event from propagating */\n public muteKey(event: KeyboardEvent | MouseEvent): void {\n event.stopPropagation();\n }\n\n /** @hidden ControlValueAccessor interface method - sets onTouched callback.*/\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /** @hidden Called by FormControl - used to disable / enable control.*/\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n this._detectChanges();\n }\n\n /** @hidden Updates checkbox Indeterminate state on mouse click on IE11 */\n public checkByClick(event: MouseEvent): void {\n this._nextValueEvent(true, event);\n this.muteKey(event);\n }\n\n /** @hidden Updates checkbox Indeterminate state on space bar key on IE11 */\n public checkByKey(event: KeyboardEvent): void {\n if (this._isSpaceBarEvent(event) && this._platform.TRIDENT) {\n this._nextValueEvent();\n this.muteKey(event);\n }\n }\n\n /** @hidden Based on current control state:\n * - sets next control value\n * - emits new control value\n * - updates control state based on new control value\n * */\n public nextValue(previousValue?: fdCheckboxTypes): void {\n switch (previousValue || this.checkboxState) {\n case 'checked':\n this.checkboxValue = this.values.falseValue;\n break;\n case 'unchecked':\n this.checkboxValue =\n this.tristate && this.tristateSelectable ? this.values.thirdStateValue : this.values.trueValue;\n break;\n case 'indeterminate':\n case 'force-checked':\n this.checkboxValue = this.values.trueValue;\n this.inputLabel.nativeElement.checked = true;\n break;\n default:\n this.checkboxValue =\n this.tristate && this.tristateSelectable ? this.values.thirdStateValue : this.values.trueValue;\n break;\n }\n this._setState();\n this.onValueChange(this.checkboxValue);\n this._detectChanges();\n }\n\n /** Space event should be handled separately, when used inside list component and in firefox browser */\n handleInputKeyUp(event: KeyboardEvent): void {\n event.stopPropagation();\n if (this._listItemComponent && this._platform.FIREFOX && KeyUtil.isKeyCode(event, SPACE)) {\n event.preventDefault();\n }\n }\n\n /** Handles blur event */\n onBlur(): void {\n if (typeof this.onTouched === 'function') {\n this.onTouched();\n }\n this.focusChange.emit(false);\n }\n /** Handles focus event */\n onFocus(): void {\n this.focusChange.emit(true);\n }\n\n /** @hidden Based on current control value sets new control state. */\n private _setState(): void {\n if (this._compare(this.checkboxValue, this.values.trueValue)) {\n this.checkboxState = 'checked';\n } else if (this._compare(this.checkboxValue, this.values.falseValue)) {\n this.checkboxState = 'unchecked';\n } else if (this.tristate && this._compare(this.checkboxValue, this.values.thirdStateValue)) {\n this.checkboxState = 'indeterminate';\n } else if (!this.checkboxValue) {\n this.checkboxState = 'unchecked';\n }\n this._previousState = this.checkboxState;\n }\n\n /** @hidden */\n private _nextValueEvent(triggeredByClick?: boolean, event?: MouseEvent): void {\n if (\n this._platform.TRIDENT &&\n this._previousState === 'indeterminate' &&\n this.checkboxState === 'indeterminate'\n ) {\n this.checkboxState = 'force-checked';\n this._detectChanges();\n /** Prevents from keeping the old value */\n if (triggeredByClick) {\n this.nextValue('force-checked');\n if (event) {\n this.muteKey(event);\n event.preventDefault();\n }\n }\n }\n }\n\n /** @hidden Compares values */\n private _compare(val1: any, val2: any): boolean {\n return typeof val1 === 'object' ? compareObjects(val1, val2) : val1 === val2;\n }\n\n /** @hidden Determines event source based on key code */\n private _isSpaceBarEvent(event: KeyboardEvent): boolean {\n return KeyUtil.isKeyCode(event, SPACE);\n }\n\n /** Method to trigger change detection in component */\n private _detectChanges(): void {\n if (!this._changeDetectorRef['destroyed']) {\n this._changeDetectorRef.detectChanges();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [CheckboxComponent],\n imports: [CommonModule, FormsModule],\n exports: [CheckboxComponent]\n})\nexport class CheckboxModule {}\n",null],"names":["Subscription","EventEmitter","KeyUtil","SPACE","compareObjects","Component","ViewEncapsulation","ChangeDetectionStrategy","NG_VALUE_ACCESSOR","forwardRef","ElementRef","Attribute","Platform","ChangeDetectorRef","ContentDensityService","Optional","Inject","LIST_ITEM_COMPONENT","ViewChild","Input","HostBinding","Output","NgModule","CommonModule","FormsModule"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/busy-indicator",
3
- "version": "0.33.0-rc.86",
3
+ "version": "0.33.0-rc.87",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "~12.0.5",
6
6
  "@angular/core": "~12.0.5"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/button",
3
- "version": "0.33.0-rc.86",
3
+ "version": "0.33.0-rc.87",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "~12.0.5",
6
6
  "@angular/core": "~12.0.5"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/calendar",
3
- "version": "0.33.0-rc.86",
3
+ "version": "0.33.0-rc.87",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "~12.0.5",
6
6
  "@angular/core": "~12.0.5"
package/card/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/card",
3
- "version": "0.33.0-rc.86",
3
+ "version": "0.33.0-rc.87",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "~12.0.5",
6
6
  "@angular/core": "~12.0.5"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/carousel",
3
- "version": "0.33.0-rc.86",
3
+ "version": "0.33.0-rc.87",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "~12.0.5",
6
6
  "@angular/core": "~12.0.5"
@@ -31,6 +31,8 @@
31
31
  this.position = 'relative';
32
32
  /** @hidden */
33
33
  this.outline = 'none';
34
+ /** Emits event on focus change */
35
+ this.focusChange = new core.EventEmitter();
34
36
  /** Values returned by control. */
35
37
  this.values = { trueValue: true, falseValue: false, thirdStateValue: null };
36
38
  /** @hidden Reference to callback provided by FormControl.*/
@@ -150,6 +152,17 @@
150
152
  event.preventDefault();
151
153
  }
152
154
  };
155
+ /** Handles blur event */
156
+ CheckboxComponent.prototype.onBlur = function () {
157
+ if (typeof this.onTouched === 'function') {
158
+ this.onTouched();
159
+ }
160
+ this.focusChange.emit(false);
161
+ };
162
+ /** Handles focus event */
163
+ CheckboxComponent.prototype.onFocus = function () {
164
+ this.focusChange.emit(true);
165
+ };
153
166
  /** @hidden Based on current control value sets new control state. */
154
167
  CheckboxComponent.prototype._setState = function () {
155
168
  if (this._compare(this.checkboxValue, this.values.trueValue)) {
@@ -202,7 +215,7 @@
202
215
  CheckboxComponent.decorators = [
203
216
  { type: core.Component, args: [{
204
217
  selector: 'fd-checkbox',
205
- template: "<input\n #inputLabel\n type=\"checkbox\"\n class=\"fd-checkbox\"\n [id]=\"inputId\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [indeterminate]=\"isIndeterminate\"\n [attr.tabindex]=\"tabIndexValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-required]=\"required\"\n [class.fd-checkbox--compact]=\"compact\"\n [ngClass]=\"state ? 'is-' + state : ''\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"nextValue()\"\n (keydown)=\"checkByKey($event)\"\n (keyup)=\"handleInputKeyUp($event)\"\n (click)=\"$event.stopPropagation()\"\n/>\n\n<label\n class=\"fd-checkbox__label\"\n #labelElement\n [for]=\"inputId\"\n [ngClass]=\"labelClass\"\n [attr.title]=\"title\"\n [class.fd-checkbox__label--compact]=\"compact\"\n (click)=\"checkByClick($event)\"\n>\n <ng-container *ngIf=\"label\">\n <span class=\"fd-checkbox__text\">\n {{ label }}\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"!label\">\n <span class=\"fd-checkbox__text\">\n <ng-content></ng-content>\n </span>\n </ng-container>\n</label>\n",
218
+ template: "<input\n #inputLabel\n type=\"checkbox\"\n class=\"fd-checkbox\"\n [id]=\"inputId\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [indeterminate]=\"isIndeterminate\"\n [attr.tabindex]=\"tabIndexValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-required]=\"required\"\n [class.fd-checkbox--compact]=\"compact\"\n [ngClass]=\"state ? 'is-' + state : ''\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"nextValue()\"\n (keydown)=\"checkByKey($event)\"\n (keyup)=\"handleInputKeyUp($event)\"\n (click)=\"$event.stopPropagation()\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n/>\n\n<label\n class=\"fd-checkbox__label\"\n #labelElement\n [for]=\"inputId\"\n [ngClass]=\"labelClass\"\n [attr.title]=\"title\"\n [class.fd-checkbox__label--compact]=\"compact\"\n (click)=\"checkByClick($event)\"\n>\n <ng-container *ngIf=\"label\">\n <span class=\"fd-checkbox__text\">\n {{ label }}\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"!label\">\n <span class=\"fd-checkbox__text\">\n <ng-content></ng-content>\n </span>\n </ng-container>\n</label>\n",
206
219
  encapsulation: core.ViewEncapsulation.None,
207
220
  changeDetection: core.ChangeDetectionStrategy.OnPush,
208
221
  providers: [
@@ -243,7 +256,8 @@
243
256
  required: [{ type: core.Input }],
244
257
  _values: [{ type: core.Input, args: ['values',] }],
245
258
  position: [{ type: core.HostBinding, args: ['style.position',] }],
246
- outline: [{ type: core.HostBinding, args: ['style.outline',] }]
259
+ outline: [{ type: core.HostBinding, args: ['style.outline',] }],
260
+ focusChange: [{ type: core.Output }]
247
261
  };
248
262
 
249
263
  var CheckboxModule = /** @class */ (function () {
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-checkbox.umd.js","sources":["../../../../../libs/core/src/lib/checkbox/checkbox/checkbox.component.ts","../../../../../libs/core/src/lib/checkbox/checkbox.module.ts","../../../../../libs/core/src/lib/checkbox/fundamental-ngx-core-checkbox.ts"],"sourcesContent":["import {\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FdCheckboxValues } from './fd-checkbox-values.interface';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n LIST_ITEM_COMPONENT,\n ListItemInterface,\n compareObjects,\n KeyUtil,\n ContentDensityService\n} from '@fundamental-ngx/core/utils';\nimport { SPACE } from '@angular/cdk/keycodes';\nimport { Subscription } from 'rxjs';\nimport { FormStates } from '@fundamental-ngx/core/shared';\n\nlet checkboxUniqueId = 0;\n\nexport type fdCheckboxTypes = 'checked' | 'unchecked' | 'indeterminate' | 'force-checked';\n\n@Component({\n selector: 'fd-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n ],\n host: { '[attr.tabindex]': '-1' }\n})\nexport class CheckboxComponent implements ControlValueAccessor, OnInit, OnDestroy {\n /** @hidden */\n @ViewChild('inputLabel')\n inputLabel: ElementRef;\n\n /** @hidden */\n @ViewChild('labelElement')\n labelElement: ElementRef;\n\n /** Sets the `aria-label` attribute to the element. */\n @Input()\n ariaLabel = '';\n\n /** Sets the `aria-labelledby` attribute to the element. */\n @Input()\n ariaLabelledBy = null;\n\n /** Sets the `aria-describedby` attribute to the element. */\n @Input()\n ariaDescribedBy: string;\n\n /** sets checkbox tooltip */\n @Input()\n title: string;\n\n /** Sets [id] property of input, binds input with input label using [for] property. */\n @Input()\n inputId = `fd-checkbox-${checkboxUniqueId++}`;\n\n /** State of control, changes visual appearance of control. */\n @Input()\n state: FormStates;\n\n /** Sets [name] property of input. */\n @Input()\n name: string;\n\n /** Sets text of control label. */\n @Input()\n label: string;\n\n /** Allows to disable/enable control. */\n @Input()\n disabled: boolean;\n\n /** Allows to minimize control to compact mode. */\n @Input()\n compact?: boolean;\n\n /** Enables controls third state. */\n @Input()\n tristate: boolean;\n\n /** Allows to prevent user from manually selecting controls third state. */\n @Input()\n tristateSelectable = true;\n\n /** Assigns given class to checkbox label element */\n @Input()\n labelClass: string;\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** Sets values returned by control. */\n @Input('values')\n set _values(checkboxValues: FdCheckboxValues) {\n this.values = { ...this.values, ...checkboxValues };\n }\n\n /** @hidden */\n @HostBinding('style.position')\n readonly position = 'relative';\n\n /** @hidden */\n @HostBinding('style.outline')\n readonly outline = 'none';\n\n /** Values returned by control. */\n public values: FdCheckboxValues = { trueValue: true, falseValue: false, thirdStateValue: null };\n /** Stores current checkbox value. */\n public checkboxValue: any;\n /** Stores current checkbox state. */\n public checkboxState: fdCheckboxTypes;\n /** @hidden */\n private _previousState: fdCheckboxTypes;\n\n /** @hidden Reference to callback provided by FormControl.*/\n public onTouched = () => {};\n /** @hidden Reference to callback provided by FormControl.*/\n public onValueChange = (_) => {};\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n @Attribute('tabIndexValue') public tabIndexValue: number = 0,\n private _platform: Platform,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() private _contentDensityService: ContentDensityService,\n @Optional() @Inject(LIST_ITEM_COMPONENT) private _listItemComponent: ListItemInterface\n ) {\n this.tabIndexValue = tabIndexValue;\n }\n\n /** @hidden */\n ngOnInit(): void {\n if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._contentDensityListener.subscribe((density) => {\n this.compact = density !== 'cozy';\n this._changeDetectorRef.markForCheck();\n })\n );\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden Used to define if control is in 'indeterminate' state.*/\n get isIndeterminate(): boolean {\n return this.checkboxState === 'indeterminate';\n }\n\n /** @hidden Used to define if control is in 'checked' / 'unchecked' state. */\n get isChecked(): boolean {\n return this.checkboxState === 'checked' || this.checkboxState === 'force-checked';\n }\n\n /** @hidden ControlValueAccessor interface\n * - sets new control value\n * - updates control state\n * */\n public writeValue(value: any): void {\n this.checkboxValue = value;\n this._setState();\n this._detectChanges();\n }\n\n /** @hidden ControlValueAccessor interface method - sets onValueChange callback.*/\n public registerOnChange(fn: any): void {\n this.onValueChange = fn;\n }\n\n /** @hidden prevent event from propagating */\n public muteKey(event: KeyboardEvent | MouseEvent): void {\n event.stopPropagation();\n }\n\n /** @hidden ControlValueAccessor interface method - sets onTouched callback.*/\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /** @hidden Called by FormControl - used to disable / enable control.*/\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n this._detectChanges();\n }\n\n /** @hidden Updates checkbox Indeterminate state on mouse click on IE11 */\n public checkByClick(event: MouseEvent): void {\n this._nextValueEvent(true, event);\n this.muteKey(event);\n }\n\n /** @hidden Updates checkbox Indeterminate state on space bar key on IE11 */\n public checkByKey(event: KeyboardEvent): void {\n if (this._isSpaceBarEvent(event) && this._platform.TRIDENT) {\n this._nextValueEvent();\n this.muteKey(event);\n }\n }\n\n /** @hidden Based on current control state:\n * - sets next control value\n * - emits new control value\n * - updates control state based on new control value\n * */\n public nextValue(previousValue?: fdCheckboxTypes): void {\n switch (previousValue || this.checkboxState) {\n case 'checked':\n this.checkboxValue = this.values.falseValue;\n break;\n case 'unchecked':\n this.checkboxValue =\n this.tristate && this.tristateSelectable ? this.values.thirdStateValue : this.values.trueValue;\n break;\n case 'indeterminate':\n case 'force-checked':\n this.checkboxValue = this.values.trueValue;\n this.inputLabel.nativeElement.checked = true;\n break;\n default:\n this.checkboxValue =\n this.tristate && this.tristateSelectable ? this.values.thirdStateValue : this.values.trueValue;\n break;\n }\n this._setState();\n this.onValueChange(this.checkboxValue);\n this._detectChanges();\n }\n\n /** Space event should be handled separately, when used inside list component and in firefox browser */\n handleInputKeyUp(event: KeyboardEvent): void {\n event.stopPropagation();\n if (this._listItemComponent && this._platform.FIREFOX && KeyUtil.isKeyCode(event, SPACE)) {\n event.preventDefault();\n }\n }\n\n /** @hidden Based on current control value sets new control state. */\n private _setState(): void {\n if (this._compare(this.checkboxValue, this.values.trueValue)) {\n this.checkboxState = 'checked';\n } else if (this._compare(this.checkboxValue, this.values.falseValue)) {\n this.checkboxState = 'unchecked';\n } else if (this.tristate && this._compare(this.checkboxValue, this.values.thirdStateValue)) {\n this.checkboxState = 'indeterminate';\n } else if (!this.checkboxValue) {\n this.checkboxState = 'unchecked';\n }\n this._previousState = this.checkboxState;\n }\n\n /** @hidden */\n private _nextValueEvent(triggeredByClick?: boolean, event?: MouseEvent): void {\n if (\n this._platform.TRIDENT &&\n this._previousState === 'indeterminate' &&\n this.checkboxState === 'indeterminate'\n ) {\n this.checkboxState = 'force-checked';\n this._detectChanges();\n /** Prevents from keeping the old value */\n if (triggeredByClick) {\n this.nextValue('force-checked');\n if (event) {\n this.muteKey(event);\n event.preventDefault();\n }\n }\n }\n }\n\n /** @hidden Compares values */\n private _compare(val1: any, val2: any): boolean {\n return typeof val1 === 'object' ? compareObjects(val1, val2) : val1 === val2;\n }\n\n /** @hidden Determines event source based on key code */\n private _isSpaceBarEvent(event: KeyboardEvent): boolean {\n return KeyUtil.isKeyCode(event, SPACE);\n }\n\n /** Method to trigger change detection in component */\n private _detectChanges(): void {\n if (!this._changeDetectorRef['destroyed']) {\n this._changeDetectorRef.detectChanges();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [CheckboxComponent],\n imports: [CommonModule, FormsModule],\n exports: [CheckboxComponent]\n})\nexport class CheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["Subscription","KeyUtil","SPACE","compareObjects","Component","ViewEncapsulation","ChangeDetectionStrategy","NG_VALUE_ACCESSOR","forwardRef","ElementRef","Attribute","Platform","ChangeDetectorRef","ContentDensityService","Optional","Inject","LIST_ITEM_COMPONENT","ViewChild","Input","HostBinding","NgModule","CommonModule","FormsModule"],"mappings":";;;;;;IA8BA,IAAI,gBAAgB,GAAG,CAAC,CAAC;;;QAoHrB,2BACW,UAAsB,EACM,aAAyB,EACpD,SAAmB,EACnB,kBAAqC,EACzB,sBAA6C,EAChB,kBAAqC;YAJnD,8BAAA,EAAA,iBAAyB;YADrD,eAAU,GAAV,UAAU,CAAY;YACM,kBAAa,GAAb,aAAa,CAAY;YACpD,cAAS,GAAT,SAAS,CAAU;YACnB,uBAAkB,GAAlB,kBAAkB,CAAmB;YACzB,2BAAsB,GAAtB,sBAAsB,CAAuB;YAChB,uBAAkB,GAAlB,kBAAkB,CAAmB;;YA5F1F,cAAS,GAAG,EAAE,CAAC;;YAIf,mBAAc,GAAG,IAAI,CAAC;;YAYtB,YAAO,GAAG,iBAAe,gBAAgB,EAAI,CAAC;;YA4B9C,uBAAkB,GAAG,IAAI,CAAC;;YAQ1B,aAAQ,GAAG,KAAK,CAAC;;YAGT,mBAAc,GAAG,IAAIA,iBAAY,EAAE,CAAC;;YAUnC,aAAQ,GAAG,UAAU,CAAC;;YAItB,YAAO,GAAG,MAAM,CAAC;;YAGnB,WAAM,GAAqB,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;;YASzF,cAAS,GAAG,eAAQ,CAAC;;YAErB,kBAAa,GAAG,UAAC,CAAC,KAAO,CAAC;YAW7B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;SACtC;QArCD,sBACI,sCAAO;;iBADX,UACY,cAAgC;gBACxC,IAAI,CAAC,MAAM,mCAAQ,IAAI,CAAC,MAAM,GAAK,cAAc,CAAE,CAAC;aACvD;;;WAAA;;QAqCD,oCAAQ,GAAR;YAAA,iBASC;YARG,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC3D,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,SAAS,CAAC,UAAC,OAAO;oBAClE,KAAI,CAAC,OAAO,GAAG,OAAO,KAAK,MAAM,CAAC;oBAClC,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;iBAC1C,CAAC,CACL,CAAC;aACL;SACJ;;QAGD,uCAAW,GAAX;YACI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;SACrC;QAGD,sBAAI,8CAAe;;iBAAnB;gBACI,OAAO,IAAI,CAAC,aAAa,KAAK,eAAe,CAAC;aACjD;;;WAAA;QAGD,sBAAI,wCAAS;;iBAAb;gBACI,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,eAAe,CAAC;aACrF;;;WAAA;;;;;QAMM,sCAAU,GAAV,UAAW,KAAU;YACxB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;;QAGM,4CAAgB,GAAhB,UAAiB,EAAO;YAC3B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;SAC3B;;QAGM,mCAAO,GAAP,UAAQ,KAAiC;YAC5C,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;;QAGM,6CAAiB,GAAjB,UAAkB,EAAO;YAC5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACvB;;QAGM,4CAAgB,GAAhB,UAAiB,QAAiB;YACrC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;;QAGM,wCAAY,GAAZ,UAAa,KAAiB;YACjC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACvB;;QAGM,sCAAU,GAAV,UAAW,KAAoB;YAClC,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;gBACxD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACvB;SACJ;;;;;;QAOM,qCAAS,GAAT,UAAU,aAA+B;YAC5C,QAAQ,aAAa,IAAI,IAAI,CAAC,aAAa;gBACvC,KAAK,SAAS;oBACV,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;oBAC5C,MAAM;gBACV,KAAK,WAAW;oBACZ,IAAI,CAAC,aAAa;wBACd,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;oBACnG,MAAM;gBACV,KAAK,eAAe,CAAC;gBACrB,KAAK,eAAe;oBAChB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;oBAC3C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;oBAC7C,MAAM;gBACV;oBACI,IAAI,CAAC,aAAa;wBACd,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;oBACnG,MAAM;aACb;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACvC,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;;QAGD,4CAAgB,GAAhB,UAAiB,KAAoB;YACjC,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,IAAIC,aAAO,CAAC,SAAS,CAAC,KAAK,EAAEC,cAAK,CAAC,EAAE;gBACtF,KAAK,CAAC,cAAc,EAAE,CAAC;aAC1B;SACJ;;QAGO,qCAAS,GAAT;YACJ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBAC1D,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;aAClC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;gBAClE,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;aACpC;iBAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE;gBACxF,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC;aACxC;iBAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBAC5B,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;aACpC;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;SAC5C;;QAGO,2CAAe,GAAf,UAAgB,gBAA0B,EAAE,KAAkB;YAClE,IACI,IAAI,CAAC,SAAS,CAAC,OAAO;gBACtB,IAAI,CAAC,cAAc,KAAK,eAAe;gBACvC,IAAI,CAAC,aAAa,KAAK,eAAe,EACxC;gBACE,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC;gBACrC,IAAI,CAAC,cAAc,EAAE,CAAC;;gBAEtB,IAAI,gBAAgB,EAAE;oBAClB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;oBAChC,IAAI,KAAK,EAAE;wBACP,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBACpB,KAAK,CAAC,cAAc,EAAE,CAAC;qBAC1B;iBACJ;aACJ;SACJ;;QAGO,oCAAQ,GAAR,UAAS,IAAS,EAAE,IAAS;YACjC,OAAO,OAAO,IAAI,KAAK,QAAQ,GAAGC,oBAAc,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;SAChF;;QAGO,4CAAgB,GAAhB,UAAiB,KAAoB;YACzC,OAAOF,aAAO,CAAC,SAAS,CAAC,KAAK,EAAEC,cAAK,CAAC,CAAC;SAC1C;;QAGO,0CAAc,GAAd;YACJ,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE;gBACvC,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;aAC3C;SACJ;;;;gBAzRJE,cAAS,SAAC;oBACP,QAAQ,EAAE,aAAa;oBACvB,qwCAAwC;oBAExC,aAAa,EAAEC,sBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAEC,4BAAuB,CAAC,MAAM;oBAC/C,SAAS,EAAE;wBACP;4BACI,OAAO,EAAEC,uBAAiB;4BAC1B,WAAW,EAAEC,eAAU,CAAC,cAAM,OAAA,iBAAiB,GAAA,CAAC;4BAChD,KAAK,EAAE,IAAI;yBACd;qBACJ;oBACD,IAAI,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE;;iBACpC;;;gBA3CGC,eAAU;6CA+ILC,cAAS,SAAC,eAAe;gBAlIzBC,iBAAQ;gBAfbC,sBAAiB;gBAqBjBC,2BAAqB,uBA+HhBC,aAAQ;gDACRA,aAAQ,YAAIC,WAAM,SAACC,yBAAmB;;;6BArG1CC,cAAS,SAAC,YAAY;+BAItBA,cAAS,SAAC,cAAc;4BAIxBC,UAAK;iCAILA,UAAK;kCAILA,UAAK;wBAILA,UAAK;0BAILA,UAAK;wBAILA,UAAK;uBAILA,UAAK;wBAILA,UAAK;2BAILA,UAAK;0BAILA,UAAK;2BAILA,UAAK;qCAILA,UAAK;6BAILA,UAAK;2BAILA,UAAK;0BAOLA,UAAK,SAAC,QAAQ;2BAMdC,gBAAW,SAAC,gBAAgB;0BAI5BA,gBAAW,SAAC,eAAe;;;;QCtHhC;;;;;gBALCC,aAAQ,SAAC;oBACN,YAAY,EAAE,CAAC,iBAAiB,CAAC;oBACjC,OAAO,EAAE,CAACC,mBAAY,EAAEC,iBAAW,CAAC;oBACpC,OAAO,EAAE,CAAC,iBAAiB,CAAC;iBAC/B;;;ICTD;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"fundamental-ngx-core-checkbox.umd.js","sources":["../../../../../libs/core/src/lib/checkbox/checkbox/checkbox.component.ts","../../../../../libs/core/src/lib/checkbox/checkbox.module.ts","../../../../../libs/core/src/lib/checkbox/fundamental-ngx-core-checkbox.ts"],"sourcesContent":["import {\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FdCheckboxValues } from './fd-checkbox-values.interface';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n LIST_ITEM_COMPONENT,\n ListItemInterface,\n compareObjects,\n KeyUtil,\n ContentDensityService\n} from '@fundamental-ngx/core/utils';\nimport { SPACE } from '@angular/cdk/keycodes';\nimport { Subscription } from 'rxjs';\nimport { FormStates } from '@fundamental-ngx/core/shared';\n\nlet checkboxUniqueId = 0;\n\nexport type fdCheckboxTypes = 'checked' | 'unchecked' | 'indeterminate' | 'force-checked';\n\n@Component({\n selector: 'fd-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n ],\n host: { '[attr.tabindex]': '-1' }\n})\nexport class CheckboxComponent implements ControlValueAccessor, OnInit, OnDestroy {\n /** @hidden */\n @ViewChild('inputLabel')\n inputLabel: ElementRef;\n\n /** @hidden */\n @ViewChild('labelElement')\n labelElement: ElementRef;\n\n /** Sets the `aria-label` attribute to the element. */\n @Input()\n ariaLabel = '';\n\n /** Sets the `aria-labelledby` attribute to the element. */\n @Input()\n ariaLabelledBy = null;\n\n /** Sets the `aria-describedby` attribute to the element. */\n @Input()\n ariaDescribedBy: string;\n\n /** sets checkbox tooltip */\n @Input()\n title: string;\n\n /** Sets [id] property of input, binds input with input label using [for] property. */\n @Input()\n inputId = `fd-checkbox-${checkboxUniqueId++}`;\n\n /** State of control, changes visual appearance of control. */\n @Input()\n state: FormStates;\n\n /** Sets [name] property of input. */\n @Input()\n name: string;\n\n /** Sets text of control label. */\n @Input()\n label: string;\n\n /** Allows to disable/enable control. */\n @Input()\n disabled: boolean;\n\n /** Allows to minimize control to compact mode. */\n @Input()\n compact?: boolean;\n\n /** Enables controls third state. */\n @Input()\n tristate: boolean;\n\n /** Allows to prevent user from manually selecting controls third state. */\n @Input()\n tristateSelectable = true;\n\n /** Assigns given class to checkbox label element */\n @Input()\n labelClass: string;\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** Sets values returned by control. */\n @Input('values')\n set _values(checkboxValues: FdCheckboxValues) {\n this.values = { ...this.values, ...checkboxValues };\n }\n\n /** @hidden */\n @HostBinding('style.position')\n readonly position = 'relative';\n\n /** @hidden */\n @HostBinding('style.outline')\n readonly outline = 'none';\n\n /** Emits event on focus change */\n @Output() focusChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Values returned by control. */\n public values: FdCheckboxValues = { trueValue: true, falseValue: false, thirdStateValue: null };\n /** Stores current checkbox value. */\n public checkboxValue: any;\n /** Stores current checkbox state. */\n public checkboxState: fdCheckboxTypes;\n /** @hidden */\n private _previousState: fdCheckboxTypes;\n\n /** @hidden Reference to callback provided by FormControl.*/\n public onTouched = () => {};\n /** @hidden Reference to callback provided by FormControl.*/\n public onValueChange = (_) => {};\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n @Attribute('tabIndexValue') public tabIndexValue: number = 0,\n private _platform: Platform,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() private _contentDensityService: ContentDensityService,\n @Optional() @Inject(LIST_ITEM_COMPONENT) private _listItemComponent: ListItemInterface\n ) {\n this.tabIndexValue = tabIndexValue;\n }\n\n /** @hidden */\n ngOnInit(): void {\n if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._contentDensityListener.subscribe((density) => {\n this.compact = density !== 'cozy';\n this._changeDetectorRef.markForCheck();\n })\n );\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden Used to define if control is in 'indeterminate' state.*/\n get isIndeterminate(): boolean {\n return this.checkboxState === 'indeterminate';\n }\n\n /** @hidden Used to define if control is in 'checked' / 'unchecked' state. */\n get isChecked(): boolean {\n return this.checkboxState === 'checked' || this.checkboxState === 'force-checked';\n }\n\n /** @hidden ControlValueAccessor interface\n * - sets new control value\n * - updates control state\n * */\n public writeValue(value: any): void {\n this.checkboxValue = value;\n this._setState();\n this._detectChanges();\n }\n\n /** @hidden ControlValueAccessor interface method - sets onValueChange callback.*/\n public registerOnChange(fn: any): void {\n this.onValueChange = fn;\n }\n\n /** @hidden prevent event from propagating */\n public muteKey(event: KeyboardEvent | MouseEvent): void {\n event.stopPropagation();\n }\n\n /** @hidden ControlValueAccessor interface method - sets onTouched callback.*/\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /** @hidden Called by FormControl - used to disable / enable control.*/\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n this._detectChanges();\n }\n\n /** @hidden Updates checkbox Indeterminate state on mouse click on IE11 */\n public checkByClick(event: MouseEvent): void {\n this._nextValueEvent(true, event);\n this.muteKey(event);\n }\n\n /** @hidden Updates checkbox Indeterminate state on space bar key on IE11 */\n public checkByKey(event: KeyboardEvent): void {\n if (this._isSpaceBarEvent(event) && this._platform.TRIDENT) {\n this._nextValueEvent();\n this.muteKey(event);\n }\n }\n\n /** @hidden Based on current control state:\n * - sets next control value\n * - emits new control value\n * - updates control state based on new control value\n * */\n public nextValue(previousValue?: fdCheckboxTypes): void {\n switch (previousValue || this.checkboxState) {\n case 'checked':\n this.checkboxValue = this.values.falseValue;\n break;\n case 'unchecked':\n this.checkboxValue =\n this.tristate && this.tristateSelectable ? this.values.thirdStateValue : this.values.trueValue;\n break;\n case 'indeterminate':\n case 'force-checked':\n this.checkboxValue = this.values.trueValue;\n this.inputLabel.nativeElement.checked = true;\n break;\n default:\n this.checkboxValue =\n this.tristate && this.tristateSelectable ? this.values.thirdStateValue : this.values.trueValue;\n break;\n }\n this._setState();\n this.onValueChange(this.checkboxValue);\n this._detectChanges();\n }\n\n /** Space event should be handled separately, when used inside list component and in firefox browser */\n handleInputKeyUp(event: KeyboardEvent): void {\n event.stopPropagation();\n if (this._listItemComponent && this._platform.FIREFOX && KeyUtil.isKeyCode(event, SPACE)) {\n event.preventDefault();\n }\n }\n\n /** Handles blur event */\n onBlur(): void {\n if (typeof this.onTouched === 'function') {\n this.onTouched();\n }\n this.focusChange.emit(false);\n }\n /** Handles focus event */\n onFocus(): void {\n this.focusChange.emit(true);\n }\n\n /** @hidden Based on current control value sets new control state. */\n private _setState(): void {\n if (this._compare(this.checkboxValue, this.values.trueValue)) {\n this.checkboxState = 'checked';\n } else if (this._compare(this.checkboxValue, this.values.falseValue)) {\n this.checkboxState = 'unchecked';\n } else if (this.tristate && this._compare(this.checkboxValue, this.values.thirdStateValue)) {\n this.checkboxState = 'indeterminate';\n } else if (!this.checkboxValue) {\n this.checkboxState = 'unchecked';\n }\n this._previousState = this.checkboxState;\n }\n\n /** @hidden */\n private _nextValueEvent(triggeredByClick?: boolean, event?: MouseEvent): void {\n if (\n this._platform.TRIDENT &&\n this._previousState === 'indeterminate' &&\n this.checkboxState === 'indeterminate'\n ) {\n this.checkboxState = 'force-checked';\n this._detectChanges();\n /** Prevents from keeping the old value */\n if (triggeredByClick) {\n this.nextValue('force-checked');\n if (event) {\n this.muteKey(event);\n event.preventDefault();\n }\n }\n }\n }\n\n /** @hidden Compares values */\n private _compare(val1: any, val2: any): boolean {\n return typeof val1 === 'object' ? compareObjects(val1, val2) : val1 === val2;\n }\n\n /** @hidden Determines event source based on key code */\n private _isSpaceBarEvent(event: KeyboardEvent): boolean {\n return KeyUtil.isKeyCode(event, SPACE);\n }\n\n /** Method to trigger change detection in component */\n private _detectChanges(): void {\n if (!this._changeDetectorRef['destroyed']) {\n this._changeDetectorRef.detectChanges();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [CheckboxComponent],\n imports: [CommonModule, FormsModule],\n exports: [CheckboxComponent]\n})\nexport class CheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["Subscription","EventEmitter","KeyUtil","SPACE","compareObjects","Component","ViewEncapsulation","ChangeDetectionStrategy","NG_VALUE_ACCESSOR","forwardRef","ElementRef","Attribute","Platform","ChangeDetectorRef","ContentDensityService","Optional","Inject","LIST_ITEM_COMPONENT","ViewChild","Input","HostBinding","Output","NgModule","CommonModule","FormsModule"],"mappings":";;;;;;IAgCA,IAAI,gBAAgB,GAAG,CAAC,CAAC;;;QAuHrB,2BACW,UAAsB,EACM,aAAyB,EACpD,SAAmB,EACnB,kBAAqC,EACzB,sBAA6C,EAChB,kBAAqC;YAJnD,8BAAA,EAAA,iBAAyB;YADrD,eAAU,GAAV,UAAU,CAAY;YACM,kBAAa,GAAb,aAAa,CAAY;YACpD,cAAS,GAAT,SAAS,CAAU;YACnB,uBAAkB,GAAlB,kBAAkB,CAAmB;YACzB,2BAAsB,GAAtB,sBAAsB,CAAuB;YAChB,uBAAkB,GAAlB,kBAAkB,CAAmB;;YA/F1F,cAAS,GAAG,EAAE,CAAC;;YAIf,mBAAc,GAAG,IAAI,CAAC;;YAYtB,YAAO,GAAG,iBAAe,gBAAgB,EAAI,CAAC;;YA4B9C,uBAAkB,GAAG,IAAI,CAAC;;YAQ1B,aAAQ,GAAG,KAAK,CAAC;;YAGT,mBAAc,GAAG,IAAIA,iBAAY,EAAE,CAAC;;YAUnC,aAAQ,GAAG,UAAU,CAAC;;YAItB,YAAO,GAAG,MAAM,CAAC;;YAGhB,gBAAW,GAA0B,IAAIC,iBAAY,EAAW,CAAC;;YAGpE,WAAM,GAAqB,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;;YASzF,cAAS,GAAG,eAAQ,CAAC;;YAErB,kBAAa,GAAG,UAAC,CAAC,KAAO,CAAC;YAW7B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;SACtC;QAxCD,sBACI,sCAAO;;iBADX,UACY,cAAgC;gBACxC,IAAI,CAAC,MAAM,mCAAQ,IAAI,CAAC,MAAM,GAAK,cAAc,CAAE,CAAC;aACvD;;;WAAA;;QAwCD,oCAAQ,GAAR;YAAA,iBASC;YARG,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC3D,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,SAAS,CAAC,UAAC,OAAO;oBAClE,KAAI,CAAC,OAAO,GAAG,OAAO,KAAK,MAAM,CAAC;oBAClC,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;iBAC1C,CAAC,CACL,CAAC;aACL;SACJ;;QAGD,uCAAW,GAAX;YACI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;SACrC;QAGD,sBAAI,8CAAe;;iBAAnB;gBACI,OAAO,IAAI,CAAC,aAAa,KAAK,eAAe,CAAC;aACjD;;;WAAA;QAGD,sBAAI,wCAAS;;iBAAb;gBACI,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,eAAe,CAAC;aACrF;;;WAAA;;;;;QAMM,sCAAU,GAAV,UAAW,KAAU;YACxB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;;QAGM,4CAAgB,GAAhB,UAAiB,EAAO;YAC3B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;SAC3B;;QAGM,mCAAO,GAAP,UAAQ,KAAiC;YAC5C,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;;QAGM,6CAAiB,GAAjB,UAAkB,EAAO;YAC5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACvB;;QAGM,4CAAgB,GAAhB,UAAiB,QAAiB;YACrC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;;QAGM,wCAAY,GAAZ,UAAa,KAAiB;YACjC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACvB;;QAGM,sCAAU,GAAV,UAAW,KAAoB;YAClC,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;gBACxD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACvB;SACJ;;;;;;QAOM,qCAAS,GAAT,UAAU,aAA+B;YAC5C,QAAQ,aAAa,IAAI,IAAI,CAAC,aAAa;gBACvC,KAAK,SAAS;oBACV,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;oBAC5C,MAAM;gBACV,KAAK,WAAW;oBACZ,IAAI,CAAC,aAAa;wBACd,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;oBACnG,MAAM;gBACV,KAAK,eAAe,CAAC;gBACrB,KAAK,eAAe;oBAChB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;oBAC3C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;oBAC7C,MAAM;gBACV;oBACI,IAAI,CAAC,aAAa;wBACd,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;oBACnG,MAAM;aACb;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACvC,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;;QAGD,4CAAgB,GAAhB,UAAiB,KAAoB;YACjC,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,IAAIC,aAAO,CAAC,SAAS,CAAC,KAAK,EAAEC,cAAK,CAAC,EAAE;gBACtF,KAAK,CAAC,cAAc,EAAE,CAAC;aAC1B;SACJ;;QAGD,kCAAM,GAAN;YACI,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE;gBACtC,IAAI,CAAC,SAAS,EAAE,CAAC;aACpB;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAChC;;QAED,mCAAO,GAAP;YACI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B;;QAGO,qCAAS,GAAT;YACJ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBAC1D,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;aAClC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;gBAClE,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;aACpC;iBAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE;gBACxF,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC;aACxC;iBAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBAC5B,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;aACpC;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;SAC5C;;QAGO,2CAAe,GAAf,UAAgB,gBAA0B,EAAE,KAAkB;YAClE,IACI,IAAI,CAAC,SAAS,CAAC,OAAO;gBACtB,IAAI,CAAC,cAAc,KAAK,eAAe;gBACvC,IAAI,CAAC,aAAa,KAAK,eAAe,EACxC;gBACE,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC;gBACrC,IAAI,CAAC,cAAc,EAAE,CAAC;;gBAEtB,IAAI,gBAAgB,EAAE;oBAClB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;oBAChC,IAAI,KAAK,EAAE;wBACP,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBACpB,KAAK,CAAC,cAAc,EAAE,CAAC;qBAC1B;iBACJ;aACJ;SACJ;;QAGO,oCAAQ,GAAR,UAAS,IAAS,EAAE,IAAS;YACjC,OAAO,OAAO,IAAI,KAAK,QAAQ,GAAGC,oBAAc,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;SAChF;;QAGO,4CAAgB,GAAhB,UAAiB,KAAoB;YACzC,OAAOF,aAAO,CAAC,SAAS,CAAC,KAAK,EAAEC,cAAK,CAAC,CAAC;SAC1C;;QAGO,0CAAc,GAAd;YACJ,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE;gBACvC,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;aAC3C;SACJ;;;;gBAxSJE,cAAS,SAAC;oBACP,QAAQ,EAAE,aAAa;oBACvB,yzCAAwC;oBAExC,aAAa,EAAEC,sBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAEC,4BAAuB,CAAC,MAAM;oBAC/C,SAAS,EAAE;wBACP;4BACI,OAAO,EAAEC,uBAAiB;4BAC1B,WAAW,EAAEC,eAAU,CAAC,cAAM,OAAA,iBAAiB,GAAA,CAAC;4BAChD,KAAK,EAAE,IAAI;yBACd;qBACJ;oBACD,IAAI,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE;;iBACpC;;;gBA7CGC,eAAU;6CAoJLC,cAAS,SAAC,eAAe;gBArIzBC,iBAAQ;gBAjBbC,sBAAiB;gBAuBjBC,2BAAqB,uBAkIhBC,aAAQ;gDACRA,aAAQ,YAAIC,WAAM,SAACC,yBAAmB;;;6BAxG1CC,cAAS,SAAC,YAAY;+BAItBA,cAAS,SAAC,cAAc;4BAIxBC,UAAK;iCAILA,UAAK;kCAILA,UAAK;wBAILA,UAAK;0BAILA,UAAK;wBAILA,UAAK;uBAILA,UAAK;wBAILA,UAAK;2BAILA,UAAK;0BAILA,UAAK;2BAILA,UAAK;qCAILA,UAAK;6BAILA,UAAK;2BAILA,UAAK;0BAOLA,UAAK,SAAC,QAAQ;2BAMdC,gBAAW,SAAC,gBAAgB;0BAI5BA,gBAAW,SAAC,eAAe;8BAI3BC,WAAM;;;;QC5HX;;;;;gBALCC,aAAQ,SAAC;oBACN,YAAY,EAAE,CAAC,iBAAiB,CAAC;oBACjC,OAAO,EAAE,CAACC,mBAAY,EAAEC,iBAAW,CAAC;oBACpC,OAAO,EAAE,CAAC,iBAAiB,CAAC;iBAC/B;;;ICTD;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { ChangeDetectorRef, ElementRef, OnDestroy, OnInit } from '@angular/core';
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
3
  import { FdCheckboxValues } from './fd-checkbox-values.interface';
4
4
  import { Platform } from '@angular/cdk/platform';
@@ -52,6 +52,8 @@ export declare class CheckboxComponent implements ControlValueAccessor, OnInit,
52
52
  readonly position = "relative";
53
53
  /** @hidden */
54
54
  readonly outline = "none";
55
+ /** Emits event on focus change */
56
+ focusChange: EventEmitter<boolean>;
55
57
  /** Values returned by control. */
56
58
  values: FdCheckboxValues;
57
59
  /** Stores current checkbox value. */
@@ -99,6 +101,10 @@ export declare class CheckboxComponent implements ControlValueAccessor, OnInit,
99
101
  nextValue(previousValue?: fdCheckboxTypes): void;
100
102
  /** Space event should be handled separately, when used inside list component and in firefox browser */
101
103
  handleInputKeyUp(event: KeyboardEvent): void;
104
+ /** Handles blur event */
105
+ onBlur(): void;
106
+ /** Handles focus event */
107
+ onFocus(): void;
102
108
  /** @hidden Based on current control value sets new control state. */
103
109
  private _setState;
104
110
  /** @hidden */
@@ -1,4 +1,4 @@
1
- import { Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, forwardRef, HostBinding, Inject, Input, Optional, ViewChild, ViewEncapsulation } from '@angular/core';
1
+ import { Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, HostBinding, Inject, Input, Optional, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { Platform } from '@angular/cdk/platform';
4
4
  import { LIST_ITEM_COMPONENT, compareObjects, KeyUtil, ContentDensityService } from '@fundamental-ngx/core/utils';
@@ -30,6 +30,8 @@ export class CheckboxComponent {
30
30
  this.position = 'relative';
31
31
  /** @hidden */
32
32
  this.outline = 'none';
33
+ /** Emits event on focus change */
34
+ this.focusChange = new EventEmitter();
33
35
  /** Values returned by control. */
34
36
  this.values = { trueValue: true, falseValue: false, thirdStateValue: null };
35
37
  /** @hidden Reference to callback provided by FormControl.*/
@@ -136,6 +138,17 @@ export class CheckboxComponent {
136
138
  event.preventDefault();
137
139
  }
138
140
  }
141
+ /** Handles blur event */
142
+ onBlur() {
143
+ if (typeof this.onTouched === 'function') {
144
+ this.onTouched();
145
+ }
146
+ this.focusChange.emit(false);
147
+ }
148
+ /** Handles focus event */
149
+ onFocus() {
150
+ this.focusChange.emit(true);
151
+ }
139
152
  /** @hidden Based on current control value sets new control state. */
140
153
  _setState() {
141
154
  if (this._compare(this.checkboxValue, this.values.trueValue)) {
@@ -187,7 +200,7 @@ export class CheckboxComponent {
187
200
  CheckboxComponent.decorators = [
188
201
  { type: Component, args: [{
189
202
  selector: 'fd-checkbox',
190
- template: "<input\n #inputLabel\n type=\"checkbox\"\n class=\"fd-checkbox\"\n [id]=\"inputId\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [indeterminate]=\"isIndeterminate\"\n [attr.tabindex]=\"tabIndexValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-required]=\"required\"\n [class.fd-checkbox--compact]=\"compact\"\n [ngClass]=\"state ? 'is-' + state : ''\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"nextValue()\"\n (keydown)=\"checkByKey($event)\"\n (keyup)=\"handleInputKeyUp($event)\"\n (click)=\"$event.stopPropagation()\"\n/>\n\n<label\n class=\"fd-checkbox__label\"\n #labelElement\n [for]=\"inputId\"\n [ngClass]=\"labelClass\"\n [attr.title]=\"title\"\n [class.fd-checkbox__label--compact]=\"compact\"\n (click)=\"checkByClick($event)\"\n>\n <ng-container *ngIf=\"label\">\n <span class=\"fd-checkbox__text\">\n {{ label }}\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"!label\">\n <span class=\"fd-checkbox__text\">\n <ng-content></ng-content>\n </span>\n </ng-container>\n</label>\n",
203
+ template: "<input\n #inputLabel\n type=\"checkbox\"\n class=\"fd-checkbox\"\n [id]=\"inputId\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [indeterminate]=\"isIndeterminate\"\n [attr.tabindex]=\"tabIndexValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-required]=\"required\"\n [class.fd-checkbox--compact]=\"compact\"\n [ngClass]=\"state ? 'is-' + state : ''\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"nextValue()\"\n (keydown)=\"checkByKey($event)\"\n (keyup)=\"handleInputKeyUp($event)\"\n (click)=\"$event.stopPropagation()\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n/>\n\n<label\n class=\"fd-checkbox__label\"\n #labelElement\n [for]=\"inputId\"\n [ngClass]=\"labelClass\"\n [attr.title]=\"title\"\n [class.fd-checkbox__label--compact]=\"compact\"\n (click)=\"checkByClick($event)\"\n>\n <ng-container *ngIf=\"label\">\n <span class=\"fd-checkbox__text\">\n {{ label }}\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"!label\">\n <span class=\"fd-checkbox__text\">\n <ng-content></ng-content>\n </span>\n </ng-container>\n</label>\n",
191
204
  encapsulation: ViewEncapsulation.None,
192
205
  changeDetection: ChangeDetectionStrategy.OnPush,
193
206
  providers: [
@@ -228,6 +241,7 @@ CheckboxComponent.propDecorators = {
228
241
  required: [{ type: Input }],
229
242
  _values: [{ type: Input, args: ['values',] }],
230
243
  position: [{ type: HostBinding, args: ['style.position',] }],
231
- outline: [{ type: HostBinding, args: ['style.outline',] }]
244
+ outline: [{ type: HostBinding, args: ['style.outline',] }],
245
+ focusChange: [{ type: Output }]
232
246
  };
233
247
  //# sourceMappingURL=checkbox.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.component.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/checkbox/checkbox/checkbox.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FdCheckboxValues } from './fd-checkbox-values.interface';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n LIST_ITEM_COMPONENT,\n ListItemInterface,\n compareObjects,\n KeyUtil,\n ContentDensityService\n} from '@fundamental-ngx/core/utils';\nimport { SPACE } from '@angular/cdk/keycodes';\nimport { Subscription } from 'rxjs';\nimport { FormStates } from '@fundamental-ngx/core/shared';\n\nlet checkboxUniqueId = 0;\n\nexport type fdCheckboxTypes = 'checked' | 'unchecked' | 'indeterminate' | 'force-checked';\n\n@Component({\n selector: 'fd-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n ],\n host: { '[attr.tabindex]': '-1' }\n})\nexport class CheckboxComponent implements ControlValueAccessor, OnInit, OnDestroy {\n /** @hidden */\n @ViewChild('inputLabel')\n inputLabel: ElementRef;\n\n /** @hidden */\n @ViewChild('labelElement')\n labelElement: ElementRef;\n\n /** Sets the `aria-label` attribute to the element. */\n @Input()\n ariaLabel = '';\n\n /** Sets the `aria-labelledby` attribute to the element. */\n @Input()\n ariaLabelledBy = null;\n\n /** Sets the `aria-describedby` attribute to the element. */\n @Input()\n ariaDescribedBy: string;\n\n /** sets checkbox tooltip */\n @Input()\n title: string;\n\n /** Sets [id] property of input, binds input with input label using [for] property. */\n @Input()\n inputId = `fd-checkbox-${checkboxUniqueId++}`;\n\n /** State of control, changes visual appearance of control. */\n @Input()\n state: FormStates;\n\n /** Sets [name] property of input. */\n @Input()\n name: string;\n\n /** Sets text of control label. */\n @Input()\n label: string;\n\n /** Allows to disable/enable control. */\n @Input()\n disabled: boolean;\n\n /** Allows to minimize control to compact mode. */\n @Input()\n compact?: boolean;\n\n /** Enables controls third state. */\n @Input()\n tristate: boolean;\n\n /** Allows to prevent user from manually selecting controls third state. */\n @Input()\n tristateSelectable = true;\n\n /** Assigns given class to checkbox label element */\n @Input()\n labelClass: string;\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** Sets values returned by control. */\n @Input('values')\n set _values(checkboxValues: FdCheckboxValues) {\n this.values = { ...this.values, ...checkboxValues };\n }\n\n /** @hidden */\n @HostBinding('style.position')\n readonly position = 'relative';\n\n /** @hidden */\n @HostBinding('style.outline')\n readonly outline = 'none';\n\n /** Values returned by control. */\n public values: FdCheckboxValues = { trueValue: true, falseValue: false, thirdStateValue: null };\n /** Stores current checkbox value. */\n public checkboxValue: any;\n /** Stores current checkbox state. */\n public checkboxState: fdCheckboxTypes;\n /** @hidden */\n private _previousState: fdCheckboxTypes;\n\n /** @hidden Reference to callback provided by FormControl.*/\n public onTouched = () => {};\n /** @hidden Reference to callback provided by FormControl.*/\n public onValueChange = (_) => {};\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n @Attribute('tabIndexValue') public tabIndexValue: number = 0,\n private _platform: Platform,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() private _contentDensityService: ContentDensityService,\n @Optional() @Inject(LIST_ITEM_COMPONENT) private _listItemComponent: ListItemInterface\n ) {\n this.tabIndexValue = tabIndexValue;\n }\n\n /** @hidden */\n ngOnInit(): void {\n if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._contentDensityListener.subscribe((density) => {\n this.compact = density !== 'cozy';\n this._changeDetectorRef.markForCheck();\n })\n );\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden Used to define if control is in 'indeterminate' state.*/\n get isIndeterminate(): boolean {\n return this.checkboxState === 'indeterminate';\n }\n\n /** @hidden Used to define if control is in 'checked' / 'unchecked' state. */\n get isChecked(): boolean {\n return this.checkboxState === 'checked' || this.checkboxState === 'force-checked';\n }\n\n /** @hidden ControlValueAccessor interface\n * - sets new control value\n * - updates control state\n * */\n public writeValue(value: any): void {\n this.checkboxValue = value;\n this._setState();\n this._detectChanges();\n }\n\n /** @hidden ControlValueAccessor interface method - sets onValueChange callback.*/\n public registerOnChange(fn: any): void {\n this.onValueChange = fn;\n }\n\n /** @hidden prevent event from propagating */\n public muteKey(event: KeyboardEvent | MouseEvent): void {\n event.stopPropagation();\n }\n\n /** @hidden ControlValueAccessor interface method - sets onTouched callback.*/\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /** @hidden Called by FormControl - used to disable / enable control.*/\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n this._detectChanges();\n }\n\n /** @hidden Updates checkbox Indeterminate state on mouse click on IE11 */\n public checkByClick(event: MouseEvent): void {\n this._nextValueEvent(true, event);\n this.muteKey(event);\n }\n\n /** @hidden Updates checkbox Indeterminate state on space bar key on IE11 */\n public checkByKey(event: KeyboardEvent): void {\n if (this._isSpaceBarEvent(event) && this._platform.TRIDENT) {\n this._nextValueEvent();\n this.muteKey(event);\n }\n }\n\n /** @hidden Based on current control state:\n * - sets next control value\n * - emits new control value\n * - updates control state based on new control value\n * */\n public nextValue(previousValue?: fdCheckboxTypes): void {\n switch (previousValue || this.checkboxState) {\n case 'checked':\n this.checkboxValue = this.values.falseValue;\n break;\n case 'unchecked':\n this.checkboxValue =\n this.tristate && this.tristateSelectable ? this.values.thirdStateValue : this.values.trueValue;\n break;\n case 'indeterminate':\n case 'force-checked':\n this.checkboxValue = this.values.trueValue;\n this.inputLabel.nativeElement.checked = true;\n break;\n default:\n this.checkboxValue =\n this.tristate && this.tristateSelectable ? this.values.thirdStateValue : this.values.trueValue;\n break;\n }\n this._setState();\n this.onValueChange(this.checkboxValue);\n this._detectChanges();\n }\n\n /** Space event should be handled separately, when used inside list component and in firefox browser */\n handleInputKeyUp(event: KeyboardEvent): void {\n event.stopPropagation();\n if (this._listItemComponent && this._platform.FIREFOX && KeyUtil.isKeyCode(event, SPACE)) {\n event.preventDefault();\n }\n }\n\n /** @hidden Based on current control value sets new control state. */\n private _setState(): void {\n if (this._compare(this.checkboxValue, this.values.trueValue)) {\n this.checkboxState = 'checked';\n } else if (this._compare(this.checkboxValue, this.values.falseValue)) {\n this.checkboxState = 'unchecked';\n } else if (this.tristate && this._compare(this.checkboxValue, this.values.thirdStateValue)) {\n this.checkboxState = 'indeterminate';\n } else if (!this.checkboxValue) {\n this.checkboxState = 'unchecked';\n }\n this._previousState = this.checkboxState;\n }\n\n /** @hidden */\n private _nextValueEvent(triggeredByClick?: boolean, event?: MouseEvent): void {\n if (\n this._platform.TRIDENT &&\n this._previousState === 'indeterminate' &&\n this.checkboxState === 'indeterminate'\n ) {\n this.checkboxState = 'force-checked';\n this._detectChanges();\n /** Prevents from keeping the old value */\n if (triggeredByClick) {\n this.nextValue('force-checked');\n if (event) {\n this.muteKey(event);\n event.preventDefault();\n }\n }\n }\n }\n\n /** @hidden Compares values */\n private _compare(val1: any, val2: any): boolean {\n return typeof val1 === 'object' ? compareObjects(val1, val2) : val1 === val2;\n }\n\n /** @hidden Determines event source based on key code */\n private _isSpaceBarEvent(event: KeyboardEvent): boolean {\n return KeyUtil.isKeyCode(event, SPACE);\n }\n\n /** Method to trigger change detection in component */\n private _detectChanges(): void {\n if (!this._changeDetectorRef['destroyed']) {\n this._changeDetectorRef.detectChanges();\n }\n }\n}\n"]}
1
+ {"version":3,"file":"checkbox.component.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/checkbox/checkbox/checkbox.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FdCheckboxValues } from './fd-checkbox-values.interface';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n LIST_ITEM_COMPONENT,\n ListItemInterface,\n compareObjects,\n KeyUtil,\n ContentDensityService\n} from '@fundamental-ngx/core/utils';\nimport { SPACE } from '@angular/cdk/keycodes';\nimport { Subscription } from 'rxjs';\nimport { FormStates } from '@fundamental-ngx/core/shared';\n\nlet checkboxUniqueId = 0;\n\nexport type fdCheckboxTypes = 'checked' | 'unchecked' | 'indeterminate' | 'force-checked';\n\n@Component({\n selector: 'fd-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n ],\n host: { '[attr.tabindex]': '-1' }\n})\nexport class CheckboxComponent implements ControlValueAccessor, OnInit, OnDestroy {\n /** @hidden */\n @ViewChild('inputLabel')\n inputLabel: ElementRef;\n\n /** @hidden */\n @ViewChild('labelElement')\n labelElement: ElementRef;\n\n /** Sets the `aria-label` attribute to the element. */\n @Input()\n ariaLabel = '';\n\n /** Sets the `aria-labelledby` attribute to the element. */\n @Input()\n ariaLabelledBy = null;\n\n /** Sets the `aria-describedby` attribute to the element. */\n @Input()\n ariaDescribedBy: string;\n\n /** sets checkbox tooltip */\n @Input()\n title: string;\n\n /** Sets [id] property of input, binds input with input label using [for] property. */\n @Input()\n inputId = `fd-checkbox-${checkboxUniqueId++}`;\n\n /** State of control, changes visual appearance of control. */\n @Input()\n state: FormStates;\n\n /** Sets [name] property of input. */\n @Input()\n name: string;\n\n /** Sets text of control label. */\n @Input()\n label: string;\n\n /** Allows to disable/enable control. */\n @Input()\n disabled: boolean;\n\n /** Allows to minimize control to compact mode. */\n @Input()\n compact?: boolean;\n\n /** Enables controls third state. */\n @Input()\n tristate: boolean;\n\n /** Allows to prevent user from manually selecting controls third state. */\n @Input()\n tristateSelectable = true;\n\n /** Assigns given class to checkbox label element */\n @Input()\n labelClass: string;\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** Sets values returned by control. */\n @Input('values')\n set _values(checkboxValues: FdCheckboxValues) {\n this.values = { ...this.values, ...checkboxValues };\n }\n\n /** @hidden */\n @HostBinding('style.position')\n readonly position = 'relative';\n\n /** @hidden */\n @HostBinding('style.outline')\n readonly outline = 'none';\n\n /** Emits event on focus change */\n @Output() focusChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Values returned by control. */\n public values: FdCheckboxValues = { trueValue: true, falseValue: false, thirdStateValue: null };\n /** Stores current checkbox value. */\n public checkboxValue: any;\n /** Stores current checkbox state. */\n public checkboxState: fdCheckboxTypes;\n /** @hidden */\n private _previousState: fdCheckboxTypes;\n\n /** @hidden Reference to callback provided by FormControl.*/\n public onTouched = () => {};\n /** @hidden Reference to callback provided by FormControl.*/\n public onValueChange = (_) => {};\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n @Attribute('tabIndexValue') public tabIndexValue: number = 0,\n private _platform: Platform,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() private _contentDensityService: ContentDensityService,\n @Optional() @Inject(LIST_ITEM_COMPONENT) private _listItemComponent: ListItemInterface\n ) {\n this.tabIndexValue = tabIndexValue;\n }\n\n /** @hidden */\n ngOnInit(): void {\n if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._contentDensityListener.subscribe((density) => {\n this.compact = density !== 'cozy';\n this._changeDetectorRef.markForCheck();\n })\n );\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden Used to define if control is in 'indeterminate' state.*/\n get isIndeterminate(): boolean {\n return this.checkboxState === 'indeterminate';\n }\n\n /** @hidden Used to define if control is in 'checked' / 'unchecked' state. */\n get isChecked(): boolean {\n return this.checkboxState === 'checked' || this.checkboxState === 'force-checked';\n }\n\n /** @hidden ControlValueAccessor interface\n * - sets new control value\n * - updates control state\n * */\n public writeValue(value: any): void {\n this.checkboxValue = value;\n this._setState();\n this._detectChanges();\n }\n\n /** @hidden ControlValueAccessor interface method - sets onValueChange callback.*/\n public registerOnChange(fn: any): void {\n this.onValueChange = fn;\n }\n\n /** @hidden prevent event from propagating */\n public muteKey(event: KeyboardEvent | MouseEvent): void {\n event.stopPropagation();\n }\n\n /** @hidden ControlValueAccessor interface method - sets onTouched callback.*/\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /** @hidden Called by FormControl - used to disable / enable control.*/\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n this._detectChanges();\n }\n\n /** @hidden Updates checkbox Indeterminate state on mouse click on IE11 */\n public checkByClick(event: MouseEvent): void {\n this._nextValueEvent(true, event);\n this.muteKey(event);\n }\n\n /** @hidden Updates checkbox Indeterminate state on space bar key on IE11 */\n public checkByKey(event: KeyboardEvent): void {\n if (this._isSpaceBarEvent(event) && this._platform.TRIDENT) {\n this._nextValueEvent();\n this.muteKey(event);\n }\n }\n\n /** @hidden Based on current control state:\n * - sets next control value\n * - emits new control value\n * - updates control state based on new control value\n * */\n public nextValue(previousValue?: fdCheckboxTypes): void {\n switch (previousValue || this.checkboxState) {\n case 'checked':\n this.checkboxValue = this.values.falseValue;\n break;\n case 'unchecked':\n this.checkboxValue =\n this.tristate && this.tristateSelectable ? this.values.thirdStateValue : this.values.trueValue;\n break;\n case 'indeterminate':\n case 'force-checked':\n this.checkboxValue = this.values.trueValue;\n this.inputLabel.nativeElement.checked = true;\n break;\n default:\n this.checkboxValue =\n this.tristate && this.tristateSelectable ? this.values.thirdStateValue : this.values.trueValue;\n break;\n }\n this._setState();\n this.onValueChange(this.checkboxValue);\n this._detectChanges();\n }\n\n /** Space event should be handled separately, when used inside list component and in firefox browser */\n handleInputKeyUp(event: KeyboardEvent): void {\n event.stopPropagation();\n if (this._listItemComponent && this._platform.FIREFOX && KeyUtil.isKeyCode(event, SPACE)) {\n event.preventDefault();\n }\n }\n\n /** Handles blur event */\n onBlur(): void {\n if (typeof this.onTouched === 'function') {\n this.onTouched();\n }\n this.focusChange.emit(false);\n }\n /** Handles focus event */\n onFocus(): void {\n this.focusChange.emit(true);\n }\n\n /** @hidden Based on current control value sets new control state. */\n private _setState(): void {\n if (this._compare(this.checkboxValue, this.values.trueValue)) {\n this.checkboxState = 'checked';\n } else if (this._compare(this.checkboxValue, this.values.falseValue)) {\n this.checkboxState = 'unchecked';\n } else if (this.tristate && this._compare(this.checkboxValue, this.values.thirdStateValue)) {\n this.checkboxState = 'indeterminate';\n } else if (!this.checkboxValue) {\n this.checkboxState = 'unchecked';\n }\n this._previousState = this.checkboxState;\n }\n\n /** @hidden */\n private _nextValueEvent(triggeredByClick?: boolean, event?: MouseEvent): void {\n if (\n this._platform.TRIDENT &&\n this._previousState === 'indeterminate' &&\n this.checkboxState === 'indeterminate'\n ) {\n this.checkboxState = 'force-checked';\n this._detectChanges();\n /** Prevents from keeping the old value */\n if (triggeredByClick) {\n this.nextValue('force-checked');\n if (event) {\n this.muteKey(event);\n event.preventDefault();\n }\n }\n }\n }\n\n /** @hidden Compares values */\n private _compare(val1: any, val2: any): boolean {\n return typeof val1 === 'object' ? compareObjects(val1, val2) : val1 === val2;\n }\n\n /** @hidden Determines event source based on key code */\n private _isSpaceBarEvent(event: KeyboardEvent): boolean {\n return KeyUtil.isKeyCode(event, SPACE);\n }\n\n /** Method to trigger change detection in component */\n private _detectChanges(): void {\n if (!this._changeDetectorRef['destroyed']) {\n this._changeDetectorRef.detectChanges();\n }\n }\n}\n"]}