@sumaris-net/ngx-components 0.27.14 → 0.27.18
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 +62 -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/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/services/translate-context.service.js +2 -2
- package/esm2015/src/app/shared/types.js +1 -1
- package/esm2015/src/app/shared/validator/validators.js +25 -14
- package/esm2015/sumaris-net.ngx-components.js +2 -1
- package/fesm2015/sumaris-net.ngx-components.js +57 -16
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- 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 +2 -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
|
@@ -2816,7 +2816,7 @@
|
|
|
2816
2816
|
var contextualKey = this.contextualKey(key, context);
|
|
2817
2817
|
// Return the contextual translation, or default of not exists
|
|
2818
2818
|
var translation = this.translate.instant(contextualKey, interpolateParams);
|
|
2819
|
-
return (translation !== contextualKey) ? translation : this.translate.instant(key);
|
|
2819
|
+
return (translation !== contextualKey) ? translation : this.translate.instant(key, interpolateParams);
|
|
2820
2820
|
};
|
|
2821
2821
|
/**
|
|
2822
2822
|
* Compute a contextual i18n key, using the context as suffix
|
|
@@ -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',
|
|
@@ -22352,7 +22363,7 @@
|
|
|
22352
22363
|
MenuComponent.decorators = [
|
|
22353
22364
|
{ type: i0.Component, args: [{
|
|
22354
22365
|
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 <mat-toolbar class=\"ion-padding\" @fadeInAnimation *ngIf=\"!isLogin\"\n style=\"height: unset;
|
|
22366
|
+
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 <mat-toolbar class=\"ion-padding\" @fadeInAnimation *ngIf=\"!isLogin\"\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\n <ion-toolbar @fadeInAnimation *ngIf=\"isLogin\" 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 </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
22367
|
animations: [fadeInAnimation],
|
|
22357
22368
|
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
22358
22369
|
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 +22488,39 @@
|
|
|
22477
22488
|
forward: [{ type: i0.Output }]
|
|
22478
22489
|
};
|
|
22479
22490
|
|
|
22491
|
+
var AppIconComponent = /** @class */ (function () {
|
|
22492
|
+
function AppIconComponent() {
|
|
22493
|
+
this.icon = null;
|
|
22494
|
+
this.matIcon = null;
|
|
22495
|
+
this.matSvgIcon = null;
|
|
22496
|
+
this.color = null;
|
|
22497
|
+
}
|
|
22498
|
+
Object.defineProperty(AppIconComponent.prototype, "ref", {
|
|
22499
|
+
set: function (value) {
|
|
22500
|
+
this.icon = value.icon;
|
|
22501
|
+
this.matIcon = value.matIcon;
|
|
22502
|
+
this.matSvgIcon = value.matSvgIcon;
|
|
22503
|
+
},
|
|
22504
|
+
enumerable: false,
|
|
22505
|
+
configurable: true
|
|
22506
|
+
});
|
|
22507
|
+
;
|
|
22508
|
+
return AppIconComponent;
|
|
22509
|
+
}());
|
|
22510
|
+
AppIconComponent.decorators = [
|
|
22511
|
+
{ type: i0.Component, args: [{
|
|
22512
|
+
selector: 'app-icon',
|
|
22513
|
+
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"
|
|
22514
|
+
},] }
|
|
22515
|
+
];
|
|
22516
|
+
AppIconComponent.propDecorators = {
|
|
22517
|
+
icon: [{ type: i0.Input }],
|
|
22518
|
+
matIcon: [{ type: i0.Input }],
|
|
22519
|
+
matSvgIcon: [{ type: i0.Input }],
|
|
22520
|
+
color: [{ type: i0.Input }],
|
|
22521
|
+
ref: [{ type: i0.Input }]
|
|
22522
|
+
};
|
|
22523
|
+
|
|
22480
22524
|
var CoreModule = /** @class */ (function () {
|
|
22481
22525
|
function CoreModule() {
|
|
22482
22526
|
}
|
|
@@ -22529,7 +22573,8 @@
|
|
|
22529
22573
|
EntityMetadataComponent,
|
|
22530
22574
|
FormButtonsBarComponent,
|
|
22531
22575
|
AppPropertiesForm,
|
|
22532
|
-
AppListForm
|
|
22576
|
+
AppListForm,
|
|
22577
|
+
AppIconComponent
|
|
22533
22578
|
],
|
|
22534
22579
|
exports: [
|
|
22535
22580
|
SharedModule,
|
|
@@ -22555,6 +22600,7 @@
|
|
|
22555
22600
|
AppListForm,
|
|
22556
22601
|
AppInstallUpgradeCard,
|
|
22557
22602
|
DepartmentToStringPipe,
|
|
22603
|
+
AppIconComponent
|
|
22558
22604
|
]
|
|
22559
22605
|
},] }
|
|
22560
22606
|
];
|
|
@@ -28334,6 +28380,7 @@
|
|
|
28334
28380
|
exports["ɵi"] = RegisterModal;
|
|
28335
28381
|
exports["ɵj"] = UserSettingsValidatorService;
|
|
28336
28382
|
exports["ɵk"] = LocalSettingsValidatorService;
|
|
28383
|
+
exports["ɵl"] = AppIconComponent;
|
|
28337
28384
|
|
|
28338
28385
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
28339
28386
|
|