button-checkbox.directive.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. /**
  2. * @fileoverview added by tsickle
  3. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  4. */
  5. // tslint:disable:no-use-before-declare
  6. import { Directive, forwardRef, HostBinding, HostListener, Input } from '@angular/core';
  7. import { NG_VALUE_ACCESSOR } from '@angular/forms';
  8. // TODO: config: activeClass - Class to apply to the checked buttons
  9. /** @type {?} */
  10. export var CHECKBOX_CONTROL_VALUE_ACCESSOR = {
  11. provide: NG_VALUE_ACCESSOR,
  12. /* tslint:disable-next-line: no-use-before-declare */
  13. useExisting: forwardRef((/**
  14. * @return {?}
  15. */
  16. function () { return ButtonCheckboxDirective; })),
  17. multi: true
  18. };
  19. /**
  20. * Add checkbox functionality to any element
  21. */
  22. var ButtonCheckboxDirective = /** @class */ (function () {
  23. function ButtonCheckboxDirective() {
  24. /**
  25. * Truthy value, will be set to ngModel
  26. */
  27. this.btnCheckboxTrue = true;
  28. /**
  29. * Falsy value, will be set to ngModel
  30. */
  31. this.btnCheckboxFalse = false;
  32. this.state = false;
  33. this.onChange = Function.prototype;
  34. this.onTouched = Function.prototype;
  35. }
  36. // view -> model
  37. // view -> model
  38. /**
  39. * @return {?}
  40. */
  41. ButtonCheckboxDirective.prototype.onClick =
  42. // view -> model
  43. /**
  44. * @return {?}
  45. */
  46. function () {
  47. if (this.isDisabled) {
  48. return;
  49. }
  50. this.toggle(!this.state);
  51. this.onChange(this.value);
  52. };
  53. /**
  54. * @return {?}
  55. */
  56. ButtonCheckboxDirective.prototype.ngOnInit = /**
  57. * @return {?}
  58. */
  59. function () {
  60. this.toggle(this.trueValue === this.value);
  61. };
  62. Object.defineProperty(ButtonCheckboxDirective.prototype, "trueValue", {
  63. get: /**
  64. * @protected
  65. * @return {?}
  66. */
  67. function () {
  68. return typeof this.btnCheckboxTrue !== 'undefined'
  69. ? this.btnCheckboxTrue
  70. : true;
  71. },
  72. enumerable: true,
  73. configurable: true
  74. });
  75. Object.defineProperty(ButtonCheckboxDirective.prototype, "falseValue", {
  76. get: /**
  77. * @protected
  78. * @return {?}
  79. */
  80. function () {
  81. return typeof this.btnCheckboxFalse !== 'undefined'
  82. ? this.btnCheckboxFalse
  83. : false;
  84. },
  85. enumerable: true,
  86. configurable: true
  87. });
  88. /**
  89. * @param {?} state
  90. * @return {?}
  91. */
  92. ButtonCheckboxDirective.prototype.toggle = /**
  93. * @param {?} state
  94. * @return {?}
  95. */
  96. function (state) {
  97. this.state = state;
  98. this.value = this.state ? this.trueValue : this.falseValue;
  99. };
  100. // ControlValueAccessor
  101. // model -> view
  102. // ControlValueAccessor
  103. // model -> view
  104. /**
  105. * @param {?} value
  106. * @return {?}
  107. */
  108. ButtonCheckboxDirective.prototype.writeValue =
  109. // ControlValueAccessor
  110. // model -> view
  111. /**
  112. * @param {?} value
  113. * @return {?}
  114. */
  115. function (value) {
  116. this.state = this.trueValue === value;
  117. this.value = value ? this.trueValue : this.falseValue;
  118. };
  119. /**
  120. * @param {?} isDisabled
  121. * @return {?}
  122. */
  123. ButtonCheckboxDirective.prototype.setDisabledState = /**
  124. * @param {?} isDisabled
  125. * @return {?}
  126. */
  127. function (isDisabled) {
  128. this.isDisabled = isDisabled;
  129. };
  130. /**
  131. * @param {?} fn
  132. * @return {?}
  133. */
  134. ButtonCheckboxDirective.prototype.registerOnChange = /**
  135. * @param {?} fn
  136. * @return {?}
  137. */
  138. function (fn) {
  139. this.onChange = fn;
  140. };
  141. /**
  142. * @param {?} fn
  143. * @return {?}
  144. */
  145. ButtonCheckboxDirective.prototype.registerOnTouched = /**
  146. * @param {?} fn
  147. * @return {?}
  148. */
  149. function (fn) {
  150. this.onTouched = fn;
  151. };
  152. ButtonCheckboxDirective.decorators = [
  153. { type: Directive, args: [{
  154. selector: '[btnCheckbox]',
  155. providers: [CHECKBOX_CONTROL_VALUE_ACCESSOR]
  156. },] }
  157. ];
  158. ButtonCheckboxDirective.propDecorators = {
  159. btnCheckboxTrue: [{ type: Input }],
  160. btnCheckboxFalse: [{ type: Input }],
  161. state: [{ type: HostBinding, args: ['class.active',] }, { type: HostBinding, args: ['attr.aria-pressed',] }],
  162. onClick: [{ type: HostListener, args: ['click',] }]
  163. };
  164. return ButtonCheckboxDirective;
  165. }());
  166. export { ButtonCheckboxDirective };
  167. if (false) {
  168. /**
  169. * Truthy value, will be set to ngModel
  170. * @type {?}
  171. */
  172. ButtonCheckboxDirective.prototype.btnCheckboxTrue;
  173. /**
  174. * Falsy value, will be set to ngModel
  175. * @type {?}
  176. */
  177. ButtonCheckboxDirective.prototype.btnCheckboxFalse;
  178. /** @type {?} */
  179. ButtonCheckboxDirective.prototype.state;
  180. /**
  181. * @type {?}
  182. * @protected
  183. */
  184. ButtonCheckboxDirective.prototype.value;
  185. /**
  186. * @type {?}
  187. * @protected
  188. */
  189. ButtonCheckboxDirective.prototype.isDisabled;
  190. /**
  191. * @type {?}
  192. * @protected
  193. */
  194. ButtonCheckboxDirective.prototype.onChange;
  195. /**
  196. * @type {?}
  197. * @protected
  198. */
  199. ButtonCheckboxDirective.prototype.onTouched;
  200. }
  201. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWNoZWNrYm94LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvYnV0dG9ucy8iLCJzb3VyY2VzIjpbImJ1dHRvbi1jaGVja2JveC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUd6RSxNQUFNLEtBQU8sK0JBQStCLEdBQWE7SUFDdkQsT0FBTyxFQUFFLGlCQUFpQjs7SUFFMUIsV0FBVyxFQUFFLFVBQVU7OztJQUFDLGNBQU0sT0FBQSx1QkFBdUIsRUFBdkIsQ0FBdUIsRUFBQztJQUN0RCxLQUFLLEVBQUUsSUFBSTtDQUNaOzs7O0FBS0Q7SUFBQTs7OztRQU1XLG9CQUFlLEdBQUcsSUFBSSxDQUFDOzs7O1FBRXZCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUlsQyxVQUFLLEdBQUcsS0FBSyxDQUFDO1FBS0osYUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDOUIsY0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7SUFvRDNDLENBQUM7SUFsREMsZ0JBQWdCOzs7OztJQUVoQix5Q0FBTzs7Ozs7SUFEUDtRQUVFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7Ozs7SUFFRCwwQ0FBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxzQkFBYyw4Q0FBUzs7Ozs7UUFBdkI7WUFDRSxPQUFPLE9BQU8sSUFBSSxDQUFDLGVBQWUsS0FBSyxXQUFXO2dCQUNoRCxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWU7Z0JBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDWCxDQUFDOzs7T0FBQTtJQUVELHNCQUFjLCtDQUFVOzs7OztRQUF4QjtZQUNFLE9BQU8sT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssV0FBVztnQkFDakQsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQ3ZCLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDWixDQUFDOzs7T0FBQTs7Ozs7SUFFRCx3Q0FBTTs7OztJQUFOLFVBQU8sS0FBYztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDN0QsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixnQkFBZ0I7Ozs7Ozs7SUFDaEIsNENBQVU7Ozs7Ozs7SUFBVixVQUFXLEtBQThCO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDeEQsQ0FBQzs7Ozs7SUFFRCxrREFBZ0I7Ozs7SUFBaEIsVUFBaUIsVUFBbUI7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQzs7Ozs7SUFFRCxrREFBZ0I7Ozs7SUFBaEIsVUFBaUIsRUFBWTtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDOzs7OztJQUVELG1EQUFpQjs7OztJQUFqQixVQUFrQixFQUFZO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7O2dCQXJFRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDO2lCQUM3Qzs7O2tDQUdFLEtBQUs7bUNBRUwsS0FBSzt3QkFFTCxXQUFXLFNBQUMsY0FBYyxjQUMxQixXQUFXLFNBQUMsbUJBQW1COzBCQVUvQixZQUFZLFNBQUMsT0FBTzs7SUFpRHZCLDhCQUFDO0NBQUEsQUF0RUQsSUFzRUM7U0FsRVksdUJBQXVCOzs7Ozs7SUFFbEMsa0RBQWdDOzs7OztJQUVoQyxtREFBa0M7O0lBRWxDLHdDQUVjOzs7OztJQUVkLHdDQUFrQzs7Ozs7SUFDbEMsNkNBQThCOzs7OztJQUU5QiwyQ0FBd0M7Ozs7O0lBQ3hDLDRDQUF5QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlOm5vLXVzZS1iZWZvcmUtZGVjbGFyZVxuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBQcm92aWRlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLy8gVE9ETzogY29uZmlnOiBhY3RpdmVDbGFzcyAtIENsYXNzIHRvIGFwcGx5IHRvIHRoZSBjaGVja2VkIGJ1dHRvbnNcbmV4cG9ydCBjb25zdCBDSEVDS0JPWF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tdXNlLWJlZm9yZS1kZWNsYXJlICovXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJ1dHRvbkNoZWNrYm94RGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbi8qKlxuICogQWRkIGNoZWNrYm94IGZ1bmN0aW9uYWxpdHkgdG8gYW55IGVsZW1lbnRcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2J0bkNoZWNrYm94XScsXG4gIHByb3ZpZGVyczogW0NIRUNLQk9YX0NPTlRST0xfVkFMVUVfQUNDRVNTT1JdXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNoZWNrYm94RGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gIC8qKiBUcnV0aHkgdmFsdWUsIHdpbGwgYmUgc2V0IHRvIG5nTW9kZWwgKi9cbiAgQElucHV0KCkgYnRuQ2hlY2tib3hUcnVlID0gdHJ1ZTtcbiAgLyoqIEZhbHN5IHZhbHVlLCB3aWxsIGJlIHNldCB0byBuZ01vZGVsICovXG4gIEBJbnB1dCgpIGJ0bkNoZWNrYm94RmFsc2UgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjdGl2ZScpXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXByZXNzZWQnKVxuICBzdGF0ZSA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCB2YWx1ZTogYm9vbGVhbiB8IHN0cmluZztcbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIG9uQ2hhbmdlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuICBwcm90ZWN0ZWQgb25Ub3VjaGVkID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuXG4gIC8vIHZpZXcgLT4gbW9kZWxcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZSghdGhpcy5zdGF0ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlKHRoaXMudHJ1ZVZhbHVlID09PSB0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJ1ZVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5idG5DaGVja2JveFRydWUgIT09ICd1bmRlZmluZWQnXG4gICAgICA/IHRoaXMuYnRuQ2hlY2tib3hUcnVlXG4gICAgICA6IHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGZhbHNlVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmJ0bkNoZWNrYm94RmFsc2UgIT09ICd1bmRlZmluZWQnXG4gICAgICA/IHRoaXMuYnRuQ2hlY2tib3hGYWxzZVxuICAgICAgOiBmYWxzZTtcbiAgfVxuXG4gIHRvZ2dsZShzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5zdGF0ZSA/IHRoaXMudHJ1ZVZhbHVlIDogdGhpcy5mYWxzZVZhbHVlO1xuICB9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gbW9kZWwgLT4gdmlld1xuICB3cml0ZVZhbHVlKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSB0aGlzLnRydWVWYWx1ZSA9PT0gdmFsdWU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlID8gdGhpcy50cnVlVmFsdWUgOiB0aGlzLmZhbHNlVmFsdWU7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG59XG4iXX0=