@ng-matero/extensions 10.16.4 → 10.16.5
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.
- package/bundles/{ng-matero-extensions-button.umd.js → mtxButton.umd.js} +2 -2
- package/bundles/mtxButton.umd.js.map +1 -0
- package/bundles/{ng-matero-extensions-button.umd.min.js → mtxButton.umd.min.js} +1 -1
- package/bundles/{ng-matero-extensions-button.umd.min.js.map → mtxButton.umd.min.js.map} +0 -0
- package/bundles/mtxCheckboxGroup.umd.js +76 -14
- package/bundles/mtxCheckboxGroup.umd.js.map +1 -1
- package/bundles/mtxCheckboxGroup.umd.min.js +1 -1
- package/bundles/mtxCheckboxGroup.umd.min.js.map +1 -1
- package/bundles/mtxColorPicker.umd.js +27 -4
- package/bundles/mtxColorPicker.umd.js.map +1 -1
- package/bundles/mtxColorPicker.umd.min.js +1 -1
- package/bundles/mtxColorPicker.umd.min.js.map +1 -1
- package/bundles/mtxFormGroup.umd.js +2 -0
- package/bundles/mtxFormGroup.umd.js.map +1 -1
- package/bundles/mtxFormGroup.umd.min.js +1 -1
- package/bundles/mtxFormGroup.umd.min.js.map +1 -1
- package/button/{ng-matero-extensions-button.d.ts → mtxButton.d.ts} +0 -0
- package/button/{ng-matero-extensions-button.metadata.json → mtxButton.metadata.json} +0 -0
- package/button/package.json +7 -7
- package/checkbox-group/checkbox-group.component.d.ts +10 -6
- package/checkbox-group/mtxCheckboxGroup.metadata.json +1 -1
- package/color-picker/color-picker.component.d.ts +4 -0
- package/color-picker/mtxColorPicker.metadata.json +1 -1
- package/esm2015/button/mtxButton.js +10 -0
- package/esm2015/checkbox-group/checkbox-group.component.js +69 -12
- package/esm2015/color-picker/color-picker.component.js +24 -5
- package/esm2015/form-group/form-group.component.js +4 -2
- package/fesm2015/{ng-matero-extensions-button.js → mtxButton.js} +2 -2
- package/fesm2015/mtxButton.js.map +1 -0
- package/fesm2015/mtxCheckboxGroup.js +68 -11
- package/fesm2015/mtxCheckboxGroup.js.map +1 -1
- package/fesm2015/mtxColorPicker.js +23 -4
- package/fesm2015/mtxColorPicker.js.map +1 -1
- package/fesm2015/mtxFormGroup.js +3 -1
- package/fesm2015/mtxFormGroup.js.map +1 -1
- package/form-group/mtxFormGroup.metadata.json +1 -1
- package/package.json +1 -1
- package/bundles/ng-matero-extensions-button.umd.js.map +0 -1
- package/esm2015/button/ng-matero-extensions-button.js +0 -10
- package/fesm2015/ng-matero-extensions-button.js.map +0 -1
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
|
|
150
150
|
/**
|
|
151
151
|
* @fileoverview added by tsickle
|
|
152
|
-
* Generated from:
|
|
152
|
+
* Generated from: mtxButton.ts
|
|
153
153
|
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
154
154
|
*/
|
|
155
155
|
|
|
@@ -159,4 +159,4 @@
|
|
|
159
159
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
160
160
|
|
|
161
161
|
})));
|
|
162
|
-
//# sourceMappingURL=
|
|
162
|
+
//# sourceMappingURL=mtxButton.umd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mtxButton.umd.js","sources":["../../../projects/extensions/button/button-loading.directive.ts","../../../projects/extensions/button/button.module.ts"],"sourcesContent":["import {\r\n ComponentFactory,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n Directive,\r\n Input,\r\n OnChanges,\r\n Renderer2,\r\n SimpleChanges,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\n\r\n@Directive({\r\n selector: `button[mat-button][loading],\r\n button[mat-raised-button][loading],\r\n button[mat-stroked-button][loading],\r\n button[mat-flat-button][loading],\r\n button[mat-icon-button][loading],\r\n button[mat-fab][loading],\r\n button[mat-mini-fab][loading]`,\r\n})\r\nexport class MatButtonLoadingDirective implements OnChanges {\r\n private spinnerFactory: ComponentFactory<MatProgressSpinner>;\r\n private spinner: ComponentRef<MatProgressSpinner> | null;\r\n\r\n @Input()\r\n loading: boolean;\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n color: ThemePalette;\r\n\r\n constructor(\r\n private matButton: MatButton,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private viewContainerRef: ViewContainerRef,\r\n private renderer: Renderer2\r\n ) {\r\n this.spinnerFactory = this.componentFactoryResolver.resolveComponentFactory(MatProgressSpinner);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!changes.loading) {\r\n return;\r\n }\r\n\r\n if (changes.loading.currentValue) {\r\n this.matButton._elementRef.nativeElement.classList.add('mat-button-loading');\r\n this.matButton.disabled = true;\r\n this.createSpinner();\r\n } else if (!changes.loading.firstChange) {\r\n this.matButton._elementRef.nativeElement.classList.remove('mat-button-loading');\r\n this.matButton.disabled = this.disabled;\r\n this.destroySpinner();\r\n }\r\n }\r\n\r\n private createSpinner(): void {\r\n if (!this.spinner) {\r\n this.spinner = this.viewContainerRef.createComponent(this.spinnerFactory);\r\n this.spinner.instance.color = this.color;\r\n this.spinner.instance.diameter = 20;\r\n this.spinner.instance.mode = 'indeterminate';\r\n this.renderer.appendChild(\r\n this.matButton._elementRef.nativeElement,\r\n this.spinner.instance._elementRef.nativeElement\r\n );\r\n }\r\n }\r\n\r\n private destroySpinner(): void {\r\n if (this.spinner) {\r\n this.spinner.destroy();\r\n this.spinner = null;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonLoadingDirective } from './button-loading.directive';\n\n@NgModule({\n imports: [CommonModule, MatButtonModule, MatProgressSpinnerModule],\n exports: [MatButtonLoadingDirective],\n declarations: [MatButtonLoadingDirective],\n})\nexport class MtxButtonModule {}\n"],"names":["MatProgressSpinner","Directive","MatButton","ComponentFactoryResolver","ViewContainerRef","Renderer2","Input","NgModule","CommonModule","MatButtonModule","MatProgressSpinnerModule"],"mappings":";;;;;;;;;;;;;;;;;;QAqCE,mCACU,SAAoB,EACpB,wBAAkD,EAClD,gBAAkC,EAClC,QAAmB;YAHnB,cAAS,GAAT,SAAS,CAAW;YACpB,6BAAwB,GAAxB,wBAAwB,CAA0B;YAClD,qBAAgB,GAAhB,gBAAgB,CAAkB;YAClC,aAAQ,GAAR,QAAQ,CAAW;YAE3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAACA,kCAAkB,CAAC,CAAC;SACjG;;;;;QAED,+CAAW,GAAX,UAAY,OAAsB;YAChC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;gBACpB,OAAO;aACR;YAED,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE;gBAChC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAC7E,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;iBAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;gBACvC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBAChF,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBACxC,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;SACF;;;;;QAEO,iDAAa,GAAb;YACN,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC1E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACzC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACpC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,eAAe,CAAC;gBAC7C,IAAI,CAAC,QAAQ,CAAC,WAAW,CACvB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa,EACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAChD,CAAC;aACH;SACF;;;;;QAEO,kDAAc,GAAd;YACN,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACrB;SACF;;;;gBAjEFC,cAAS,SAAC;oBACT,QAAQ,EAAE,uTAM+B;iBAC1C;;;;gBAXQC,gBAAS;gBAVhBC,6BAAwB;gBAOxBC,qBAAgB;gBAFhBC,cAAS;;;0BAqBRC,UAAK;2BAGLA,UAAK;wBAGLA,UAAK;;;;;;;QATN,mDAA6D;;;;;QAC7D,4CAAyD;;QAEzD,4CACiB;;QAEjB,6CACkB;;QAElB,0CACoB;;;;;QAGlB,8CAA4B;;;;;QAC5B,6DAA0D;;;;;QAC1D,qDAA0C;;;;;QAC1C,6CAA2B;;;;;;;;;QC7B/B;;;;;gBALCC,aAAQ,SAAC;oBACR,OAAO,EAAE,CAACC,mBAAY,EAAEC,sBAAe,EAAEC,wCAAwB,CAAC;oBAClE,OAAO,EAAE,CAAC,yBAAyB,CAAC;oBACpC,YAAY,EAAE,CAAC,yBAAyB,CAAC;iBAC1C;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common"),require("@angular/material/button"),require("@angular/material/progress-spinner")):"function"==typeof define&&define.amd?define("@ng-matero/extensions/button",["exports","@angular/core","@angular/common","@angular/material/button","@angular/material/progress-spinner"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self)["ng-matero"]=t["ng-matero"]||{},t["ng-matero"].extensions=t["ng-matero"].extensions||{},t["ng-matero"].extensions.button={}),t.ng.core,t.ng.common,t.ng.material.button,t.ng.material.progressSpinner)}(this,(function(t,e,n,o,r){"use strict";var i=function(){function t(t,e,n,o){this.matButton=t,this.componentFactoryResolver=e,this.viewContainerRef=n,this.renderer=o,this.spinnerFactory=this.componentFactoryResolver.resolveComponentFactory(r.MatProgressSpinner)}return t.prototype.ngOnChanges=function(t){t.loading&&(t.loading.currentValue?(this.matButton._elementRef.nativeElement.classList.add("mat-button-loading"),this.matButton.disabled=!0,this.createSpinner()):t.loading.firstChange||(this.matButton._elementRef.nativeElement.classList.remove("mat-button-loading"),this.matButton.disabled=this.disabled,this.destroySpinner()))},t.prototype.createSpinner=function(){this.spinner||(this.spinner=this.viewContainerRef.createComponent(this.spinnerFactory),this.spinner.instance.color=this.color,this.spinner.instance.diameter=20,this.spinner.instance.mode="indeterminate",this.renderer.appendChild(this.matButton._elementRef.nativeElement,this.spinner.instance._elementRef.nativeElement))},t.prototype.destroySpinner=function(){this.spinner&&(this.spinner.destroy(),this.spinner=null)},t}();i.decorators=[{type:e.Directive,args:[{selector:"button[mat-button][loading],\n button[mat-raised-button][loading],\n button[mat-stroked-button][loading],\n button[mat-flat-button][loading],\n button[mat-icon-button][loading],\n button[mat-fab][loading],\n button[mat-mini-fab][loading]"}]}],i.ctorParameters=function(){return[{type:o.MatButton},{type:e.ComponentFactoryResolver},{type:e.ViewContainerRef},{type:e.Renderer2}]},i.propDecorators={loading:[{type:e.Input}],disabled:[{type:e.Input}],color:[{type:e.Input}]};var a=function(){};a.decorators=[{type:e.NgModule,args:[{imports:[n.CommonModule,o.MatButtonModule,r.MatProgressSpinnerModule],exports:[i],declarations:[i]}]}],t.MatButtonLoadingDirective=i,t.MtxButtonModule=a,Object.defineProperty(t,"__esModule",{value:!0})}));
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=mtxButton.umd.min.js.map
|
|
File without changes
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/forms'), require('@angular/material/checkbox'), require('@ng-matero/extensions/utils'), require('@angular/cdk/coercion')) :
|
|
3
|
-
typeof define === 'function' && define.amd ? define('@ng-matero/extensions/checkbox-group', ['exports', '@angular/core', '@angular/common', '@angular/forms', '@angular/material/checkbox', '@ng-matero/extensions/utils', '@angular/cdk/coercion'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global['ng-matero'] = global['ng-matero'] || {}, global['ng-matero'].extensions = global['ng-matero'].extensions || {}, global['ng-matero'].extensions['checkbox-group'] = {}), global.ng.core, global.ng.common, global.ng.forms, global.ng.material.checkbox, global['ng-matero'].extensions.utils, global.ng.cdk.coercion));
|
|
5
|
-
}(this, (function (exports, core, common, forms, checkbox, utils, coercion) { 'use strict';
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/forms'), require('@angular/material/checkbox'), require('@ng-matero/extensions/utils'), require('@angular/cdk/a11y'), require('@angular/cdk/coercion')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define('@ng-matero/extensions/checkbox-group', ['exports', '@angular/core', '@angular/common', '@angular/forms', '@angular/material/checkbox', '@ng-matero/extensions/utils', '@angular/cdk/a11y', '@angular/cdk/coercion'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global['ng-matero'] = global['ng-matero'] || {}, global['ng-matero'].extensions = global['ng-matero'].extensions || {}, global['ng-matero'].extensions['checkbox-group'] = {}), global.ng.core, global.ng.common, global.ng.forms, global.ng.material.checkbox, global['ng-matero'].extensions.utils, global.ng.cdk.a11y, global.ng.cdk.coercion));
|
|
5
|
+
}(this, (function (exports, core, common, forms, checkbox, utils, a11y, coercion) { 'use strict';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* @fileoverview added by tsickle
|
|
@@ -29,20 +29,23 @@
|
|
|
29
29
|
var MtxCheckboxGroupComponent = /** @class */ (function () {
|
|
30
30
|
/**
|
|
31
31
|
* @param {?} _changeDetectorRef
|
|
32
|
+
* @param {?} _focusMonitor
|
|
33
|
+
* @param {?} _elementRef
|
|
32
34
|
*/
|
|
33
|
-
function MtxCheckboxGroupComponent(_changeDetectorRef) {
|
|
35
|
+
function MtxCheckboxGroupComponent(_changeDetectorRef, _focusMonitor, _elementRef) {
|
|
34
36
|
this._changeDetectorRef = _changeDetectorRef;
|
|
37
|
+
this._focusMonitor = _focusMonitor;
|
|
38
|
+
this._elementRef = _elementRef;
|
|
35
39
|
this._items = [];
|
|
36
40
|
this._originalItems = [];
|
|
37
41
|
this.bindLabel = 'label';
|
|
38
42
|
this.bindValue = 'value';
|
|
39
|
-
this.
|
|
43
|
+
this._showSelectAll = false;
|
|
40
44
|
this.selectAllLabel = 'Select All';
|
|
41
45
|
this._disabled = false;
|
|
42
46
|
this.change = new core.EventEmitter();
|
|
43
47
|
this.selectAll = false;
|
|
44
48
|
this.selectAllIndeterminate = false;
|
|
45
|
-
this.color = 'accent';
|
|
46
49
|
this.selectedItems = [];
|
|
47
50
|
this._onChange = ( /**
|
|
48
51
|
* @return {?}
|
|
@@ -78,6 +81,23 @@
|
|
|
78
81
|
enumerable: false,
|
|
79
82
|
configurable: true
|
|
80
83
|
});
|
|
84
|
+
Object.defineProperty(MtxCheckboxGroupComponent.prototype, "showSelectAll", {
|
|
85
|
+
/**
|
|
86
|
+
* @return {?}
|
|
87
|
+
*/
|
|
88
|
+
get: function () {
|
|
89
|
+
return this._showSelectAll;
|
|
90
|
+
},
|
|
91
|
+
/**
|
|
92
|
+
* @param {?} value
|
|
93
|
+
* @return {?}
|
|
94
|
+
*/
|
|
95
|
+
set: function (value) {
|
|
96
|
+
this._showSelectAll = coercion.coerceBooleanProperty(value);
|
|
97
|
+
},
|
|
98
|
+
enumerable: false,
|
|
99
|
+
configurable: true
|
|
100
|
+
});
|
|
81
101
|
Object.defineProperty(MtxCheckboxGroupComponent.prototype, "compareWith", {
|
|
82
102
|
/**
|
|
83
103
|
* @return {?}
|
|
@@ -120,7 +140,36 @@
|
|
|
120
140
|
/**
|
|
121
141
|
* @return {?}
|
|
122
142
|
*/
|
|
123
|
-
MtxCheckboxGroupComponent.prototype.ngAfterViewInit = function () {
|
|
143
|
+
MtxCheckboxGroupComponent.prototype.ngAfterViewInit = function () {
|
|
144
|
+
var _this = this;
|
|
145
|
+
this._focusMonitor.monitor(this._elementRef, true).subscribe(( /**
|
|
146
|
+
* @param {?} focusOrigin
|
|
147
|
+
* @return {?}
|
|
148
|
+
*/function (/**
|
|
149
|
+
* @param {?} focusOrigin
|
|
150
|
+
* @return {?}
|
|
151
|
+
*/ focusOrigin) {
|
|
152
|
+
if (!focusOrigin) {
|
|
153
|
+
// When a focused element becomes disabled, the browser *immediately* fires a blur event.
|
|
154
|
+
// Angular does not expect events to be raised during change detection, so any state change
|
|
155
|
+
// (such as a form control's 'ng-touched') will cause a changed-after-checked error.
|
|
156
|
+
// See https://github.com/angular/angular/issues/17793. To work around this, we defer
|
|
157
|
+
// telling the form control it has been touched until the next tick.
|
|
158
|
+
Promise.resolve().then(( /**
|
|
159
|
+
* @return {?}
|
|
160
|
+
*/function () {
|
|
161
|
+
_this._onTouched();
|
|
162
|
+
_this._changeDetectorRef.markForCheck();
|
|
163
|
+
}));
|
|
164
|
+
}
|
|
165
|
+
}));
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* @return {?}
|
|
169
|
+
*/
|
|
170
|
+
MtxCheckboxGroupComponent.prototype.ngOnDestroy = function () {
|
|
171
|
+
this._focusMonitor.stopMonitoring(this._elementRef);
|
|
172
|
+
};
|
|
124
173
|
/**
|
|
125
174
|
* Finds and selects and option based on its value.
|
|
126
175
|
* @private
|
|
@@ -348,7 +397,7 @@
|
|
|
348
397
|
host: {
|
|
349
398
|
class: 'mtx-checkbox-group',
|
|
350
399
|
},
|
|
351
|
-
template: "<mat-checkbox class=\"mtx-checkbox-master\"\n *ngIf=\"showSelectAll\"\n [checked]=\"selectAll\"\n [(indeterminate)]=\"selectAllIndeterminate\"\n [disabled]=\"disabled\"\n (change)=\"_updateMasterCheckboxState($event, -1);\">\n {{selectAllLabel}}\n</mat-checkbox>\n\n<mat-checkbox class=\"mtx-checkbox-normal\"\n *ngFor=\"let option of items; let i = index;\"\n [(ngModel)]=\"option.checked\"\n [aria-describedby]=\"option.ariaDescribedby\"\n [aria-label]=\"option.ariaLabel\"\n [aria-labelledby]=\"option.ariaLabelledby\"\n [color]=\"option.color
|
|
400
|
+
template: "<mat-checkbox class=\"mtx-checkbox-master\"\n *ngIf=\"showSelectAll\"\n [checked]=\"selectAll\"\n [(indeterminate)]=\"selectAllIndeterminate\"\n [disabled]=\"disabled\"\n (change)=\"_updateMasterCheckboxState($event, -1);\">\n {{selectAllLabel}}\n</mat-checkbox>\n\n<mat-checkbox class=\"mtx-checkbox-normal\"\n *ngFor=\"let option of items; let i = index;\"\n [(ngModel)]=\"option.checked\"\n [aria-describedby]=\"option.ariaDescribedby\"\n [aria-label]=\"option.ariaLabel\"\n [aria-labelledby]=\"option.ariaLabelledby\"\n [color]=\"option.color\"\n [disabled]=\"option.disabled || disabled\"\n [disableRipple]=\"option.disableRipple\"\n [labelPosition]=\"option.labelPosition\"\n [required]=\"option.required\"\n (change)=\"_updateNormalCheckboxState($event, i)\">\n {{option[bindLabel] | toObservable | async}}\n</mat-checkbox>\n",
|
|
352
401
|
encapsulation: core.ViewEncapsulation.None,
|
|
353
402
|
changeDetection: core.ChangeDetectionStrategy.OnPush,
|
|
354
403
|
providers: [
|
|
@@ -365,7 +414,9 @@
|
|
|
365
414
|
];
|
|
366
415
|
/** @nocollapse */
|
|
367
416
|
MtxCheckboxGroupComponent.ctorParameters = function () { return [
|
|
368
|
-
{ type: core.ChangeDetectorRef }
|
|
417
|
+
{ type: core.ChangeDetectorRef },
|
|
418
|
+
{ type: a11y.FocusMonitor },
|
|
419
|
+
{ type: core.ElementRef }
|
|
369
420
|
]; };
|
|
370
421
|
MtxCheckboxGroupComponent.propDecorators = {
|
|
371
422
|
_checkboxes: [{ type: core.ContentChildren, args: [core.forwardRef(( /**
|
|
@@ -397,8 +448,11 @@
|
|
|
397
448
|
MtxCheckboxGroupComponent.prototype.bindLabel;
|
|
398
449
|
/** @type {?} */
|
|
399
450
|
MtxCheckboxGroupComponent.prototype.bindValue;
|
|
400
|
-
/**
|
|
401
|
-
|
|
451
|
+
/**
|
|
452
|
+
* @type {?}
|
|
453
|
+
* @private
|
|
454
|
+
*/
|
|
455
|
+
MtxCheckboxGroupComponent.prototype._showSelectAll;
|
|
402
456
|
/** @type {?} */
|
|
403
457
|
MtxCheckboxGroupComponent.prototype.selectAllLabel;
|
|
404
458
|
/**
|
|
@@ -418,8 +472,6 @@
|
|
|
418
472
|
/** @type {?} */
|
|
419
473
|
MtxCheckboxGroupComponent.prototype.selectAllIndeterminate;
|
|
420
474
|
/** @type {?} */
|
|
421
|
-
MtxCheckboxGroupComponent.prototype.color;
|
|
422
|
-
/** @type {?} */
|
|
423
475
|
MtxCheckboxGroupComponent.prototype.selectedItems;
|
|
424
476
|
/** @type {?} */
|
|
425
477
|
MtxCheckboxGroupComponent.prototype._onChange;
|
|
@@ -430,6 +482,16 @@
|
|
|
430
482
|
* @private
|
|
431
483
|
*/
|
|
432
484
|
MtxCheckboxGroupComponent.prototype._changeDetectorRef;
|
|
485
|
+
/**
|
|
486
|
+
* @type {?}
|
|
487
|
+
* @private
|
|
488
|
+
*/
|
|
489
|
+
MtxCheckboxGroupComponent.prototype._focusMonitor;
|
|
490
|
+
/**
|
|
491
|
+
* @type {?}
|
|
492
|
+
* @private
|
|
493
|
+
*/
|
|
494
|
+
MtxCheckboxGroupComponent.prototype._elementRef;
|
|
433
495
|
}
|
|
434
496
|
|
|
435
497
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mtxCheckboxGroup.umd.js","sources":["../../../projects/extensions/checkbox-group/checkbox-group.component.ts","../../../projects/extensions/checkbox-group/checkbox-group.module.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n forwardRef,\n AfterViewInit,\n ContentChildren,\n QueryList,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MtxCheckboxGroupOption } from './checkbox-group.interface';\n\nexport class MtxCheckboxBase {\n constructor(public label?: any, public value?: any) {}\n}\n\n@Component({\n selector: 'mtx-checkbox-group',\n exportAs: 'mtxCheckboxGroup',\n host: {\n class: 'mtx-checkbox-group',\n },\n templateUrl: './checkbox-group.component.html',\n styleUrls: ['./checkbox-group.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MtxCheckboxGroupComponent),\n multi: true,\n },\n ],\n})\nexport class MtxCheckboxGroupComponent implements AfterViewInit, ControlValueAccessor {\n @ContentChildren(forwardRef(() => MatCheckbox), { descendants: true })\n _checkboxes: QueryList<MatCheckbox>;\n\n @Input()\n get items() {\n return this._items;\n }\n set items(value: any[]) {\n // TODO: Deep clone\n this._originalItems = JSON.parse(JSON.stringify(value));\n this._items = value.map(option => {\n return option instanceof Object ? option : new MtxCheckboxBase(option, option);\n });\n }\n private _items: any[] = [];\n private _originalItems: any[] = [];\n\n @Input() bindLabel = 'label';\n @Input() bindValue = 'value';\n @Input() showSelectAll = false;\n @Input() selectAllLabel = 'Select All';\n @Input()\n get compareWith() {\n return this._compareWith;\n }\n set compareWith(fn: (o1: any, o2: any) => boolean) {\n if (typeof fn !== 'function') {\n throw Error('`compareWith` must be a function.');\n }\n\n if (fn) {\n this._compareWith = fn;\n }\n }\n private _compareWith: (o1: any, o2: any) => boolean;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n @Output() change = new EventEmitter<{ model: MtxCheckboxGroupOption[]; index: number }>();\n\n selectAll = false;\n selectAllIndeterminate = false;\n\n color: ThemePalette = 'accent';\n\n selectedItems: MtxCheckboxGroupOption[] = [];\n\n _onChange: (value: MtxCheckboxGroupOption[]) => void = () => null;\n _onTouched: () => void = () => null;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n ngAfterViewInit() {}\n\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n private _selectValue(value: MtxCheckboxGroupOption) {\n const correspondingOption = (this.items as MtxCheckboxGroupOption[]).find(option => {\n try {\n const compareValue = option[this.bindValue] === value;\n return this._compareWith ? this._compareWith(option, value) : compareValue;\n } catch (error) {\n console.warn(error);\n return false;\n }\n });\n\n if (correspondingOption) {\n correspondingOption.checked = true;\n }\n\n return correspondingOption;\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value New value to be written to the model.\n */\n writeValue(value: any[]): void {\n if (value) {\n if (!Array.isArray(value)) {\n throw Error('Value must be an array.');\n }\n\n value.forEach((currentValue: any) => this._selectValue(currentValue));\n this.selectedItems = value;\n }\n\n this._checkMasterCheckboxState();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: (value: MtxCheckboxGroupOption[]) => {}): void {\n this._onChange = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: () => {}): void {\n this._onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this._disabled = isDisabled;\n }\n\n private _checkMasterCheckboxState() {\n if (\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .every(option => !option.checked)\n ) {\n this.selectAll = false;\n this.selectAllIndeterminate = false;\n } else if (\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .every(option => option.checked)\n ) {\n this.selectAll = true;\n this.selectAllIndeterminate = false;\n } else {\n this.selectAllIndeterminate = true;\n }\n }\n\n private _getSelectedItems(index: number) {\n this.selectedItems = (this.items as MtxCheckboxGroupOption[]).filter(option => option.checked);\n\n if (this._compareWith) {\n this.selectedItems = (this._originalItems as MtxCheckboxGroupOption[]).filter(option =>\n this.selectedItems.find(selectedOption => this._compareWith(option, selectedOption))\n );\n } else {\n this.selectedItems = this.selectedItems.map(option => option[this.bindValue]);\n }\n\n this._onChange(this.selectedItems);\n\n this.change.emit({ model: this.selectedItems, index });\n }\n\n /** Handle normal checkbox toggle */\n _updateNormalCheckboxState(e: MatCheckboxChange, index: number): void {\n this._checkMasterCheckboxState();\n this._getSelectedItems(index);\n }\n\n /** Handle master checkbox toggle */\n _updateMasterCheckboxState(e: MatCheckboxChange, index: number): void {\n this.selectAll = !this.selectAll;\n this.selectAllIndeterminate = false;\n\n if (this.selectAll) {\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .forEach(option => (option.checked = true));\n } else {\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .forEach(option => (option.checked = !!option.disabled));\n }\n\n this._getSelectedItems(index);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\nimport { MtxUtilsModule } from '@ng-matero/extensions/utils';\nimport { MtxCheckboxGroupComponent } from './checkbox-group.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, MatCheckboxModule, MtxUtilsModule],\n exports: [MtxCheckboxGroupComponent],\n declarations: [MtxCheckboxGroupComponent],\n})\nexport class MtxCheckboxGroupModule {}\n"],"names":["EventEmitter","coerceBooleanProperty","Component","ViewEncapsulation","ChangeDetectionStrategy","NG_VALUE_ACCESSOR","forwardRef","ChangeDetectorRef","ContentChildren","MatCheckbox","Input","Output","NgModule","CommonModule","FormsModule","MatCheckboxModule","MtxUtilsModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mtxCheckboxGroup.umd.js","sources":["../../../projects/extensions/checkbox-group/checkbox-group.component.ts","../../../projects/extensions/checkbox-group/checkbox-group.module.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n forwardRef,\n AfterViewInit,\n ContentChildren,\n QueryList,\n ElementRef,\n OnDestroy,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MtxCheckboxGroupOption } from './checkbox-group.interface';\n\nexport class MtxCheckboxBase {\n constructor(public label?: any, public value?: any) {}\n}\n\n@Component({\n selector: 'mtx-checkbox-group',\n exportAs: 'mtxCheckboxGroup',\n host: {\n class: 'mtx-checkbox-group',\n },\n templateUrl: './checkbox-group.component.html',\n styleUrls: ['./checkbox-group.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MtxCheckboxGroupComponent),\n multi: true,\n },\n ],\n})\nexport class MtxCheckboxGroupComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\n @ContentChildren(forwardRef(() => MatCheckbox), { descendants: true })\n _checkboxes: QueryList<MatCheckbox>;\n\n @Input()\n get items() {\n return this._items;\n }\n set items(value: any[]) {\n // TODO: Deep clone\n this._originalItems = JSON.parse(JSON.stringify(value));\n this._items = value.map(option => {\n return option instanceof Object ? option : new MtxCheckboxBase(option, option);\n });\n }\n private _items: any[] = [];\n private _originalItems: any[] = [];\n\n @Input() bindLabel = 'label';\n\n @Input() bindValue = 'value';\n\n @Input()\n get showSelectAll(): boolean {\n return this._showSelectAll;\n }\n set showSelectAll(value: boolean) {\n this._showSelectAll = coerceBooleanProperty(value);\n }\n private _showSelectAll = false;\n\n @Input() selectAllLabel = 'Select All';\n\n @Input()\n get compareWith() {\n return this._compareWith;\n }\n set compareWith(fn: (o1: any, o2: any) => boolean) {\n if (typeof fn !== 'function') {\n throw Error('`compareWith` must be a function.');\n }\n\n if (fn) {\n this._compareWith = fn;\n }\n }\n private _compareWith: (o1: any, o2: any) => boolean;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n @Output() change = new EventEmitter<{ model: MtxCheckboxGroupOption[]; index: number }>();\n\n selectAll = false;\n selectAllIndeterminate = false;\n\n selectedItems: MtxCheckboxGroupOption[] = [];\n\n _onChange: (value: MtxCheckboxGroupOption[]) => void = () => null;\n _onTouched: () => void = () => null;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _focusMonitor: FocusMonitor,\n private _elementRef: ElementRef<HTMLElement>\n ) {}\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true).subscribe(focusOrigin => {\n if (!focusOrigin) {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state change\n // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n });\n }\n });\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n private _selectValue(value: MtxCheckboxGroupOption) {\n const correspondingOption = (this.items as MtxCheckboxGroupOption[]).find(option => {\n try {\n const compareValue = option[this.bindValue] === value;\n return this._compareWith ? this._compareWith(option, value) : compareValue;\n } catch (error) {\n console.warn(error);\n return false;\n }\n });\n\n if (correspondingOption) {\n correspondingOption.checked = true;\n }\n\n return correspondingOption;\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value New value to be written to the model.\n */\n writeValue(value: any[]): void {\n if (value) {\n if (!Array.isArray(value)) {\n throw Error('Value must be an array.');\n }\n\n value.forEach((currentValue: any) => this._selectValue(currentValue));\n this.selectedItems = value;\n }\n\n this._checkMasterCheckboxState();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: (value: MtxCheckboxGroupOption[]) => {}): void {\n this._onChange = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: () => {}): void {\n this._onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this._disabled = isDisabled;\n }\n\n private _checkMasterCheckboxState() {\n if (\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .every(option => !option.checked)\n ) {\n this.selectAll = false;\n this.selectAllIndeterminate = false;\n } else if (\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .every(option => option.checked)\n ) {\n this.selectAll = true;\n this.selectAllIndeterminate = false;\n } else {\n this.selectAllIndeterminate = true;\n }\n }\n\n private _getSelectedItems(index: number) {\n this.selectedItems = (this.items as MtxCheckboxGroupOption[]).filter(option => option.checked);\n\n if (this._compareWith) {\n this.selectedItems = (this._originalItems as MtxCheckboxGroupOption[]).filter(option =>\n this.selectedItems.find(selectedOption => this._compareWith(option, selectedOption))\n );\n } else {\n this.selectedItems = this.selectedItems.map(option => option[this.bindValue]);\n }\n\n this._onChange(this.selectedItems);\n\n this.change.emit({ model: this.selectedItems, index });\n }\n\n /** Handle normal checkbox toggle */\n _updateNormalCheckboxState(e: MatCheckboxChange, index: number): void {\n this._checkMasterCheckboxState();\n this._getSelectedItems(index);\n }\n\n /** Handle master checkbox toggle */\n _updateMasterCheckboxState(e: MatCheckboxChange, index: number): void {\n this.selectAll = !this.selectAll;\n this.selectAllIndeterminate = false;\n\n if (this.selectAll) {\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .forEach(option => (option.checked = true));\n } else {\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .forEach(option => (option.checked = !!option.disabled));\n }\n\n this._getSelectedItems(index);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\nimport { MtxUtilsModule } from '@ng-matero/extensions/utils';\nimport { MtxCheckboxGroupComponent } from './checkbox-group.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, MatCheckboxModule, MtxUtilsModule],\n exports: [MtxCheckboxGroupComponent],\n declarations: [MtxCheckboxGroupComponent],\n})\nexport class MtxCheckboxGroupModule {}\n"],"names":["EventEmitter","coerceBooleanProperty","Component","ViewEncapsulation","ChangeDetectionStrategy","NG_VALUE_ACCESSOR","forwardRef","ChangeDetectorRef","FocusMonitor","ElementRef","ContentChildren","MatCheckbox","Input","Output","NgModule","CommonModule","FormsModule","MatCheckboxModule","MtxUtilsModule"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common"),require("@angular/forms"),require("@angular/material/checkbox"),require("@ng-matero/extensions/utils"),require("@angular/cdk/coercion")):"function"==typeof define&&define.amd?define("@ng-matero/extensions/checkbox-group",["exports","@angular/core","@angular/common","@angular/forms","@angular/material/checkbox","@ng-matero/extensions/utils","@angular/cdk/coercion"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self)["ng-matero"]=e["ng-matero"]||{},e["ng-matero"].extensions=e["ng-matero"].extensions||{},e["ng-matero"].extensions["checkbox-group"]={}),e.ng.core,e.ng.common,e.ng.forms,e.ng.material.checkbox,e["ng-matero"].extensions.utils,e.ng.cdk.coercion)}(this,(function(e,t,n,o,i,r,c){"use strict";var
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common"),require("@angular/forms"),require("@angular/material/checkbox"),require("@ng-matero/extensions/utils"),require("@angular/cdk/a11y"),require("@angular/cdk/coercion")):"function"==typeof define&&define.amd?define("@ng-matero/extensions/checkbox-group",["exports","@angular/core","@angular/common","@angular/forms","@angular/material/checkbox","@ng-matero/extensions/utils","@angular/cdk/a11y","@angular/cdk/coercion"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self)["ng-matero"]=e["ng-matero"]||{},e["ng-matero"].extensions=e["ng-matero"].extensions||{},e["ng-matero"].extensions["checkbox-group"]={}),e.ng.core,e.ng.common,e.ng.forms,e.ng.material.checkbox,e["ng-matero"].extensions.utils,e.ng.cdk.a11y,e.ng.cdk.coercion)}(this,(function(e,t,n,o,i,r,c,s){"use strict";var a=function(e,t){this.label=e,this.value=t};var l=function(){function e(e,n,o){this._changeDetectorRef=e,this._focusMonitor=n,this._elementRef=o,this._items=[],this._originalItems=[],this.bindLabel="label",this.bindValue="value",this._showSelectAll=!1,this.selectAllLabel="Select All",this._disabled=!1,this.change=new t.EventEmitter,this.selectAll=!1,this.selectAllIndeterminate=!1,this.selectedItems=[],this._onChange=function(){return null},this._onTouched=function(){return null}}return Object.defineProperty(e.prototype,"items",{get:function(){return this._items},set:function(e){this._originalItems=JSON.parse(JSON.stringify(e)),this._items=e.map((function(e){return e instanceof Object?e:new a(e,e)}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"showSelectAll",{get:function(){return this._showSelectAll},set:function(e){this._showSelectAll=s.coerceBooleanProperty(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"compareWith",{get:function(){return this._compareWith},set:function(e){if("function"!=typeof e)throw Error("`compareWith` must be a function.");e&&(this._compareWith=e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{get:function(){return this._disabled},set:function(e){this._disabled=s.coerceBooleanProperty(e)},enumerable:!1,configurable:!0}),e.prototype.ngAfterViewInit=function(){var e=this;this._focusMonitor.monitor(this._elementRef,!0).subscribe((function(t){t||Promise.resolve().then((function(){e._onTouched(),e._changeDetectorRef.markForCheck()}))}))},e.prototype.ngOnDestroy=function(){this._focusMonitor.stopMonitoring(this._elementRef)},e.prototype._selectValue=function(e){var t=this,n=this.items.find((function(n){try{var o=n[t.bindValue]===e;return t._compareWith?t._compareWith(n,e):o}catch(e){return console.warn(e),!1}}));return n&&(n.checked=!0),n},e.prototype.writeValue=function(e){var t=this;if(e){if(!Array.isArray(e))throw Error("Value must be an array.");e.forEach((function(e){return t._selectValue(e)})),this.selectedItems=e}this._checkMasterCheckboxState(),this._changeDetectorRef.markForCheck()},e.prototype.registerOnChange=function(e){this._onChange=e},e.prototype.registerOnTouched=function(e){this._onTouched=e},e.prototype.setDisabledState=function(e){this._disabled=e},e.prototype._checkMasterCheckboxState=function(){this.items.filter((function(e){return e.checked||!e.disabled})).every((function(e){return!e.checked}))?(this.selectAll=!1,this.selectAllIndeterminate=!1):this.items.filter((function(e){return e.checked||!e.disabled})).every((function(e){return e.checked}))?(this.selectAll=!0,this.selectAllIndeterminate=!1):this.selectAllIndeterminate=!0},e.prototype._getSelectedItems=function(e){var t=this;this.selectedItems=this.items.filter((function(e){return e.checked})),this._compareWith?this.selectedItems=this._originalItems.filter((function(e){return t.selectedItems.find((function(n){return t._compareWith(e,n)}))})):this.selectedItems=this.selectedItems.map((function(e){return e[t.bindValue]})),this._onChange(this.selectedItems),this.change.emit({model:this.selectedItems,index:e})},e.prototype._updateNormalCheckboxState=function(e,t){this._checkMasterCheckboxState(),this._getSelectedItems(t)},e.prototype._updateMasterCheckboxState=function(e,t){this.selectAll=!this.selectAll,this.selectAllIndeterminate=!1,this.selectAll?this.items.filter((function(e){return e.checked||!e.disabled})).forEach((function(e){return e.checked=!0})):this.items.filter((function(e){return e.checked||!e.disabled})).forEach((function(e){return e.checked=!!e.disabled})),this._getSelectedItems(t)},e}();l.decorators=[{type:t.Component,args:[{selector:"mtx-checkbox-group",exportAs:"mtxCheckboxGroup",host:{class:"mtx-checkbox-group"},template:'<mat-checkbox class="mtx-checkbox-master"\n *ngIf="showSelectAll"\n [checked]="selectAll"\n [(indeterminate)]="selectAllIndeterminate"\n [disabled]="disabled"\n (change)="_updateMasterCheckboxState($event, -1);">\n {{selectAllLabel}}\n</mat-checkbox>\n\n<mat-checkbox class="mtx-checkbox-normal"\n *ngFor="let option of items; let i = index;"\n [(ngModel)]="option.checked"\n [aria-describedby]="option.ariaDescribedby"\n [aria-label]="option.ariaLabel"\n [aria-labelledby]="option.ariaLabelledby"\n [color]="option.color"\n [disabled]="option.disabled || disabled"\n [disableRipple]="option.disableRipple"\n [labelPosition]="option.labelPosition"\n [required]="option.required"\n (change)="_updateNormalCheckboxState($event, i)">\n {{option[bindLabel] | toObservable | async}}\n</mat-checkbox>\n',encapsulation:t.ViewEncapsulation.None,changeDetection:t.ChangeDetectionStrategy.OnPush,providers:[{provide:o.NG_VALUE_ACCESSOR,useExisting:t.forwardRef((function(){return l})),multi:!0}],styles:[".mtx-checkbox-group{display:block}.mtx-checkbox-group .mat-checkbox{margin-right:16px}[dir=rtl] .mtx-checkbox-group .mat-checkbox{margin-left:16px;margin-right:auto}"]}]}],l.ctorParameters=function(){return[{type:t.ChangeDetectorRef},{type:c.FocusMonitor},{type:t.ElementRef}]},l.propDecorators={_checkboxes:[{type:t.ContentChildren,args:[t.forwardRef((function(){return i.MatCheckbox})),{descendants:!0}]}],items:[{type:t.Input}],bindLabel:[{type:t.Input}],bindValue:[{type:t.Input}],showSelectAll:[{type:t.Input}],selectAllLabel:[{type:t.Input}],compareWith:[{type:t.Input}],disabled:[{type:t.Input}],change:[{type:t.Output}]};var u=function(){};u.decorators=[{type:t.NgModule,args:[{imports:[n.CommonModule,o.FormsModule,i.MatCheckboxModule,r.MtxUtilsModule],exports:[l],declarations:[l]}]}],e.MtxCheckboxBase=a,e.MtxCheckboxGroupComponent=l,e.MtxCheckboxGroupModule=u,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
2
|
//# sourceMappingURL=mtxCheckboxGroup.umd.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../projects/extensions/checkbox-group/checkbox-group.component.ts","../../../projects/extensions/checkbox-group/checkbox-group.module.ts"],"names":["label","value","this","MtxCheckboxGroupComponent","_changeDetectorRef","_items","_originalItems","bindLabel","bindValue","showSelectAll","selectAllLabel","_disabled","change","EventEmitter","selectAll","selectAllIndeterminate","color","selectedItems","_onChange","_onTouched","Object","defineProperty","prototype","JSON","parse","stringify","map","option","MtxCheckboxBase","_compareWith","fn","Error","coerceBooleanProperty","ngAfterViewInit","_selectValue","_this","correspondingOption","find","compareValue","error","console","warn","checked","writeValue","Array","isArray","forEach","currentValue","_checkMasterCheckboxState","markForCheck","registerOnChange","registerOnTouched","setDisabledState","isDisabled","filter","disabled","every","_getSelectedItems","index","selectedOption","emit","model","_updateNormalCheckboxState","e","_updateMasterCheckboxState","Component","args","selector","exportAs","host","class","template","encapsulation","ViewEncapsulation","None","changeDetection","ChangeDetectionStrategy","OnPush","providers","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","ChangeDetectorRef","ContentChildren","MatCheckbox","descendants","Input","Output","NgModule","imports","CommonModule","FormsModule","MatCheckboxModule","MtxUtilsModule","exports","declarations"],"mappings":"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","sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n forwardRef,\n AfterViewInit,\n ContentChildren,\n QueryList,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MtxCheckboxGroupOption } from './checkbox-group.interface';\n\nexport class MtxCheckboxBase {\n constructor(public label?: any, public value?: any) {}\n}\n\n@Component({\n selector: 'mtx-checkbox-group',\n exportAs: 'mtxCheckboxGroup',\n host: {\n class: 'mtx-checkbox-group',\n },\n templateUrl: './checkbox-group.component.html',\n styleUrls: ['./checkbox-group.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MtxCheckboxGroupComponent),\n multi: true,\n },\n ],\n})\nexport class MtxCheckboxGroupComponent implements AfterViewInit, ControlValueAccessor {\n @ContentChildren(forwardRef(() => MatCheckbox), { descendants: true })\n _checkboxes: QueryList<MatCheckbox>;\n\n @Input()\n get items() {\n return this._items;\n }\n set items(value: any[]) {\n // TODO: Deep clone\n this._originalItems = JSON.parse(JSON.stringify(value));\n this._items = value.map(option => {\n return option instanceof Object ? option : new MtxCheckboxBase(option, option);\n });\n }\n private _items: any[] = [];\n private _originalItems: any[] = [];\n\n @Input() bindLabel = 'label';\n @Input() bindValue = 'value';\n @Input() showSelectAll = false;\n @Input() selectAllLabel = 'Select All';\n @Input()\n get compareWith() {\n return this._compareWith;\n }\n set compareWith(fn: (o1: any, o2: any) => boolean) {\n if (typeof fn !== 'function') {\n throw Error('`compareWith` must be a function.');\n }\n\n if (fn) {\n this._compareWith = fn;\n }\n }\n private _compareWith: (o1: any, o2: any) => boolean;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n @Output() change = new EventEmitter<{ model: MtxCheckboxGroupOption[]; index: number }>();\n\n selectAll = false;\n selectAllIndeterminate = false;\n\n color: ThemePalette = 'accent';\n\n selectedItems: MtxCheckboxGroupOption[] = [];\n\n _onChange: (value: MtxCheckboxGroupOption[]) => void = () => null;\n _onTouched: () => void = () => null;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n ngAfterViewInit() {}\n\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n private _selectValue(value: MtxCheckboxGroupOption) {\n const correspondingOption = (this.items as MtxCheckboxGroupOption[]).find(option => {\n try {\n const compareValue = option[this.bindValue] === value;\n return this._compareWith ? this._compareWith(option, value) : compareValue;\n } catch (error) {\n console.warn(error);\n return false;\n }\n });\n\n if (correspondingOption) {\n correspondingOption.checked = true;\n }\n\n return correspondingOption;\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value New value to be written to the model.\n */\n writeValue(value: any[]): void {\n if (value) {\n if (!Array.isArray(value)) {\n throw Error('Value must be an array.');\n }\n\n value.forEach((currentValue: any) => this._selectValue(currentValue));\n this.selectedItems = value;\n }\n\n this._checkMasterCheckboxState();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: (value: MtxCheckboxGroupOption[]) => {}): void {\n this._onChange = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: () => {}): void {\n this._onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this._disabled = isDisabled;\n }\n\n private _checkMasterCheckboxState() {\n if (\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .every(option => !option.checked)\n ) {\n this.selectAll = false;\n this.selectAllIndeterminate = false;\n } else if (\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .every(option => option.checked)\n ) {\n this.selectAll = true;\n this.selectAllIndeterminate = false;\n } else {\n this.selectAllIndeterminate = true;\n }\n }\n\n private _getSelectedItems(index: number) {\n this.selectedItems = (this.items as MtxCheckboxGroupOption[]).filter(option => option.checked);\n\n if (this._compareWith) {\n this.selectedItems = (this._originalItems as MtxCheckboxGroupOption[]).filter(option =>\n this.selectedItems.find(selectedOption => this._compareWith(option, selectedOption))\n );\n } else {\n this.selectedItems = this.selectedItems.map(option => option[this.bindValue]);\n }\n\n this._onChange(this.selectedItems);\n\n this.change.emit({ model: this.selectedItems, index });\n }\n\n /** Handle normal checkbox toggle */\n _updateNormalCheckboxState(e: MatCheckboxChange, index: number): void {\n this._checkMasterCheckboxState();\n this._getSelectedItems(index);\n }\n\n /** Handle master checkbox toggle */\n _updateMasterCheckboxState(e: MatCheckboxChange, index: number): void {\n this.selectAll = !this.selectAll;\n this.selectAllIndeterminate = false;\n\n if (this.selectAll) {\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .forEach(option => (option.checked = true));\n } else {\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .forEach(option => (option.checked = !!option.disabled));\n }\n\n this._getSelectedItems(index);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\nimport { MtxUtilsModule } from '@ng-matero/extensions/utils';\nimport { MtxCheckboxGroupComponent } from './checkbox-group.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, MatCheckboxModule, MtxUtilsModule],\n exports: [MtxCheckboxGroupComponent],\n declarations: [MtxCheckboxGroupComponent],\n})\nexport class MtxCheckboxGroupModule {}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../projects/extensions/checkbox-group/checkbox-group.component.ts","../../../projects/extensions/checkbox-group/checkbox-group.module.ts"],"names":["label","value","this","MtxCheckboxGroupComponent","_changeDetectorRef","_focusMonitor","_elementRef","_items","_originalItems","bindLabel","bindValue","_showSelectAll","selectAllLabel","_disabled","change","EventEmitter","selectAll","selectAllIndeterminate","selectedItems","_onChange","_onTouched","Object","defineProperty","prototype","JSON","parse","stringify","map","option","MtxCheckboxBase","coerceBooleanProperty","_compareWith","fn","Error","ngAfterViewInit","_this","monitor","subscribe","focusOrigin","Promise","resolve","then","markForCheck","ngOnDestroy","stopMonitoring","_selectValue","correspondingOption","find","compareValue","error","console","warn","checked","writeValue","Array","isArray","forEach","currentValue","_checkMasterCheckboxState","registerOnChange","registerOnTouched","setDisabledState","isDisabled","filter","disabled","every","_getSelectedItems","index","selectedOption","emit","model","_updateNormalCheckboxState","e","_updateMasterCheckboxState","Component","args","selector","exportAs","host","class","template","encapsulation","ViewEncapsulation","None","changeDetection","ChangeDetectionStrategy","OnPush","providers","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","ChangeDetectorRef","FocusMonitor","ElementRef","ContentChildren","MatCheckbox","descendants","Input","Output","NgModule","imports","CommonModule","FormsModule","MatCheckboxModule","MtxUtilsModule","exports","declarations"],"mappings":"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","sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n forwardRef,\n AfterViewInit,\n ContentChildren,\n QueryList,\n ElementRef,\n OnDestroy,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MtxCheckboxGroupOption } from './checkbox-group.interface';\n\nexport class MtxCheckboxBase {\n constructor(public label?: any, public value?: any) {}\n}\n\n@Component({\n selector: 'mtx-checkbox-group',\n exportAs: 'mtxCheckboxGroup',\n host: {\n class: 'mtx-checkbox-group',\n },\n templateUrl: './checkbox-group.component.html',\n styleUrls: ['./checkbox-group.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MtxCheckboxGroupComponent),\n multi: true,\n },\n ],\n})\nexport class MtxCheckboxGroupComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\n @ContentChildren(forwardRef(() => MatCheckbox), { descendants: true })\n _checkboxes: QueryList<MatCheckbox>;\n\n @Input()\n get items() {\n return this._items;\n }\n set items(value: any[]) {\n // TODO: Deep clone\n this._originalItems = JSON.parse(JSON.stringify(value));\n this._items = value.map(option => {\n return option instanceof Object ? option : new MtxCheckboxBase(option, option);\n });\n }\n private _items: any[] = [];\n private _originalItems: any[] = [];\n\n @Input() bindLabel = 'label';\n\n @Input() bindValue = 'value';\n\n @Input()\n get showSelectAll(): boolean {\n return this._showSelectAll;\n }\n set showSelectAll(value: boolean) {\n this._showSelectAll = coerceBooleanProperty(value);\n }\n private _showSelectAll = false;\n\n @Input() selectAllLabel = 'Select All';\n\n @Input()\n get compareWith() {\n return this._compareWith;\n }\n set compareWith(fn: (o1: any, o2: any) => boolean) {\n if (typeof fn !== 'function') {\n throw Error('`compareWith` must be a function.');\n }\n\n if (fn) {\n this._compareWith = fn;\n }\n }\n private _compareWith: (o1: any, o2: any) => boolean;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n @Output() change = new EventEmitter<{ model: MtxCheckboxGroupOption[]; index: number }>();\n\n selectAll = false;\n selectAllIndeterminate = false;\n\n selectedItems: MtxCheckboxGroupOption[] = [];\n\n _onChange: (value: MtxCheckboxGroupOption[]) => void = () => null;\n _onTouched: () => void = () => null;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _focusMonitor: FocusMonitor,\n private _elementRef: ElementRef<HTMLElement>\n ) {}\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true).subscribe(focusOrigin => {\n if (!focusOrigin) {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state change\n // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n });\n }\n });\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n private _selectValue(value: MtxCheckboxGroupOption) {\n const correspondingOption = (this.items as MtxCheckboxGroupOption[]).find(option => {\n try {\n const compareValue = option[this.bindValue] === value;\n return this._compareWith ? this._compareWith(option, value) : compareValue;\n } catch (error) {\n console.warn(error);\n return false;\n }\n });\n\n if (correspondingOption) {\n correspondingOption.checked = true;\n }\n\n return correspondingOption;\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value New value to be written to the model.\n */\n writeValue(value: any[]): void {\n if (value) {\n if (!Array.isArray(value)) {\n throw Error('Value must be an array.');\n }\n\n value.forEach((currentValue: any) => this._selectValue(currentValue));\n this.selectedItems = value;\n }\n\n this._checkMasterCheckboxState();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: (value: MtxCheckboxGroupOption[]) => {}): void {\n this._onChange = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: () => {}): void {\n this._onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this._disabled = isDisabled;\n }\n\n private _checkMasterCheckboxState() {\n if (\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .every(option => !option.checked)\n ) {\n this.selectAll = false;\n this.selectAllIndeterminate = false;\n } else if (\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .every(option => option.checked)\n ) {\n this.selectAll = true;\n this.selectAllIndeterminate = false;\n } else {\n this.selectAllIndeterminate = true;\n }\n }\n\n private _getSelectedItems(index: number) {\n this.selectedItems = (this.items as MtxCheckboxGroupOption[]).filter(option => option.checked);\n\n if (this._compareWith) {\n this.selectedItems = (this._originalItems as MtxCheckboxGroupOption[]).filter(option =>\n this.selectedItems.find(selectedOption => this._compareWith(option, selectedOption))\n );\n } else {\n this.selectedItems = this.selectedItems.map(option => option[this.bindValue]);\n }\n\n this._onChange(this.selectedItems);\n\n this.change.emit({ model: this.selectedItems, index });\n }\n\n /** Handle normal checkbox toggle */\n _updateNormalCheckboxState(e: MatCheckboxChange, index: number): void {\n this._checkMasterCheckboxState();\n this._getSelectedItems(index);\n }\n\n /** Handle master checkbox toggle */\n _updateMasterCheckboxState(e: MatCheckboxChange, index: number): void {\n this.selectAll = !this.selectAll;\n this.selectAllIndeterminate = false;\n\n if (this.selectAll) {\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .forEach(option => (option.checked = true));\n } else {\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .forEach(option => (option.checked = !!option.disabled));\n }\n\n this._getSelectedItems(index);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\nimport { MtxUtilsModule } from '@ng-matero/extensions/utils';\nimport { MtxCheckboxGroupComponent } from './checkbox-group.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, MatCheckboxModule, MtxUtilsModule],\n exports: [MtxCheckboxGroupComponent],\n declarations: [MtxCheckboxGroupComponent],\n})\nexport class MtxCheckboxGroupModule {}\n"]}
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
this._focused = false;
|
|
43
43
|
this._required = false;
|
|
44
44
|
this._disabled = false;
|
|
45
|
+
this._readonly = false;
|
|
45
46
|
this.errorState = false;
|
|
46
47
|
/**
|
|
47
48
|
* A name for this control that can be used by `mat-form-field`.
|
|
@@ -228,6 +229,24 @@
|
|
|
228
229
|
enumerable: false,
|
|
229
230
|
configurable: true
|
|
230
231
|
});
|
|
232
|
+
Object.defineProperty(MtxColorPickerComponent.prototype, "readonly", {
|
|
233
|
+
/**
|
|
234
|
+
* Whether the element is readonly.
|
|
235
|
+
* @return {?}
|
|
236
|
+
*/
|
|
237
|
+
get: function () {
|
|
238
|
+
return this._readonly;
|
|
239
|
+
},
|
|
240
|
+
/**
|
|
241
|
+
* @param {?} value
|
|
242
|
+
* @return {?}
|
|
243
|
+
*/
|
|
244
|
+
set: function (value) {
|
|
245
|
+
this._readonly = coercion.coerceBooleanProperty(value);
|
|
246
|
+
},
|
|
247
|
+
enumerable: false,
|
|
248
|
+
configurable: true
|
|
249
|
+
});
|
|
231
250
|
/**
|
|
232
251
|
* @return {?}
|
|
233
252
|
*/
|
|
@@ -382,9 +401,7 @@
|
|
|
382
401
|
// If we're in the Shadow DOM, the event target will be the shadow root, so we have to
|
|
383
402
|
// fall back to check the first element in the path of the click event.
|
|
384
403
|
/** @type {?} */
|
|
385
|
-
var clickTarget = ( /** @type {?} */((_this._isInsideShadowRoot && event.composedPath
|
|
386
|
-
? event.composedPath()[0]
|
|
387
|
-
: event.target)));
|
|
404
|
+
var clickTarget = ( /** @type {?} */((_this._isInsideShadowRoot && event.composedPath ? event.composedPath()[0] : event.target)));
|
|
388
405
|
/** @type {?} */
|
|
389
406
|
var formField = _this._formField ? _this._formField._elementRef.nativeElement : null;
|
|
390
407
|
return (clickTarget !== _this._elementRef.nativeElement &&
|
|
@@ -397,7 +414,7 @@
|
|
|
397
414
|
{ type: core.Component, args: [{
|
|
398
415
|
selector: 'mtx-color-picker',
|
|
399
416
|
exportAs: 'mtxColorPicker',
|
|
400
|
-
template: "<input matInput\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (focus)=\"_handleFocus()\"\n autocomplete=\"off\">\n\n<div #colorPickerTrigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"colorPickerPopover\"\n (menuOpened)=\"_openPanel()\"\n (menuClosed)=\"_closePanel()\">\n</div>\n\n<mat-menu #colorPickerPopover=\"matMenu\" class=\"mtx-color-picker-panel\" [hasBackdrop]=\"false\">\n <div class=\"mtx-color-picker\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\">\n <color-chrome [color]=\"value\" (onChangeComplete)=\"_onColorChanged($event)\"></color-chrome>\n </div>\n</mat-menu>\n",
|
|
417
|
+
template: "<input matInput\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (focus)=\"_handleFocus()\"\n autocomplete=\"off\">\n\n<div #colorPickerTrigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"colorPickerPopover\"\n (menuOpened)=\"_openPanel()\"\n (menuClosed)=\"_closePanel()\">\n</div>\n\n<mat-menu #colorPickerPopover=\"matMenu\" class=\"mtx-color-picker-panel\" [hasBackdrop]=\"false\">\n <div class=\"mtx-color-picker\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\">\n <color-chrome [color]=\"value\" (onChangeComplete)=\"_onColorChanged($event)\"></color-chrome>\n </div>\n</mat-menu>\n",
|
|
401
418
|
encapsulation: core.ViewEncapsulation.None,
|
|
402
419
|
changeDetection: core.ChangeDetectionStrategy.OnPush,
|
|
403
420
|
providers: [{ provide: formField.MatFormFieldControl, useExisting: MtxColorPickerComponent }],
|
|
@@ -420,6 +437,7 @@
|
|
|
420
437
|
placeholder: [{ type: core.Input }],
|
|
421
438
|
required: [{ type: core.Input }],
|
|
422
439
|
disabled: [{ type: core.Input }],
|
|
440
|
+
readonly: [{ type: core.Input }],
|
|
423
441
|
colorChange: [{ type: core.Output }],
|
|
424
442
|
trigger: [{ type: core.ViewChild, args: [menu.MatMenuTrigger, { static: true },] }]
|
|
425
443
|
};
|
|
@@ -469,6 +487,11 @@
|
|
|
469
487
|
* @private
|
|
470
488
|
*/
|
|
471
489
|
MtxColorPickerComponent.prototype._disabled;
|
|
490
|
+
/**
|
|
491
|
+
* @type {?}
|
|
492
|
+
* @private
|
|
493
|
+
*/
|
|
494
|
+
MtxColorPickerComponent.prototype._readonly;
|
|
472
495
|
/** @type {?} */
|
|
473
496
|
MtxColorPickerComponent.prototype.errorState;
|
|
474
497
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mtxColorPicker.umd.js","sources":["../../../projects/extensions/color-picker/color-picker.component.ts","../../../projects/extensions/color-picker/color-picker.module.ts"],"sourcesContent":["import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnDestroy,\n Optional,\n Self,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n Inject,\n DoCheck,\n ViewChild,\n Host,\n AfterViewInit,\n NgZone,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { _supportsShadowDom } from '@angular/cdk/platform';\nimport { MatFormFieldControl, MatFormField } from '@angular/material/form-field';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { Subject, Observable, merge, fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ColorEvent } from 'ngx-color';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'mtx-color-picker',\n exportAs: 'mtxColorPicker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: MatFormFieldControl, useExisting: MtxColorPickerComponent }],\n})\nexport class MtxColorPickerComponent\n implements OnDestroy, DoCheck, AfterViewInit, ControlValueAccessor, MatFormFieldControl<any> {\n /** Value of the color picker control. */\n @Input()\n get value(): string | null {\n return this._value;\n }\n set value(newValue: string | null) {\n this._value = newValue;\n this._onChange(newValue);\n this.stateChanges.next();\n }\n private _value: string | null = '';\n\n /** Implemented as part of MatFormFieldControl. */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /** Unique id for this input. */\n private _uid = `mtx-color-picker-${nextUniqueId++}`;\n\n /** Unique id of the element. */\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n private _id: string;\n\n /** Placeholder to be shown if value is empty. */\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder: string;\n\n /** Whether the input is focused. */\n get focused(): boolean {\n return this._focused || this._panelOpen;\n }\n private _focused = false;\n\n get empty(): boolean {\n return !this.value;\n }\n\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _required = false;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _disabled = false;\n\n errorState = false;\n\n /** A name for this control that can be used by `mat-form-field`. */\n controlType = 'mtx-color-picker';\n\n /** The aria-describedby attribute on the color picker for improved a11y. */\n _ariaDescribedby: string;\n\n /** `View -> model callback called when value changes` */\n _onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when color picker has been touched` */\n _onTouched = () => {};\n\n /** Event emitted when the color changed */\n @Output() readonly colorChange = new EventEmitter<ColorEvent>();\n\n @ViewChild(MatMenuTrigger, { static: true }) trigger: MatMenuTrigger;\n\n /** Whether or not the overlay panel is open. */\n _panelOpen = false;\n\n /** The subscription for closing actions (some are bound to document). */\n private _closingActionsSubscription: Subscription;\n\n /** Whether the element is inside of a ShadowRoot component. */\n private _isInsideShadowRoot: boolean;\n\n /**\n * Whether the color picker can open the next time it is focused. Used to prevent a focused,\n * closed color picker from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n private _canOpenOnNextFocus = true;\n\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n private _windowBlurHandler = () => {\n // If the user blurred the window while the color picker is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus =\n this._document.activeElement !== this._elementRef.nativeElement || this._panelOpen;\n };\n\n constructor(\n private _focusMonitor: FocusMonitor,\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n private _zone: NgZone,\n @Optional() @Self() public ngControl: NgControl,\n @Optional() @Host() private _formField: MatFormField,\n @Optional() @Inject(DOCUMENT) private _document: any\n ) {\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\n if (this._focused && !origin) {\n this._onTouched();\n }\n this._focused = !!origin;\n this.stateChanges.next();\n });\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngDoCheck(): void {\n if (this.ngControl) {\n this.errorState = (this.ngControl.invalid && this.ngControl.touched) as boolean;\n this.stateChanges.next();\n }\n }\n\n ngAfterViewInit() {\n if (typeof window !== 'undefined') {\n this._zone.runOutsideAngular(() => {\n window.addEventListener('blur', this._windowBlurHandler);\n });\n\n if (_supportsShadowDom()) {\n const element = this._elementRef.nativeElement;\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n\n // We need to take the `ShadowRoot` off of `window`, because the built-in types are\n // incorrect. See https://github.com/Microsoft/TypeScript/issues/27929.\n this._isInsideShadowRoot = rootNode instanceof (window as any).ShadowRoot;\n }\n }\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Implemented as part of MatFormFieldControl. */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.join(' ');\n }\n\n /** Implemented as part of MatFormFieldControl. */\n onContainerClick() {\n this._handleFocus();\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value New value to be written to the model.\n */\n writeValue(value: string | null): void {\n this.value = value || '';\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /** Open panel with input focus event. */\n _handleFocus() {\n this.trigger.openMenu();\n\n this._closingActionsSubscription = merge(this._getOutsideClickStream())\n .pipe()\n .subscribe(event => {\n this.trigger.closeMenu();\n this._closingActionsSubscription.unsubscribe();\n });\n }\n\n /** Opens the overlay panel. */\n _openPanel() {\n if (this._focused) {\n this._panelOpen = true;\n }\n }\n\n /** Closes the overlay panel and focuses the host element. */\n _closePanel() {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._changeDetectorRef.markForCheck();\n this._onTouched();\n }\n }\n\n /** The callback of color changed. */\n _onColorChanged(model: ColorEvent) {\n this.value = model.color.hex;\n this.colorChange.emit(model);\n }\n\n /** Stream of clicks outside of the color picker panel. */\n private _getOutsideClickStream(): Observable<any> {\n return merge(\n fromEvent(this._document, 'click') as Observable<MouseEvent>,\n fromEvent(this._document, 'touchend') as Observable<TouchEvent>\n ).pipe(\n filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = (this._isInsideShadowRoot && event.composedPath\n ? event.composedPath()[0]\n : event.target) as HTMLElement;\n const formField = this._formField ? this._formField._elementRef.nativeElement : null;\n\n return (\n clickTarget !== this._elementRef.nativeElement &&\n (!formField || !formField.contains(clickTarget))\n );\n })\n );\n }\n\n static ngAcceptInputType_required: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { ColorChromeModule } from 'ngx-color/chrome';\n\nimport { MtxColorPickerComponent } from './color-picker.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatMenuModule,\n MatFormFieldModule,\n MatInputModule,\n ColorChromeModule,\n ],\n exports: [MtxColorPickerComponent],\n declarations: [MtxColorPickerComponent],\n})\nexport class MtxColorPickerModule {}\n"],"names":["Subject","EventEmitter","coerceBooleanProperty","_supportsShadowDom","merge","fromEvent","filter","Component","ViewEncapsulation","ChangeDetectionStrategy","MatFormFieldControl","FocusMonitor","ElementRef","ChangeDetectorRef","NgZone","NgControl","Optional","Self","MatFormField","Host","Inject","DOCUMENT","Input","Output","ViewChild","MatMenuTrigger","NgModule","CommonModule","FormsModule","MatMenuModule","MatFormFieldModule","MatInputModule","ColorChromeModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mtxColorPicker.umd.js","sources":["../../../projects/extensions/color-picker/color-picker.component.ts","../../../projects/extensions/color-picker/color-picker.module.ts"],"sourcesContent":["import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnDestroy,\n Optional,\n Self,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n Inject,\n DoCheck,\n ViewChild,\n Host,\n AfterViewInit,\n NgZone,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { _supportsShadowDom } from '@angular/cdk/platform';\nimport { MatFormFieldControl, MatFormField } from '@angular/material/form-field';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { Subject, Observable, merge, fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ColorEvent } from 'ngx-color';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'mtx-color-picker',\n exportAs: 'mtxColorPicker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: MatFormFieldControl, useExisting: MtxColorPickerComponent }],\n})\nexport class MtxColorPickerComponent\n implements OnDestroy, DoCheck, AfterViewInit, ControlValueAccessor, MatFormFieldControl<any>\n{\n /** Value of the color picker control. */\n @Input()\n get value(): string | null {\n return this._value;\n }\n set value(newValue: string | null) {\n this._value = newValue;\n this._onChange(newValue);\n this.stateChanges.next();\n }\n private _value: string | null = '';\n\n /** Implemented as part of MatFormFieldControl. */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /** Unique id for this input. */\n private _uid = `mtx-color-picker-${nextUniqueId++}`;\n\n /** Unique id of the element. */\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n private _id: string;\n\n /** Placeholder to be shown if value is empty. */\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder: string;\n\n /** Whether the input is focused. */\n get focused(): boolean {\n return this._focused || this._panelOpen;\n }\n private _focused = false;\n\n get empty(): boolean {\n return !this.value;\n }\n\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _required = false;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _disabled = false;\n\n /** Whether the element is readonly. */\n @Input()\n get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: boolean) {\n this._readonly = coerceBooleanProperty(value);\n }\n private _readonly = false;\n\n errorState = false;\n\n /** A name for this control that can be used by `mat-form-field`. */\n controlType = 'mtx-color-picker';\n\n /** The aria-describedby attribute on the color picker for improved a11y. */\n _ariaDescribedby: string;\n\n /** `View -> model callback called when value changes` */\n _onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when color picker has been touched` */\n _onTouched = () => {};\n\n /** Event emitted when the color changed */\n @Output() readonly colorChange = new EventEmitter<ColorEvent>();\n\n @ViewChild(MatMenuTrigger, { static: true }) trigger: MatMenuTrigger;\n\n /** Whether or not the overlay panel is open. */\n _panelOpen = false;\n\n /** The subscription for closing actions (some are bound to document). */\n private _closingActionsSubscription: Subscription;\n\n /** Whether the element is inside of a ShadowRoot component. */\n private _isInsideShadowRoot: boolean;\n\n /**\n * Whether the color picker can open the next time it is focused. Used to prevent a focused,\n * closed color picker from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n private _canOpenOnNextFocus = true;\n\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n private _windowBlurHandler = () => {\n // If the user blurred the window while the color picker is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus =\n this._document.activeElement !== this._elementRef.nativeElement || this._panelOpen;\n };\n\n constructor(\n private _focusMonitor: FocusMonitor,\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n private _zone: NgZone,\n @Optional() @Self() public ngControl: NgControl,\n @Optional() @Host() private _formField: MatFormField,\n @Optional() @Inject(DOCUMENT) private _document: any\n ) {\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\n if (this._focused && !origin) {\n this._onTouched();\n }\n this._focused = !!origin;\n this.stateChanges.next();\n });\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngDoCheck(): void {\n if (this.ngControl) {\n this.errorState = (this.ngControl.invalid && this.ngControl.touched) as boolean;\n this.stateChanges.next();\n }\n }\n\n ngAfterViewInit() {\n if (typeof window !== 'undefined') {\n this._zone.runOutsideAngular(() => {\n window.addEventListener('blur', this._windowBlurHandler);\n });\n\n if (_supportsShadowDom()) {\n const element = this._elementRef.nativeElement;\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n\n // We need to take the `ShadowRoot` off of `window`, because the built-in types are\n // incorrect. See https://github.com/Microsoft/TypeScript/issues/27929.\n this._isInsideShadowRoot = rootNode instanceof (window as any).ShadowRoot;\n }\n }\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Implemented as part of MatFormFieldControl. */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.join(' ');\n }\n\n /** Implemented as part of MatFormFieldControl. */\n onContainerClick() {\n this._handleFocus();\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value New value to be written to the model.\n */\n writeValue(value: string | null): void {\n this.value = value || '';\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /** Open panel with input focus event. */\n _handleFocus() {\n this.trigger.openMenu();\n\n this._closingActionsSubscription = merge(this._getOutsideClickStream())\n .pipe()\n .subscribe(event => {\n this.trigger.closeMenu();\n this._closingActionsSubscription.unsubscribe();\n });\n }\n\n /** Opens the overlay panel. */\n _openPanel() {\n if (this._focused) {\n this._panelOpen = true;\n }\n }\n\n /** Closes the overlay panel and focuses the host element. */\n _closePanel() {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._changeDetectorRef.markForCheck();\n this._onTouched();\n }\n }\n\n /** The callback of color changed. */\n _onColorChanged(model: ColorEvent) {\n this.value = model.color.hex;\n this.colorChange.emit(model);\n }\n\n /** Stream of clicks outside of the color picker panel. */\n private _getOutsideClickStream(): Observable<any> {\n return merge(\n fromEvent(this._document, 'click') as Observable<MouseEvent>,\n fromEvent(this._document, 'touchend') as Observable<TouchEvent>\n ).pipe(\n filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = (\n this._isInsideShadowRoot && event.composedPath ? event.composedPath()[0] : event.target\n ) as HTMLElement;\n const formField = this._formField ? this._formField._elementRef.nativeElement : null;\n\n return (\n clickTarget !== this._elementRef.nativeElement &&\n (!formField || !formField.contains(clickTarget))\n );\n })\n );\n }\n\n static ngAcceptInputType_required: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { ColorChromeModule } from 'ngx-color/chrome';\n\nimport { MtxColorPickerComponent } from './color-picker.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatMenuModule,\n MatFormFieldModule,\n MatInputModule,\n ColorChromeModule,\n ],\n exports: [MtxColorPickerComponent],\n declarations: [MtxColorPickerComponent],\n})\nexport class MtxColorPickerModule {}\n"],"names":["Subject","EventEmitter","coerceBooleanProperty","_supportsShadowDom","merge","fromEvent","filter","Component","ViewEncapsulation","ChangeDetectionStrategy","MatFormFieldControl","FocusMonitor","ElementRef","ChangeDetectorRef","NgZone","NgControl","Optional","Self","MatFormField","Host","Inject","DOCUMENT","Input","Output","ViewChild","MatMenuTrigger","NgModule","CommonModule","FormsModule","MatMenuModule","MatFormFieldModule","MatInputModule","ColorChromeModule"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common"),require("@angular/forms"),require("@angular/material/menu"),require("@angular/material/form-field"),require("@angular/material/input"),require("ngx-color/chrome"),require("@angular/cdk/a11y"),require("@angular/cdk/coercion"),require("@angular/cdk/platform"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@ng-matero/extensions/color-picker",["exports","@angular/core","@angular/common","@angular/forms","@angular/material/menu","@angular/material/form-field","@angular/material/input","ngx-color/chrome","@angular/cdk/a11y","@angular/cdk/coercion","@angular/cdk/platform","rxjs","rxjs/operators"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self)["ng-matero"]=e["ng-matero"]||{},e["ng-matero"].extensions=e["ng-matero"].extensions||{},e["ng-matero"].extensions["color-picker"]={}),e.ng.core,e.ng.common,e.ng.forms,e.ng.material.menu,e.ng.material.formField,e.ng.material.input,e["ngx-color-chrome"],e.ng.cdk.a11y,e.ng.cdk.coercion,e.ng.cdk.platform,e.rxjs,e.rxjs.operators)}(this,(function(e,t,o,n,r,i,a,s,
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common"),require("@angular/forms"),require("@angular/material/menu"),require("@angular/material/form-field"),require("@angular/material/input"),require("ngx-color/chrome"),require("@angular/cdk/a11y"),require("@angular/cdk/coercion"),require("@angular/cdk/platform"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@ng-matero/extensions/color-picker",["exports","@angular/core","@angular/common","@angular/forms","@angular/material/menu","@angular/material/form-field","@angular/material/input","ngx-color/chrome","@angular/cdk/a11y","@angular/cdk/coercion","@angular/cdk/platform","rxjs","rxjs/operators"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self)["ng-matero"]=e["ng-matero"]||{},e["ng-matero"].extensions=e["ng-matero"].extensions||{},e["ng-matero"].extensions["color-picker"]={}),e.ng.core,e.ng.common,e.ng.forms,e.ng.material.menu,e.ng.material.formField,e.ng.material.input,e["ngx-color-chrome"],e.ng.cdk.a11y,e.ng.cdk.coercion,e.ng.cdk.platform,e.rxjs,e.rxjs.operators)}(this,(function(e,t,o,n,r,i,a,c,s,l,u,p,d){"use strict";var h=0,g=function(){function e(e,o,n,r,i,a,c){var s=this;this._focusMonitor=e,this._elementRef=o,this._changeDetectorRef=n,this._zone=r,this.ngControl=i,this._formField=a,this._document=c,this._value="",this.stateChanges=new p.Subject,this._uid="mtx-color-picker-"+h++,this._focused=!1,this._required=!1,this._disabled=!1,this._readonly=!1,this.errorState=!1,this.controlType="mtx-color-picker",this._onChange=function(){},this._onTouched=function(){},this.colorChange=new t.EventEmitter,this._panelOpen=!1,this._canOpenOnNextFocus=!0,this._windowBlurHandler=function(){s._canOpenOnNextFocus=s._document.activeElement!==s._elementRef.nativeElement||s._panelOpen},e.monitor(o,!0).subscribe((function(e){s._focused&&!e&&s._onTouched(),s._focused=!!e,s.stateChanges.next()})),null!=this.ngControl&&(this.ngControl.valueAccessor=this)}return Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(e){this._value=e,this._onChange(e),this.stateChanges.next()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"id",{get:function(){return this._id},set:function(e){this._id=e||this._uid,this.stateChanges.next()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"placeholder",{get:function(){return this._placeholder},set:function(e){this._placeholder=e,this.stateChanges.next()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"focused",{get:function(){return this._focused||this._panelOpen},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"empty",{get:function(){return!this.value},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"shouldLabelFloat",{get:function(){return this.focused||!this.empty},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"required",{get:function(){return this._required},set:function(e){this._required=l.coerceBooleanProperty(e),this.stateChanges.next()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{get:function(){return this._disabled},set:function(e){this._disabled=l.coerceBooleanProperty(e),this.stateChanges.next()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"readonly",{get:function(){return this._readonly},set:function(e){this._readonly=l.coerceBooleanProperty(e)},enumerable:!1,configurable:!0}),e.prototype.ngDoCheck=function(){this.ngControl&&(this.errorState=this.ngControl.invalid&&this.ngControl.touched,this.stateChanges.next())},e.prototype.ngAfterViewInit=function(){var e=this;if("undefined"!=typeof window&&(this._zone.runOutsideAngular((function(){window.addEventListener("blur",e._windowBlurHandler)})),u._supportsShadowDom())){var t=this._elementRef.nativeElement,o=t.getRootNode?t.getRootNode():null;this._isInsideShadowRoot=o instanceof window.ShadowRoot}},e.prototype.ngOnDestroy=function(){this.stateChanges.complete(),this._focusMonitor.stopMonitoring(this._elementRef)},e.prototype.setDescribedByIds=function(e){this._ariaDescribedby=e.join(" ")},e.prototype.onContainerClick=function(){this._handleFocus()},e.prototype.writeValue=function(e){this.value=e||"",this._changeDetectorRef.markForCheck()},e.prototype.registerOnChange=function(e){this._onChange=e},e.prototype.registerOnTouched=function(e){this._onTouched=e},e.prototype.setDisabledState=function(e){this.disabled=e},e.prototype._handleFocus=function(){var e=this;this.trigger.openMenu(),this._closingActionsSubscription=p.merge(this._getOutsideClickStream()).pipe().subscribe((function(t){e.trigger.closeMenu(),e._closingActionsSubscription.unsubscribe()}))},e.prototype._openPanel=function(){this._focused&&(this._panelOpen=!0)},e.prototype._closePanel=function(){this._panelOpen&&(this._panelOpen=!1,this._changeDetectorRef.markForCheck(),this._onTouched())},e.prototype._onColorChanged=function(e){this.value=e.color.hex,this.colorChange.emit(e)},e.prototype._getOutsideClickStream=function(){var e=this;return p.merge(p.fromEvent(this._document,"click"),p.fromEvent(this._document,"touchend")).pipe(d.filter((function(t){var o=e._isInsideShadowRoot&&t.composedPath?t.composedPath()[0]:t.target,n=e._formField?e._formField._elementRef.nativeElement:null;return!(o===e._elementRef.nativeElement||n&&n.contains(o))})))},e}();g.decorators=[{type:t.Component,args:[{selector:"mtx-color-picker",exportAs:"mtxColorPicker",template:'<input matInput\n [(ngModel)]="value"\n [placeholder]="placeholder"\n [disabled]="disabled"\n [readonly]="readonly"\n (focus)="_handleFocus()"\n autocomplete="off">\n\n<div #colorPickerTrigger="matMenuTrigger"\n [matMenuTriggerFor]="colorPickerPopover"\n (menuOpened)="_openPanel()"\n (menuClosed)="_closePanel()">\n</div>\n\n<mat-menu #colorPickerPopover="matMenu" class="mtx-color-picker-panel" [hasBackdrop]="false">\n <div class="mtx-color-picker"\n (click)="$event.stopPropagation()"\n (keydown)="$event.stopPropagation()">\n <color-chrome [color]="value" (onChangeComplete)="_onColorChanged($event)"></color-chrome>\n </div>\n</mat-menu>\n',encapsulation:t.ViewEncapsulation.None,changeDetection:t.ChangeDetectionStrategy.OnPush,providers:[{provide:i.MatFormFieldControl,useExisting:g}],styles:[".mtx-color-picker-panel .mat-menu-content:not(:empty){padding:0}.mtx-color-picker-panel .mtx-color-picker{padding:8px}.mtx-color-picker-panel .mtx-color-picker .chrome-picker{border-radius:0;box-shadow:none}.mtx-color-picker-panel .mtx-color-picker .chrome-picker .saturation{border-radius:0}"]}]}],g.ctorParameters=function(){return[{type:s.FocusMonitor},{type:t.ElementRef},{type:t.ChangeDetectorRef},{type:t.NgZone},{type:n.NgControl,decorators:[{type:t.Optional},{type:t.Self}]},{type:i.MatFormField,decorators:[{type:t.Optional},{type:t.Host}]},{type:void 0,decorators:[{type:t.Optional},{type:t.Inject,args:[o.DOCUMENT]}]}]},g.propDecorators={value:[{type:t.Input}],id:[{type:t.Input}],placeholder:[{type:t.Input}],required:[{type:t.Input}],disabled:[{type:t.Input}],readonly:[{type:t.Input}],colorChange:[{type:t.Output}],trigger:[{type:t.ViewChild,args:[r.MatMenuTrigger,{static:!0}]}]};var m=function(){};m.decorators=[{type:t.NgModule,args:[{imports:[o.CommonModule,n.FormsModule,r.MatMenuModule,i.MatFormFieldModule,a.MatInputModule,c.ColorChromeModule],exports:[g],declarations:[g]}]}],e.MtxColorPickerComponent=g,e.MtxColorPickerModule=m,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
2
|
//# sourceMappingURL=mtxColorPicker.umd.min.js.map
|