@sumaris-net/ngx-components 0.27.15 → 0.27.19
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 +63 -15
- 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/esm2015/src/app/core/core.module.js +5 -2
- package/esm2015/src/app/core/form/editor.class.js +1 -1
- package/esm2015/src/app/core/icon/icon.component.js +29 -0
- package/esm2015/src/app/core/menu/menu.component.js +2 -2
- package/esm2015/src/app/core/menu/menu.model.js +1 -1
- package/esm2015/src/app/shared/colors.utils.js +2 -0
- package/esm2015/src/app/shared/types.js +1 -1
- package/esm2015/src/app/shared/validator/validators.js +27 -15
- package/esm2015/sumaris-net.ngx-components.js +2 -1
- package/fesm2015/sumaris-net.ngx-components.js +58 -16
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/src/app/core/form/editor.class.d.ts +2 -2
- package/src/app/core/icon/icon.component.d.ts +9 -0
- package/src/app/core/menu/menu.model.d.ts +0 -2
- package/src/app/shared/colors.utils.d.ts +3 -0
- package/src/app/shared/types.d.ts +1 -0
- package/src/app/shared/validator/validators.d.ts +3 -0
- package/src/assets/i18n/fr.json +2 -2
- package/sumaris-net.ngx-components.d.ts +1 -0
- package/sumaris-net.ngx-components.metadata.json +1 -1
|
@@ -2926,6 +2926,18 @@
|
|
|
2926
2926
|
var SharedValidators = /** @class */ (function () {
|
|
2927
2927
|
function SharedValidators() {
|
|
2928
2928
|
}
|
|
2929
|
+
SharedValidators.getDoubleRegexp = function (maxDecimals) {
|
|
2930
|
+
if (isNil(maxDecimals))
|
|
2931
|
+
return this._REGEXP_CACHE.DOUBLE_BY_MAX_DECIMALS.NO_LIMIT;
|
|
2932
|
+
if (maxDecimals < 0)
|
|
2933
|
+
throw new Error("Invalid maxDecimals value: " + maxDecimals);
|
|
2934
|
+
var regexp = this._REGEXP_CACHE.DOUBLE_BY_MAX_DECIMALS[maxDecimals];
|
|
2935
|
+
if (regexp)
|
|
2936
|
+
return regexp;
|
|
2937
|
+
// New regexp: add it to cache
|
|
2938
|
+
this._REGEXP_CACHE.DOUBLE_BY_MAX_DECIMALS[maxDecimals] = new RegExp("^[-]?[0-9]+([.,][0-9]{1," + maxDecimals + "})?$");
|
|
2939
|
+
return this._REGEXP_CACHE.DOUBLE_BY_MAX_DECIMALS[maxDecimals];
|
|
2940
|
+
};
|
|
2929
2941
|
SharedValidators.validDate = function (control) {
|
|
2930
2942
|
var value = control.value;
|
|
2931
2943
|
var date = !value || moment$4.isMoment(value) ? value : moment$4(control.value, DATE_ISO_PATTERN);
|
|
@@ -2985,24 +2997,15 @@
|
|
|
2985
2997
|
return null;
|
|
2986
2998
|
};
|
|
2987
2999
|
SharedValidators.double = function (opts) {
|
|
2988
|
-
var
|
|
2989
|
-
if (opts && isNotNil(opts.maxDecimals)) {
|
|
2990
|
-
if (opts.maxDecimals < 0)
|
|
2991
|
-
throw new Error("Invalid maxDecimals value: " + opts.maxDecimals);
|
|
2992
|
-
regexpStr = opts.maxDecimals > 1 ? "^[-]?[0-9]+([.,][0-9]{1," + opts.maxDecimals + "})?$" : '^[-]?[0-9]+([.,][0-9])?$';
|
|
2993
|
-
}
|
|
2994
|
-
else {
|
|
2995
|
-
regexpStr = '^[-]?[0-9]+([.,][0-9]*)?$';
|
|
2996
|
-
}
|
|
2997
|
-
var regexp = new RegExp(regexpStr);
|
|
3000
|
+
var regexp = this.getDoubleRegexp(opts === null || opts === void 0 ? void 0 : opts.maxDecimals);
|
|
2998
3001
|
return function (control) {
|
|
2999
3002
|
var value = control.value;
|
|
3000
3003
|
if (Number.isNaN(value)) {
|
|
3001
3004
|
//console.log("WARN: Getting a NaN value !");
|
|
3002
|
-
|
|
3005
|
+
return null;
|
|
3003
3006
|
}
|
|
3004
3007
|
if (isNotNil(value) && value !== '' && !regexp.test(value)) {
|
|
3005
|
-
return { maxDecimals:
|
|
3008
|
+
return { maxDecimals: { maxDecimals: opts === null || opts === void 0 ? void 0 : opts.maxDecimals } };
|
|
3006
3009
|
}
|
|
3007
3010
|
return null;
|
|
3008
3011
|
};
|
|
@@ -3095,6 +3098,14 @@
|
|
|
3095
3098
|
};
|
|
3096
3099
|
return SharedValidators;
|
|
3097
3100
|
}());
|
|
3101
|
+
SharedValidators._REGEXP_CACHE = {
|
|
3102
|
+
DOUBLE_BY_MAX_DECIMALS: {
|
|
3103
|
+
NO_LIMIT: /^[-]?[0-9]+([.,][0-9]*)?$/,
|
|
3104
|
+
1: /^[-]?[0-9]+([.,][0-9])?$/,
|
|
3105
|
+
2: /^[-]?[0-9]+([.,][0-9]{1,2})?$/,
|
|
3106
|
+
3: /^[-]?[0-9]+([.,][0-9]{1,2})?$/,
|
|
3107
|
+
}
|
|
3108
|
+
};
|
|
3098
3109
|
SharedValidators.I18N_ERROR_KEYS = {
|
|
3099
3110
|
required: 'ERROR.FIELD_REQUIRED',
|
|
3100
3111
|
min: 'ERROR.FIELD_MIN',
|
|
@@ -3113,7 +3124,8 @@
|
|
|
3113
3124
|
latitude: 'ERROR.FIELD_NOT_VALID_LATITUDE',
|
|
3114
3125
|
longitude: 'ERROR.FIELD_NOT_VALID_LONGITUDE',
|
|
3115
3126
|
pattern: 'ERROR.FIELD_NOT_VALID_PATTERN',
|
|
3116
|
-
unique: 'ERROR.FIELD_NOT_UNIQUE'
|
|
3127
|
+
unique: 'ERROR.FIELD_NOT_UNIQUE',
|
|
3128
|
+
entity: 'ERROR.FIELD_INVALID'
|
|
3117
3129
|
};
|
|
3118
3130
|
// @dynamic
|
|
3119
3131
|
var SharedFormGroupValidators = /** @class */ (function () {
|
|
@@ -22352,7 +22364,7 @@
|
|
|
22352
22364
|
MenuComponent.decorators = [
|
|
22353
22365
|
{ type: i0.Component, args: [{
|
|
22354
22366
|
selector: 'app-menu',
|
|
22355
|
-
template: "<ion-split-pane #splitPane contentId=\"menu-content\" (swiperight)=\"onSwipeRight($event)\">\n\n <ion-menu id=\"menu\" menuId=\"left\" contentId=\"menu-content\">\n <ion-header>\n\n <
|
|
22367
|
+
template: "<ion-split-pane #splitPane contentId=\"menu-content\" (swiperight)=\"onSwipeRight($event)\">\n\n <ion-menu id=\"menu\" menuId=\"left\" contentId=\"menu-content\">\n <ion-header>\n\n <ion-toolbar @fadeInAnimation *ngIf=\"isLogin; else notLogin\" class=\"ion-toolbar-top\">\n <ion-grid>\n <ion-row>\n <ion-col size=\"4\">\n <button type=\"button\" mat-flat-button\n class=\"user-avatar\" [class.primary]=\"!accountAvatar\"\n [style.background-image]=\"'url('+(accountAvatar||'./assets/img/person.png')+')'\"\n [routerLink]=\"['/account']\"\n routerDirection=\"root\"\n routerLinkActive=\"ion-color-primary\"\n (click)=\"menuClose()\">\n </button>\n </ion-col>\n <ion-col size=\"8\" class=\"user-logo\">\n <img *ngIf=\"logo\" src=\"{{logo}}\" [title]=\"'APP_NAME'|translate: {appName: appName}\" width=\"108px;\"/>\n <span *ngIf=\"!logo\" width=\"108px;\">{{appName}}</span>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-no-padding\">\n\n <button mat-button type=\"button\"\n [routerLink]=\"['/account']\"\n routerDirection=\"root\"\n routerLinkActive=\"ion-color-primary\"\n (click)=\"menuClose()\">\n <ion-label color=\"primary\" class=\"ion-text-wrap ion-text-start\">\n <h3 class=\"no-margin username\">\n <b>{{accountName}}</b>\n </h3>\n <h4>{{accountEmail}}</h4>\n </ion-label>\n </button>\n\n </ion-row>\n </ion-grid>\n\n </ion-toolbar>\n\n <!-- User not logged -->\n <ng-template #notLogin>\n <mat-toolbar class=\"ion-padding\" @fadeInAnimation\n style=\"height: unset; display: block; margin: auto; text-align: center;\">\n <img *ngIf=\"logo\" src=\"{{logo}}\" [title]=\"'APP_NAME'|translate: {appName: appName}\" width=\"150px;\">\n <span *ngIf=\"!logo\" style=\"width: 150px\">{{appName}}</span>\n </mat-toolbar>\n </ng-template>\n </ion-header>\n\n <ion-content [class.has-user-header]=\"isLogin\">\n\n <ion-list lines=\"none\">\n <ion-menu-toggle auto-hide=\"false\"\n [class.flex-spacer]=\"item.cssClass == 'flex-spacer'\"\n *ngFor=\"let item of $items | async\">\n\n <!-- link -->\n <ion-item *ngIf=\"!loading && item.path\"\n @fadeInAnimation\n class=\"{{item.cssClass}} {{item.color}} text-1x\"\n tappable\n [routerLink]=\"item.path\"\n routerDirection=\"root\"\n routerLinkActive=\"selected\"\n [routerLinkActiveOptions]=\"{exact: (item.path === '/')}\">\n <ion-icon slot=\"start\" *ngIf=\"item.icon\" [name]=\"item.icon\"></ion-icon>\n <mat-icon slot=\"start\" *ngIf=\"item.matIcon\">{{item.matIcon}}</mat-icon>\n <ion-label translate>{{item.title}}</ion-label>\n </ion-item>\n\n <!-- action -->\n <ion-item *ngIf=\"!loading && item.action\"\n @fadeInAnimation\n class=\"{{item.cssClass}} {{item.color}} text-1x\"\n tappable\n (click)=\"doAction(item.action, $event)\">\n <ion-icon slot=\"start\" *ngIf=\"item.icon\" [name]=\"item.icon\"></ion-icon>\n <mat-icon slot=\"start\" *ngIf=\"item.matIcon\">{{item.matIcon}}</mat-icon>\n <ion-label translate>{{item.title}}</ion-label>\n </ion-item>\n\n <!-- divider -->\n <ion-item-divider @fadeInAnimation\n class=\"{{item.cssClass}} {{item.color}}\"\n *ngIf=\"!loading && !item.path && !item.action\">\n <ion-label translate>{{item.title}}</ion-label>\n </ion-item-divider>\n\n </ion-menu-toggle>\n </ion-list>\n </ion-content>\n\n <ion-footer class=\"hidden-xs hidden-sm\">\n <ion-toolbar>\n\n <ion-buttons slot=\"start\">\n <ion-button mat-icon-button color=\"accent\" (click)=\"openAboutModal($event)\">\n <mat-icon slot=\"icon-only\">help_outline</mat-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title (click)=\"openAboutModal($event)\" color=\"medium\">\n {{'MENU.FOOTER_VERSION_ABOUT'| translate: {version: appVersion} }}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <button mat-icon-button color=\"accent\" (click)=\"toggleSplitPane($event)\"\n class=\"hidden-xs hidden-sm hidden-md\"\n [title]=\"(splitPaneOpened ? 'COMMON.BTN_HIDE_MENU' : 'COMMON.BTN_SHOW_MENU') |translate\">\n <mat-icon><span>{{splitPaneOpened ? '«' : '»'}}</span></mat-icon>\n </button>\n </ion-buttons>\n </ion-toolbar>\n </ion-footer>\n\n </ion-menu>\n\n <ng-content></ng-content>\n\n</ion-split-pane>\n",
|
|
22356
22368
|
animations: [fadeInAnimation],
|
|
22357
22369
|
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
22358
22370
|
styles: ["ion-menu{--ion-item-background:transparent;--ion-item-divider-background:transparent;--ion-item-icon-color:var(--ion-color-primary-tint);--ion-item-text-color:var(--ion-color-primary-tint);--ion-item-background-selected:var(--ion-color-secondary100);--ion-item-text-color-selected:var(--ion-color-primary);--ion-item-icon-color-selected:var(--ion-color-primary);--ion-item-text-color-disable:var(--ion-color-medium);--ion-item-icon-color-disable:var(--ion-color-medium)}ion-menu ion-header ion-text{color:var(--ion-color-primary)}ion-menu ion-header .user-avatar{background-size:cover;background-repeat:no-repeat;background-position:50%;background-color:var(--ion-color-secondary);border:1px solid var(--ion-color-primary);overflow:hidden!important;font-size:var(--avatar-size,60px)!important;line-height:var(--avatar-size,60px);height:var(--avatar-size,60px)!important;width:var(--avatar-size,60px)!important;border-radius:50%;display:inline-block}ion-menu ion-header .user-logo{text-align:right}ion-menu ion-header .user-logo img{max-width:120px;max-height:var(--avatar-size,60px);width:auto}ion-menu ion-header .username{padding-top:0;margin-top:0;margin-bottom:0;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}ion-menu ion-header button[mat-button]{padding:0;text-align:start!important;width:100%}ion-menu .scroll-content{margin-top:79px!important}ion-menu .has-user-header .scroll-content{margin-top:188px!important}ion-menu ion-content.has-profile-header{--offset-top:188px}ion-menu ion-content.no-profile-header{--offset-top:79px}ion-menu ion-content ion-list{min-height:100%;display:flex;flex-direction:column;justify-content:flex-start}ion-menu ion-content ion-list ion-menu-toggle.flex-spacer{flex:1 1 auto;display:flex;flex-direction:column;justify-content:flex-end}ion-menu ion-content ion-list ion-item.primary{--ion-item-icon-color:var(--ion-color-primary-tint);--ion-item-text-color:var(--ion-color-primary-tint)}ion-menu ion-content ion-list ion-item.secondary{--ion-item-icon-color:var(--ion-color-secondary-tint);--ion-item-text-color:var(--ion-color-secondary-tint)}ion-menu ion-content ion-list ion-item.tertiary{--ion-item-icon-color:var(--ion-color-tertiary-tint);--ion-item-text-color:var(--ion-color-tertiary-tint)}ion-menu ion-content ion-list ion-item.danger{--ion-item-icon-color:var(--ion-color-danger-tint);--ion-item-text-color:var(--ion-color-danger-tint)}ion-menu ion-content ion-list ion-item.medium{--ion-item-icon-color:var(--ion-color-medium-shade);--ion-item-text-color:var(--ion-color-medium-shade)}ion-menu ion-content ion-list ion-item.dark{--ion-item-icon-color:var(--ion-color-dark-tint);--ion-item-text-color:var(--ion-color-dark-tint)}ion-menu ion-content ion-list ion-item ion-icon,ion-menu ion-content ion-list ion-item mat-icon{color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor}ion-menu ion-content ion-list ion-item ion-label,ion-menu ion-content ion-list ion-item ion-text{color:var(--ion-item-text-color)!important}ion-menu ion-content ion-list ion-item.selected{background-color:var(--ion-item-background-selected)!important;--color-hover:var(--ion-item-background-selected)!important}ion-menu ion-content ion-list ion-item.selected ion-icon,ion-menu ion-content ion-list ion-item.selected mat-icon{color:var(--ion-item-icon-color-selected)!important;fill:currentColor;stroke:currentColor}ion-menu ion-content ion-list ion-item.selected ion-label,ion-menu ion-content ion-list ion-item.selected ion-text{color:var(--ion-item-text-color-selected)!important}ion-menu ion-content ion-list ion-item.selected:hover{--color-hover:var(--ion-item-background-selected)!important;--ion-item-icon-color-selected:var(--ion-item-icon-color)!important;--ion-item-text-color-selected:var(--ion-item-text-color)!important}ion-menu ion-footer{display:block!important}ion-menu ion-footer ion-toolbar ion-title{cursor:pointer;font-size:12pt;font-weight:400;text-align:center;padding:0 8px}ion-menu ion-footer ion-toolbar ion-button{--width:40px}@media screen and (max-width:767px){ion-menu ion-footer{display:none!important;visibility:hidden!important}}@media screen and (min-width:768px){ion-menu ion-scroll{overflow-y:auto!important}ion-menu .user-avatar{font-size:var(--avatar-size,80px)!important;line-height:var(--avatar-size,80px);height:var(--avatar-size,80px)!important;width:var(--avatar-size,80px)!important}ion-menu .user-logo img{max-height:var(--avatar-size,80px)}}"]
|
|
@@ -22477,6 +22489,39 @@
|
|
|
22477
22489
|
forward: [{ type: i0.Output }]
|
|
22478
22490
|
};
|
|
22479
22491
|
|
|
22492
|
+
var AppIconComponent = /** @class */ (function () {
|
|
22493
|
+
function AppIconComponent() {
|
|
22494
|
+
this.icon = null;
|
|
22495
|
+
this.matIcon = null;
|
|
22496
|
+
this.matSvgIcon = null;
|
|
22497
|
+
this.color = null;
|
|
22498
|
+
}
|
|
22499
|
+
Object.defineProperty(AppIconComponent.prototype, "ref", {
|
|
22500
|
+
set: function (value) {
|
|
22501
|
+
this.icon = value.icon;
|
|
22502
|
+
this.matIcon = value.matIcon;
|
|
22503
|
+
this.matSvgIcon = value.matSvgIcon;
|
|
22504
|
+
},
|
|
22505
|
+
enumerable: false,
|
|
22506
|
+
configurable: true
|
|
22507
|
+
});
|
|
22508
|
+
;
|
|
22509
|
+
return AppIconComponent;
|
|
22510
|
+
}());
|
|
22511
|
+
AppIconComponent.decorators = [
|
|
22512
|
+
{ type: i0.Component, args: [{
|
|
22513
|
+
selector: 'app-icon',
|
|
22514
|
+
template: "<ion-icon *ngIf=\"icon; else matIconTemplate\" slot=\"icon-only\"\n [color]=\"color\"\n [name]=\"icon\"\n></ion-icon>\n<ng-template #matIconTemplate>\n <mat-icon [svgIcon]=\"matSvgIcon\"\n [style.color]=\"'var(--ion-color-'+color+')'\">{{matIcon}}</mat-icon>\n</ng-template>\n\n"
|
|
22515
|
+
},] }
|
|
22516
|
+
];
|
|
22517
|
+
AppIconComponent.propDecorators = {
|
|
22518
|
+
icon: [{ type: i0.Input }],
|
|
22519
|
+
matIcon: [{ type: i0.Input }],
|
|
22520
|
+
matSvgIcon: [{ type: i0.Input }],
|
|
22521
|
+
color: [{ type: i0.Input }],
|
|
22522
|
+
ref: [{ type: i0.Input }]
|
|
22523
|
+
};
|
|
22524
|
+
|
|
22480
22525
|
var CoreModule = /** @class */ (function () {
|
|
22481
22526
|
function CoreModule() {
|
|
22482
22527
|
}
|
|
@@ -22529,7 +22574,8 @@
|
|
|
22529
22574
|
EntityMetadataComponent,
|
|
22530
22575
|
FormButtonsBarComponent,
|
|
22531
22576
|
AppPropertiesForm,
|
|
22532
|
-
AppListForm
|
|
22577
|
+
AppListForm,
|
|
22578
|
+
AppIconComponent
|
|
22533
22579
|
],
|
|
22534
22580
|
exports: [
|
|
22535
22581
|
SharedModule,
|
|
@@ -22555,6 +22601,7 @@
|
|
|
22555
22601
|
AppListForm,
|
|
22556
22602
|
AppInstallUpgradeCard,
|
|
22557
22603
|
DepartmentToStringPipe,
|
|
22604
|
+
AppIconComponent
|
|
22558
22605
|
]
|
|
22559
22606
|
},] }
|
|
22560
22607
|
];
|
|
@@ -28334,6 +28381,7 @@
|
|
|
28334
28381
|
exports["ɵi"] = RegisterModal;
|
|
28335
28382
|
exports["ɵj"] = UserSettingsValidatorService;
|
|
28336
28383
|
exports["ɵk"] = LocalSettingsValidatorService;
|
|
28384
|
+
exports["ɵl"] = AppIconComponent;
|
|
28337
28385
|
|
|
28338
28386
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
28339
28387
|
|