@ng-matero/extensions 12.9.2 → 12.10.1
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/mtxColorpicker.umd.js +18 -11
- package/bundles/mtxColorpicker.umd.js.map +1 -1
- package/bundles/mtxCore.umd.js.map +1 -1
- package/bundles/mtxDatetimepicker.umd.js +27 -15
- package/bundles/mtxDatetimepicker.umd.js.map +1 -1
- package/bundles/mtxGrid.umd.js +24 -21
- package/bundles/mtxGrid.umd.js.map +1 -1
- package/bundles/mtxPopover.umd.js +997 -803
- package/bundles/mtxPopover.umd.js.map +1 -1
- package/bundles/mtxSelect.umd.js +237 -156
- package/bundles/mtxSelect.umd.js.map +1 -1
- package/colorpicker/colorpicker-toggle.d.ts +5 -3
- package/colorpicker/mtxColorpicker.metadata.json +1 -1
- package/core/datetime/datetime-formats.d.ts +2 -0
- package/datetimepicker/datetimepicker-toggle.d.ts +2 -2
- package/datetimepicker/mtxDatetimepicker.metadata.json +1 -1
- package/esm2015/colorpicker/colorpicker-toggle.js +23 -16
- package/esm2015/core/datetime/datetime-formats.js +1 -1
- package/esm2015/datetimepicker/datetimepicker-input.js +6 -1
- package/esm2015/datetimepicker/datetimepicker-toggle.js +19 -14
- package/esm2015/datetimepicker/datetimepicker.js +6 -4
- package/esm2015/grid/cell.component.js +7 -4
- package/esm2015/grid/column-menu.component.js +10 -14
- package/esm2015/grid/grid.component.js +10 -6
- package/esm2015/popover/popover-animations.js +10 -13
- package/esm2015/popover/popover-content.js +99 -0
- package/esm2015/popover/popover-interfaces.js +1 -1
- package/esm2015/popover/popover-module.js +7 -5
- package/esm2015/popover/popover-target.js +3 -3
- package/esm2015/popover/popover-trigger.js +210 -172
- package/esm2015/popover/popover-types.js +1 -1
- package/esm2015/popover/popover.js +173 -125
- package/esm2015/popover/public-api.js +2 -1
- package/esm2015/select/option.component.js +4 -6
- package/esm2015/select/select.component.js +111 -31
- package/fesm2015/mtxColorpicker.js +19 -12
- package/fesm2015/mtxColorpicker.js.map +1 -1
- package/fesm2015/mtxCore.js.map +1 -1
- package/fesm2015/mtxDatetimepicker.js +28 -16
- package/fesm2015/mtxDatetimepicker.js.map +1 -1
- package/fesm2015/mtxGrid.js +24 -21
- package/fesm2015/mtxGrid.js.map +1 -1
- package/fesm2015/mtxPopover.js +526 -351
- package/fesm2015/mtxPopover.js.map +1 -1
- package/fesm2015/mtxSelect.js +169 -92
- package/fesm2015/mtxSelect.js.map +1 -1
- package/grid/cell.component.d.ts +4 -2
- package/grid/column-menu.component.d.ts +3 -5
- package/grid/grid.component.d.ts +6 -4
- package/grid/mtxGrid.metadata.json +1 -1
- package/package.json +1 -1
- package/popover/mtxPopover.metadata.json +1 -1
- package/popover/popover-animations.d.ts +1 -1
- package/popover/popover-content.d.ts +38 -0
- package/popover/popover-interfaces.d.ts +37 -31
- package/popover/popover-target.d.ts +2 -2
- package/popover/popover-trigger.d.ts +65 -60
- package/popover/popover-types.d.ts +6 -1
- package/popover/popover.d.ts +97 -69
- package/popover/popover.scss +2 -0
- package/popover/public-api.d.ts +1 -0
- package/select/mtxSelect.metadata.json +1 -1
- package/select/option.component.d.ts +7 -6
- package/select/select.component.d.ts +59 -20
package/fesm2015/mtxSelect.js
CHANGED
|
@@ -1,13 +1,76 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Component, ChangeDetectionStrategy, ElementRef, Input, Directive, TemplateRef, EventEmitter, ViewEncapsulation, ChangeDetectorRef, Optional, Self, Inject, ViewChild, ContentChild, ContentChildren, Output, NgModule } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { NgControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
3
|
+
import { NgForm, FormGroupDirective, NgControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { NgSelectModule } from '@ng-select/ng-select';
|
|
5
|
-
import { MatFormFieldControl } from '@angular/material/form-field';
|
|
6
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
7
5
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
6
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
7
|
+
import { mixinErrorState, ErrorStateMatcher } from '@angular/material/core';
|
|
8
|
+
import { MatFormFieldControl, MatFormField, MAT_FORM_FIELD } from '@angular/material/form-field';
|
|
8
9
|
import { Subject, merge } from 'rxjs';
|
|
9
10
|
import { takeUntil, startWith } from 'rxjs/operators';
|
|
10
11
|
|
|
12
|
+
class MtxOptionComponent {
|
|
13
|
+
constructor(elementRef) {
|
|
14
|
+
this.elementRef = elementRef;
|
|
15
|
+
this._disabled = false;
|
|
16
|
+
this.stateChange$ = new Subject();
|
|
17
|
+
}
|
|
18
|
+
get disabled() {
|
|
19
|
+
return this._disabled;
|
|
20
|
+
}
|
|
21
|
+
set disabled(value) {
|
|
22
|
+
this._disabled = coerceBooleanProperty(value);
|
|
23
|
+
}
|
|
24
|
+
get label() {
|
|
25
|
+
return (this.elementRef.nativeElement.textContent || '').trim();
|
|
26
|
+
}
|
|
27
|
+
ngOnChanges(changes) {
|
|
28
|
+
if (changes.disabled) {
|
|
29
|
+
this.stateChange$.next({
|
|
30
|
+
value: this.value,
|
|
31
|
+
disabled: this._disabled,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
ngAfterViewChecked() {
|
|
36
|
+
if (this.label !== this._previousLabel) {
|
|
37
|
+
this._previousLabel = this.label;
|
|
38
|
+
this.stateChange$.next({
|
|
39
|
+
value: this.value,
|
|
40
|
+
disabled: this._disabled,
|
|
41
|
+
label: this.elementRef.nativeElement.innerHTML,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
ngOnDestroy() {
|
|
46
|
+
this.stateChange$.complete();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
|
|
50
|
+
MtxOptionComponent.decorators = [
|
|
51
|
+
{ type: Component, args: [{
|
|
52
|
+
selector: 'mtx-option',
|
|
53
|
+
exportAs: 'mtxOption',
|
|
54
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
55
|
+
template: `<ng-content></ng-content>`
|
|
56
|
+
},] }
|
|
57
|
+
];
|
|
58
|
+
/**
|
|
59
|
+
* @type {function(): !Array<(null|{
|
|
60
|
+
* type: ?,
|
|
61
|
+
* decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>),
|
|
62
|
+
* })>}
|
|
63
|
+
* @nocollapse
|
|
64
|
+
*/
|
|
65
|
+
MtxOptionComponent.ctorParameters = () => [
|
|
66
|
+
{ type: ElementRef }
|
|
67
|
+
];
|
|
68
|
+
/** @type {!Object<string, !Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
|
|
69
|
+
MtxOptionComponent.propDecorators = {
|
|
70
|
+
value: [{ type: Input }],
|
|
71
|
+
disabled: [{ type: Input }]
|
|
72
|
+
};
|
|
73
|
+
|
|
11
74
|
class MtxSelectOptionTemplateDirective {
|
|
12
75
|
constructor(template) {
|
|
13
76
|
this.template = template;
|
|
@@ -218,82 +281,36 @@ MtxSelectLoadingSpinnerTemplateDirective.ctorParameters = () => [
|
|
|
218
281
|
{ type: TemplateRef }
|
|
219
282
|
];
|
|
220
283
|
|
|
221
|
-
class MtxOptionComponent {
|
|
222
|
-
constructor(elementRef) {
|
|
223
|
-
this.elementRef = elementRef;
|
|
224
|
-
this.stateChange$ = new Subject();
|
|
225
|
-
this._disabled = false;
|
|
226
|
-
}
|
|
227
|
-
get disabled() {
|
|
228
|
-
return this._disabled;
|
|
229
|
-
}
|
|
230
|
-
set disabled(value) {
|
|
231
|
-
this._disabled = this._isDisabled(value);
|
|
232
|
-
}
|
|
233
|
-
get label() {
|
|
234
|
-
return (this.elementRef.nativeElement.textContent || '').trim();
|
|
235
|
-
}
|
|
236
|
-
ngOnChanges(changes) {
|
|
237
|
-
if (changes.disabled) {
|
|
238
|
-
this.stateChange$.next({
|
|
239
|
-
value: this.value,
|
|
240
|
-
disabled: this._disabled,
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
ngAfterViewChecked() {
|
|
245
|
-
if (this.label !== this._previousLabel) {
|
|
246
|
-
this._previousLabel = this.label;
|
|
247
|
-
this.stateChange$.next({
|
|
248
|
-
value: this.value,
|
|
249
|
-
disabled: this._disabled,
|
|
250
|
-
label: this.elementRef.nativeElement.innerHTML,
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
ngOnDestroy() {
|
|
255
|
-
this.stateChange$.complete();
|
|
256
|
-
}
|
|
257
|
-
_isDisabled(value) {
|
|
258
|
-
return value != null && `${value}` !== 'false';
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
|
|
262
|
-
MtxOptionComponent.decorators = [
|
|
263
|
-
{ type: Component, args: [{
|
|
264
|
-
selector: 'mtx-option',
|
|
265
|
-
exportAs: 'mtxOption',
|
|
266
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
267
|
-
template: `<ng-content></ng-content>`
|
|
268
|
-
},] }
|
|
269
|
-
];
|
|
270
|
-
/**
|
|
271
|
-
* @type {function(): !Array<(null|{
|
|
272
|
-
* type: ?,
|
|
273
|
-
* decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>),
|
|
274
|
-
* })>}
|
|
275
|
-
* @nocollapse
|
|
276
|
-
*/
|
|
277
|
-
MtxOptionComponent.ctorParameters = () => [
|
|
278
|
-
{ type: ElementRef }
|
|
279
|
-
];
|
|
280
|
-
/** @type {!Object<string, !Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
|
|
281
|
-
MtxOptionComponent.propDecorators = {
|
|
282
|
-
value: [{ type: Input }],
|
|
283
|
-
disabled: [{ type: Input }]
|
|
284
|
-
};
|
|
285
|
-
|
|
286
|
-
function isDefined(value) {
|
|
287
|
-
return value !== undefined && value !== null;
|
|
288
|
-
}
|
|
289
284
|
let nextUniqueId = 0;
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
285
|
+
// Boilerplate for applying mixins to MtxSelect.
|
|
286
|
+
/** @docs-private */
|
|
287
|
+
const _MtxSelectMixinBase = mixinErrorState(class {
|
|
288
|
+
constructor(_defaultErrorStateMatcher, _parentForm, _parentFormGroup,
|
|
289
|
+
/**
|
|
290
|
+
* Form control bound to the component.
|
|
291
|
+
* Implemented as part of `MatFormFieldControl`.
|
|
292
|
+
* @docs-private
|
|
293
|
+
*/
|
|
294
|
+
ngControl) {
|
|
295
|
+
this._defaultErrorStateMatcher = _defaultErrorStateMatcher;
|
|
296
|
+
this._parentForm = _parentForm;
|
|
297
|
+
this._parentFormGroup = _parentFormGroup;
|
|
295
298
|
this.ngControl = ngControl;
|
|
296
|
-
/**
|
|
299
|
+
/**
|
|
300
|
+
* Emits whenever the component state changes and should cause the parent
|
|
301
|
+
* form-field to update. Implemented as part of `MatFormFieldControl`.
|
|
302
|
+
* @docs-private
|
|
303
|
+
*/
|
|
304
|
+
this.stateChanges = new Subject();
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
class MtxSelectComponent extends _MtxSelectMixinBase {
|
|
308
|
+
constructor(_changeDetectorRef, _elementRef, _focusMonitor, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl, _parentFormField) {
|
|
309
|
+
super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);
|
|
310
|
+
this._changeDetectorRef = _changeDetectorRef;
|
|
311
|
+
this._elementRef = _elementRef;
|
|
312
|
+
this._focusMonitor = _focusMonitor;
|
|
313
|
+
this._parentFormField = _parentFormField;
|
|
297
314
|
this.addTag = false;
|
|
298
315
|
this.addTagText = 'Add item';
|
|
299
316
|
this.appearance = 'underline';
|
|
@@ -335,23 +352,32 @@ class MtxSelectComponent {
|
|
|
335
352
|
this.scroll = new EventEmitter();
|
|
336
353
|
this.scrollToEnd = new EventEmitter();
|
|
337
354
|
this._items = [];
|
|
355
|
+
this._itemsAreUsed = false;
|
|
356
|
+
/** Emits whenever the component is destroyed. */
|
|
338
357
|
this._destroy$ = new Subject();
|
|
339
358
|
this._value = null;
|
|
340
359
|
/** Implemented as part of MatFormFieldControl. */
|
|
341
360
|
this.stateChanges = new Subject();
|
|
342
|
-
/** Unique id for this
|
|
361
|
+
/** Unique id for this select. */
|
|
343
362
|
this._uid = `mtx-select-${nextUniqueId++}`;
|
|
344
363
|
this._focused = false;
|
|
345
364
|
this._required = false;
|
|
346
365
|
this._disabled = false;
|
|
347
|
-
|
|
366
|
+
/** Aria label of the select. */
|
|
367
|
+
this.ariaLabel = '';
|
|
368
|
+
/** Input that can be used to specify the `aria-labelledby` attribute. */
|
|
369
|
+
this.ariaLabelledby = null;
|
|
370
|
+
/** The aria-describedby attribute on the select for improved a11y. */
|
|
371
|
+
this._ariaDescribedby = null;
|
|
348
372
|
/** A name for this control that can be used by `mat-form-field`. */
|
|
349
373
|
this.controlType = 'mtx-select';
|
|
350
374
|
/** `View -> model callback called when value changes` */
|
|
351
375
|
this._onChange = () => { };
|
|
352
376
|
/** `View -> model callback called when select has been touched` */
|
|
353
377
|
this._onTouched = () => { };
|
|
354
|
-
|
|
378
|
+
/** ID for the DOM node containing the select's value. */
|
|
379
|
+
this._valueId = `mtx-select-value-${nextUniqueId++}`;
|
|
380
|
+
_focusMonitor.monitor(this._elementRef, true).subscribe(origin => {
|
|
355
381
|
if (this._focused && !origin) {
|
|
356
382
|
this._onTouched();
|
|
357
383
|
}
|
|
@@ -359,11 +385,17 @@ class MtxSelectComponent {
|
|
|
359
385
|
this.stateChanges.next();
|
|
360
386
|
});
|
|
361
387
|
if (this.ngControl != null) {
|
|
388
|
+
// Note: we provide the value accessor through here, instead of
|
|
389
|
+
// the `providers` to avoid running into a circular import.
|
|
362
390
|
this.ngControl.valueAccessor = this;
|
|
363
391
|
}
|
|
392
|
+
// Force setter to be called in case id was not specified.
|
|
393
|
+
// eslint-disable-next-line no-self-assign
|
|
394
|
+
this.id = this.id;
|
|
364
395
|
}
|
|
365
396
|
get clearSearchOnAdd() {
|
|
366
|
-
|
|
397
|
+
var _a;
|
|
398
|
+
return (_a = this._clearSearchOnAdd) !== null && _a !== void 0 ? _a : this.closeOnSelect;
|
|
367
399
|
}
|
|
368
400
|
set clearSearchOnAdd(value) {
|
|
369
401
|
this._clearSearchOnAdd = value;
|
|
@@ -400,16 +432,22 @@ class MtxSelectComponent {
|
|
|
400
432
|
this._placeholder = value;
|
|
401
433
|
this.stateChanges.next();
|
|
402
434
|
}
|
|
403
|
-
/** Whether the
|
|
435
|
+
/** Whether the select is focused. */
|
|
404
436
|
get focused() {
|
|
405
437
|
return this._focused;
|
|
406
438
|
}
|
|
439
|
+
/** Whether the select has a value. */
|
|
407
440
|
get empty() {
|
|
408
441
|
return this.value == null || (Array.isArray(this.value) && this.value.length === 0);
|
|
409
442
|
}
|
|
443
|
+
/**
|
|
444
|
+
* Implemented as part of MatFormFieldControl.
|
|
445
|
+
* @docs-private
|
|
446
|
+
*/
|
|
410
447
|
get shouldLabelFloat() {
|
|
411
448
|
return this.focused || !this.empty;
|
|
412
449
|
}
|
|
450
|
+
/** Whether the component is required. */
|
|
413
451
|
get required() {
|
|
414
452
|
return this._required;
|
|
415
453
|
}
|
|
@@ -417,6 +455,7 @@ class MtxSelectComponent {
|
|
|
417
455
|
this._required = coerceBooleanProperty(value);
|
|
418
456
|
this.stateChanges.next();
|
|
419
457
|
}
|
|
458
|
+
/** Whether the select is disabled. */
|
|
420
459
|
get disabled() {
|
|
421
460
|
return this._disabled;
|
|
422
461
|
}
|
|
@@ -426,6 +465,10 @@ class MtxSelectComponent {
|
|
|
426
465
|
this.stateChanges.next();
|
|
427
466
|
this._changeDetectorRef.markForCheck();
|
|
428
467
|
}
|
|
468
|
+
/** Whether or not the overlay panel is open. */
|
|
469
|
+
get panelOpen() {
|
|
470
|
+
return !!this.ngSelect.isOpen;
|
|
471
|
+
}
|
|
429
472
|
ngOnInit() {
|
|
430
473
|
// Fix compareWith warning of undefined value
|
|
431
474
|
// https://github.com/ng-select/ng-select/issues/1537
|
|
@@ -440,8 +483,10 @@ class MtxSelectComponent {
|
|
|
440
483
|
}
|
|
441
484
|
ngDoCheck() {
|
|
442
485
|
if (this.ngControl) {
|
|
443
|
-
|
|
444
|
-
|
|
486
|
+
// We need to re-evaluate this on every change detection cycle, because there are some
|
|
487
|
+
// error triggers that we can't subscribe to (e.g. parent form submissions). This means
|
|
488
|
+
// that whatever logic is in here has to be super lean or we risk destroying the performance.
|
|
489
|
+
this.updateErrorState();
|
|
445
490
|
}
|
|
446
491
|
}
|
|
447
492
|
ngOnDestroy() {
|
|
@@ -450,9 +495,22 @@ class MtxSelectComponent {
|
|
|
450
495
|
this.stateChanges.complete();
|
|
451
496
|
this._focusMonitor.stopMonitoring(this._elementRef);
|
|
452
497
|
}
|
|
498
|
+
/** Gets the value for the `aria-labelledby` attribute of the inputs. */
|
|
499
|
+
_getAriaLabelledby() {
|
|
500
|
+
var _a;
|
|
501
|
+
if (this.ariaLabel) {
|
|
502
|
+
return null;
|
|
503
|
+
}
|
|
504
|
+
const labelId = (_a = this._parentFormField) === null || _a === void 0 ? void 0 : _a.getLabelId();
|
|
505
|
+
let value = (labelId ? labelId + ' ' : '') + this._valueId;
|
|
506
|
+
if (this.ariaLabelledby) {
|
|
507
|
+
value += ' ' + this.ariaLabelledby;
|
|
508
|
+
}
|
|
509
|
+
return value;
|
|
510
|
+
}
|
|
453
511
|
/** Implemented as part of MatFormFieldControl. */
|
|
454
512
|
setDescribedByIds(ids) {
|
|
455
|
-
this._ariaDescribedby = ids.join(' ');
|
|
513
|
+
this._ariaDescribedby = ids.length ? ids.join(' ') : null;
|
|
456
514
|
}
|
|
457
515
|
/**
|
|
458
516
|
* Disables the select. Part of the ControlValueAccessor interface required
|
|
@@ -502,7 +560,7 @@ class MtxSelectComponent {
|
|
|
502
560
|
registerOnTouched(fn) {
|
|
503
561
|
this._onTouched = fn;
|
|
504
562
|
}
|
|
505
|
-
/** NgSelect
|
|
563
|
+
/** NgSelect's `_setItemsFromNgOptions` */
|
|
506
564
|
_setItemsFromMtxOptions() {
|
|
507
565
|
const mapMtxOptions = (options) => {
|
|
508
566
|
this.items = options.map(option => ({
|
|
@@ -553,10 +611,22 @@ MtxSelectComponent.decorators = [
|
|
|
553
611
|
selector: 'mtx-select',
|
|
554
612
|
exportAs: 'mtxSelect',
|
|
555
613
|
host: {
|
|
614
|
+
'role': 'combobox',
|
|
615
|
+
'aria-autocomplete': 'none',
|
|
556
616
|
'[attr.id]': 'id',
|
|
617
|
+
'[attr.aria-expanded]': 'panelOpen',
|
|
618
|
+
'[attr.aria-label]': 'ariaLabel || null',
|
|
619
|
+
'[attr.aria-labelledby]': '_getAriaLabelledby()',
|
|
557
620
|
'[attr.aria-describedby]': '_ariaDescribedby || null',
|
|
621
|
+
'[attr.aria-required]': 'required.toString()',
|
|
622
|
+
'[attr.aria-disabled]': 'disabled.toString()',
|
|
623
|
+
'[attr.aria-invalid]': 'errorState',
|
|
558
624
|
'[class.mtx-select-floating]': 'shouldLabelFloat',
|
|
625
|
+
'[class.mtx-select-disabled]': 'disabled',
|
|
559
626
|
'[class.mtx-select-invalid]': 'errorState',
|
|
627
|
+
'[class.mtx-select-required]': 'required',
|
|
628
|
+
'[class.mtx-select-empty]': 'empty',
|
|
629
|
+
'[class.mtx-select-multiple]': 'multiple',
|
|
560
630
|
'class': 'mtx-select',
|
|
561
631
|
},
|
|
562
632
|
template: "<ng-select #ngSelect [class.ng-select-invalid]=\"errorState\"\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder\"\n [items]=\"items\"\n [addTag]=\"addTag\"\n [addTagText]=\"addTagText\"\n [appendTo]=\"appendTo\"\n [appearance]=\"appearance\"\n [bindLabel]=\"bindLabel\"\n [bindValue]=\"bindValue\"\n [closeOnSelect]=\"closeOnSelect\"\n [clearAllText]=\"clearAllText\"\n [clearable]=\"clearable\"\n [clearOnBackspace]=\"clearOnBackspace\"\n [dropdownPosition]=\"dropdownPosition\"\n [groupBy]=\"groupBy\"\n [groupValue]=\"groupValue\"\n [hideSelected]=\"hideSelected\"\n [isOpen]=\"isOpen\"\n [inputAttrs]=\"inputAttrs\"\n [loading]=\"loading\"\n [loadingText]=\"loadingText\"\n [labelForId]=\"labelForId\"\n [markFirst]=\"markFirst\"\n [maxSelectedItems]=\"maxSelectedItems\"\n [multiple]=\"multiple\"\n [notFoundText]=\"notFoundText\"\n [readonly]=\"readonly\"\n [typeahead]=\"typeahead\"\n [typeToSearchText]=\"typeToSearchText\"\n [trackByFn]=\"trackByFn\"\n [searchable]=\"searchable\"\n [searchFn]=\"searchFn\"\n [searchWhileComposing]=\"searchWhileComposing\"\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"selectableGroupAsModel\"\n [selectOnTab]=\"selectOnTab\"\n [tabIndex]=\"tabIndex\"\n [openOnEnter]=\"openOnEnter\"\n [minTermLength]=\"minTermLength\"\n [editableSearchTerm]=\"editableSearchTerm\"\n [keyDownFn]=\"keyDownFn\"\n [virtualScroll]=\"virtualScroll\"\n (blur)=\"blurEvent.emit($event)\"\n (focus)=\"focusEvent.emit($event)\"\n (change)=\"changeEvent.emit($event)\"\n (open)=\"openEvent.emit($event)\"\n (close)=\"closeEvent.emit($event)\"\n (search)=\"searchEvent.emit($event)\"\n (clear)=\"clearEvent.emit($event)\"\n (add)=\"addEvent.emit($event)\"\n (remove)=\"removeEvent.emit($event)\"\n (scroll)=\"scroll.emit($event)\"\n (scrollToEnd)=\"scrollToEnd.emit($event)\">\n\n <ng-container *ngIf=\"optionTemplate\">\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\"\n let-searchTerm=\"searchTerm\">\n <ng-template [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, item$: item$, index: index, searchTerm: searchTerm }\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"optgroupTemplate\">\n <ng-template ng-optgroup-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\"\n let-searchTerm=\"searchTerm\">\n <ng-template [ngTemplateOutlet]=\"optgroupTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, item$: item$, index: index, searchTerm: searchTerm }\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"labelTemplate\">\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\" let-label=\"label\">\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, clear: clear, label: label }\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"multiLabelTemplate\">\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\n <ng-template [ngTemplateOutlet]=\"multiLabelTemplate\"\n [ngTemplateOutletContext]=\"{ items: items, clear: clear }\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"headerTemplate\">\n <ng-template ng-header-tmp>\n <ng-template [ngTemplateOutlet]=\"headerTemplate\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"footerTemplate\">\n <ng-template ng-footer-tmp>\n <ng-template [ngTemplateOutlet]=\"footerTemplate\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"notFoundTemplate\">\n <ng-template ng-notfound-tmp let-searchTerm=\"searchTerm\">\n <ng-template [ngTemplateOutlet]=\"notFoundTemplate\"\n [ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"typeToSearchTemplate\">\n <ng-template ng-typetosearch-tmp>\n <ng-template [ngTemplateOutlet]=\"typeToSearchTemplate\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"loadingTextTemplate\">\n <ng-template ng-loadingtext-tmp let-searchTerm=\"searchTerm\">\n <ng-template [ngTemplateOutlet]=\"loadingTextTemplate\"\n [ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"tagTemplate\">\n <ng-template ng-tag-tmp let-searchTerm=\"searchTerm\">\n <ng-template [ngTemplateOutlet]=\"tagTemplate\"\n [ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"loadingSpinnerTemplate\">\n <ng-template ng-loadingspinner-tmp>\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate\">\n </ng-template>\n </ng-template>\n </ng-container>\n\n</ng-select>\n",
|
|
@@ -574,10 +644,14 @@ MtxSelectComponent.decorators = [
|
|
|
574
644
|
* @nocollapse
|
|
575
645
|
*/
|
|
576
646
|
MtxSelectComponent.ctorParameters = () => [
|
|
577
|
-
{ type: FocusMonitor },
|
|
578
|
-
{ type: ElementRef },
|
|
579
647
|
{ type: ChangeDetectorRef },
|
|
580
|
-
{ type:
|
|
648
|
+
{ type: ElementRef },
|
|
649
|
+
{ type: FocusMonitor },
|
|
650
|
+
{ type: ErrorStateMatcher },
|
|
651
|
+
{ type: NgForm, decorators: [{ type: Optional }] },
|
|
652
|
+
{ type: FormGroupDirective, decorators: [{ type: Optional }] },
|
|
653
|
+
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }] },
|
|
654
|
+
{ type: MatFormField, decorators: [{ type: Optional }, { type: Inject, args: [MAT_FORM_FIELD,] }] }
|
|
581
655
|
];
|
|
582
656
|
/** @type {!Object<string, !Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
|
|
583
657
|
MtxSelectComponent.propDecorators = {
|
|
@@ -651,7 +725,10 @@ MtxSelectComponent.propDecorators = {
|
|
|
651
725
|
id: [{ type: Input }],
|
|
652
726
|
placeholder: [{ type: Input }],
|
|
653
727
|
required: [{ type: Input }],
|
|
654
|
-
disabled: [{ type: Input }]
|
|
728
|
+
disabled: [{ type: Input }],
|
|
729
|
+
errorStateMatcher: [{ type: Input }],
|
|
730
|
+
ariaLabel: [{ type: Input, args: ['aria-label',] }],
|
|
731
|
+
ariaLabelledby: [{ type: Input, args: ['aria-labelledby',] }]
|
|
655
732
|
};
|
|
656
733
|
|
|
657
734
|
class MtxSelectModule {
|
|
@@ -697,5 +774,5 @@ MtxSelectModule.decorators = [
|
|
|
697
774
|
* Generated bundle index. Do not edit.
|
|
698
775
|
*/
|
|
699
776
|
|
|
700
|
-
export { MtxOptionComponent, MtxSelectComponent, MtxSelectFooterTemplateDirective, MtxSelectHeaderTemplateDirective, MtxSelectLabelTemplateDirective, MtxSelectLoadingSpinnerTemplateDirective, MtxSelectLoadingTextTemplateDirective, MtxSelectModule, MtxSelectMultiLabelTemplateDirective, MtxSelectNotFoundTemplateDirective, MtxSelectOptgroupTemplateDirective, MtxSelectOptionTemplateDirective, MtxSelectTagTemplateDirective, MtxSelectTypeToSearchTemplateDirective
|
|
777
|
+
export { MtxOptionComponent, MtxSelectComponent, MtxSelectFooterTemplateDirective, MtxSelectHeaderTemplateDirective, MtxSelectLabelTemplateDirective, MtxSelectLoadingSpinnerTemplateDirective, MtxSelectLoadingTextTemplateDirective, MtxSelectModule, MtxSelectMultiLabelTemplateDirective, MtxSelectNotFoundTemplateDirective, MtxSelectOptgroupTemplateDirective, MtxSelectOptionTemplateDirective, MtxSelectTagTemplateDirective, MtxSelectTypeToSearchTemplateDirective };
|
|
701
778
|
//# sourceMappingURL=mtxSelect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mtxSelect.js","sources":["../../../projects/extensions/select/templates.directive.ts","../../../projects/extensions/select/option.component.ts","../../../projects/extensions/select/select.component.ts","../../../projects/extensions/select/select.module.ts","../../../projects/extensions/select/mtxSelect.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[ng-option-tmp]' })\nexport class MtxSelectOptionTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-optgroup-tmp]' })\nexport class MtxSelectOptgroupTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-label-tmp]' })\nexport class MtxSelectLabelTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-multi-label-tmp]' })\nexport class MtxSelectMultiLabelTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-header-tmp]' })\nexport class MtxSelectHeaderTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-footer-tmp]' })\nexport class MtxSelectFooterTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-notfound-tmp]' })\nexport class MtxSelectNotFoundTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-typetosearch-tmp]' })\nexport class MtxSelectTypeToSearchTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-loadingtext-tmp]' })\nexport class MtxSelectLoadingTextTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-tag-tmp]' })\nexport class MtxSelectTagTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-loadingspinner-tmp]' })\nexport class MtxSelectLoadingSpinnerTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n","import {\n AfterViewChecked,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'mtx-option',\n exportAs: 'mtxOption',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content></ng-content>`,\n})\nexport class MtxOptionComponent implements OnChanges, AfterViewChecked, OnDestroy {\n @Input() value: any;\n @Input()\n get disabled() {\n return this._disabled;\n }\n set disabled(value: any) {\n this._disabled = this._isDisabled(value);\n }\n\n readonly stateChange$ = new Subject<{ value: any; disabled: boolean; label?: string }>();\n\n private _disabled = false;\n private _previousLabel!: string;\n\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n\n get label(): string {\n return (this.elementRef.nativeElement.textContent || '').trim();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.disabled) {\n this.stateChange$.next({\n value: this.value,\n disabled: this._disabled,\n });\n }\n }\n\n ngAfterViewChecked() {\n if (this.label !== this._previousLabel) {\n this._previousLabel = this.label;\n this.stateChange$.next({\n value: this.value,\n disabled: this._disabled,\n label: this.elementRef.nativeElement.innerHTML,\n });\n }\n }\n\n ngOnDestroy() {\n this.stateChange$.complete();\n }\n\n private _isDisabled(value: null) {\n return value != null && `${value}` !== 'false';\n }\n}\n","import {\n Component,\n OnInit,\n OnDestroy,\n DoCheck,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n Input,\n ElementRef,\n ChangeDetectorRef,\n Optional,\n Self,\n Output,\n EventEmitter,\n TemplateRef,\n ContentChild,\n ContentChildren,\n QueryList,\n AfterViewInit,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { Subject, merge } from 'rxjs';\nimport { takeUntil, startWith } from 'rxjs/operators';\n\nimport {\n MtxSelectOptionTemplateDirective,\n MtxSelectLabelTemplateDirective,\n MtxSelectHeaderTemplateDirective,\n MtxSelectFooterTemplateDirective,\n MtxSelectOptgroupTemplateDirective,\n MtxSelectNotFoundTemplateDirective,\n MtxSelectTypeToSearchTemplateDirective,\n MtxSelectLoadingTextTemplateDirective,\n MtxSelectMultiLabelTemplateDirective,\n MtxSelectTagTemplateDirective,\n MtxSelectLoadingSpinnerTemplateDirective,\n} from './templates.directive';\nimport { MtxOptionComponent } from './option.component';\nimport { NgSelectComponent } from '@ng-select/ng-select';\n\nexport type DropdownPosition = 'bottom' | 'top' | 'auto';\nexport type AddTagFn = (term: string) => any | Promise<any>;\nexport type CompareWithFn = (a: any, b: any) => boolean;\nexport type GroupValueFn = (\n key: string | Record<string, any>,\n children: any[]\n) => string | Record<string, any>;\nexport type SearchFn = (term: string, item: any) => boolean;\nexport type TrackByFn = (item: any) => any;\n\nexport function isDefined(value: any) {\n return value !== undefined && value !== null;\n}\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'mtx-select',\n exportAs: 'mtxSelect',\n host: {\n '[attr.id]': 'id',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[class.mtx-select-floating]': 'shouldLabelFloat',\n '[class.mtx-select-invalid]': 'errorState',\n 'class': 'mtx-select',\n },\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: MatFormFieldControl, useExisting: MtxSelectComponent }],\n})\nexport class MtxSelectComponent\n implements\n OnInit,\n OnDestroy,\n DoCheck,\n AfterViewInit,\n ControlValueAccessor,\n MatFormFieldControl<any>\n{\n @ViewChild('ngSelect', { static: true }) ngSelect!: NgSelectComponent;\n\n // MtxSelect custom templates\n @ContentChild(MtxSelectOptionTemplateDirective, { read: TemplateRef })\n optionTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectOptgroupTemplateDirective, { read: TemplateRef })\n optgroupTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectLabelTemplateDirective, { read: TemplateRef })\n labelTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectMultiLabelTemplateDirective, { read: TemplateRef })\n multiLabelTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectHeaderTemplateDirective, { read: TemplateRef })\n headerTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectFooterTemplateDirective, { read: TemplateRef })\n footerTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectNotFoundTemplateDirective, { read: TemplateRef })\n notFoundTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectTypeToSearchTemplateDirective, { read: TemplateRef })\n typeToSearchTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectLoadingTextTemplateDirective, { read: TemplateRef })\n loadingTextTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectTagTemplateDirective, { read: TemplateRef })\n tagTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectLoadingSpinnerTemplateDirective, { read: TemplateRef })\n loadingSpinnerTemplate!: TemplateRef<any>;\n\n @ContentChildren(MtxOptionComponent, { descendants: true })\n mtxOptions!: QueryList<MtxOptionComponent>;\n\n /** MtxSelect options */\n @Input() addTag: boolean | AddTagFn = false;\n @Input() addTagText = 'Add item';\n @Input() appearance = 'underline';\n @Input() appendTo!: string;\n @Input() bindLabel!: string;\n @Input() bindValue!: string;\n @Input() closeOnSelect = true;\n @Input() clearAllText = 'Clear all';\n @Input() clearable = true;\n @Input() clearOnBackspace = true;\n @Input() compareWith!: CompareWithFn;\n @Input() dropdownPosition: DropdownPosition = 'auto';\n @Input() groupBy!: string | (() => void);\n @Input() groupValue!: GroupValueFn;\n @Input() selectableGroup = false;\n @Input() selectableGroupAsModel = true;\n @Input() hideSelected = false;\n @Input() isOpen!: boolean;\n @Input() loading = false;\n @Input() loadingText = 'Loading...';\n @Input() labelForId: string | null = null;\n @Input() markFirst = true;\n @Input() maxSelectedItems!: number;\n @Input() multiple = false;\n @Input() notFoundText = 'No items found';\n @Input() searchable = true;\n @Input() readonly = false;\n @Input() searchFn: SearchFn | null = null;\n @Input() searchWhileComposing = true;\n @Input() selectOnTab = false;\n @Input() trackByFn: TrackByFn | null = null;\n @Input() inputAttrs: { [key: string]: string } = {};\n @Input() tabIndex!: number;\n @Input() openOnEnter!: boolean;\n @Input() minTermLength = 0;\n @Input() editableSearchTerm = false;\n @Input() keyDownFn = (_: KeyboardEvent) => true;\n @Input() virtualScroll = false;\n @Input() typeToSearchText = 'Type to search';\n @Input() typeahead!: Subject<string>;\n\n @Output('blur') blurEvent = new EventEmitter();\n @Output('focus') focusEvent = new EventEmitter();\n @Output('change') changeEvent = new EventEmitter();\n @Output('open') openEvent = new EventEmitter();\n @Output('close') closeEvent = new EventEmitter();\n @Output('search') searchEvent = new EventEmitter<{ term: string; items: any[] }>();\n @Output('clear') clearEvent = new EventEmitter();\n @Output('add') addEvent = new EventEmitter();\n @Output('remove') removeEvent = new EventEmitter();\n @Output('scroll') scroll = new EventEmitter<{ start: number; end: number }>();\n @Output('scrollToEnd') scrollToEnd = new EventEmitter();\n\n @Input()\n get clearSearchOnAdd() {\n return isDefined(this._clearSearchOnAdd) ? this._clearSearchOnAdd : this.closeOnSelect;\n }\n set clearSearchOnAdd(value) {\n this._clearSearchOnAdd = value;\n }\n private _clearSearchOnAdd!: boolean;\n\n @Input()\n get items() {\n return this._items;\n }\n set items(value: any[]) {\n this._itemsAreUsed = true;\n this._items = value;\n }\n private _items: any[] = [];\n private _itemsAreUsed!: boolean;\n private readonly _destroy$ = new Subject<void>();\n\n /** Value of the select control. */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(newValue: any) {\n this._value = newValue;\n this._onChange(newValue);\n this.stateChanges.next();\n }\n private _value = null;\n\n /** Implemented as part of MatFormFieldControl. */\n readonly stateChanges: Subject<void> = new Subject<void>();\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 /** Unique id for this input. */\n private _uid = `mtx-select-${nextUniqueId++}`;\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;\n }\n private _focused = false;\n\n get empty(): boolean {\n return this.value == null || (Array.isArray(this.value) && this.value.length === 0);\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.readonly = this._disabled;\n this.stateChanges.next();\n this._changeDetectorRef.markForCheck();\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-select';\n\n /** The aria-describedby attribute on the select 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 select has been touched` */\n _onTouched = () => {};\n\n constructor(\n private _focusMonitor: FocusMonitor,\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Self() public ngControl: NgControl\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 ngOnInit() {\n // Fix compareWith warning of undefined value\n // https://github.com/ng-select/ng-select/issues/1537\n if (this.compareWith) {\n this.ngSelect.compareWith = this.compareWith;\n }\n }\n\n ngAfterViewInit() {\n if (!this._itemsAreUsed) {\n this._setItemsFromMtxOptions();\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 ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\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 /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /** Implemented as part of MatFormFieldControl. */\n onContainerClick(event: MouseEvent) {\n const target = event.target as HTMLElement;\n if (/mat-form-field|mtx-select/g.test(target.parentElement?.classList[0] || '')) {\n this.focus();\n this.open();\n }\n }\n\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value: any): void {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /** NgSelect: _setItemsFromNgOptions */\n private _setItemsFromMtxOptions() {\n const mapMtxOptions = (options: QueryList<MtxOptionComponent>) => {\n this.items = options.map(option => ({\n $ngOptionValue: option.value,\n $ngOptionLabel: option.elementRef.nativeElement.innerHTML,\n disabled: option.disabled,\n }));\n this.ngSelect.itemsList.setItems(this.items);\n if (this.ngSelect.hasValue) {\n this.ngSelect.itemsList.mapSelectedItems();\n }\n this.ngSelect.detectChanges();\n };\n\n const handleOptionChange = () => {\n const changedOrDestroyed = merge(this.mtxOptions.changes, this._destroy$);\n merge(...this.mtxOptions.map(option => option.stateChange$))\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe(option => {\n const item = this.ngSelect.itemsList.findItem(option.value);\n item.disabled = option.disabled;\n item.label = option.label || item.label;\n this.ngSelect.detectChanges();\n });\n };\n\n this.mtxOptions.changes\n .pipe(startWith(this.mtxOptions), takeUntil(this._destroy$))\n .subscribe(options => {\n mapMtxOptions(options);\n handleOptionChange();\n });\n }\n\n open() {\n this.ngSelect.open();\n }\n\n close() {\n this.ngSelect.close();\n }\n\n focus() {\n this.ngSelect.focus();\n }\n\n blur() {\n this.ngSelect.blur();\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, ReactiveFormsModule } from '@angular/forms';\n\nimport { NgSelectModule } from '@ng-select/ng-select';\n\nimport { MtxSelectComponent } from './select.component';\nimport {\n MtxSelectFooterTemplateDirective,\n MtxSelectHeaderTemplateDirective,\n MtxSelectLabelTemplateDirective,\n MtxSelectLoadingSpinnerTemplateDirective,\n MtxSelectLoadingTextTemplateDirective,\n MtxSelectMultiLabelTemplateDirective,\n MtxSelectNotFoundTemplateDirective,\n MtxSelectOptgroupTemplateDirective,\n MtxSelectOptionTemplateDirective,\n MtxSelectTagTemplateDirective,\n MtxSelectTypeToSearchTemplateDirective,\n} from './templates.directive';\nimport { MtxOptionComponent } from './option.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule, NgSelectModule],\n exports: [\n MtxSelectComponent,\n MtxOptionComponent,\n MtxSelectOptgroupTemplateDirective,\n MtxSelectOptionTemplateDirective,\n MtxSelectLabelTemplateDirective,\n MtxSelectMultiLabelTemplateDirective,\n MtxSelectHeaderTemplateDirective,\n MtxSelectFooterTemplateDirective,\n MtxSelectNotFoundTemplateDirective,\n MtxSelectTypeToSearchTemplateDirective,\n MtxSelectLoadingTextTemplateDirective,\n MtxSelectTagTemplateDirective,\n MtxSelectLoadingSpinnerTemplateDirective,\n ],\n declarations: [\n MtxSelectComponent,\n MtxOptionComponent,\n MtxSelectOptgroupTemplateDirective,\n MtxSelectOptionTemplateDirective,\n MtxSelectLabelTemplateDirective,\n MtxSelectMultiLabelTemplateDirective,\n MtxSelectHeaderTemplateDirective,\n MtxSelectFooterTemplateDirective,\n MtxSelectNotFoundTemplateDirective,\n MtxSelectTypeToSearchTemplateDirective,\n MtxSelectLoadingTextTemplateDirective,\n MtxSelectTagTemplateDirective,\n MtxSelectLoadingSpinnerTemplateDirective,\n ],\n})\nexport class MtxSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mtxSelect.js","sources":["../../../projects/extensions/select/option.component.ts","../../../projects/extensions/select/templates.directive.ts","../../../projects/extensions/select/select.component.ts","../../../projects/extensions/select/select.module.ts","../../../projects/extensions/select/mtxSelect.ts"],"sourcesContent":["import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'mtx-option',\n exportAs: 'mtxOption',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content></ng-content>`,\n})\nexport class MtxOptionComponent implements OnChanges, AfterViewChecked, OnDestroy {\n @Input() value: any;\n\n @Input()\n get disabled() {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n get label() {\n return (this.elementRef.nativeElement.textContent || '').trim();\n }\n private _previousLabel?: string;\n\n readonly stateChange$ = new Subject<{\n value: any;\n disabled: boolean;\n label?: string;\n }>();\n\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.disabled) {\n this.stateChange$.next({\n value: this.value,\n disabled: this._disabled,\n });\n }\n }\n\n ngAfterViewChecked() {\n if (this.label !== this._previousLabel) {\n this._previousLabel = this.label;\n this.stateChange$.next({\n value: this.value,\n disabled: this._disabled,\n label: this.elementRef.nativeElement.innerHTML,\n });\n }\n }\n\n ngOnDestroy() {\n this.stateChange$.complete();\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[ng-option-tmp]' })\nexport class MtxSelectOptionTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-optgroup-tmp]' })\nexport class MtxSelectOptgroupTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-label-tmp]' })\nexport class MtxSelectLabelTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-multi-label-tmp]' })\nexport class MtxSelectMultiLabelTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-header-tmp]' })\nexport class MtxSelectHeaderTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-footer-tmp]' })\nexport class MtxSelectFooterTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-notfound-tmp]' })\nexport class MtxSelectNotFoundTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-typetosearch-tmp]' })\nexport class MtxSelectTypeToSearchTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-loadingtext-tmp]' })\nexport class MtxSelectLoadingTextTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-tag-tmp]' })\nexport class MtxSelectTagTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({ selector: '[ng-loadingspinner-tmp]' })\nexport class MtxSelectLoadingSpinnerTemplateDirective {\n constructor(public template: TemplateRef<any>) { }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Self,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ErrorStateMatcher, mixinErrorState } from '@angular/material/core';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { MatFormField, MatFormFieldControl, MAT_FORM_FIELD } from '@angular/material/form-field';\nimport { merge, Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport { NgSelectComponent } from '@ng-select/ng-select';\nimport { MtxOptionComponent } from './option.component';\nimport {\n MtxSelectFooterTemplateDirective,\n MtxSelectHeaderTemplateDirective,\n MtxSelectLabelTemplateDirective,\n MtxSelectLoadingSpinnerTemplateDirective,\n MtxSelectLoadingTextTemplateDirective,\n MtxSelectMultiLabelTemplateDirective,\n MtxSelectNotFoundTemplateDirective,\n MtxSelectOptgroupTemplateDirective,\n MtxSelectOptionTemplateDirective,\n MtxSelectTagTemplateDirective,\n MtxSelectTypeToSearchTemplateDirective,\n} from './templates.directive';\n\nexport type DropdownPosition = 'bottom' | 'top' | 'auto';\nexport type AddTagFn = (term: string) => any | Promise<any>;\nexport type CompareWithFn = (a: any, b: any) => boolean;\nexport type GroupValueFn = (\n key: string | Record<string, any>,\n children: any[]\n) => string | Record<string, any>;\nexport type SearchFn = (term: string, item: any) => boolean;\nexport type TrackByFn = (item: any) => any;\n\nlet nextUniqueId = 0;\n\n// Boilerplate for applying mixins to MtxSelect.\n/** @docs-private */\nconst _MtxSelectMixinBase = mixinErrorState(\n class {\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n /**\n * Form control bound to the component.\n * Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n public ngControl: NgControl\n ) {}\n }\n);\n\n@Component({\n selector: 'mtx-select',\n exportAs: 'mtxSelect',\n host: {\n 'role': 'combobox',\n 'aria-autocomplete': 'none',\n '[attr.id]': 'id',\n '[attr.aria-expanded]': 'panelOpen',\n '[attr.aria-label]': 'ariaLabel || null',\n '[attr.aria-labelledby]': '_getAriaLabelledby()',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.mtx-select-floating]': 'shouldLabelFloat',\n '[class.mtx-select-disabled]': 'disabled',\n '[class.mtx-select-invalid]': 'errorState',\n '[class.mtx-select-required]': 'required',\n '[class.mtx-select-empty]': 'empty',\n '[class.mtx-select-multiple]': 'multiple',\n 'class': 'mtx-select',\n },\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: MatFormFieldControl, useExisting: MtxSelectComponent }],\n})\nexport class MtxSelectComponent\n extends _MtxSelectMixinBase\n implements\n OnInit,\n OnDestroy,\n DoCheck,\n AfterViewInit,\n ControlValueAccessor,\n MatFormFieldControl<any>\n{\n @ViewChild('ngSelect', { static: true }) ngSelect!: NgSelectComponent;\n\n @ContentChild(MtxSelectOptionTemplateDirective, { read: TemplateRef })\n optionTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectOptgroupTemplateDirective, { read: TemplateRef })\n optgroupTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectLabelTemplateDirective, { read: TemplateRef })\n labelTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectMultiLabelTemplateDirective, { read: TemplateRef })\n multiLabelTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectHeaderTemplateDirective, { read: TemplateRef })\n headerTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectFooterTemplateDirective, { read: TemplateRef })\n footerTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectNotFoundTemplateDirective, { read: TemplateRef })\n notFoundTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectTypeToSearchTemplateDirective, { read: TemplateRef })\n typeToSearchTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectLoadingTextTemplateDirective, { read: TemplateRef })\n loadingTextTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectTagTemplateDirective, { read: TemplateRef })\n tagTemplate!: TemplateRef<any>;\n @ContentChild(MtxSelectLoadingSpinnerTemplateDirective, { read: TemplateRef })\n loadingSpinnerTemplate!: TemplateRef<any>;\n\n @ContentChildren(MtxOptionComponent, { descendants: true })\n mtxOptions!: QueryList<MtxOptionComponent>;\n\n @Input() addTag: boolean | AddTagFn = false;\n @Input() addTagText = 'Add item';\n @Input() appearance = 'underline';\n @Input() appendTo!: string;\n @Input() bindLabel!: string;\n @Input() bindValue!: string;\n @Input() closeOnSelect = true;\n @Input() clearAllText = 'Clear all';\n @Input() clearable = true;\n @Input() clearOnBackspace = true;\n @Input() compareWith!: CompareWithFn;\n @Input() dropdownPosition: DropdownPosition = 'auto';\n @Input() groupBy!: string | (() => void);\n @Input() groupValue!: GroupValueFn;\n @Input() selectableGroup = false;\n @Input() selectableGroupAsModel = true;\n @Input() hideSelected = false;\n @Input() isOpen!: boolean;\n @Input() loading = false;\n @Input() loadingText = 'Loading...';\n @Input() labelForId: string | null = null;\n @Input() markFirst = true;\n @Input() maxSelectedItems!: number;\n @Input() multiple = false;\n @Input() notFoundText = 'No items found';\n @Input() searchable = true;\n @Input() readonly = false;\n @Input() searchFn: SearchFn | null = null;\n @Input() searchWhileComposing = true;\n @Input() selectOnTab = false;\n @Input() trackByFn: TrackByFn | null = null;\n @Input() inputAttrs: { [key: string]: string } = {};\n @Input() tabIndex!: number;\n @Input() openOnEnter!: boolean;\n @Input() minTermLength = 0;\n @Input() editableSearchTerm = false;\n @Input() keyDownFn = (_: KeyboardEvent) => true;\n @Input() virtualScroll = false;\n @Input() typeToSearchText = 'Type to search';\n @Input() typeahead!: Subject<string>;\n\n @Output('blur') blurEvent = new EventEmitter();\n @Output('focus') focusEvent = new EventEmitter();\n @Output('change') changeEvent = new EventEmitter();\n @Output('open') openEvent = new EventEmitter();\n @Output('close') closeEvent = new EventEmitter();\n @Output('search') searchEvent = new EventEmitter<{ term: string; items: any[] }>();\n @Output('clear') clearEvent = new EventEmitter();\n @Output('add') addEvent = new EventEmitter();\n @Output('remove') removeEvent = new EventEmitter();\n @Output('scroll') scroll = new EventEmitter<{ start: number; end: number }>();\n @Output('scrollToEnd') scrollToEnd = new EventEmitter();\n\n @Input()\n get clearSearchOnAdd() {\n return this._clearSearchOnAdd ?? this.closeOnSelect;\n }\n set clearSearchOnAdd(value) {\n this._clearSearchOnAdd = value;\n }\n private _clearSearchOnAdd?: boolean;\n\n @Input()\n get items() {\n return this._items;\n }\n set items(value: any[]) {\n this._itemsAreUsed = true;\n this._items = value;\n }\n private _items: any[] = [];\n private _itemsAreUsed = false;\n\n /** Emits whenever the component is destroyed. */\n private readonly _destroy$ = new Subject<void>();\n\n /** Value of the select control. */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(newValue: any) {\n this._value = newValue;\n this._onChange(newValue);\n this.stateChanges.next();\n }\n private _value = null;\n\n /** Implemented as part of MatFormFieldControl. */\n readonly stateChanges: Subject<void> = new Subject<void>();\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 /** Unique id for this select. */\n private _uid = `mtx-select-${nextUniqueId++}`;\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 select is focused. */\n get focused(): boolean {\n return this._focused;\n }\n private _focused = false;\n\n /** Whether the select has a value. */\n get empty(): boolean {\n return this.value == null || (Array.isArray(this.value) && this.value.length === 0);\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n /** Whether the component is required. */\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 /** Whether the select is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this.readonly = this._disabled;\n this.stateChanges.next();\n this._changeDetectorRef.markForCheck();\n }\n private _disabled = false;\n\n /** Object used to control when error messages are shown. */\n @Input() override errorStateMatcher!: ErrorStateMatcher;\n\n /** Aria label of the select. */\n @Input('aria-label') ariaLabel: string = '';\n\n /** Input that can be used to specify the `aria-labelledby` attribute. */\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n /** The aria-describedby attribute on the select for improved a11y. */\n _ariaDescribedby: string | null = null;\n\n /** A name for this control that can be used by `mat-form-field`. */\n controlType = 'mtx-select';\n\n /** `View -> model callback called when value changes` */\n _onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when select has been touched` */\n _onTouched = () => {};\n\n /** ID for the DOM node containing the select's value. */\n _valueId = `mtx-select-value-${nextUniqueId++}`;\n\n /** Whether or not the overlay panel is open. */\n get panelOpen(): boolean {\n return !!this.ngSelect.isOpen;\n }\n\n constructor(\n protected _changeDetectorRef: ChangeDetectorRef,\n protected _elementRef: ElementRef,\n protected _focusMonitor: FocusMonitor,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @Inject(MAT_FORM_FIELD) private _parentFormField?: MatFormField\n ) {\n super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n\n _focusMonitor.monitor(this._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 // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n // Force setter to be called in case id was not specified.\n // eslint-disable-next-line no-self-assign\n this.id = this.id;\n }\n\n ngOnInit() {\n // Fix compareWith warning of undefined value\n // https://github.com/ng-select/ng-select/issues/1537\n if (this.compareWith) {\n this.ngSelect.compareWith = this.compareWith;\n }\n }\n\n ngAfterViewInit() {\n if (!this._itemsAreUsed) {\n this._setItemsFromMtxOptions();\n }\n }\n\n ngDoCheck(): void {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n this.stateChanges.complete();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Gets the value for the `aria-labelledby` attribute of the inputs. */\n _getAriaLabelledby() {\n if (this.ariaLabel) {\n return null;\n }\n\n const labelId = this._parentFormField?.getLabelId();\n let value = (labelId ? labelId + ' ' : '') + this._valueId;\n\n if (this.ariaLabelledby) {\n value += ' ' + this.ariaLabelledby;\n }\n\n return value;\n }\n\n /** Implemented as part of MatFormFieldControl. */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.length ? ids.join(' ') : null;\n }\n\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /** Implemented as part of MatFormFieldControl. */\n onContainerClick(event: MouseEvent) {\n const target = event.target as HTMLElement;\n if (/mat-form-field|mtx-select/g.test(target.parentElement?.classList[0] || '')) {\n this.focus();\n this.open();\n }\n }\n\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value: any): void {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /** NgSelect's `_setItemsFromNgOptions` */\n private _setItemsFromMtxOptions() {\n const mapMtxOptions = (options: QueryList<MtxOptionComponent>) => {\n this.items = options.map(option => ({\n $ngOptionValue: option.value,\n $ngOptionLabel: option.elementRef.nativeElement.innerHTML,\n disabled: option.disabled,\n }));\n this.ngSelect.itemsList.setItems(this.items);\n if (this.ngSelect.hasValue) {\n this.ngSelect.itemsList.mapSelectedItems();\n }\n this.ngSelect.detectChanges();\n };\n\n const handleOptionChange = () => {\n const changedOrDestroyed = merge(this.mtxOptions.changes, this._destroy$);\n merge(...this.mtxOptions.map(option => option.stateChange$))\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe(option => {\n const item = this.ngSelect.itemsList.findItem(option.value);\n item.disabled = option.disabled;\n item.label = option.label || item.label;\n this.ngSelect.detectChanges();\n });\n };\n\n this.mtxOptions.changes\n .pipe(startWith(this.mtxOptions), takeUntil(this._destroy$))\n .subscribe(options => {\n mapMtxOptions(options);\n handleOptionChange();\n });\n }\n\n open() {\n this.ngSelect.open();\n }\n\n close() {\n this.ngSelect.close();\n }\n\n focus() {\n this.ngSelect.focus();\n }\n\n blur() {\n this.ngSelect.blur();\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, ReactiveFormsModule } from '@angular/forms';\n\nimport { NgSelectModule } from '@ng-select/ng-select';\n\nimport { MtxSelectComponent } from './select.component';\nimport {\n MtxSelectFooterTemplateDirective,\n MtxSelectHeaderTemplateDirective,\n MtxSelectLabelTemplateDirective,\n MtxSelectLoadingSpinnerTemplateDirective,\n MtxSelectLoadingTextTemplateDirective,\n MtxSelectMultiLabelTemplateDirective,\n MtxSelectNotFoundTemplateDirective,\n MtxSelectOptgroupTemplateDirective,\n MtxSelectOptionTemplateDirective,\n MtxSelectTagTemplateDirective,\n MtxSelectTypeToSearchTemplateDirective,\n} from './templates.directive';\nimport { MtxOptionComponent } from './option.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule, NgSelectModule],\n exports: [\n MtxSelectComponent,\n MtxOptionComponent,\n MtxSelectOptgroupTemplateDirective,\n MtxSelectOptionTemplateDirective,\n MtxSelectLabelTemplateDirective,\n MtxSelectMultiLabelTemplateDirective,\n MtxSelectHeaderTemplateDirective,\n MtxSelectFooterTemplateDirective,\n MtxSelectNotFoundTemplateDirective,\n MtxSelectTypeToSearchTemplateDirective,\n MtxSelectLoadingTextTemplateDirective,\n MtxSelectTagTemplateDirective,\n MtxSelectLoadingSpinnerTemplateDirective,\n ],\n declarations: [\n MtxSelectComponent,\n MtxOptionComponent,\n MtxSelectOptgroupTemplateDirective,\n MtxSelectOptionTemplateDirective,\n MtxSelectLabelTemplateDirective,\n MtxSelectMultiLabelTemplateDirective,\n MtxSelectHeaderTemplateDirective,\n MtxSelectFooterTemplateDirective,\n MtxSelectNotFoundTemplateDirective,\n MtxSelectTypeToSearchTemplateDirective,\n MtxSelectLoadingTextTemplateDirective,\n MtxSelectTagTemplateDirective,\n MtxSelectLoadingSpinnerTemplateDirective,\n ],\n})\nexport class MtxSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/grid/cell.component.d.ts
CHANGED
|
@@ -5,13 +5,15 @@ export declare class MtxGridCellComponent {
|
|
|
5
5
|
private _dialog;
|
|
6
6
|
private _dataGridSrv;
|
|
7
7
|
/** Row data */
|
|
8
|
-
rowData:
|
|
8
|
+
rowData: any;
|
|
9
9
|
/** Column definition */
|
|
10
10
|
colDef: MtxGridColumn;
|
|
11
|
-
/**
|
|
11
|
+
/** Table data */
|
|
12
12
|
data: any[];
|
|
13
13
|
/** Whether show summary */
|
|
14
14
|
summary: boolean;
|
|
15
|
+
/** Placeholder for the empty value (`null`, `''`, `[]`) */
|
|
16
|
+
placeholder: string;
|
|
15
17
|
get _colValue(): string;
|
|
16
18
|
_isEmptyValue(value: any): boolean;
|
|
17
19
|
_isContainHTML(value: string): boolean;
|
|
@@ -25,13 +25,11 @@ export declare class MtxGridColumnMenuComponent {
|
|
|
25
25
|
showFooter: boolean;
|
|
26
26
|
footerText: string;
|
|
27
27
|
footerTemplate: TemplateRef<any>;
|
|
28
|
-
|
|
29
|
-
sortChange: EventEmitter<MtxGridColumn[]>;
|
|
30
|
-
pinChange: EventEmitter<MtxGridColumn[]>;
|
|
28
|
+
columnChange: EventEmitter<MtxGridColumn[]>;
|
|
31
29
|
get pinOptions(): MtxGridColumnPinOption[];
|
|
32
30
|
set pinOptions(value: MtxGridColumnPinOption[]);
|
|
33
31
|
private _pinOptions;
|
|
34
|
-
_handleDroped(
|
|
35
|
-
|
|
32
|
+
_handleDroped(e: CdkDragDrop<string[]>): void;
|
|
33
|
+
_handleChecked(e: MatCheckboxChange): void;
|
|
36
34
|
_handlePinSelect(col: MtxGridColumn, val: MtxGridColumnPinValue): void;
|
|
37
35
|
}
|
package/grid/grid.component.d.ts
CHANGED
|
@@ -27,6 +27,8 @@ export declare class MtxGridComponent implements OnChanges, AfterViewInit, OnDes
|
|
|
27
27
|
loading: boolean;
|
|
28
28
|
trackBy: TrackByFunction<any>;
|
|
29
29
|
columnResizable: boolean;
|
|
30
|
+
/** Placeholder for the empty value (`null`, `''`, `[]`) */
|
|
31
|
+
emptyValuePlaceholder: string;
|
|
30
32
|
pageOnFront: boolean;
|
|
31
33
|
showPaginator: boolean;
|
|
32
34
|
pageDisabled: boolean;
|
|
@@ -112,9 +114,9 @@ export declare class MtxGridComponent implements OnChanges, AfterViewInit, OnDes
|
|
|
112
114
|
ngOnDestroy(): void;
|
|
113
115
|
_countPinnedPosition(): void;
|
|
114
116
|
_getIndex(index: number, dataIndex: number): number;
|
|
115
|
-
|
|
117
|
+
_onSortChange(sort: Sort): void;
|
|
116
118
|
/** Expansion change event */
|
|
117
|
-
|
|
119
|
+
_onExpansionChange(expansionRef: MtxGridExpansionToggleDirective, rowData: any, column: any, index: number): void;
|
|
118
120
|
/** Cell select event */
|
|
119
121
|
_selectCell(cellRef: MtxGridCellSelectionDirective, rowData: any, colDef: any): void;
|
|
120
122
|
/** Row select event */
|
|
@@ -126,12 +128,12 @@ export declare class MtxGridComponent implements OnChanges, AfterViewInit, OnDes
|
|
|
126
128
|
/** Select normal row */
|
|
127
129
|
_toggleNormalCheckbox(row: any): void;
|
|
128
130
|
/** Column change event */
|
|
129
|
-
|
|
131
|
+
_onColumnChange(columns: any[]): void;
|
|
130
132
|
getDisplayedColumnFields(columns: MtxGridColumn[]): string[];
|
|
131
133
|
/** Customize expansion event */
|
|
132
134
|
toggleExpansion(index: number): any;
|
|
133
135
|
/** Scroll to top when turn to the next page. */
|
|
134
|
-
|
|
136
|
+
_onPage(e: PageEvent): void;
|
|
135
137
|
scrollTop(value?: number): number | void;
|
|
136
138
|
scrollLeft(value?: number): number | void;
|
|
137
139
|
}
|