checkbox.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. /**
  2. * @fileoverview added by tsickle
  3. * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  4. */
  5. import { ChangeDetectorRef, Directive, forwardRef, Input } from '@angular/core';
  6. import { NG_VALUE_ACCESSOR } from '@angular/forms';
  7. import { NgbButtonLabel } from './label';
  8. /** @type {?} */
  9. var NGB_CHECKBOX_VALUE_ACCESSOR = {
  10. provide: NG_VALUE_ACCESSOR,
  11. useExisting: forwardRef((/**
  12. * @return {?}
  13. */
  14. function () { return NgbCheckBox; })),
  15. multi: true
  16. };
  17. /**
  18. * Allows to easily create Bootstrap-style checkbox buttons.
  19. *
  20. * Integrates with forms, so the value of a checked button is bound to the underlying form control
  21. * either in a reactive or template-driven way.
  22. */
  23. var NgbCheckBox = /** @class */ (function () {
  24. function NgbCheckBox(_label, _cd) {
  25. this._label = _label;
  26. this._cd = _cd;
  27. /**
  28. * If `true`, the checkbox button will be disabled
  29. */
  30. this.disabled = false;
  31. /**
  32. * The form control value when the checkbox is checked.
  33. */
  34. this.valueChecked = true;
  35. /**
  36. * The form control value when the checkbox is unchecked.
  37. */
  38. this.valueUnChecked = false;
  39. this.onChange = (/**
  40. * @param {?} _
  41. * @return {?}
  42. */
  43. function (_) { });
  44. this.onTouched = (/**
  45. * @return {?}
  46. */
  47. function () { });
  48. }
  49. Object.defineProperty(NgbCheckBox.prototype, "focused", {
  50. set: /**
  51. * @param {?} isFocused
  52. * @return {?}
  53. */
  54. function (isFocused) {
  55. this._label.focused = isFocused;
  56. if (!isFocused) {
  57. this.onTouched();
  58. }
  59. },
  60. enumerable: true,
  61. configurable: true
  62. });
  63. /**
  64. * @param {?} $event
  65. * @return {?}
  66. */
  67. NgbCheckBox.prototype.onInputChange = /**
  68. * @param {?} $event
  69. * @return {?}
  70. */
  71. function ($event) {
  72. /** @type {?} */
  73. var modelToPropagate = $event.target.checked ? this.valueChecked : this.valueUnChecked;
  74. this.onChange(modelToPropagate);
  75. this.onTouched();
  76. this.writeValue(modelToPropagate);
  77. };
  78. /**
  79. * @param {?} fn
  80. * @return {?}
  81. */
  82. NgbCheckBox.prototype.registerOnChange = /**
  83. * @param {?} fn
  84. * @return {?}
  85. */
  86. function (fn) { this.onChange = fn; };
  87. /**
  88. * @param {?} fn
  89. * @return {?}
  90. */
  91. NgbCheckBox.prototype.registerOnTouched = /**
  92. * @param {?} fn
  93. * @return {?}
  94. */
  95. function (fn) { this.onTouched = fn; };
  96. /**
  97. * @param {?} isDisabled
  98. * @return {?}
  99. */
  100. NgbCheckBox.prototype.setDisabledState = /**
  101. * @param {?} isDisabled
  102. * @return {?}
  103. */
  104. function (isDisabled) {
  105. this.disabled = isDisabled;
  106. this._label.disabled = isDisabled;
  107. };
  108. /**
  109. * @param {?} value
  110. * @return {?}
  111. */
  112. NgbCheckBox.prototype.writeValue = /**
  113. * @param {?} value
  114. * @return {?}
  115. */
  116. function (value) {
  117. this.checked = value === this.valueChecked;
  118. this._label.active = this.checked;
  119. // label won't be updated, if it is inside the OnPush component when [ngModel] changes
  120. this._cd.markForCheck();
  121. };
  122. NgbCheckBox.decorators = [
  123. { type: Directive, args: [{
  124. selector: '[ngbButton][type=checkbox]',
  125. host: {
  126. '[checked]': 'checked',
  127. '[disabled]': 'disabled',
  128. '(change)': 'onInputChange($event)',
  129. '(focus)': 'focused = true',
  130. '(blur)': 'focused = false'
  131. },
  132. providers: [NGB_CHECKBOX_VALUE_ACCESSOR]
  133. },] }
  134. ];
  135. /** @nocollapse */
  136. NgbCheckBox.ctorParameters = function () { return [
  137. { type: NgbButtonLabel },
  138. { type: ChangeDetectorRef }
  139. ]; };
  140. NgbCheckBox.propDecorators = {
  141. disabled: [{ type: Input }],
  142. valueChecked: [{ type: Input }],
  143. valueUnChecked: [{ type: Input }]
  144. };
  145. return NgbCheckBox;
  146. }());
  147. export { NgbCheckBox };
  148. if (false) {
  149. /** @type {?} */
  150. NgbCheckBox.prototype.checked;
  151. /**
  152. * If `true`, the checkbox button will be disabled
  153. * @type {?}
  154. */
  155. NgbCheckBox.prototype.disabled;
  156. /**
  157. * The form control value when the checkbox is checked.
  158. * @type {?}
  159. */
  160. NgbCheckBox.prototype.valueChecked;
  161. /**
  162. * The form control value when the checkbox is unchecked.
  163. * @type {?}
  164. */
  165. NgbCheckBox.prototype.valueUnChecked;
  166. /** @type {?} */
  167. NgbCheckBox.prototype.onChange;
  168. /** @type {?} */
  169. NgbCheckBox.prototype.onTouched;
  170. /**
  171. * @type {?}
  172. * @private
  173. */
  174. NgbCheckBox.prototype._label;
  175. /**
  176. * @type {?}
  177. * @private
  178. */
  179. NgbCheckBox.prototype._cd;
  180. }
  181. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcC8iLCJzb3VyY2VzIjpbImJ1dHRvbnMvY2hlY2tib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQXVCLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLFNBQVMsQ0FBQzs7SUFFakMsMkJBQTJCLEdBQUc7SUFDbEMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVTs7O0lBQUMsY0FBTSxPQUFBLFdBQVcsRUFBWCxDQUFXLEVBQUM7SUFDMUMsS0FBSyxFQUFFLElBQUk7Q0FDWjs7Ozs7OztBQVNEO0lBdUNFLHFCQUFvQixNQUFzQixFQUFVLEdBQXNCO1FBQXRELFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7Ozs7UUF0QmpFLGFBQVEsR0FBRyxLQUFLLENBQUM7Ozs7UUFLakIsaUJBQVksR0FBRyxJQUFJLENBQUM7Ozs7UUFLcEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFaEMsYUFBUTs7OztRQUFHLFVBQUMsQ0FBTSxJQUFNLENBQUMsRUFBQztRQUMxQixjQUFTOzs7UUFBRyxjQUFPLENBQUMsRUFBQztJQVN3RCxDQUFDO0lBUDlFLHNCQUFJLGdDQUFPOzs7OztRQUFYLFVBQVksU0FBa0I7WUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBQ2xCO1FBQ0gsQ0FBQzs7O09BQUE7Ozs7O0lBSUQsbUNBQWE7Ozs7SUFBYixVQUFjLE1BQU07O1lBQ1osZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjO1FBQ3hGLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Ozs7O0lBRUQsc0NBQWdCOzs7O0lBQWhCLFVBQWlCLEVBQXVCLElBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7OztJQUV2RSx1Q0FBaUI7Ozs7SUFBakIsVUFBa0IsRUFBYSxJQUFVLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQzs7Ozs7SUFFL0Qsc0NBQWdCOzs7O0lBQWhCLFVBQWlCLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUNwQyxDQUFDOzs7OztJQUVELGdDQUFVOzs7O0lBQVYsVUFBVyxLQUFLO1FBQ2QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRWxDLHNGQUFzRjtRQUN0RixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7O2dCQS9ERixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsSUFBSSxFQUFFO3dCQUNKLFdBQVcsRUFBRSxTQUFTO3dCQUN0QixZQUFZLEVBQUUsVUFBVTt3QkFDeEIsVUFBVSxFQUFFLHVCQUF1Qjt3QkFDbkMsU0FBUyxFQUFFLGdCQUFnQjt3QkFDM0IsUUFBUSxFQUFFLGlCQUFpQjtxQkFDNUI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsMkJBQTJCLENBQUM7aUJBQ3pDOzs7O2dCQXpCTyxjQUFjO2dCQUhkLGlCQUFpQjs7OzJCQW1DdEIsS0FBSzsrQkFLTCxLQUFLO2lDQUtMLEtBQUs7O0lBcUNSLGtCQUFDO0NBQUEsQUFoRUQsSUFnRUM7U0FyRFksV0FBVzs7O0lBQ3RCLDhCQUFROzs7OztJQUtSLCtCQUEwQjs7Ozs7SUFLMUIsbUNBQTZCOzs7OztJQUs3QixxQ0FBZ0M7O0lBRWhDLCtCQUEwQjs7SUFDMUIsZ0NBQXFCOzs7OztJQVNULDZCQUE4Qjs7Ozs7SUFBRSwwQkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIGZvcndhcmRSZWYsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7TmdiQnV0dG9uTGFiZWx9IGZyb20gJy4vbGFiZWwnO1xuXG5jb25zdCBOR0JfQ0hFQ0tCT1hfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ2JDaGVja0JveCksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5cbi8qKlxuICogQWxsb3dzIHRvIGVhc2lseSBjcmVhdGUgQm9vdHN0cmFwLXN0eWxlIGNoZWNrYm94IGJ1dHRvbnMuXG4gKlxuICogSW50ZWdyYXRlcyB3aXRoIGZvcm1zLCBzbyB0aGUgdmFsdWUgb2YgYSBjaGVja2VkIGJ1dHRvbiBpcyBib3VuZCB0byB0aGUgdW5kZXJseWluZyBmb3JtIGNvbnRyb2xcbiAqIGVpdGhlciBpbiBhIHJlYWN0aXZlIG9yIHRlbXBsYXRlLWRyaXZlbiB3YXkuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ2JCdXR0b25dW3R5cGU9Y2hlY2tib3hdJyxcbiAgaG9zdDoge1xuICAgICdbY2hlY2tlZF0nOiAnY2hlY2tlZCcsXG4gICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICcoY2hhbmdlKSc6ICdvbklucHV0Q2hhbmdlKCRldmVudCknLFxuICAgICcoZm9jdXMpJzogJ2ZvY3VzZWQgPSB0cnVlJyxcbiAgICAnKGJsdXIpJzogJ2ZvY3VzZWQgPSBmYWxzZSdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbTkdCX0NIRUNLQk9YX1ZBTFVFX0FDQ0VTU09SXVxufSlcbmV4cG9ydCBjbGFzcyBOZ2JDaGVja0JveCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgY2hlY2tlZDtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY2hlY2tib3ggYnV0dG9uIHdpbGwgYmUgZGlzYWJsZWRcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBmb3JtIGNvbnRyb2wgdmFsdWUgd2hlbiB0aGUgY2hlY2tib3ggaXMgY2hlY2tlZC5cbiAgICovXG4gIEBJbnB1dCgpIHZhbHVlQ2hlY2tlZCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRoZSBmb3JtIGNvbnRyb2wgdmFsdWUgd2hlbiB0aGUgY2hlY2tib3ggaXMgdW5jaGVja2VkLlxuICAgKi9cbiAgQElucHV0KCkgdmFsdWVVbkNoZWNrZWQgPSBmYWxzZTtcblxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBzZXQgZm9jdXNlZChpc0ZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9sYWJlbC5mb2N1c2VkID0gaXNGb2N1c2VkO1xuICAgIGlmICghaXNGb2N1c2VkKSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2xhYmVsOiBOZ2JCdXR0b25MYWJlbCwgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG9uSW5wdXRDaGFuZ2UoJGV2ZW50KSB7XG4gICAgY29uc3QgbW9kZWxUb1Byb3BhZ2F0ZSA9ICRldmVudC50YXJnZXQuY2hlY2tlZCA/IHRoaXMudmFsdWVDaGVja2VkIDogdGhpcy52YWx1ZVVuQ2hlY2tlZDtcbiAgICB0aGlzLm9uQ2hhbmdlKG1vZGVsVG9Qcm9wYWdhdGUpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy53cml0ZVZhbHVlKG1vZGVsVG9Qcm9wYWdhdGUpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IGFueSk6IHZvaWQgeyB0aGlzLm9uQ2hhbmdlID0gZm47IH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gYW55KTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLl9sYWJlbC5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5jaGVja2VkID0gdmFsdWUgPT09IHRoaXMudmFsdWVDaGVja2VkO1xuICAgIHRoaXMuX2xhYmVsLmFjdGl2ZSA9IHRoaXMuY2hlY2tlZDtcblxuICAgIC8vIGxhYmVsIHdvbid0IGJlIHVwZGF0ZWQsIGlmIGl0IGlzIGluc2lkZSB0aGUgT25QdXNoIGNvbXBvbmVudCB3aGVuIFtuZ01vZGVsXSBjaGFuZ2VzXG4gICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiJdfQ==