@sumaris-net/ngx-components 1.6.6 → 1.6.11
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/sumaris-net.ngx-components.umd.js +130 -116
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/doc/changelog.md +3 -0
- package/esm2015/public_api.js +3 -3
- package/esm2015/src/app/core/auth/form/form-auth.js +2 -2
- package/esm2015/src/app/core/services/model/filter.model.js +1 -1
- package/esm2015/src/app/core/services/model/referential.model.js +1 -1
- package/esm2015/src/app/core/table/table.class.js +8 -8
- package/esm2015/src/app/shared/form/field.component.js +2 -2
- package/esm2015/src/app/shared/material/autocomplete/material.autocomplete.js +25 -22
- package/esm2015/src/app/shared/material/boolean/material.boolean.js +3 -4
- package/esm2015/src/app/shared/material/chips/material.chips.js +21 -9
- package/esm2015/src/app/shared/material/datetime/material.date.js +42 -42
- package/esm2015/src/app/shared/material/datetime/material.dateshort.js +2 -2
- package/esm2015/src/app/shared/material/datetime/material.datetime.js +32 -32
- package/esm2015/src/app/shared/material/duration/material.duration.js +2 -2
- package/fesm2015/sumaris-net.ngx-components.js +128 -114
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +2 -2
- package/src/app/core/services/model/filter.model.d.ts +1 -1
- package/src/app/core/services/model/referential.model.d.ts +3 -3
- package/src/app/core/table/table.class.d.ts +4 -4
- package/src/app/shared/material/boolean/material.boolean.d.ts +0 -1
- package/src/app/shared/material/datetime/material.date.d.ts +6 -6
- package/src/app/shared/material/datetime/material.datetime.d.ts +11 -11
- package/sumaris-net.ngx-components.metadata.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/table'), require('@angular/cdk/a11y'), require('@angular/cdk/overlay'), require('@angular/cdk/scrolling'), require('@angular/material/core'), require('@angular/material/table'), require('@angular/material/sort'), require('@angular/material/paginator'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/checkbox'), require('@angular/material/expansion'), require('@angular/material/toolbar'), require('@angular/material/icon'), require('@angular/material/button'), require('@angular/material/menu'), require('@angular/material/select'), require('@angular/material/card'), require('@angular/material/tabs'), require('@angular/material/stepper'), require('@angular/material/list'), require('@angular/material/button-toggle'), require('@angular/material/progress-spinner'), require('@angular/material/progress-bar'), require('@angular/material/radio'), require('@angular/material/badge'), require('@angular/material/slide-toggle'), require('@angular/material/dialog'), require('@angular/material/autocomplete'), require('@angular/forms'), require('rxjs'), require('rxjs/operators'), require('@ngx-translate/core'), require('@ionic/angular'), require('moment'), require('@angular/material-moment-adapter'), require('@ionic-native/keyboard/ngx'), require('angular2-text-mask'), require('ngx-material-timepicker'), require('@angular/material/datepicker'), require('@angular/animations'), require('@angular/material/divider'), require('@angular/material/tooltip'), require('@angular/material/chips'), require('@angular/router'), require('@angular/platform-browser'), require('@angular/common/http'), require('ngx-color-picker'), require('@ionic-native/native-audio/ngx'), require('@ionic-native/vibration/ngx'), require('@ionic-native/audio-management/ngx'), require('@ionic-native/native-audio/ngx/index'), require('@ionic-native/vibration/ngx/index'), require('@ionic-native/audio-management/ngx/index'), require('uuid/v4'), require('@angular/cdk/drag-drop'), require('ngx-markdown'), require('tweetnacl'), require('@ionic/storage'), require('zone.js/dist/zone-error'), require('@ionic-native/splash-screen/ngx'), require('@ionic-native/network/ngx'), require('ionic-cache'), require('ionic-cache/dist/cache.service'), require('@ionic-native/network/ngx/index'), require('@ionic-native/splash-screen/ngx/index'), require('@ionic-native/status-bar/ngx'), require('@angular/cdk/platform'), require('@ionic-native/in-app-browser/ngx'), require('@apollo/client/core'), require('apollo-angular'), require('@apollo/client/link/ws'), require('@apollo/client/utilities'), require('@apollo/client/link/retry'), require('apollo-link-queue'), require('apollo-link-serialize'), require('apollo-link-logger'), require('apollo-angular/http'), require('apollo3-cache-persist'), require('@ionic-native/downloader/ngx'), require('@ionic-native/status-bar/ngx/index'), require('@ionic-native/keyboard/ngx/index'), require('@ionic-native/in-app-browser/ngx/index'), require('@ionic-native/downloader/ngx/index'), require('@e-is/ngx-material-table'), require('@angular/cdk/collections'), require('ngx-jdenticon'), require('tweetnacl-util'), require('scrypt-async'), require('hammerjs')) :
|
|
3
3
|
typeof define === 'function' && define.amd ? define('@sumaris-net/ngx-components', ['exports', '@angular/core', '@angular/common', '@angular/cdk/table', '@angular/cdk/a11y', '@angular/cdk/overlay', '@angular/cdk/scrolling', '@angular/material/core', '@angular/material/table', '@angular/material/sort', '@angular/material/paginator', '@angular/material/form-field', '@angular/material/input', '@angular/material/checkbox', '@angular/material/expansion', '@angular/material/toolbar', '@angular/material/icon', '@angular/material/button', '@angular/material/menu', '@angular/material/select', '@angular/material/card', '@angular/material/tabs', '@angular/material/stepper', '@angular/material/list', '@angular/material/button-toggle', '@angular/material/progress-spinner', '@angular/material/progress-bar', '@angular/material/radio', '@angular/material/badge', '@angular/material/slide-toggle', '@angular/material/dialog', '@angular/material/autocomplete', '@angular/forms', 'rxjs', 'rxjs/operators', '@ngx-translate/core', '@ionic/angular', 'moment', '@angular/material-moment-adapter', '@ionic-native/keyboard/ngx', 'angular2-text-mask', 'ngx-material-timepicker', '@angular/material/datepicker', '@angular/animations', '@angular/material/divider', '@angular/material/tooltip', '@angular/material/chips', '@angular/router', '@angular/platform-browser', '@angular/common/http', 'ngx-color-picker', '@ionic-native/native-audio/ngx', '@ionic-native/vibration/ngx', '@ionic-native/audio-management/ngx', '@ionic-native/native-audio/ngx/index', '@ionic-native/vibration/ngx/index', '@ionic-native/audio-management/ngx/index', 'uuid/v4', '@angular/cdk/drag-drop', 'ngx-markdown', 'tweetnacl', '@ionic/storage', 'zone.js/dist/zone-error', '@ionic-native/splash-screen/ngx', '@ionic-native/network/ngx', 'ionic-cache', 'ionic-cache/dist/cache.service', '@ionic-native/network/ngx/index', '@ionic-native/splash-screen/ngx/index', '@ionic-native/status-bar/ngx', '@angular/cdk/platform', '@ionic-native/in-app-browser/ngx', '@apollo/client/core', 'apollo-angular', '@apollo/client/link/ws', '@apollo/client/utilities', '@apollo/client/link/retry', 'apollo-link-queue', 'apollo-link-serialize', 'apollo-link-logger', 'apollo-angular/http', 'apollo3-cache-persist', '@ionic-native/downloader/ngx', '@ionic-native/status-bar/ngx/index', '@ionic-native/keyboard/ngx/index', '@ionic-native/in-app-browser/ngx/index', '@ionic-native/downloader/ngx/index', '@e-is/ngx-material-table', '@angular/cdk/collections', 'ngx-jdenticon', 'tweetnacl-util', 'scrypt-async', 'hammerjs'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["sumaris-net"] = global["sumaris-net"] || {}, global["sumaris-net"]["ngx-components"] = {}), global.ng.core, global.ng.common, global.ng.cdk.table, global.ng.cdk.a11y, global.ng.cdk.overlay, global.ng.cdk.scrolling, global.ng.material.core, global.ng.material.table, global.ng.material.sort, global.ng.material.paginator, global.ng.material.formField, global.ng.material.input, global.ng.material.checkbox, global.ng.material.expansion, global.ng.material.toolbar, global.ng.material.icon, global.ng.material.button, global.ng.material.menu, global.ng.material.select, global.ng.material.card, global.ng.material.tabs, global.ng.material.stepper, global.ng.material.list, global.ng.material.buttonToggle, global.ng.material.progressSpinner, global.ng.material.progressBar, global.ng.material.radio, global.ng.material.badge, global.ng.material.slideToggle, global.ng.material.dialog, global.ng.material.autocomplete, global.ng.forms, global.rxjs, global.rxjs.operators, global["ngx-translate"].core, global.ionic.angular, global.moment, global.ng.materialMomentAdapter, global["ionic-native"].keyboard.ngx, global["angular2-text-mask"], global["ngx-material-timepicker"], global.ng.material.datepicker, global.ng.animations, global.ng.material.divider, global.ng.material.tooltip, global.ng.material.chips, global.ng.router, global.ng.platformBrowser, global.ng.common.http, global["ngx-color-picker"], global["ionic-native"]["native-audio"].ngx, global["ionic-native"].vibration.ngx, global["ionic-native"]["audio-management"].ngx, global["ionic-native"]["native-audio"].ngx.index, global["ionic-native"].vibration.ngx.index, global["ionic-native"]["audio-management"].ngx.index, global.uuid.v4, global.ng.cdk.dragDrop, global["ngx-markdown"], global.tweetnacl, global.ionic.storage, null, global["ionic-native"]["splash-screen"].ngx, global["ionic-native"].network.ngx, global["ionic-cache"], global["ionic-cache/dist/cache"].service, global["ionic-native"].network.ngx.index, global["ionic-native"]["splash-screen"].ngx.index, global["ionic-native"]["status-bar"].ngx, global.ng.cdk.platform, global["ionic-native"]["in-app-browser"].ngx, global.apollo.client.core, global["apollo-angular"], global.apollo.client.link.ws, global.apollo.client.utilities, global.apollo.client.link.retry, global["apollo-link-queue"], global["apollo-link-serialize"], global["apollo-link-logger"], global["apollo-angular"].http, global["apollo3-cache-persist"], global.ngx
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["sumaris-net"] = global["sumaris-net"] || {}, global["sumaris-net"]["ngx-components"] = {}), global.ng.core, global.ng.common, global.ng.cdk.table, global.ng.cdk.a11y, global.ng.cdk.overlay, global.ng.cdk.scrolling, global.ng.material.core, global.ng.material.table, global.ng.material.sort, global.ng.material.paginator, global.ng.material.formField, global.ng.material.input, global.ng.material.checkbox, global.ng.material.expansion, global.ng.material.toolbar, global.ng.material.icon, global.ng.material.button, global.ng.material.menu, global.ng.material.select, global.ng.material.card, global.ng.material.tabs, global.ng.material.stepper, global.ng.material.list, global.ng.material.buttonToggle, global.ng.material.progressSpinner, global.ng.material.progressBar, global.ng.material.radio, global.ng.material.badge, global.ng.material.slideToggle, global.ng.material.dialog, global.ng.material.autocomplete, global.ng.forms, global.rxjs, global.rxjs.operators, global["ngx-translate"].core, global.ionic.angular, global.moment, global.ng.materialMomentAdapter, global["ionic-native"].keyboard.ngx, global["angular2-text-mask"], global["ngx-material-timepicker"], global.ng.material.datepicker, global.ng.animations, global.ng.material.divider, global.ng.material.tooltip, global.ng.material.chips, global.ng.router, global.ng.platformBrowser, global.ng.common.http, global["ngx-color-picker"], global["ionic-native"]["native-audio"].ngx, global["ionic-native"].vibration.ngx, global["ionic-native"]["audio-management"].ngx, global["ionic-native"]["native-audio"].ngx.index, global["ionic-native"].vibration.ngx.index, global["ionic-native"]["audio-management"].ngx.index, global.uuid.v4, global.ng.cdk.dragDrop, global["ngx-markdown"], global.tweetnacl, global.ionic.storage, null, global["ionic-native"]["splash-screen"].ngx, global["ionic-native"].network.ngx, global["ionic-cache"], global["ionic-cache/dist/cache"].service, global["ionic-native"].network.ngx.index, global["ionic-native"]["splash-screen"].ngx.index, global["ionic-native"]["status-bar"].ngx, global.ng.cdk.platform, global["ionic-native"]["in-app-browser"].ngx, global.apollo.client.core, global["apollo-angular"], global.apollo.client.link.ws, global.apollo.client.utilities, global.apollo.client.link.retry, global["apollo-link-queue"], global["apollo-link-serialize"], global["apollo-link-logger"], global["apollo-angular"].http, global["apollo3-cache-persist"], global["ionic-native"].downloader.ngx, global["ionic-native"]["status-bar"].ngx.index, global["ionic-native"].keyboard.ngx.index, global["ionic-native"]["in-app-browser"].ngx.index, global["ionic-native"].downloader.ngx.index, global["e-is"]["ngx-material-table"], global.ng.cdk.collections, global["ngx-jdenticon"]));
|
|
5
5
|
})(this, (function (exports, i0, i1$4, table$1, a11y, overlay, scrolling, i1$3, table, sort$1, paginator, formField, input, checkbox, expansion, toolbar, icon, button, menu, select, card, tabs, stepper, list, buttonToggle, progressSpinner, progressBar, radio, badge, slideToggle, i2, autocomplete, i1, rxjs, operators, i1$2, i1$5, momentImported, i1$1, ngx, angular2TextMask, ngxMaterialTimepicker, datepicker, animations, divider, tooltip, chips, i3, i1$6, i2$1, ngxColorPicker, ngx$2, ngx$3, ngx$1, i2$2, i3$1, i4, uuidv4Imported, dragDrop, ngxMarkdown, tweetnacl, i3$2, zoneError, ngx$5, ngx$4, ionicCache, i6, i9, i10, ngx$7, i2$4, ngx$8, core, i2$3, ws, utilities, retry, QueueLink, SerializingLink, loggerLink, i3$3, apollo3CachePersist, ngx$6, i14, i15, i17, i18, ngxMaterialTable, collections, ngxJdenticon) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -1528,9 +1528,10 @@
|
|
|
1528
1528
|
// Filter if not enough character
|
|
1529
1529
|
operators.filter(function (value) { return value.length >= _this.suggestLengthThreshold; }),
|
|
1530
1530
|
// Wait a debounce time
|
|
1531
|
-
operators.debounceTime(this.debounceTime)
|
|
1531
|
+
operators.debounceTime(this.debounceTime)
|
|
1532
1532
|
// DEBUG
|
|
1533
|
-
|
|
1533
|
+
//,tap((value) => this.debug && console.debug(this.logPrefix + ' Search text changes:', value))
|
|
1534
|
+
),
|
|
1534
1535
|
// Object set: use it (no distinctUntilChanged() pipe need)
|
|
1535
1536
|
this.formControl.valueChanges
|
|
1536
1537
|
.pipe(operators.startWith(this.formControl.value), operators.filter(function (value) { return (_this.searchable && isNotNil(value) && typeof value === 'object'); }), operators.tap(function (value) {
|
|
@@ -1546,35 +1547,38 @@
|
|
|
1546
1547
|
_this.matInputText.nativeElement.value = _this.displayValue;
|
|
1547
1548
|
}
|
|
1548
1549
|
}
|
|
1549
|
-
})
|
|
1550
|
+
})
|
|
1550
1551
|
// DEBUG
|
|
1551
|
-
|
|
1552
|
+
//,tap(value => this.debug && console.debug(this.logPrefix + ' Received an object value: ', value))
|
|
1553
|
+
),
|
|
1552
1554
|
// On dropdown button click (no distinctUntilChanged(), nor debounceTime)
|
|
1553
1555
|
this.dropButtonClick
|
|
1554
1556
|
.pipe(operators.filter(function (event) { return _this.searchable && _this.enabled && (!event || !event.defaultPrevented); }), operators.map(function (_) { return _this.showAllOnFocus ? '*' : _this.formControl.value; }),
|
|
1555
|
-
// Make enough characters
|
|
1557
|
+
// Make sure there is enough characters
|
|
1556
1558
|
operators.filter(thresholdFilterFn)),
|
|
1557
1559
|
// Merge some observables, with a common distinctUntilChanged() pipe, and NO debounceTime
|
|
1558
1560
|
rxjs.merge(
|
|
1559
1561
|
// Focus or click => Load all
|
|
1560
1562
|
rxjs.merge(this.focused, this.clicked)
|
|
1561
|
-
.pipe(operators.filter(function (_) { return _this.enabled && _this.searchable; }), operators.map(function (_) { return _this.showAllOnFocus ? '*' : _this.formControl.value; })
|
|
1562
|
-
// DEBUG
|
|
1563
|
-
operators.tap(function (value) { return _this.debug && console.debug(_this.logPrefix + ' Received focused or clicked event: ', value); })), rxjs.merge(this.$inputItems, this._$filter)
|
|
1564
|
-
.pipe(operators.filter(function (_) { return _this.searchable && _this.enabled; }), operators.map(function (_) { return _this.formControl.value; }),
|
|
1563
|
+
.pipe(operators.filter(function (_) { return _this.enabled && _this.searchable; }), operators.map(function (_) { return _this.showAllOnFocus ? '*' : _this.formControl.value; })
|
|
1565
1564
|
// DEBUG
|
|
1566
|
-
|
|
1565
|
+
//,tap(value => this.debug && console.debug(this.logPrefix + ' Received focused or clicked event: ', value))
|
|
1566
|
+
), rxjs.merge(this.$inputItems, this._$filter)
|
|
1567
|
+
.pipe(operators.filter(function (_) { return _this.searchable && _this.enabled; }), operators.map(function (_) { return _this.formControl.value; })))
|
|
1567
1568
|
.pipe(
|
|
1568
1569
|
// Make sure there is enough characters
|
|
1569
1570
|
operators.filter(thresholdFilterFn),
|
|
1570
1571
|
// Distinguish changes
|
|
1571
1572
|
// - do NOT filter if loading, to force update after a blur event
|
|
1572
|
-
operators.distinctUntilChanged(function (v1, v2) { return !_this.loading && (v1 === v2 || _this.equals(v1, v2)); })
|
|
1573
|
+
operators.distinctUntilChanged(function (v1, v2) { return !_this.loading && (v1 === v2 || _this.equals(v1, v2)); })
|
|
1574
|
+
// DEBUG
|
|
1575
|
+
//,tap(value => this.debug && console.debug(this.logPrefix + ' Received update event: ', value))
|
|
1576
|
+
))
|
|
1573
1577
|
.pipe(
|
|
1574
1578
|
// Suggest values
|
|
1575
1579
|
operators.mergeMap(function (value) { return _this.suggest(value, _this.filter); }),
|
|
1576
1580
|
// DEBUG
|
|
1577
|
-
|
|
1581
|
+
//tap(items => this.debug && console.debug(this.logPrefix + ' Received from suggest: ', items)),
|
|
1578
1582
|
// Store implicit value (will use it onBlur if not other value selected)
|
|
1579
1583
|
operators.tap(function (items) { return _this.updateImplicitValue(items); }));
|
|
1580
1584
|
// Fetch more events
|
|
@@ -1607,9 +1611,10 @@
|
|
|
1607
1611
|
this._subscription.add(this.blurred
|
|
1608
1612
|
.pipe(
|
|
1609
1613
|
// Skip if not searchable
|
|
1610
|
-
operators.filter(function (_) { return _this.searchable; }), operators.map(function (_) { return _this.formControl.value; })
|
|
1614
|
+
operators.filter(function (_) { return _this.searchable; }), operators.map(function (_) { return _this.formControl.value; })
|
|
1611
1615
|
// DEBUG
|
|
1612
|
-
|
|
1616
|
+
//,tap(value => this.debug && console.debug(this.logPrefix + ' Received blurred event: ', value)),
|
|
1617
|
+
)
|
|
1613
1618
|
.subscribe(function (value) {
|
|
1614
1619
|
// When leave component without object, use implicit value if :
|
|
1615
1620
|
// - an explicit value
|
|
@@ -1695,7 +1700,7 @@
|
|
|
1695
1700
|
};
|
|
1696
1701
|
MatAutocompleteField.prototype.writeValue = function (value) {
|
|
1697
1702
|
// DEBUG
|
|
1698
|
-
// console.debug(this.logPrefix + ' Writing value: ', value);
|
|
1703
|
+
// if (this.debug) console.debug(this.logPrefix + ' Writing value: ', value);
|
|
1699
1704
|
if (value !== this.formControl.value) {
|
|
1700
1705
|
this.formControl.patchValue(value, { emitEvent: false });
|
|
1701
1706
|
this._onChangeCallback(value);
|
|
@@ -1733,18 +1738,16 @@
|
|
|
1733
1738
|
event.stopPropagation();
|
|
1734
1739
|
event.returnValue = false;
|
|
1735
1740
|
// DEBUG
|
|
1736
|
-
if (this.debug)
|
|
1737
|
-
console.debug(this.logPrefix + ' Cancelling focus event');
|
|
1741
|
+
//if (this.debug) console.debug(this.logPrefix + ' Cancelling focus event');
|
|
1738
1742
|
return false;
|
|
1739
1743
|
}
|
|
1740
|
-
|
|
1741
|
-
|
|
1744
|
+
// DEBUG
|
|
1745
|
+
//if (this.debug) console.debug(this.logPrefix + ' Select input content');
|
|
1742
1746
|
var hasContent = true; // selectInputContent(event);
|
|
1743
1747
|
// If combo is empty, or if has content but should force to show panel on focus
|
|
1744
1748
|
if (!hasContent || this.showPanelOnFocus || this.showAllOnFocus) {
|
|
1745
1749
|
// DEBUG
|
|
1746
|
-
if (this.debug)
|
|
1747
|
-
console.debug(this.logPrefix + ' Emit focus event');
|
|
1750
|
+
//if (this.debug) console.debug(this.logPrefix + ' Emit focus event');
|
|
1748
1751
|
this.focused.emit();
|
|
1749
1752
|
return true;
|
|
1750
1753
|
}
|
|
@@ -5091,7 +5094,7 @@
|
|
|
5091
5094
|
var _this = this;
|
|
5092
5095
|
this.formControl = this.formControl || this.formControlName && this.formGroupDir && this.formGroupDir.form.get(this.formControlName);
|
|
5093
5096
|
if (!this.formControl)
|
|
5094
|
-
throw new Error('Missing mandatory attribute \'formControl\' or \'formControlName\' in <mat-date-
|
|
5097
|
+
throw new Error('Missing mandatory attribute \'formControl\' or \'formControlName\' in <mat-date-field>.');
|
|
5095
5098
|
this.required = toBoolean(this.required, this.formControl.validator === i1.Validators.required);
|
|
5096
5099
|
// Redirect errors from main control, into day sub control
|
|
5097
5100
|
var $error = new rxjs.BehaviorSubject(null);
|
|
@@ -5188,44 +5191,6 @@
|
|
|
5188
5191
|
this.markForCheck();
|
|
5189
5192
|
this._onChangeCallback(dateStr);
|
|
5190
5193
|
};
|
|
5191
|
-
MatDate.prototype.updatePattern = function (pattern) {
|
|
5192
|
-
pattern = pattern !== 'COMMON.DATE_PATTERN' ? pattern : 'L';
|
|
5193
|
-
if (this.displayPattern !== pattern) {
|
|
5194
|
-
this.displayPattern = pattern;
|
|
5195
|
-
this.dayPattern = pattern;
|
|
5196
|
-
this.markForCheck();
|
|
5197
|
-
}
|
|
5198
|
-
};
|
|
5199
|
-
MatDate.prototype.onFormChange = function (dayValue) {
|
|
5200
|
-
if (this.writing)
|
|
5201
|
-
return; // Skip if call by self
|
|
5202
|
-
this.writing = true;
|
|
5203
|
-
// Make to remove placeholder chars
|
|
5204
|
-
while (dayValue && dayValue.indexOf(this.placeholderChar) !== -1) {
|
|
5205
|
-
dayValue = dayValue.replace(this.placeholderChar, '');
|
|
5206
|
-
}
|
|
5207
|
-
var date;
|
|
5208
|
-
// Parse day string
|
|
5209
|
-
date = dayValue && this.dateAdapter.parse(dayValue, this.dayPattern) || null;
|
|
5210
|
-
// Reset time
|
|
5211
|
-
date = date && date.utc(true).hour(0).minute(0).seconds(0).millisecond(0);
|
|
5212
|
-
// update date picker
|
|
5213
|
-
this._value = date && this.dateAdapter.parse(date.clone(), DATE_ISO_PATTERN);
|
|
5214
|
-
// Get the model value
|
|
5215
|
-
var dateStr = date && date.isValid() && this.dateAdapter.format(date, DATE_ISO_PATTERN).replace('+00:00', 'Z') || date;
|
|
5216
|
-
//console.debug("[mat-date-time] Setting date: ", dateStr);
|
|
5217
|
-
this.formControl.patchValue(dateStr, { emitEvent: false });
|
|
5218
|
-
//this.formControl.updateValueAndValidity();
|
|
5219
|
-
this.writing = false;
|
|
5220
|
-
this.markForCheck();
|
|
5221
|
-
this._onChangeCallback(dateStr);
|
|
5222
|
-
};
|
|
5223
|
-
MatDate.prototype.checkIfTouched = function () {
|
|
5224
|
-
if (this.dayControl.touched) {
|
|
5225
|
-
this.markForCheck();
|
|
5226
|
-
this._onTouchedCallback();
|
|
5227
|
-
}
|
|
5228
|
-
};
|
|
5229
5194
|
MatDate.prototype.openDatePickerIfMobile = function (event, datePicker) {
|
|
5230
5195
|
return __awaiter(this, void 0, void 0, function () {
|
|
5231
5196
|
return __generator(this, function (_a) {
|
|
@@ -5275,7 +5240,45 @@
|
|
|
5275
5240
|
}
|
|
5276
5241
|
});
|
|
5277
5242
|
};
|
|
5278
|
-
/* --
|
|
5243
|
+
/* -- private method -- */
|
|
5244
|
+
MatDate.prototype.updatePattern = function (pattern) {
|
|
5245
|
+
pattern = pattern !== 'COMMON.DATE_PATTERN' ? pattern : 'L';
|
|
5246
|
+
if (this.displayPattern !== pattern) {
|
|
5247
|
+
this.displayPattern = pattern;
|
|
5248
|
+
this.dayPattern = pattern;
|
|
5249
|
+
this.markForCheck();
|
|
5250
|
+
}
|
|
5251
|
+
};
|
|
5252
|
+
MatDate.prototype.onFormChange = function (dayValue) {
|
|
5253
|
+
if (this.writing)
|
|
5254
|
+
return; // Skip if call by self
|
|
5255
|
+
this.writing = true;
|
|
5256
|
+
// Make to remove placeholder chars
|
|
5257
|
+
while (dayValue && dayValue.indexOf(this.placeholderChar) !== -1) {
|
|
5258
|
+
dayValue = dayValue.replace(this.placeholderChar, '');
|
|
5259
|
+
}
|
|
5260
|
+
var date;
|
|
5261
|
+
// Parse day string
|
|
5262
|
+
date = dayValue && this.dateAdapter.parse(dayValue, this.dayPattern) || null;
|
|
5263
|
+
// Reset time
|
|
5264
|
+
date = date && date.utc(true).hour(0).minute(0).seconds(0).millisecond(0);
|
|
5265
|
+
// update date picker
|
|
5266
|
+
this._value = date && this.dateAdapter.parse(date.clone(), DATE_ISO_PATTERN);
|
|
5267
|
+
// Get the model value
|
|
5268
|
+
var dateStr = date && date.isValid() && this.dateAdapter.format(date, DATE_ISO_PATTERN).replace('+00:00', 'Z') || date;
|
|
5269
|
+
//console.debug("[mat-date-time] Setting date: ", dateStr);
|
|
5270
|
+
this.formControl.patchValue(dateStr, { emitEvent: false });
|
|
5271
|
+
//this.formControl.updateValueAndValidity();
|
|
5272
|
+
this.writing = false;
|
|
5273
|
+
this.markForCheck();
|
|
5274
|
+
this._onChangeCallback(dateStr);
|
|
5275
|
+
};
|
|
5276
|
+
MatDate.prototype.checkIfTouched = function () {
|
|
5277
|
+
if (this.dayControl.touched) {
|
|
5278
|
+
this.markForCheck();
|
|
5279
|
+
this._onTouchedCallback();
|
|
5280
|
+
}
|
|
5281
|
+
};
|
|
5279
5282
|
MatDate.prototype.waitKeyboardHide = function (waitKeyboardDelay) {
|
|
5280
5283
|
return __awaiter(this, void 0, void 0, function () {
|
|
5281
5284
|
return __generator(this, function (_a) {
|
|
@@ -5367,13 +5370,13 @@
|
|
|
5367
5370
|
};
|
|
5368
5371
|
var ɵ0$8 = noop$5;
|
|
5369
5372
|
var MatDateTime = /** @class */ (function () {
|
|
5370
|
-
function MatDateTime(platform, dateAdapter, translate, formBuilder,
|
|
5373
|
+
function MatDateTime(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
|
|
5371
5374
|
this.platform = platform;
|
|
5372
5375
|
this.dateAdapter = dateAdapter;
|
|
5373
5376
|
this.translate = translate;
|
|
5374
5377
|
this.formBuilder = formBuilder;
|
|
5375
|
-
this.keyboard = keyboard;
|
|
5376
5378
|
this.cd = cd;
|
|
5379
|
+
this.keyboard = keyboard;
|
|
5377
5380
|
this.formGroupDir = formGroupDir;
|
|
5378
5381
|
this._onChangeCallback = noop$5;
|
|
5379
5382
|
this._onTouchedCallback = noop$5;
|
|
@@ -5426,7 +5429,7 @@
|
|
|
5426
5429
|
MatDateTime.prototype.ngOnInit = function () {
|
|
5427
5430
|
var _this = this;
|
|
5428
5431
|
this.mobile = isNil(this.mobile) ? this.platform.is('mobile') : this.mobile;
|
|
5429
|
-
this.
|
|
5432
|
+
this.keyboardHideDelay = this.mobile && KEYBOARD_HIDE_DELAY_MS || 0;
|
|
5430
5433
|
this.formControl = this.formControl || this.formControlName && this.formGroupDir && this.formGroupDir.form.get(this.formControlName);
|
|
5431
5434
|
if (!this.formControl)
|
|
5432
5435
|
throw new Error('Missing mandatory attribute \'formControl\' or \'formControlName\' in <mat-date-time-field>.');
|
|
@@ -5550,10 +5553,6 @@
|
|
|
5550
5553
|
this.disabling = false;
|
|
5551
5554
|
this.markForCheck();
|
|
5552
5555
|
};
|
|
5553
|
-
MatDateTime.prototype.updatePattern = function (patterns) {
|
|
5554
|
-
this.displayPattern = (patterns['COMMON.DATE_TIME_PATTERN'] !== 'COMMON.DATE_TIME_PATTERN' ? patterns['COMMON.DATE_TIME_PATTERN'] : 'L LT');
|
|
5555
|
-
this.dayPattern = (patterns['COMMON.DATE_PATTERN'] !== 'COMMON.DATE_PATTERN' ? patterns['COMMON.DATE_PATTERN'] : 'L');
|
|
5556
|
-
};
|
|
5557
5556
|
MatDateTime.prototype.onDatePickerChange = function (event) {
|
|
5558
5557
|
// Make sure event is valid
|
|
5559
5558
|
if (!event || (event.value !== null && !momentImported.isMoment(event.value))) {
|
|
@@ -5594,7 +5593,7 @@
|
|
|
5594
5593
|
return [2 /*return*/];
|
|
5595
5594
|
this.preventEvent(event);
|
|
5596
5595
|
// Make sure the keyboard is closed
|
|
5597
|
-
return [4 /*yield*/, this.
|
|
5596
|
+
return [4 /*yield*/, this.waitKeyboardHide(false)];
|
|
5598
5597
|
case 1:
|
|
5599
5598
|
// Make sure the keyboard is closed
|
|
5600
5599
|
_a.sent();
|
|
@@ -5624,7 +5623,7 @@
|
|
|
5624
5623
|
return [2 /*return*/];
|
|
5625
5624
|
this.preventEvent(event);
|
|
5626
5625
|
// Make sure the keyboard is closed
|
|
5627
|
-
return [4 /*yield*/, this.
|
|
5626
|
+
return [4 /*yield*/, this.waitKeyboardHide(true)];
|
|
5628
5627
|
case 1:
|
|
5629
5628
|
// Make sure the keyboard is closed
|
|
5630
5629
|
_a.sent();
|
|
@@ -5649,12 +5648,6 @@
|
|
|
5649
5648
|
event.stopPropagation();
|
|
5650
5649
|
event.returnValue = false;
|
|
5651
5650
|
};
|
|
5652
|
-
MatDateTime.prototype.checkIfTouched = function () {
|
|
5653
|
-
if (this.dateFormControl.touched || this.timeFormControl.touched) {
|
|
5654
|
-
this._onTouchedCallback();
|
|
5655
|
-
this.markForCheck();
|
|
5656
|
-
}
|
|
5657
|
-
};
|
|
5658
5651
|
MatDateTime.prototype.focus = function () {
|
|
5659
5652
|
var _this = this;
|
|
5660
5653
|
if (!this.matInputs.length)
|
|
@@ -5671,26 +5664,24 @@
|
|
|
5671
5664
|
this.markAsTouched();
|
|
5672
5665
|
this.markAsDirty();
|
|
5673
5666
|
};
|
|
5674
|
-
/* --
|
|
5675
|
-
MatDateTime.prototype.
|
|
5676
|
-
|
|
5677
|
-
|
|
5678
|
-
|
|
5679
|
-
|
|
5680
|
-
|
|
5681
|
-
|
|
5682
|
-
this.
|
|
5683
|
-
// Check if need to update controls
|
|
5684
|
-
this.checkIfTouched();
|
|
5667
|
+
/* -- private method -- */
|
|
5668
|
+
MatDateTime.prototype.updatePattern = function (patterns) {
|
|
5669
|
+
this.displayPattern = (patterns['COMMON.DATE_TIME_PATTERN'] !== 'COMMON.DATE_TIME_PATTERN' ? patterns['COMMON.DATE_TIME_PATTERN'] : 'L LT');
|
|
5670
|
+
this.dayPattern = (patterns['COMMON.DATE_PATTERN'] !== 'COMMON.DATE_PATTERN' ? patterns['COMMON.DATE_PATTERN'] : 'L');
|
|
5671
|
+
};
|
|
5672
|
+
MatDateTime.prototype.checkIfTouched = function () {
|
|
5673
|
+
if (this.dateFormControl.touched || this.timeFormControl.touched) {
|
|
5674
|
+
this._onTouchedCallback();
|
|
5675
|
+
this.markForCheck();
|
|
5685
5676
|
}
|
|
5686
5677
|
};
|
|
5687
|
-
MatDateTime.prototype.
|
|
5678
|
+
MatDateTime.prototype.waitKeyboardHide = function (waitKeyboardDelay) {
|
|
5688
5679
|
return __awaiter(this, void 0, void 0, function () {
|
|
5689
5680
|
return __generator(this, function (_a) {
|
|
5690
5681
|
switch (_a.label) {
|
|
5691
5682
|
case 0:
|
|
5692
|
-
if (!this.keyboard.isVisible)
|
|
5693
|
-
return [2 /*return*/]; // ok, already hidden
|
|
5683
|
+
if (!this.keyboard || !this.keyboard.isVisible)
|
|
5684
|
+
return [2 /*return*/]; // ok, already hidden (or not accessible)
|
|
5694
5685
|
// Force keyboard to be hide
|
|
5695
5686
|
this.keyboard.hide();
|
|
5696
5687
|
// Wait hide occur
|
|
@@ -5698,8 +5689,8 @@
|
|
|
5698
5689
|
case 1:
|
|
5699
5690
|
// Wait hide occur
|
|
5700
5691
|
_a.sent();
|
|
5701
|
-
if (!(this.
|
|
5702
|
-
return [4 /*yield*/, sleep(this.
|
|
5692
|
+
if (!(this.keyboardHideDelay > 0 && waitKeyboardDelay)) return [3 /*break*/, 3];
|
|
5693
|
+
return [4 /*yield*/, sleep(this.keyboardHideDelay)];
|
|
5703
5694
|
case 2:
|
|
5704
5695
|
_a.sent();
|
|
5705
5696
|
_a.label = 3;
|
|
@@ -5708,6 +5699,18 @@
|
|
|
5708
5699
|
});
|
|
5709
5700
|
});
|
|
5710
5701
|
};
|
|
5702
|
+
MatDateTime.prototype.emitChange = function (value) {
|
|
5703
|
+
// Get the model value
|
|
5704
|
+
var dateStr = toDateISOString(value) || null;
|
|
5705
|
+
if (this.formControl.value !== dateStr) {
|
|
5706
|
+
// DEBUG
|
|
5707
|
+
//console.debug('[matèdate-time] Emit new value: ' + dateStr);
|
|
5708
|
+
// Changes comes from inside function: use the callback
|
|
5709
|
+
this._onChangeCallback(dateStr);
|
|
5710
|
+
// Check if need to update controls
|
|
5711
|
+
this.checkIfTouched();
|
|
5712
|
+
}
|
|
5713
|
+
};
|
|
5711
5714
|
MatDateTime.prototype.updateTabIndex = function () {
|
|
5712
5715
|
var _this = this;
|
|
5713
5716
|
if (isNil(this._tabindex) || this._tabindex === -1)
|
|
@@ -5750,8 +5753,8 @@
|
|
|
5750
5753
|
{ type: i1$3.DateAdapter },
|
|
5751
5754
|
{ type: i1$2.TranslateService },
|
|
5752
5755
|
{ type: i1.FormBuilder },
|
|
5753
|
-
{ type: ngx.Keyboard },
|
|
5754
5756
|
{ type: i0.ChangeDetectorRef },
|
|
5757
|
+
{ type: ngx.Keyboard, decorators: [{ type: i0.Optional }] },
|
|
5755
5758
|
{ type: i1.FormGroupDirective, decorators: [{ type: i0.Optional }] }
|
|
5756
5759
|
]; };
|
|
5757
5760
|
MatDateTime.propDecorators = {
|
|
@@ -5831,7 +5834,7 @@
|
|
|
5831
5834
|
var _this = this;
|
|
5832
5835
|
this.formControl = this.formControl || this.formControlName && this.formGroupDir && this.formGroupDir.form.get(this.formControlName);
|
|
5833
5836
|
if (!this.formControl)
|
|
5834
|
-
throw new Error('Missing mandatory attribute \'formControl\' or \'formControlName\' in <mat-date-
|
|
5837
|
+
throw new Error('Missing mandatory attribute \'formControl\' or \'formControlName\' in <mat-date-short-field>.');
|
|
5835
5838
|
// Redirect errors from main control, into day sub control
|
|
5836
5839
|
var $error = new rxjs.BehaviorSubject(null);
|
|
5837
5840
|
this.required = toBoolean(this.required, this.formControl.validator === i1.Validators.required);
|
|
@@ -6208,7 +6211,7 @@
|
|
|
6208
6211
|
}
|
|
6209
6212
|
this.formControl = this.formControl || this.formControlName && this.formGroupDir && this.formGroupDir.form.get(this.formControlName);
|
|
6210
6213
|
if (!this.formControl)
|
|
6211
|
-
throw new Error('Missing mandatory attribute \'formControl\' or \'formControlName\' in <mat-
|
|
6214
|
+
throw new Error('Missing mandatory attribute \'formControl\' or \'formControlName\' in <mat-duration-field>.');
|
|
6212
6215
|
this.required = toBoolean(this.required, this.formControl.validator === i1.Validators.required);
|
|
6213
6216
|
// Redirect errors from main control, into day sub control
|
|
6214
6217
|
var $error = new rxjs.BehaviorSubject(null);
|
|
@@ -6605,7 +6608,7 @@
|
|
|
6605
6608
|
MatBooleanField.decorators = [
|
|
6606
6609
|
{ type: i0.Component, args: [{
|
|
6607
6610
|
selector: 'mat-boolean-field',
|
|
6608
|
-
template: "<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled {{classList}}\">\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{(formControl.value == null && 'COMMON.EMPTY_OPTION' || (formControl.value === true && yesLabel) || noLabel) | translate }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n\n<ng-template #writable>\n <ng-container [ngSwitch]=\"style\">\n\n <!-- Radio -->\n <mat-form-field *ngSwitchCase=\"'radio'\"\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-radio {{classList}}\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n <span [hidden]=\"showRadio\">({{yesLabel|translate}}/{{'COMMON.NO'|translate}})</span>\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput #fakeInput type=\"text\" readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\"\n [formControl]=\"formControl\"\n (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{yesLabel|translate}}</span>\n </mat-radio-button> \n <mat-radio-button #noButton [value]=\"false\">\n <span>{{noLabel|translate}}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field *ngSwitchCase=\"'checkbox'\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{classList}}\">\n <mat-label *ngIf=\"placeholder && !showRadio\">\n {{placeholder}}\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput #matInput\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <ion-label> </ion-label>\n\n <!-- checkbox, when compact -->\n <mat-checkbox #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value===undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\">\n </mat-checkbox>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field *ngSwitchCase=\"'button'\"\n [floatLabel]=\"floatLabel === 'never' ? 'never' : 'always'\"\n class=\"mat-boolean-field mat-boolean-field-button {{classList}}\">\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput type=\"text\" hidden\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\">\n <div class=\"mat-form-field-buttons\"\n [style.--buttons-col-count]=\"buttonsColCount\"\n *ngIf=\"!formControl.disabled; else disabledLabel\">\n <!-- yes -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === true) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{yesLabel|translate}}\n </ion-button>\n\n <!-- No button -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? (_tabindex + 1) : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === false) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{noLabel|translate}}\n </ion-button>\n </div>\n <ng-template #disabledLabel>\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n </ng-container>\n\n
|
|
6611
|
+
template: "<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled {{classList}}\">\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{(formControl.value == null && 'COMMON.EMPTY_OPTION' || (formControl.value === true && yesLabel) || noLabel) | translate }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n\n<ng-template #writable>\n <ng-container [ngSwitch]=\"style\">\n\n <!-- Radio -->\n <mat-form-field *ngSwitchCase=\"'radio'\"\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-radio {{classList}}\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n <span [hidden]=\"showRadio\">({{yesLabel|translate}}/{{'COMMON.NO'|translate}})</span>\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput #fakeInput type=\"text\" readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\"\n [formControl]=\"formControl\"\n (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{yesLabel|translate}}</span>\n </mat-radio-button> \n <mat-radio-button #noButton [value]=\"false\">\n <span>{{noLabel|translate}}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field *ngSwitchCase=\"'checkbox'\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{classList}}\">\n <mat-label *ngIf=\"placeholder && !showRadio\">\n {{placeholder}}\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput #matInput\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <ion-label> </ion-label>\n\n <!-- checkbox, when compact -->\n <mat-checkbox #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value===undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\">\n </mat-checkbox>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field *ngSwitchCase=\"'button'\"\n [floatLabel]=\"floatLabel === 'never' ? 'never' : 'always'\"\n class=\"mat-boolean-field mat-boolean-field-button {{classList}}\">\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput type=\"text\" hidden\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\">\n <div class=\"mat-form-field-buttons\"\n [style.--buttons-col-count]=\"buttonsColCount\"\n *ngIf=\"!formControl.disabled; else disabledLabel\">\n <!-- yes -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === true) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{yesLabel|translate}}\n </ion-button>\n\n <!-- No button -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? (_tabindex + 1) : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === false) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{noLabel|translate}}\n </ion-button>\n </div>\n <ng-template #disabledLabel>\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n </ng-container>\n\n</ng-template>\n\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n",
|
|
6609
6612
|
providers: [
|
|
6610
6613
|
DEFAULT_VALUE_ACCESSOR$1
|
|
6611
6614
|
],
|
|
@@ -6643,8 +6646,7 @@
|
|
|
6643
6646
|
yesButton: [{ type: i0.ViewChild, args: ['yesButton',] }],
|
|
6644
6647
|
noButton: [{ type: i0.ViewChild, args: ['noButton',] }],
|
|
6645
6648
|
checkboxButton: [{ type: i0.ViewChild, args: ['checkboxButton',] }],
|
|
6646
|
-
fakeInput: [{ type: i0.ViewChild, args: ['fakeInput',] }]
|
|
6647
|
-
suffixDiv: [{ type: i0.ViewChild, args: ['suffix', { static: false },] }]
|
|
6649
|
+
fakeInput: [{ type: i0.ViewChild, args: ['fakeInput',] }]
|
|
6648
6650
|
};
|
|
6649
6651
|
|
|
6650
6652
|
var SharedMatBooleanModule = /** @class */ (function () {
|
|
@@ -7882,7 +7884,7 @@
|
|
|
7882
7884
|
// Wait a debounce time
|
|
7883
7885
|
operators.debounceTime(this.debounceTime)
|
|
7884
7886
|
// DEBUG
|
|
7885
|
-
|
|
7887
|
+
//,tap((value) => this.debug && console.debug(this.logPrefix + ' Search text changes:', value))
|
|
7886
7888
|
),
|
|
7887
7889
|
// Object set: use it (no distinctUntilChanged() pipe need)
|
|
7888
7890
|
this.inputControl.valueChanges
|
|
@@ -7898,18 +7900,25 @@
|
|
|
7898
7900
|
rxjs.merge(
|
|
7899
7901
|
// Focus or click => Load all
|
|
7900
7902
|
rxjs.merge(this.focused, this.clicked)
|
|
7901
|
-
.pipe(operators.filter(function (_) { return _this.enabled; }), operators.map(function (_) { return _this.showAllOnFocus ? '*' : _this.inputControl.value; })
|
|
7903
|
+
.pipe(operators.filter(function (_) { return _this.enabled; }), operators.map(function (_) { return _this.showAllOnFocus ? '*' : _this.inputControl.value; })
|
|
7904
|
+
// DEBUG
|
|
7905
|
+
//,tap(value => this.debug && console.debug(this.logPrefix + ' Received focused or clicked event: ', value))
|
|
7906
|
+
), rxjs.merge(this.$inputItems, this._$filter)
|
|
7902
7907
|
.pipe(operators.filter(function (_) { return _this.enabled; }), operators.map(function (_) { return _this.inputControl.value; })))
|
|
7903
7908
|
.pipe(
|
|
7904
7909
|
// Make sure there is enough characters
|
|
7905
7910
|
operators.filter(thresholdFilterFn),
|
|
7906
7911
|
// Distinguish changes
|
|
7907
|
-
|
|
7912
|
+
// - do NOT filter if loading, to force update after a blur event
|
|
7913
|
+
operators.distinctUntilChanged(function (v1, v2) { return !_this.loading && (v1 === v2 || _this.equals(v1, v2)); })
|
|
7914
|
+
// DEBUG
|
|
7915
|
+
//,tap(value => this.debug && console.debug(this.logPrefix + ' Received update event: ', value))
|
|
7916
|
+
))
|
|
7908
7917
|
.pipe(
|
|
7909
7918
|
// Suggest values
|
|
7910
7919
|
operators.mergeMap(function (value) { return _this.suggest(value, _this.filter); }),
|
|
7911
7920
|
// DEBUG
|
|
7912
|
-
//tap(items => console.debug(this.logPrefix + ' Received from suggest: ', items)),
|
|
7921
|
+
//tap(items => this.debug && console.debug(this.logPrefix + ' Received from suggest: ', items)),
|
|
7913
7922
|
// Store implicit value (will use it onBlur if not other value selected)
|
|
7914
7923
|
operators.tap(function (items) { return _this.updateImplicitValue(items); }));
|
|
7915
7924
|
// Fetch more events
|
|
@@ -7930,7 +7939,10 @@
|
|
|
7930
7939
|
.subscribe(function (items) { return _this.$filteredItems.next(items); }));
|
|
7931
7940
|
// Applying implicit value, on blur
|
|
7932
7941
|
this._subscription.add(this.blurred
|
|
7933
|
-
.pipe(operators.map(function (_) { return _this.formControl.value; })
|
|
7942
|
+
.pipe(operators.map(function (_) { return _this.formControl.value; })
|
|
7943
|
+
// DEBUG
|
|
7944
|
+
//,tap(value => this.debug && console.debug(this.logPrefix + ' Received blurred event: ', value)),
|
|
7945
|
+
)
|
|
7934
7946
|
.subscribe(function (value) {
|
|
7935
7947
|
// When leave component without object, use implicit value if :
|
|
7936
7948
|
// - an explicit value
|
|
@@ -8042,6 +8054,8 @@
|
|
|
8042
8054
|
this._reload$.next(value || '*');
|
|
8043
8055
|
};
|
|
8044
8056
|
MatChipsField.prototype.writeValue = function (value) {
|
|
8057
|
+
// DEBUG
|
|
8058
|
+
// if (this.debug) console.debug(this.logPrefix + ' Writing value: ', value);
|
|
8045
8059
|
if (value && !Array.isArray(value)) {
|
|
8046
8060
|
value = [value];
|
|
8047
8061
|
}
|
|
@@ -8312,9 +8326,9 @@
|
|
|
8312
8326
|
showLoadingSpinner: [{ type: i0.Input }],
|
|
8313
8327
|
chipColor: [{ type: i0.Input }],
|
|
8314
8328
|
debug: [{ type: i0.Input }],
|
|
8315
|
-
clicked: [{ type: i0.Output }],
|
|
8316
|
-
blurred: [{ type: i0.Output }],
|
|
8317
|
-
focused: [{ type: i0.Output }],
|
|
8329
|
+
clicked: [{ type: i0.Output, args: ['click',] }],
|
|
8330
|
+
blurred: [{ type: i0.Output, args: ['blur',] }],
|
|
8331
|
+
focused: [{ type: i0.Output, args: ['focus',] }],
|
|
8318
8332
|
dropButtonClick: [{ type: i0.Output }],
|
|
8319
8333
|
keydownEscape: [{ type: i0.Output, args: ['keydown.escape',] }],
|
|
8320
8334
|
keyupEnter: [{ type: i0.Output, args: ['keyup.enter',] }],
|
|
@@ -9101,7 +9115,7 @@
|
|
|
9101
9115
|
AppFormField.decorators = [
|
|
9102
9116
|
{ type: i0.Component, args: [{
|
|
9103
9117
|
selector: 'app-form-field',
|
|
9104
|
-
template: "<ng-container [ngSwitch]=\"type\">\n\n <!-- integer -->\n <mat-form-field *ngSwitchCase=\"'integer'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n <input matInput #matInput\n type=\"number\"\n autocomplete=\"off\"\n [readonly]=\"readonly\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n pattern=\"-?[0-9]*\"\n step=\"1\"\n [appAutofocus]=\"autofocus\"\n [placeholder]=\"placeholder\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keypress)=\"filterNumberInput($event, false)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{(compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate:formControl.errors['min'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors['max'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('pattern')\">\n {{'ERROR.FIELD_NOT_VALID_INTEGER'| translate }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('integer')\">\n {{'ERROR.FIELD_NOT_VALID_INTEGER'| translate }}</mat-error>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- double -->\n <mat-form-field *ngSwitchCase=\"'double'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n\n <input matInput #matInput\n type=\"number\"\n decimal=\"true\"\n autocomplete=\"off\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n [appAutofocus]=\"autofocus\"\n [readonly]=\"readonly\"\n [placeholder]=\"placeholder\"\n [step]=\"numberInputStep\"\n (keypress)=\"filterNumberInput($event, true)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{ (compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN')| translate:formControl.errors['min'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors['max'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('maxDecimals')\">\n {{ (compact ? 'ERROR.FIELD_MAXIMUM_DECIMALS_COMPACT' : 'ERROR.FIELD_MAXIMUM_DECIMALS')| translate:{max:\n definition.maximumNumberDecimals} }}</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- boolean -->\n <mat-boolean-field *ngSwitchCase=\"'boolean'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [readonly]=\"readonly\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-boolean-field>\n\n <!-- date -->\n <mat-date-field *ngSwitchCase=\"'date'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_PLACEHOLDER'|translate): placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-field>\n\n <!-- date time -->\n <mat-date-time-field *ngSwitchCase=\"'dateTime'\"\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_TIME_PLACEHOLDER'|translate): placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-time-field>\n\n <!-- enum -->\n <mat-form-field *ngSwitchCase=\"'enum'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n <mat-select [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\">\n <mat-option *ngFor=\"let item of definition.values\" [value]=\"item.key || item\">{{ (item.value || item) | translate }}</mat-option>\n </mat-select>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- color -->\n <mat-form-field *ngSwitchCase=\"'color'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n\n <ion-icon margin-right name=\"color-fill\" matPrefix></ion-icon>\n\n <input matInput autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [style.color]=\"getColorContrast(formControl.value)\"\n [style.background]=\"formControl.value\"\n [colorPicker]=\"formControl.value\"\n (colorPickerChange)=\"writeValue($event)\"\n [cpSaveClickOutside]=\"true\"\n cpPosition=\"top\"\n cpOutputFormat=\"hex\"\n [cpOKButton]=\"false\"\n [required]=\"required\"/>\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- string -->\n <mat-form-field *ngSwitchCase=\"'string'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n <input matInput #matInput\n autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\"\n (keypress)=\"filterAlphanumericalInput($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- auto-complete -->\n <mat-autocomplete-field *ngSwitchCase=\"'entity'\"\n [class]=\"classList\"\n [autofocus]=\"autofocus\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [displayWith]=\"getDisplayValueFn(definition)\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </mat-autocomplete-field>\n\n <!-- multi auto-complete -->\n <mat-chips-field *ngSwitchCase=\"'entities'\"\n [class]=\"classList\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [displayWith]=\"getDisplayValueFn(definition)\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </mat-chips-field>\n\n <!-- other -->\n <div *ngSwitchDefault>\n <mat-error *ngIf=\"type\">Unknown type {{type}} for option {{definition.key}}. Please report this error.</mat-error>\n <mat-error *ngIf=\"!type\">Error on option field. Please check console log for details.</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </div>\n\n</ng-container>\n",
|
|
9118
|
+
template: "<ng-container [ngSwitch]=\"type\">\n\n <!-- integer -->\n <mat-form-field *ngSwitchCase=\"'integer'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n <input matInput #matInput\n type=\"number\"\n autocomplete=\"off\"\n [readonly]=\"readonly\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n pattern=\"-?[0-9]*\"\n step=\"1\"\n [appAutofocus]=\"autofocus\"\n [placeholder]=\"placeholder\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keypress)=\"filterNumberInput($event, false)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{(compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate:formControl.errors['min'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors['max'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('pattern')\">\n {{'ERROR.FIELD_NOT_VALID_INTEGER'| translate }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('integer')\">\n {{'ERROR.FIELD_NOT_VALID_INTEGER'| translate }}</mat-error>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- double -->\n <mat-form-field *ngSwitchCase=\"'double'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n\n <input matInput #matInput\n type=\"number\"\n decimal=\"true\"\n autocomplete=\"off\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n [appAutofocus]=\"autofocus\"\n [readonly]=\"readonly\"\n [placeholder]=\"placeholder\"\n [step]=\"numberInputStep\"\n (keypress)=\"filterNumberInput($event, true)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{ (compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN')| translate:formControl.errors['min'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors['max'] }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('maxDecimals')\">\n {{ (compact ? 'ERROR.FIELD_MAXIMUM_DECIMALS_COMPACT' : 'ERROR.FIELD_MAXIMUM_DECIMALS')| translate:{max:\n definition.maximumNumberDecimals} }}</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- boolean -->\n <mat-boolean-field *ngSwitchCase=\"'boolean'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [readonly]=\"readonly\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-boolean-field>\n\n <!-- date -->\n <mat-date-field *ngSwitchCase=\"'date'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_PLACEHOLDER'|translate): placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-field>\n\n <!-- date time -->\n <mat-date-time-field *ngSwitchCase=\"'dateTime'\" #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_TIME_PLACEHOLDER'|translate): placeholder\"\n [floatLabel]=\"floatLabel\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\">\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-time-field>\n\n <!-- enum -->\n <mat-form-field *ngSwitchCase=\"'enum'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n <mat-select [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\">\n <mat-option *ngFor=\"let item of definition.values\" [value]=\"item.key || item\">{{ (item.value || item) | translate }}</mat-option>\n </mat-select>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- color -->\n <mat-form-field *ngSwitchCase=\"'color'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n\n <ion-icon margin-right name=\"color-fill\" matPrefix></ion-icon>\n\n <input matInput autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [style.color]=\"getColorContrast(formControl.value)\"\n [style.background]=\"formControl.value\"\n [colorPicker]=\"formControl.value\"\n (colorPickerChange)=\"writeValue($event)\"\n [cpSaveClickOutside]=\"true\"\n cpPosition=\"top\"\n cpOutputFormat=\"hex\"\n [cpOKButton]=\"false\"\n [required]=\"required\"/>\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- string -->\n <mat-form-field *ngSwitchCase=\"'string'\" [floatLabel]=\"floatLabel\" [class]=\"classList\">\n <input matInput #matInput\n autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContent($event)\"\n (keypress)=\"filterAlphanumericalInput($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\">\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- auto-complete -->\n <mat-autocomplete-field *ngSwitchCase=\"'entity'\"\n [class]=\"classList\"\n [autofocus]=\"autofocus\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [displayWith]=\"getDisplayValueFn(definition)\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </mat-autocomplete-field>\n\n <!-- multi auto-complete -->\n <mat-chips-field *ngSwitchCase=\"'entities'\"\n [class]=\"classList\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [displayWith]=\"getDisplayValueFn(definition)\">\n <ng-content select=\"[matPrefix]\"></ng-content>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </mat-chips-field>\n\n <!-- other -->\n <div *ngSwitchDefault>\n <mat-error *ngIf=\"type\">Unknown type {{type}} for option {{definition.key}}. Please report this error.</mat-error>\n <mat-error *ngIf=\"!type\">Error on option field. Please check console log for details.</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </div>\n\n</ng-container>\n",
|
|
9105
9119
|
providers: [
|
|
9106
9120
|
{
|
|
9107
9121
|
provide: i1.NG_VALUE_ACCESSOR,
|
|
@@ -20107,7 +20121,7 @@
|
|
|
20107
20121
|
_this.form.get('username').setValidators(i1.Validators.required);
|
|
20108
20122
|
}
|
|
20109
20123
|
// Enable/disable registration link
|
|
20110
|
-
_this.canRegister = config.
|
|
20124
|
+
_this.canRegister = config.getPropertyAsBoolean(CORE_CONFIG_OPTIONS.REGISTRATION_ENABLE);
|
|
20111
20125
|
_this.markForCheck();
|
|
20112
20126
|
}));
|
|
20113
20127
|
// For DEV only
|
|
@@ -24724,13 +24738,6 @@
|
|
|
24724
24738
|
AppTable.prototype.markAsLoaded = function (opts) {
|
|
24725
24739
|
this.setLoading(false, opts);
|
|
24726
24740
|
};
|
|
24727
|
-
AppTable.prototype.markRowAsDirty = function (row, opts) {
|
|
24728
|
-
var _a;
|
|
24729
|
-
row = row || this.editedRow;
|
|
24730
|
-
if (row)
|
|
24731
|
-
(_a = row.validator) === null || _a === void 0 ? void 0 : _a.markAsDirty(opts);
|
|
24732
|
-
this.markAsDirty(opts);
|
|
24733
|
-
};
|
|
24734
24741
|
AppTable.prototype.markAsReady = function (opts) {
|
|
24735
24742
|
if (this.readySubject.value !== true) {
|
|
24736
24743
|
this.readySubject.next(true);
|
|
@@ -26083,6 +26090,13 @@
|
|
|
26083
26090
|
AppTable.prototype.equals = function (d1, d2) {
|
|
26084
26091
|
return EntityUtils.equals(d1, d2, 'id');
|
|
26085
26092
|
};
|
|
26093
|
+
AppTable.prototype.markRowAsDirty = function (row, opts) {
|
|
26094
|
+
var _a;
|
|
26095
|
+
row = row || this.editedRow;
|
|
26096
|
+
if (row)
|
|
26097
|
+
(_a = row.validator) === null || _a === void 0 ? void 0 : _a.markAsDirty(opts);
|
|
26098
|
+
this.markAsDirty(opts);
|
|
26099
|
+
};
|
|
26086
26100
|
/* -- private method -- */
|
|
26087
26101
|
AppTable.prototype.setLoading = function (value, opts) {
|
|
26088
26102
|
if (this.loadingSubject.value !== value) {
|