@vendure/admin-ui 2.0.0 → 2.0.2
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/catalog/components/move-collections-dialog/move-collections-dialog.component.d.ts +3 -2
- package/catalog/components/product-options-editor/product-options-editor.component.d.ts +6 -0
- package/core/common/base-detail.component.d.ts +28 -0
- package/core/common/version.d.ts +1 -1
- package/core/data/providers/interceptor.d.ts +11 -1
- package/core/providers/page/page.service.d.ts +7 -0
- package/core/shared/components/chart/chart.component.d.ts +3 -1
- package/esm2022/catalog/catalog.module.mjs +2 -2
- package/esm2022/catalog/components/asset-list/asset-list.component.mjs +3 -3
- package/esm2022/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.mjs +3 -3
- package/esm2022/catalog/components/move-collections-dialog/move-collections-dialog.component.mjs +34 -8
- package/esm2022/catalog/components/product-options-editor/product-options-editor.component.mjs +13 -5
- package/esm2022/core/common/base-detail.component.mjs +29 -1
- package/esm2022/core/common/base-list.component.mjs +1 -1
- package/esm2022/core/common/component-registry-types.mjs +1 -1
- package/esm2022/core/common/generated-types.mjs +1 -1
- package/esm2022/core/common/introspection-result.mjs +1 -1
- package/esm2022/core/common/title-setter.mjs +1 -1
- package/esm2022/core/common/version.mjs +2 -2
- package/esm2022/core/components/app-shell/app-shell.component.mjs +3 -3
- package/esm2022/core/components/breadcrumb/breadcrumb.component.mjs +3 -3
- package/esm2022/core/data/providers/interceptor.mjs +32 -11
- package/esm2022/core/providers/bulk-action-registry/bulk-action-types.mjs +1 -1
- package/esm2022/core/providers/custom-field-component/custom-field-component.service.mjs +1 -1
- package/esm2022/core/providers/local-storage/local-storage.service.mjs +1 -4
- package/esm2022/core/providers/page/page.service.mjs +5 -2
- package/esm2022/core/shared/components/action-bar-items/action-bar-items.component.mjs +1 -1
- package/esm2022/core/shared/components/asset-file-input/asset-file-input.component.mjs +1 -1
- package/esm2022/core/shared/components/asset-gallery/asset-gallery.component.mjs +2 -2
- package/esm2022/core/shared/components/asset-search-input/asset-search-input.component.mjs +3 -3
- package/esm2022/core/shared/components/assign-to-channel-dialog/assign-to-channel-dialog.component.mjs +1 -1
- package/esm2022/core/shared/components/chart/chart.component.mjs +6 -2
- package/esm2022/core/shared/components/chip/chip.component.mjs +2 -2
- package/esm2022/core/shared/components/currency-code-selector/currency-code-selector.component.mjs +1 -1
- package/esm2022/core/shared/components/data-table/data-table.component.mjs +1 -1
- package/esm2022/core/shared/components/language-code-selector/language-code-selector.component.mjs +1 -1
- package/esm2022/core/shared/components/select-toggle/select-toggle.component.mjs +3 -3
- package/esm2022/core/shared/dynamic-form-inputs/register-dynamic-input-components.mjs +1 -1
- package/esm2022/core/shared/pipes/state-i18n-token.pipe.mjs +1 -1
- package/esm2022/customer/components/address-card/address-card.component.mjs +3 -3
- package/esm2022/customer/components/customer-detail/customer-detail.component.mjs +3 -3
- package/esm2022/customer/components/customer-list/customer-list.component.mjs +14 -10
- package/esm2022/customer/customer.module.mjs +1 -1
- package/esm2022/customer/customer.routes.mjs +2 -2
- package/esm2022/dashboard/components/dashboard/dashboard.component.mjs +1 -1
- package/esm2022/dashboard/widgets/order-chart-widget/order-chart-widget.component.mjs +13 -13
- package/esm2022/marketing/marketing.module.mjs +1 -1
- package/esm2022/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.mjs +3 -3
- package/esm2022/order/components/draft-order-detail/draft-order-detail.component.mjs +3 -3
- package/esm2022/order/components/order-detail/order-detail.component.mjs +2 -4
- package/esm2022/order/components/select-customer-dialog/select-customer-dialog.component.mjs +3 -3
- package/esm2022/order/order.module.mjs +1 -1
- package/esm2022/order/order.routes.mjs +1 -1
- package/esm2022/settings/components/channel-detail/channel-detail.component.mjs +12 -12
- package/esm2022/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +8 -8
- package/esm2022/settings/settings.module.mjs +1 -1
- package/fesm2022/vendure-admin-ui-catalog.mjs +49 -15
- package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-core.mjs +80 -27
- package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-customer.mjs +18 -14
- package/fesm2022/vendure-admin-ui-customer.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-dashboard.mjs +12 -12
- package/fesm2022/vendure-admin-ui-dashboard.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-order.mjs +7 -9
- package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
- package/fesm2022/vendure-admin-ui-settings.mjs +18 -18
- package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
- package/package.json +13 -13
- package/static/i18n-messages/cs.json +770 -768
- package/static/i18n-messages/de.json +771 -769
- package/static/i18n-messages/en.json +771 -769
- package/static/i18n-messages/es.json +770 -768
- package/static/i18n-messages/fr.json +770 -768
- package/static/i18n-messages/it.json +770 -768
- package/static/i18n-messages/pl.json +770 -768
- package/static/i18n-messages/pt_BR.json +770 -768
- package/static/i18n-messages/pt_PT.json +770 -768
- package/static/i18n-messages/ru.json +770 -768
- package/static/i18n-messages/uk.json +770 -768
- package/static/i18n-messages/zh_Hans.json +770 -768
- package/static/i18n-messages/zh_Hant.json +770 -768
- package/static/styles/global/_buttons.scss +24 -0
- package/static/theme.min.css +1 -1
|
@@ -6362,9 +6362,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImpor
|
|
|
6362
6362
|
*/
|
|
6363
6363
|
const ADMIN_SPECIFIC_KEYS = [
|
|
6364
6364
|
'activeTheme',
|
|
6365
|
-
'uiLanguageCode',
|
|
6366
|
-
'uiLocale',
|
|
6367
|
-
'contentLanguageCode',
|
|
6368
6365
|
'dashboardWidgetLayout',
|
|
6369
6366
|
'activeTheme',
|
|
6370
6367
|
'livePreviewCollectionContents',
|
|
@@ -9134,11 +9131,11 @@ class BreadcrumbComponent {
|
|
|
9134
9131
|
this.parentBreadcrumb$ = this.breadcrumbService.breadcrumbs$.pipe(map(breadcrumbs => (1 < breadcrumbs.length ? breadcrumbs[breadcrumbs.length - 2] : undefined)));
|
|
9135
9132
|
}
|
|
9136
9133
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: BreadcrumbService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9137
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: BreadcrumbComponent, selector: "vdr-breadcrumb", ngImport: i0, template: "<nav role=\"navigation\">\r\n <ul class=\"breadcrumbs\">\r\n <li *ngFor=\"let breadcrumb of breadcrumbs$ | async; let isLast = last\">\r\n <a [routerLink]=\"breadcrumb.link\" *ngIf=\"!isLast\">{{ breadcrumb.label | translate }}</a>\r\n <ng-container *ngIf=\"!isLast\"\r\n ><clr-icon shape=\"caret right\" class=\"color-weight-400 mx-1\"></clr-icon\r\n ></ng-container>\r\n <ng-container *ngIf=\"isLast\">{{ breadcrumb.label | translate }}</ng-container>\r\n </li>\r\n </ul>\r\n <ul class=\"breadcrumbs mobile\" *ngIf=\"parentBreadcrumb$ | async as parentBreadcrumb\">\r\n <li>\r\n <clr-icon shape=\"caret left\" class=\"color-weight-400 mr-1\"></clr-icon>\r\n <a [routerLink]=\"parentBreadcrumb.link\">{{ parentBreadcrumb.label | translate }}</a>\r\n </li>\r\n </ul>\r\n</nav>\r\n", styles: [":host{display:block;padding:0;position:relative}.breadcrumbs{list-style-type:none;display:flex;align-items:center;overflow-x:auto;max-width:100vw;line-height:100%;height:40px;padding:calc(var(--space-unit) * 1.5) calc(var(--space-unit) * 2.5);font-size:var(--font-size-sm);background-color:var(--color-page-header-item-bg);border-radius:var(--border-radius-lg)}.breadcrumbs li{display:inline-block;white-space:nowrap}.breadcrumbs li a:link,.breadcrumbs li a:visited{color:var(--color-weight-700)}.breadcrumbs li:last-child{font-weight:600}@media screen and (max-width: 992px){.breadcrumbs:not(.mobile){display:none}}@media screen and (min-width: 992px){.breadcrumbs.mobile{display:none}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
|
|
9134
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: BreadcrumbComponent, selector: "vdr-breadcrumb", ngImport: i0, template: "<nav role=\"navigation\">\r\n <ul class=\"breadcrumbs\">\r\n <li *ngFor=\"let breadcrumb of breadcrumbs$ | async; let isLast = last\" [title]=\"breadcrumb.label\">\r\n <a [routerLink]=\"breadcrumb.link\" *ngIf=\"!isLast\">{{ breadcrumb.label | translate }}</a>\r\n <ng-container *ngIf=\"!isLast\"\r\n ><clr-icon shape=\"caret right\" class=\"color-weight-400 mx-1\"></clr-icon\r\n ></ng-container>\r\n <ng-container *ngIf=\"isLast\">{{ breadcrumb.label | translate }}</ng-container>\r\n </li>\r\n </ul>\r\n <ul class=\"breadcrumbs mobile\" *ngIf=\"parentBreadcrumb$ | async as parentBreadcrumb\">\r\n <li>\r\n <clr-icon shape=\"caret left\" class=\"color-weight-400 mr-1\"></clr-icon>\r\n <a [routerLink]=\"parentBreadcrumb.link\">{{ parentBreadcrumb.label | translate }}</a>\r\n </li>\r\n </ul>\r\n</nav>\r\n", styles: [":host{display:block;padding:0;position:relative}.breadcrumbs{list-style-type:none;display:flex;flex-wrap:wrap;align-items:center;overflow-x:auto;max-width:100vw;line-height:100%;min-height:40px;padding:calc(var(--space-unit) * 1.5) calc(var(--space-unit) * 2.5);font-size:var(--font-size-sm);background-color:var(--color-page-header-item-bg);border-radius:var(--border-radius-lg)}.breadcrumbs li{display:inline-block;white-space:nowrap;max-width:300px;overflow:hidden;text-overflow:ellipsis}.breadcrumbs li a:link,.breadcrumbs li a:visited{color:var(--color-weight-700)}.breadcrumbs li:last-child{font-weight:600}@media screen and (max-width: 992px){.breadcrumbs:not(.mobile){display:none}}@media screen and (min-width: 992px){.breadcrumbs.mobile{display:none}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
|
|
9138
9135
|
}
|
|
9139
9136
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: BreadcrumbComponent, decorators: [{
|
|
9140
9137
|
type: Component,
|
|
9141
|
-
args: [{ selector: 'vdr-breadcrumb', template: "<nav role=\"navigation\">\r\n <ul class=\"breadcrumbs\">\r\n <li *ngFor=\"let breadcrumb of breadcrumbs$ | async; let isLast = last\">\r\n <a [routerLink]=\"breadcrumb.link\" *ngIf=\"!isLast\">{{ breadcrumb.label | translate }}</a>\r\n <ng-container *ngIf=\"!isLast\"\r\n ><clr-icon shape=\"caret right\" class=\"color-weight-400 mx-1\"></clr-icon\r\n ></ng-container>\r\n <ng-container *ngIf=\"isLast\">{{ breadcrumb.label | translate }}</ng-container>\r\n </li>\r\n </ul>\r\n <ul class=\"breadcrumbs mobile\" *ngIf=\"parentBreadcrumb$ | async as parentBreadcrumb\">\r\n <li>\r\n <clr-icon shape=\"caret left\" class=\"color-weight-400 mr-1\"></clr-icon>\r\n <a [routerLink]=\"parentBreadcrumb.link\">{{ parentBreadcrumb.label | translate }}</a>\r\n </li>\r\n </ul>\r\n</nav>\r\n", styles: [":host{display:block;padding:0;position:relative}.breadcrumbs{list-style-type:none;display:flex;align-items:center;overflow-x:auto;max-width:100vw;line-height:100%;height:40px;padding:calc(var(--space-unit) * 1.5) calc(var(--space-unit) * 2.5);font-size:var(--font-size-sm);background-color:var(--color-page-header-item-bg);border-radius:var(--border-radius-lg)}.breadcrumbs li{display:inline-block;white-space:nowrap}.breadcrumbs li a:link,.breadcrumbs li a:visited{color:var(--color-weight-700)}.breadcrumbs li:last-child{font-weight:600}@media screen and (max-width: 992px){.breadcrumbs:not(.mobile){display:none}}@media screen and (min-width: 992px){.breadcrumbs.mobile{display:none}}\n"] }]
|
|
9138
|
+
args: [{ selector: 'vdr-breadcrumb', template: "<nav role=\"navigation\">\r\n <ul class=\"breadcrumbs\">\r\n <li *ngFor=\"let breadcrumb of breadcrumbs$ | async; let isLast = last\" [title]=\"breadcrumb.label\">\r\n <a [routerLink]=\"breadcrumb.link\" *ngIf=\"!isLast\">{{ breadcrumb.label | translate }}</a>\r\n <ng-container *ngIf=\"!isLast\"\r\n ><clr-icon shape=\"caret right\" class=\"color-weight-400 mx-1\"></clr-icon\r\n ></ng-container>\r\n <ng-container *ngIf=\"isLast\">{{ breadcrumb.label | translate }}</ng-container>\r\n </li>\r\n </ul>\r\n <ul class=\"breadcrumbs mobile\" *ngIf=\"parentBreadcrumb$ | async as parentBreadcrumb\">\r\n <li>\r\n <clr-icon shape=\"caret left\" class=\"color-weight-400 mr-1\"></clr-icon>\r\n <a [routerLink]=\"parentBreadcrumb.link\">{{ parentBreadcrumb.label | translate }}</a>\r\n </li>\r\n </ul>\r\n</nav>\r\n", styles: [":host{display:block;padding:0;position:relative}.breadcrumbs{list-style-type:none;display:flex;flex-wrap:wrap;align-items:center;overflow-x:auto;max-width:100vw;line-height:100%;min-height:40px;padding:calc(var(--space-unit) * 1.5) calc(var(--space-unit) * 2.5);font-size:var(--font-size-sm);background-color:var(--color-page-header-item-bg);border-radius:var(--border-radius-lg)}.breadcrumbs li{display:inline-block;white-space:nowrap;max-width:300px;overflow:hidden;text-overflow:ellipsis}.breadcrumbs li a:link,.breadcrumbs li a:visited{color:var(--color-weight-700)}.breadcrumbs li:last-child{font-weight:600}@media screen and (max-width: 992px){.breadcrumbs:not(.mobile){display:none}}@media screen and (min-width: 992px){.breadcrumbs.mobile{display:none}}\n"] }]
|
|
9142
9139
|
}], ctorParameters: function () { return [{ type: BreadcrumbService }]; } });
|
|
9143
9140
|
|
|
9144
9141
|
class ChannelService {
|
|
@@ -9348,11 +9345,11 @@ class AppShellComponent {
|
|
|
9348
9345
|
});
|
|
9349
9346
|
}
|
|
9350
9347
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AppShellComponent, deps: [{ token: AuthService }, { token: DataService }, { token: i1$2.Router }, { token: I18nService }, { token: ModalService }, { token: LocalStorageService }, { token: BreadcrumbService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9351
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: AppShellComponent, selector: "vdr-app-shell", ngImport: i0, template: "<div class=\"app-container\">\r\n <div class=\"left-nav\" [class.expanded]=\"mainNavExpanded$ | async\">\r\n <div class=\"branding\">\r\n <a [routerLink]=\"['/']\" *ngIf=\"!hideVendureBranding\"><img src=\"assets/logo.svg\" class=\"logo\" style=\"max-width: 100px\" /></a>\r\n <div class=\"collapse-menu\">\r\n <button class=\"\" (click)=\"collapseNav()\">\r\n <clr-icon shape=\"window-close\" size=\"24\"></clr-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"mx-4\">\r\n <vdr-channel-switcher *vdrIfMultichannel></vdr-channel-switcher>\r\n </div>\r\n <div class=\"main-nav-container\">\r\n <vdr-main-nav (itemClick)=\"collapseNav()\"></vdr-main-nav>\r\n </div>\r\n <div class=\"settings-nav-container\">\r\n <hr />\r\n <vdr-main-nav displayMode=\"settings\" (itemClick)=\"collapseNav()\"></vdr-main-nav>\r\n </div>\r\n <div class=\"mx-2\"></div>\r\n </div>\r\n\r\n <div class=\"surface\">\r\n <div class=\"content-container\">\r\n <div class=\"top-bar\">\r\n <div class=\"expand-menu mr-1\">\r\n <button class=\"\" (click)=\"expandNav()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"bars\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\" />\r\n </svg>\r\n </button>\r\n </div>\r\n <div>\r\n <vdr-breadcrumb></vdr-breadcrumb>\r\n </div>\r\n <div class=\"universal-search flex-spacer\"></div>\r\n <div class=\"
|
|
9348
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: AppShellComponent, selector: "vdr-app-shell", ngImport: i0, template: "<div class=\"app-container\">\r\n <div class=\"left-nav\" [class.expanded]=\"mainNavExpanded$ | async\">\r\n <div class=\"branding\">\r\n <a [routerLink]=\"['/']\" *ngIf=\"!hideVendureBranding\"><img src=\"assets/logo.svg\" class=\"logo\" style=\"max-width: 100px\" /></a>\r\n <div class=\"collapse-menu\">\r\n <button class=\"\" (click)=\"collapseNav()\">\r\n <clr-icon shape=\"window-close\" size=\"24\"></clr-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"mx-4\">\r\n <vdr-channel-switcher *vdrIfMultichannel></vdr-channel-switcher>\r\n </div>\r\n <div class=\"main-nav-container\">\r\n <vdr-main-nav (itemClick)=\"collapseNav()\"></vdr-main-nav>\r\n </div>\r\n <div class=\"settings-nav-container\">\r\n <hr />\r\n <vdr-main-nav displayMode=\"settings\" (itemClick)=\"collapseNav()\"></vdr-main-nav>\r\n </div>\r\n <div class=\"mx-2\"></div>\r\n </div>\r\n\r\n <div class=\"surface\">\r\n <div class=\"content-container\">\r\n <div class=\"top-bar\">\r\n <div class=\"expand-menu mr-1\">\r\n <button class=\"\" (click)=\"expandNav()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"bars\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\" />\r\n </svg>\r\n </button>\r\n </div>\r\n <div>\r\n <vdr-breadcrumb></vdr-breadcrumb>\r\n </div>\r\n <div class=\"universal-search flex-spacer\"></div>\r\n <div class=\"mx-1\">\r\n <vdr-alerts></vdr-alerts>\r\n </div>\r\n <div>\r\n <vdr-user-menu\r\n [userName]=\"userName$ | async\"\r\n [uiLanguageAndLocale]=\"uiLanguageAndLocale$ | async\"\r\n [availableLanguages]=\"availableLanguages\"\r\n (selectUiLanguage)=\"selectUiLanguage()\"\r\n (logOut)=\"logOut()\"\r\n ></vdr-user-menu>\r\n </div>\r\n </div>\r\n <!--<vdr-page-title [value]=\"(pageTitle$ | async) || '' | translate\"></vdr-page-title>-->\r\n <div class=\"content-area\"><router-outlet></router-outlet></div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".app-container{display:flex;height:100vh;overflow:hidden}.left-nav{background-color:var(--color-left-nav-bg);color:var(--color-left-nav-text);display:flex;flex-direction:column;overflow:hidden;height:100%;border-right:1px solid var(--color-weight-150);z-index:2;width:var(--left-nav-width);max-width:var(--left-nav-width)}@media screen and (max-width: 992px){.left-nav.expanded{position:fixed;inset:0;width:100%;max-width:100%;animation:fade-in .2s ease-in-out forwards}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media screen and (min-width: 992px){.expand-menu,.collapse-menu{display:none}}.expand-menu button,.collapse-menu button{border:none;padding:calc(var(--space-unit) * 1) calc(var(--space-unit) * 2);background-color:var(--color-page-header-item-bg);border-radius:var(--border-radius-lg);color:var(--color-text-100);display:flex;align-items:center;justify-content:center}.expand-menu .bars,.collapse-menu .bars{width:24px;height:24px}.collapse-menu button{height:40px;background-color:var(--color-weight-200)}.main-nav-container{overflow:auto;flex:1}.settings-nav-container{margin:calc(var(--space-unit) * 3) 0}.settings-nav-container hr{margin:0 calc(var(--space-unit) * 4);margin-bottom:calc(var(--space-unit) * 4);border:1px solid var(--color-weight-150);box-shadow:0 1px 0 var(--color-weight-100)}.logo{max-width:100%}.wordmark{font-weight:700;margin-left:12px;font-size:24px;color:var(--color-primary-500)}@media screen and (max-width: 992px){.wordmark{display:none}}.surface{display:flex;flex-direction:column;flex:1;background-color:var(--color-surface-bg)}.content-container{overflow:auto;min-height:100vh;display:flex;flex-direction:column}.branding{display:flex;align-items:center;justify-content:space-between;min-width:0;padding:calc(var(--space-unit) * 2) calc(var(--space-unit) * 4);padding-right:calc(var(--space-unit) * 1.5)}@media screen and (min-width: 992px){.branding{padding:calc(var(--space-unit) * 4)}}.top-bar{width:100%;display:flex;align-items:center;justify-content:space-between;padding:calc(var(--space-unit) * 2) calc(var(--space-unit) * 1);background-color:var(--color-page-header)}@media screen and (min-width: 992px){.top-bar{padding:calc(var(--space-unit) * 4);padding-left:var(--surface-margin-left)}}.header-actions{align-items:center}.content-area{position:relative;margin-right:auto;flex:1;display:block;width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i1$2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: IfMultichannelDirective, selector: "[vdrIfMultichannel]", inputs: ["vdrIfMultichannelElse"] }, { kind: "component", type: UserMenuComponent, selector: "vdr-user-menu", inputs: ["userName", "availableLanguages", "uiLanguageAndLocale"], outputs: ["logOut", "selectUiLanguage"] }, { kind: "component", type: MainNavComponent, selector: "vdr-main-nav", inputs: ["displayMode"], outputs: ["itemClick"] }, { kind: "component", type: BreadcrumbComponent, selector: "vdr-breadcrumb" }, { kind: "component", type: ChannelSwitcherComponent, selector: "vdr-channel-switcher" }, { kind: "component", type: AlertsComponent, selector: "vdr-alerts" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
|
|
9352
9349
|
}
|
|
9353
9350
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AppShellComponent, decorators: [{
|
|
9354
9351
|
type: Component,
|
|
9355
|
-
args: [{ selector: 'vdr-app-shell', template: "<div class=\"app-container\">\r\n <div class=\"left-nav\" [class.expanded]=\"mainNavExpanded$ | async\">\r\n <div class=\"branding\">\r\n <a [routerLink]=\"['/']\" *ngIf=\"!hideVendureBranding\"><img src=\"assets/logo.svg\" class=\"logo\" style=\"max-width: 100px\" /></a>\r\n <div class=\"collapse-menu\">\r\n <button class=\"\" (click)=\"collapseNav()\">\r\n <clr-icon shape=\"window-close\" size=\"24\"></clr-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"mx-4\">\r\n <vdr-channel-switcher *vdrIfMultichannel></vdr-channel-switcher>\r\n </div>\r\n <div class=\"main-nav-container\">\r\n <vdr-main-nav (itemClick)=\"collapseNav()\"></vdr-main-nav>\r\n </div>\r\n <div class=\"settings-nav-container\">\r\n <hr />\r\n <vdr-main-nav displayMode=\"settings\" (itemClick)=\"collapseNav()\"></vdr-main-nav>\r\n </div>\r\n <div class=\"mx-2\"></div>\r\n </div>\r\n\r\n <div class=\"surface\">\r\n <div class=\"content-container\">\r\n <div class=\"top-bar\">\r\n <div class=\"expand-menu mr-1\">\r\n <button class=\"\" (click)=\"expandNav()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"bars\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\" />\r\n </svg>\r\n </button>\r\n </div>\r\n <div>\r\n <vdr-breadcrumb></vdr-breadcrumb>\r\n </div>\r\n <div class=\"universal-search flex-spacer\"></div>\r\n <div class=\"
|
|
9352
|
+
args: [{ selector: 'vdr-app-shell', template: "<div class=\"app-container\">\r\n <div class=\"left-nav\" [class.expanded]=\"mainNavExpanded$ | async\">\r\n <div class=\"branding\">\r\n <a [routerLink]=\"['/']\" *ngIf=\"!hideVendureBranding\"><img src=\"assets/logo.svg\" class=\"logo\" style=\"max-width: 100px\" /></a>\r\n <div class=\"collapse-menu\">\r\n <button class=\"\" (click)=\"collapseNav()\">\r\n <clr-icon shape=\"window-close\" size=\"24\"></clr-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"mx-4\">\r\n <vdr-channel-switcher *vdrIfMultichannel></vdr-channel-switcher>\r\n </div>\r\n <div class=\"main-nav-container\">\r\n <vdr-main-nav (itemClick)=\"collapseNav()\"></vdr-main-nav>\r\n </div>\r\n <div class=\"settings-nav-container\">\r\n <hr />\r\n <vdr-main-nav displayMode=\"settings\" (itemClick)=\"collapseNav()\"></vdr-main-nav>\r\n </div>\r\n <div class=\"mx-2\"></div>\r\n </div>\r\n\r\n <div class=\"surface\">\r\n <div class=\"content-container\">\r\n <div class=\"top-bar\">\r\n <div class=\"expand-menu mr-1\">\r\n <button class=\"\" (click)=\"expandNav()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"bars\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\" />\r\n </svg>\r\n </button>\r\n </div>\r\n <div>\r\n <vdr-breadcrumb></vdr-breadcrumb>\r\n </div>\r\n <div class=\"universal-search flex-spacer\"></div>\r\n <div class=\"mx-1\">\r\n <vdr-alerts></vdr-alerts>\r\n </div>\r\n <div>\r\n <vdr-user-menu\r\n [userName]=\"userName$ | async\"\r\n [uiLanguageAndLocale]=\"uiLanguageAndLocale$ | async\"\r\n [availableLanguages]=\"availableLanguages\"\r\n (selectUiLanguage)=\"selectUiLanguage()\"\r\n (logOut)=\"logOut()\"\r\n ></vdr-user-menu>\r\n </div>\r\n </div>\r\n <!--<vdr-page-title [value]=\"(pageTitle$ | async) || '' | translate\"></vdr-page-title>-->\r\n <div class=\"content-area\"><router-outlet></router-outlet></div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".app-container{display:flex;height:100vh;overflow:hidden}.left-nav{background-color:var(--color-left-nav-bg);color:var(--color-left-nav-text);display:flex;flex-direction:column;overflow:hidden;height:100%;border-right:1px solid var(--color-weight-150);z-index:2;width:var(--left-nav-width);max-width:var(--left-nav-width)}@media screen and (max-width: 992px){.left-nav.expanded{position:fixed;inset:0;width:100%;max-width:100%;animation:fade-in .2s ease-in-out forwards}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media screen and (min-width: 992px){.expand-menu,.collapse-menu{display:none}}.expand-menu button,.collapse-menu button{border:none;padding:calc(var(--space-unit) * 1) calc(var(--space-unit) * 2);background-color:var(--color-page-header-item-bg);border-radius:var(--border-radius-lg);color:var(--color-text-100);display:flex;align-items:center;justify-content:center}.expand-menu .bars,.collapse-menu .bars{width:24px;height:24px}.collapse-menu button{height:40px;background-color:var(--color-weight-200)}.main-nav-container{overflow:auto;flex:1}.settings-nav-container{margin:calc(var(--space-unit) * 3) 0}.settings-nav-container hr{margin:0 calc(var(--space-unit) * 4);margin-bottom:calc(var(--space-unit) * 4);border:1px solid var(--color-weight-150);box-shadow:0 1px 0 var(--color-weight-100)}.logo{max-width:100%}.wordmark{font-weight:700;margin-left:12px;font-size:24px;color:var(--color-primary-500)}@media screen and (max-width: 992px){.wordmark{display:none}}.surface{display:flex;flex-direction:column;flex:1;background-color:var(--color-surface-bg)}.content-container{overflow:auto;min-height:100vh;display:flex;flex-direction:column}.branding{display:flex;align-items:center;justify-content:space-between;min-width:0;padding:calc(var(--space-unit) * 2) calc(var(--space-unit) * 4);padding-right:calc(var(--space-unit) * 1.5)}@media screen and (min-width: 992px){.branding{padding:calc(var(--space-unit) * 4)}}.top-bar{width:100%;display:flex;align-items:center;justify-content:space-between;padding:calc(var(--space-unit) * 2) calc(var(--space-unit) * 1);background-color:var(--color-page-header)}@media screen and (min-width: 992px){.top-bar{padding:calc(var(--space-unit) * 4);padding-left:var(--surface-margin-left)}}.header-actions{align-items:center}.content-area{position:relative;margin-right:auto;flex:1;display:block;width:100%}\n"] }]
|
|
9356
9353
|
}], ctorParameters: function () { return [{ type: AuthService }, { type: DataService }, { type: i1$2.Router }, { type: I18nService }, { type: ModalService }, { type: LocalStorageService }, { type: BreadcrumbService }]; } });
|
|
9357
9354
|
|
|
9358
9355
|
class NotificationComponent {
|
|
@@ -10213,21 +10210,25 @@ class DefaultInterceptor {
|
|
|
10213
10210
|
else {
|
|
10214
10211
|
// GraphQL errors still return 200 OK responses, but have the actual error message
|
|
10215
10212
|
// inside the body of the response.
|
|
10216
|
-
const
|
|
10217
|
-
if (
|
|
10218
|
-
const firstCode =
|
|
10213
|
+
const graphQLErrors = response.body.errors;
|
|
10214
|
+
if (graphQLErrors && Array.isArray(graphQLErrors)) {
|
|
10215
|
+
const firstCode = graphQLErrors[0]?.extensions?.code;
|
|
10219
10216
|
if (firstCode === 'FORBIDDEN') {
|
|
10220
10217
|
this.authService.logOut().subscribe(() => {
|
|
10221
10218
|
const { loginUrl } = getAppConfig();
|
|
10222
|
-
|
|
10219
|
+
// If there is a `loginUrl` which is external to the AdminUI, redirect to it (with no query parameters)
|
|
10220
|
+
if (loginUrl && !this.areUrlsOnSameOrigin(loginUrl, window.location.origin)) {
|
|
10223
10221
|
window.location.href = loginUrl;
|
|
10224
10222
|
return;
|
|
10225
10223
|
}
|
|
10226
|
-
if
|
|
10227
|
-
|
|
10224
|
+
// Else, we build the login path from the login url if one is provided or fallback to `/login`
|
|
10225
|
+
const loginPath = loginUrl ? this.getPathFromLoginUrl(loginUrl) : '/login';
|
|
10226
|
+
if (!window.location.pathname.includes(loginPath)) {
|
|
10227
|
+
const path = graphQLErrors[0].path.join(' > ');
|
|
10228
10228
|
this.displayErrorNotification(marker(`error.403-forbidden`), { path });
|
|
10229
10229
|
}
|
|
10230
|
-
|
|
10230
|
+
// Navigate to the `loginPath` route by ensuring the query param in charge of the redirection is provided
|
|
10231
|
+
this.router.navigate([loginPath], {
|
|
10231
10232
|
queryParams: {
|
|
10232
10233
|
[AUTH_REDIRECT_PARAM]: btoa(this.router.url),
|
|
10233
10234
|
},
|
|
@@ -10235,12 +10236,12 @@ class DefaultInterceptor {
|
|
|
10235
10236
|
});
|
|
10236
10237
|
}
|
|
10237
10238
|
else if (firstCode === 'CHANNEL_NOT_FOUND') {
|
|
10238
|
-
const message =
|
|
10239
|
+
const message = graphQLErrors.map(err => err.message).join('\n');
|
|
10239
10240
|
this.displayErrorNotification(message);
|
|
10240
10241
|
this.localStorageService.remove('activeChannelToken');
|
|
10241
10242
|
}
|
|
10242
10243
|
else {
|
|
10243
|
-
const message =
|
|
10244
|
+
const message = graphQLErrors.map(err => err.message).join('\n');
|
|
10244
10245
|
this.displayErrorNotification(message);
|
|
10245
10246
|
}
|
|
10246
10247
|
}
|
|
@@ -10276,6 +10277,23 @@ class DefaultInterceptor {
|
|
|
10276
10277
|
}
|
|
10277
10278
|
}
|
|
10278
10279
|
}
|
|
10280
|
+
/**
|
|
10281
|
+
* Determine if two urls are on the same origin.
|
|
10282
|
+
*/
|
|
10283
|
+
areUrlsOnSameOrigin(urlA, urlB) {
|
|
10284
|
+
return new URL(urlA).origin === new URL(urlB).origin;
|
|
10285
|
+
}
|
|
10286
|
+
/**
|
|
10287
|
+
* If the provided `loginUrl` is on the same origin than the AdminUI, return the path
|
|
10288
|
+
* after the `/admin`.
|
|
10289
|
+
* Else, return the whole login url.
|
|
10290
|
+
*/
|
|
10291
|
+
getPathFromLoginUrl(loginUrl) {
|
|
10292
|
+
if (!this.areUrlsOnSameOrigin(loginUrl, window.location.origin)) {
|
|
10293
|
+
return loginUrl;
|
|
10294
|
+
}
|
|
10295
|
+
return loginUrl.split('/admin')[1];
|
|
10296
|
+
}
|
|
10279
10297
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: DefaultInterceptor, deps: [{ token: DataService }, { token: i0.Injector }, { token: AuthService }, { token: i1$2.Router }, { token: LocalStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
10280
10298
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: DefaultInterceptor }); }
|
|
10281
10299
|
}
|
|
@@ -11545,11 +11563,11 @@ class ChipComponent {
|
|
|
11545
11563
|
this.iconClick = new EventEmitter();
|
|
11546
11564
|
}
|
|
11547
11565
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ChipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11548
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: ChipComponent, selector: "vdr-chip", inputs: { icon: "icon", invert: "invert", colorFrom: "colorFrom", colorType: "colorType" }, outputs: { iconClick: "iconClick" }, ngImport: i0, template: "<div\r\n class=\"wrapper\"\r\n [class.with-background]=\"!invert && colorFrom\"\r\n [style.backgroundColor]=\"!invert && (colorFrom | stringToColor)\"\r\n [style.color]=\"invert && (colorFrom | stringToColor)\"\r\n [style.borderColor]=\"invert && (colorFrom | stringToColor)\"\r\n [ngClass]=\"colorType\"\r\n>\r\n <div class=\"chip-label\"><ng-content></ng-content></div>\r\n <div class=\"chip-icon\" *ngIf=\"icon\">\r\n <button (click)=\"iconClick.emit($event)\">\r\n <clr-icon\r\n [attr.shape]=\"icon\"\r\n [style.color]=\"invert && (colorFrom | stringToColor)\"\r\n [class.is-inverse]=\"!invert && colorFrom\"\r\n ></clr-icon>\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{display:inline-block}.wrapper{display:flex;vertical-align:baseline;font-size:var(--font-size-xs);border-radius:var(--border-radius-lg);font-weight:600;line-height:12px;text-align:center;color:var(--color-weight-700);border:1px solid var(--color-weight-125)}.wrapper.with-background{color:var(--color-grey-100);border-color:transparent}.wrapper.with-background .chip-label{opacity:.9}.wrapper.warning{border-color:var(--color-chip-warning-border);color:var(--color-chip-warning-text);background-color:var(--color-chip-warning-bg)}.wrapper.success{border-color:var(--color-chip-success-border);color:var(--color-chip-success-text);background-color:var(--color-chip-success-bg)}.wrapper.error{border-color:var(--color-chip-error-border);color:var(--color-chip-error-text);background-color:var(--color-chip-error-bg)}.chip-label{padding:5px 8px;white-space:nowrap;display:flex;align-items:center;gap:2px}.chip-icon{border-left:1px solid var(--color-component-border-200);padding:0 3px;line-height:1em;display:flex}.chip-icon button{cursor:pointer;background:none;margin:0;padding:0;border:none}\n"], dependencies: [{ kind: "directive", type: i1$4.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: StringToColorPipe, name: "stringToColor" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
11566
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: ChipComponent, selector: "vdr-chip", inputs: { icon: "icon", invert: "invert", colorFrom: "colorFrom", colorType: "colorType" }, outputs: { iconClick: "iconClick" }, ngImport: i0, template: "<div\r\n class=\"wrapper\"\r\n [class.with-background]=\"!invert && colorFrom\"\r\n [style.backgroundColor]=\"!invert && (colorFrom | stringToColor)\"\r\n [style.color]=\"invert && (colorFrom | stringToColor)\"\r\n [style.borderColor]=\"invert && (colorFrom | stringToColor)\"\r\n [ngClass]=\"colorType\"\r\n>\r\n <div class=\"chip-label\"><ng-content></ng-content></div>\r\n <div class=\"chip-icon\" *ngIf=\"icon\">\r\n <button (click)=\"iconClick.emit($event)\">\r\n <clr-icon\r\n [attr.shape]=\"icon\"\r\n [style.color]=\"invert && (colorFrom | stringToColor)\"\r\n [class.is-inverse]=\"!invert && colorFrom\"\r\n ></clr-icon>\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{display:inline-block;overflow:hidden}.wrapper{display:flex;vertical-align:baseline;font-size:var(--font-size-xs);border-radius:var(--border-radius-lg);font-weight:600;line-height:12px;text-align:center;color:var(--color-weight-700);border:1px solid var(--color-weight-125)}.wrapper.with-background{color:var(--color-grey-100);border-color:transparent}.wrapper.with-background .chip-label{opacity:.9}.wrapper.warning{border-color:var(--color-chip-warning-border);color:var(--color-chip-warning-text);background-color:var(--color-chip-warning-bg)}.wrapper.success{border-color:var(--color-chip-success-border);color:var(--color-chip-success-text);background-color:var(--color-chip-success-bg)}.wrapper.error{border-color:var(--color-chip-error-border);color:var(--color-chip-error-text);background-color:var(--color-chip-error-bg)}.chip-label{padding:5px 8px;white-space:nowrap;display:flex;align-items:center;gap:2px}.chip-icon{border-left:1px solid var(--color-component-border-200);padding:0 3px;line-height:1em;display:flex}.chip-icon button{cursor:pointer;background:none;margin:0;padding:0;border:none}\n"], dependencies: [{ kind: "directive", type: i1$4.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: StringToColorPipe, name: "stringToColor" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
11549
11567
|
}
|
|
11550
11568
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ChipComponent, decorators: [{
|
|
11551
11569
|
type: Component,
|
|
11552
|
-
args: [{ selector: 'vdr-chip', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"wrapper\"\r\n [class.with-background]=\"!invert && colorFrom\"\r\n [style.backgroundColor]=\"!invert && (colorFrom | stringToColor)\"\r\n [style.color]=\"invert && (colorFrom | stringToColor)\"\r\n [style.borderColor]=\"invert && (colorFrom | stringToColor)\"\r\n [ngClass]=\"colorType\"\r\n>\r\n <div class=\"chip-label\"><ng-content></ng-content></div>\r\n <div class=\"chip-icon\" *ngIf=\"icon\">\r\n <button (click)=\"iconClick.emit($event)\">\r\n <clr-icon\r\n [attr.shape]=\"icon\"\r\n [style.color]=\"invert && (colorFrom | stringToColor)\"\r\n [class.is-inverse]=\"!invert && colorFrom\"\r\n ></clr-icon>\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{display:inline-block}.wrapper{display:flex;vertical-align:baseline;font-size:var(--font-size-xs);border-radius:var(--border-radius-lg);font-weight:600;line-height:12px;text-align:center;color:var(--color-weight-700);border:1px solid var(--color-weight-125)}.wrapper.with-background{color:var(--color-grey-100);border-color:transparent}.wrapper.with-background .chip-label{opacity:.9}.wrapper.warning{border-color:var(--color-chip-warning-border);color:var(--color-chip-warning-text);background-color:var(--color-chip-warning-bg)}.wrapper.success{border-color:var(--color-chip-success-border);color:var(--color-chip-success-text);background-color:var(--color-chip-success-bg)}.wrapper.error{border-color:var(--color-chip-error-border);color:var(--color-chip-error-text);background-color:var(--color-chip-error-bg)}.chip-label{padding:5px 8px;white-space:nowrap;display:flex;align-items:center;gap:2px}.chip-icon{border-left:1px solid var(--color-component-border-200);padding:0 3px;line-height:1em;display:flex}.chip-icon button{cursor:pointer;background:none;margin:0;padding:0;border:none}\n"] }]
|
|
11570
|
+
args: [{ selector: 'vdr-chip', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"wrapper\"\r\n [class.with-background]=\"!invert && colorFrom\"\r\n [style.backgroundColor]=\"!invert && (colorFrom | stringToColor)\"\r\n [style.color]=\"invert && (colorFrom | stringToColor)\"\r\n [style.borderColor]=\"invert && (colorFrom | stringToColor)\"\r\n [ngClass]=\"colorType\"\r\n>\r\n <div class=\"chip-label\"><ng-content></ng-content></div>\r\n <div class=\"chip-icon\" *ngIf=\"icon\">\r\n <button (click)=\"iconClick.emit($event)\">\r\n <clr-icon\r\n [attr.shape]=\"icon\"\r\n [style.color]=\"invert && (colorFrom | stringToColor)\"\r\n [class.is-inverse]=\"!invert && colorFrom\"\r\n ></clr-icon>\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{display:inline-block;overflow:hidden}.wrapper{display:flex;vertical-align:baseline;font-size:var(--font-size-xs);border-radius:var(--border-radius-lg);font-weight:600;line-height:12px;text-align:center;color:var(--color-weight-700);border:1px solid var(--color-weight-125)}.wrapper.with-background{color:var(--color-grey-100);border-color:transparent}.wrapper.with-background .chip-label{opacity:.9}.wrapper.warning{border-color:var(--color-chip-warning-border);color:var(--color-chip-warning-text);background-color:var(--color-chip-warning-bg)}.wrapper.success{border-color:var(--color-chip-success-border);color:var(--color-chip-success-text);background-color:var(--color-chip-success-bg)}.wrapper.error{border-color:var(--color-chip-error-border);color:var(--color-chip-error-text);background-color:var(--color-chip-error-bg)}.chip-label{padding:5px 8px;white-space:nowrap;display:flex;align-items:center;gap:2px}.chip-icon{border-left:1px solid var(--color-component-border-200);padding:0 3px;line-height:1em;display:flex}.chip-icon button{cursor:pointer;background:none;margin:0;padding:0;border:none}\n"] }]
|
|
11553
11571
|
}], propDecorators: { icon: [{
|
|
11554
11572
|
type: Input
|
|
11555
11573
|
}], invert: [{
|
|
@@ -12441,11 +12459,11 @@ class SelectToggleComponent {
|
|
|
12441
12459
|
this.selectedChange = new EventEmitter();
|
|
12442
12460
|
}
|
|
12443
12461
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: SelectToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12444
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: SelectToggleComponent, selector: "vdr-select-toggle", inputs: { size: "size", selected: "selected", hiddenWhenOff: "hiddenWhenOff", disabled: "disabled", label: "label" }, outputs: { selectedChange: "selectedChange" }, ngImport: i0, template: "<div\r\n class=\"toggle\"\r\n [class.hide-when-off]=\"hiddenWhenOff\"\r\n [class.disabled]=\"disabled\"\r\n [class.small]=\"size === 'small'\"\r\n [attr.tabindex]=\"disabled ? null : 0\"\r\n [class.selected]=\"selected\"\r\n (keydown.enter)=\"selectedChange.emit(!selected)\"\r\n (keydown.space)=\"$event.preventDefault(); selectedChange.emit(!selected)\"\r\n (click)=\"selectedChange.emit(!selected)\"\r\n>\r\n <clr-icon
|
|
12462
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: SelectToggleComponent, selector: "vdr-select-toggle", inputs: { size: "size", selected: "selected", hiddenWhenOff: "hiddenWhenOff", disabled: "disabled", label: "label" }, outputs: { selectedChange: "selectedChange" }, ngImport: i0, template: "<div\r\n class=\"toggle\"\r\n [class.hide-when-off]=\"hiddenWhenOff\"\r\n [class.disabled]=\"disabled\"\r\n [class.small]=\"size === 'small'\"\r\n [attr.tabindex]=\"disabled ? null : 0\"\r\n [class.selected]=\"selected\"\r\n (keydown.enter)=\"selectedChange.emit(!selected)\"\r\n (keydown.space)=\"$event.preventDefault(); selectedChange.emit(!selected)\"\r\n (click)=\"selectedChange.emit(!selected)\"\r\n>\r\n <clr-icon\r\n shape=\"check-circle\"\r\n [class.is-solid]=\"selected\"\r\n [attr.size]=\"size === 'small' ? 24 : 32\"\r\n ></clr-icon>\r\n</div>\r\n<div\r\n class=\"toggle-label\"\r\n [class.selected]=\"selected\"\r\n [class.disabled]=\"disabled\"\r\n *ngIf=\"label\"\r\n (click)=\"selectedChange.emit(!selected)\"\r\n>\r\n {{ label }}\r\n</div>\r\n", styles: [":host{display:flex;align-items:center;justify-content:center}.toggle{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;cursor:pointer;color:var(--color-grey-300);background-color:var(--color-component-bg-100);border-radius:50%;top:-12px;left:-12px;transition:opacity .1s,color .1s}.toggle.hide-when-off{opacity:0}.toggle.small{width:24px;height:24px}.toggle:not(.disabled):hover{color:var(--color-success-600);opacity:.9}.toggle.selected{opacity:1;color:var(--color-success-700)}.toggle.selected:not(.disabled):hover{color:var(--color-success-600);opacity:.9}.toggle:focus{outline:none;box-shadow:0 0 2px 2px var(--color-primary-700)}.toggle.disabled{cursor:default}.toggle-label{flex:1;margin-left:6px;text-align:left;font-size:12px}.toggle-label:not(.disabled){cursor:pointer}.toggle-label.selected{color:var(--color-success-800)}\n"], dependencies: [{ kind: "directive", type: i1$4.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12445
12463
|
}
|
|
12446
12464
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: SelectToggleComponent, decorators: [{
|
|
12447
12465
|
type: Component,
|
|
12448
|
-
args: [{ selector: 'vdr-select-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"toggle\"\r\n [class.hide-when-off]=\"hiddenWhenOff\"\r\n [class.disabled]=\"disabled\"\r\n [class.small]=\"size === 'small'\"\r\n [attr.tabindex]=\"disabled ? null : 0\"\r\n [class.selected]=\"selected\"\r\n (keydown.enter)=\"selectedChange.emit(!selected)\"\r\n (keydown.space)=\"$event.preventDefault(); selectedChange.emit(!selected)\"\r\n (click)=\"selectedChange.emit(!selected)\"\r\n>\r\n <clr-icon
|
|
12466
|
+
args: [{ selector: 'vdr-select-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"toggle\"\r\n [class.hide-when-off]=\"hiddenWhenOff\"\r\n [class.disabled]=\"disabled\"\r\n [class.small]=\"size === 'small'\"\r\n [attr.tabindex]=\"disabled ? null : 0\"\r\n [class.selected]=\"selected\"\r\n (keydown.enter)=\"selectedChange.emit(!selected)\"\r\n (keydown.space)=\"$event.preventDefault(); selectedChange.emit(!selected)\"\r\n (click)=\"selectedChange.emit(!selected)\"\r\n>\r\n <clr-icon\r\n shape=\"check-circle\"\r\n [class.is-solid]=\"selected\"\r\n [attr.size]=\"size === 'small' ? 24 : 32\"\r\n ></clr-icon>\r\n</div>\r\n<div\r\n class=\"toggle-label\"\r\n [class.selected]=\"selected\"\r\n [class.disabled]=\"disabled\"\r\n *ngIf=\"label\"\r\n (click)=\"selectedChange.emit(!selected)\"\r\n>\r\n {{ label }}\r\n</div>\r\n", styles: [":host{display:flex;align-items:center;justify-content:center}.toggle{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;cursor:pointer;color:var(--color-grey-300);background-color:var(--color-component-bg-100);border-radius:50%;top:-12px;left:-12px;transition:opacity .1s,color .1s}.toggle.hide-when-off{opacity:0}.toggle.small{width:24px;height:24px}.toggle:not(.disabled):hover{color:var(--color-success-600);opacity:.9}.toggle.selected{opacity:1;color:var(--color-success-700)}.toggle.selected:not(.disabled):hover{color:var(--color-success-600);opacity:.9}.toggle:focus{outline:none;box-shadow:0 0 2px 2px var(--color-primary-700)}.toggle.disabled{cursor:default}.toggle-label{flex:1;margin-left:6px;text-align:left;font-size:12px}.toggle-label:not(.disabled){cursor:pointer}.toggle-label.selected{color:var(--color-success-800)}\n"] }]
|
|
12449
12467
|
}], propDecorators: { size: [{
|
|
12450
12468
|
type: Input
|
|
12451
12469
|
}], selected: [{
|
|
@@ -12986,11 +13004,11 @@ class AssetSearchInputComponent {
|
|
|
12986
13004
|
return { label: item };
|
|
12987
13005
|
}
|
|
12988
13006
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AssetSearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12989
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: AssetSearchInputComponent, selector: "vdr-asset-search-input", inputs: { tags: "tags" }, outputs: { searchTermChange: "searchTermChange", tagsChange: "tagsChange" }, providers: [{ provide: SELECTION_MODEL_FACTORY, useValue: SingleSearchSelectionModelFactory }], viewQueries: [{ propertyName: "selectComponent", first: true, predicate: ["selectComponent"], descendants: true, static: true }], ngImport: i0, template: "<
|
|
13007
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: AssetSearchInputComponent, selector: "vdr-asset-search-input", inputs: { tags: "tags" }, outputs: { searchTermChange: "searchTermChange", tagsChange: "tagsChange" }, providers: [{ provide: SELECTION_MODEL_FACTORY, useValue: SingleSearchSelectionModelFactory }], viewQueries: [{ propertyName: "selectComponent", first: true, predicate: ["selectComponent"], descendants: true, static: true }], ngImport: i0, template: "<ng-select\r\n [addTag]=\"addTagFn\"\r\n [placeholder]=\"'catalog.search-asset-name-or-tag' | translate\"\r\n [items]=\"tags\"\r\n [searchFn]=\"filterTagResults\"\r\n [hideSelected]=\"true\"\r\n [multiple]=\"true\"\r\n [markFirst]=\"false\"\r\n (change)=\"onSelectChange($event)\"\r\n #selectComponent\r\n>\r\n <ng-template ng-header-tmp>\r\n <div\r\n class=\"search-header\"\r\n *ngIf=\"selectComponent.searchTerm\"\r\n [class.selected]=\"isSearchHeaderSelected()\"\r\n (click)=\"selectComponent.selectTag()\"\r\n >\r\n {{ 'catalog.search-for-term' | translate }}: {{ selectComponent.searchTerm }}\r\n </div>\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <ng-container *ngIf=\"item.value\">\r\n <vdr-chip [colorFrom]=\"item.value\" icon=\"close\" (iconClick)=\"clear(item)\"\r\n >\r\n <clr-icon shape=\"tag\" class=\"mr2\"></clr-icon>\r\n {{ item.value }}</vdr-chip\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"!item.value\">\r\n <vdr-chip [icon]=\"'times'\" (iconClick)=\"clear(item)\">\"{{ item.label || item }}\"</vdr-chip>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\r\n <ng-container *ngIf=\"item.value\">\r\n <vdr-chip [colorFrom]=\"item.value\"\r\n >\r\n <clr-icon shape=\"tag\" class=\"mr2\"></clr-icon>\r\n {{ item.value }}</vdr-chip\r\n >\r\n </ng-container>\r\n </ng-template>\r\n</ng-select>\r\n<ng-content></ng-content>\r\n", styles: [":host{display:flex;flex-direction:column;gap:12px;align-items:center;width:100%}@media screen and (min-width: 992px){:host{flex-direction:row;min-width:300px}}ng-select{width:100%}@media screen and (min-width: 992px){ng-select{min-width:300px}}.search-header{padding:8px 10px;border-bottom:1px solid var(--color-component-border-100);cursor:pointer}.search-header.selected,.search-header:hover{background-color:var(--color-component-bg-200)}\n"], dependencies: [{ kind: "directive", type: i1$4.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i3$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i3$1.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i3$1.NgHeaderTemplateDirective, selector: "[ng-header-tmp]" }, { kind: "component", type: ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12990
13008
|
}
|
|
12991
13009
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AssetSearchInputComponent, decorators: [{
|
|
12992
13010
|
type: Component,
|
|
12993
|
-
args: [{ selector: 'vdr-asset-search-input', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: SELECTION_MODEL_FACTORY, useValue: SingleSearchSelectionModelFactory }], template: "<
|
|
13011
|
+
args: [{ selector: 'vdr-asset-search-input', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: SELECTION_MODEL_FACTORY, useValue: SingleSearchSelectionModelFactory }], template: "<ng-select\r\n [addTag]=\"addTagFn\"\r\n [placeholder]=\"'catalog.search-asset-name-or-tag' | translate\"\r\n [items]=\"tags\"\r\n [searchFn]=\"filterTagResults\"\r\n [hideSelected]=\"true\"\r\n [multiple]=\"true\"\r\n [markFirst]=\"false\"\r\n (change)=\"onSelectChange($event)\"\r\n #selectComponent\r\n>\r\n <ng-template ng-header-tmp>\r\n <div\r\n class=\"search-header\"\r\n *ngIf=\"selectComponent.searchTerm\"\r\n [class.selected]=\"isSearchHeaderSelected()\"\r\n (click)=\"selectComponent.selectTag()\"\r\n >\r\n {{ 'catalog.search-for-term' | translate }}: {{ selectComponent.searchTerm }}\r\n </div>\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <ng-container *ngIf=\"item.value\">\r\n <vdr-chip [colorFrom]=\"item.value\" icon=\"close\" (iconClick)=\"clear(item)\"\r\n >\r\n <clr-icon shape=\"tag\" class=\"mr2\"></clr-icon>\r\n {{ item.value }}</vdr-chip\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"!item.value\">\r\n <vdr-chip [icon]=\"'times'\" (iconClick)=\"clear(item)\">\"{{ item.label || item }}\"</vdr-chip>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\r\n <ng-container *ngIf=\"item.value\">\r\n <vdr-chip [colorFrom]=\"item.value\"\r\n >\r\n <clr-icon shape=\"tag\" class=\"mr2\"></clr-icon>\r\n {{ item.value }}</vdr-chip\r\n >\r\n </ng-container>\r\n </ng-template>\r\n</ng-select>\r\n<ng-content></ng-content>\r\n", styles: [":host{display:flex;flex-direction:column;gap:12px;align-items:center;width:100%}@media screen and (min-width: 992px){:host{flex-direction:row;min-width:300px}}ng-select{width:100%}@media screen and (min-width: 992px){ng-select{min-width:300px}}.search-header{padding:8px 10px;border-bottom:1px solid var(--color-component-border-100);cursor:pointer}.search-header.selected,.search-header:hover{background-color:var(--color-component-bg-200)}\n"] }]
|
|
12994
13012
|
}], propDecorators: { tags: [{
|
|
12995
13013
|
type: Input
|
|
12996
13014
|
}], searchTermChange: [{
|
|
@@ -13965,11 +13983,11 @@ class AssetGalleryComponent {
|
|
|
13965
13983
|
event.stopPropagation();
|
|
13966
13984
|
}
|
|
13967
13985
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AssetGalleryComponent, deps: [{ token: ModalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13968
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: AssetGalleryComponent, selector: "vdr-asset-gallery", inputs: { assets: "assets", multiSelect: "multiSelect", canDelete: "canDelete" }, outputs: { selectionChange: "selectionChange", deleteAssets: "deleteAssets" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"gallery\">\r\n <div\r\n class=\"card\"\r\n *ngFor=\"let asset of assets\"\r\n (click)=\"toggleSelection(asset, $event)\"\r\n [class.selected]=\"isSelected(asset)\"\r\n >\r\n <div class=\"card-img\">\r\n <vdr-select-toggle\r\n [selected]=\"isSelected(asset)\"\r\n [disabled]=\"true\"\r\n [hiddenWhenOff]=\"true\"\r\n ></vdr-select-toggle>\r\n <img class=\"asset-thumb\" [src]=\"asset | assetPreview : 'thumb'\" />\r\n </div>\r\n <div class=\"detail\">\r\n <vdr-entity-info\r\n [entity]=\"asset\"\r\n [small]=\"true\"\r\n (click)=\"entityInfoClick($event)\"\r\n ></vdr-entity-info>\r\n <span [title]=\"asset.name\">{{ asset.name }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"info-bar\">\r\n <div class=\"card\">\r\n <div class=\"card-img\">\r\n <div class=\"placeholder\" *ngIf=\"selectionManager.selection.length === 0\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n <div>{{ 'catalog.no-selection' | translate }}</div>\r\n </div>\r\n <img\r\n class=\"preview\"\r\n *ngIf=\"selectionManager.selection.length >= 1\"\r\n [src]=\"lastSelected().preview + '?preset=medium'\"\r\n />\r\n </div>\r\n <div class=\"card-block details\" *ngIf=\"selectionManager.selection.length >= 1\">\r\n <div class=\"name\">{{ lastSelected().name }}</div>\r\n <div>{{ 'asset.original-asset-size' | translate }}: {{ lastSelected().fileSize | filesize }}</div>\r\n\r\n <ng-container *ngIf=\"selectionManager.selection.length === 1\">\r\n <vdr-chip *ngFor=\"let tag of lastSelected().tags\" [colorFrom]=\"tag.value\"\r\n ><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ tag.value }}</vdr-chip\r\n >\r\n <div>\r\n <a [routerLink]=\"['./', lastSelected().id]\" class=\"button-ghost\">\r\n <clr-icon shape=\"pencil\"></clr-icon> {{ 'common.edit' | translate }}\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </div>\r\n <div>\r\n <button (click)=\"previewAsset(lastSelected())\" class=\"button-small mt-1\">\r\n <clr-icon shape=\"eye\"></clr-icon> {{ 'asset.preview' | translate }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"canDelete\">\r\n <button (click)=\"deleteAssets.emit(selectionManager.selection)\" class=\"button-small mt-1\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"mt-1\">\r\n <vdr-asset-preview-links class=\"\" [asset]=\"lastSelected()\"></vdr-asset-preview-links>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"card stack\" [class.visible]=\"selectionManager.selection.length > 1\"></div>\r\n <div class=\"selection-count\" [class.visible]=\"selectionManager.selection.length > 1\">\r\n {{ 'asset.assets-selected-count' | translate : { count: selectionManager.selection.length } }}\r\n <ul>\r\n <li *ngFor=\"let asset of selectionManager.selection\">{{ asset.name }}</li>\r\n </ul>\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex}.gallery{flex:1;display:grid;grid-template-columns:repeat(auto-fill,150px);grid-template-rows:repeat(auto-fill,180px);grid-gap:10px 20px}.gallery .card:hover{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card{margin-top:0;position:relative}img.asset-thumb{aspect-ratio:1}vdr-select-toggle{position:absolute;top:-12px;left:-12px}vdr-select-toggle ::ng-deep .toggle{box-shadow:0 5px 5px -4px #000000bf}.card.selected{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card.selected .selected-checkbox{opacity:1}.detail{display:flex;align-items:center;gap:4px;font-size:12px;margin:3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.detail vdr-entity-info{height:16px}.info-bar{
|
|
13986
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: AssetGalleryComponent, selector: "vdr-asset-gallery", inputs: { assets: "assets", multiSelect: "multiSelect", canDelete: "canDelete" }, outputs: { selectionChange: "selectionChange", deleteAssets: "deleteAssets" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"gallery\">\r\n <div\r\n class=\"card\"\r\n *ngFor=\"let asset of assets\"\r\n (click)=\"toggleSelection(asset, $event)\"\r\n [class.selected]=\"isSelected(asset)\"\r\n >\r\n <div class=\"card-img\">\r\n <vdr-select-toggle\r\n [selected]=\"isSelected(asset)\"\r\n [disabled]=\"true\"\r\n [hiddenWhenOff]=\"true\"\r\n ></vdr-select-toggle>\r\n <img class=\"asset-thumb\" [src]=\"asset | assetPreview : 'thumb'\" />\r\n </div>\r\n <div class=\"detail\">\r\n <vdr-entity-info\r\n [entity]=\"asset\"\r\n [small]=\"true\"\r\n (click)=\"entityInfoClick($event)\"\r\n ></vdr-entity-info>\r\n <span [title]=\"asset.name\">{{ asset.name }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"info-bar\">\r\n <div class=\"card\">\r\n <div class=\"card-img\">\r\n <div class=\"placeholder\" *ngIf=\"selectionManager.selection.length === 0\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n <div>{{ 'catalog.no-selection' | translate }}</div>\r\n </div>\r\n <img\r\n class=\"preview\"\r\n *ngIf=\"selectionManager.selection.length >= 1\"\r\n [src]=\"lastSelected().preview + '?preset=medium'\"\r\n />\r\n </div>\r\n <div class=\"card-block details\" *ngIf=\"selectionManager.selection.length >= 1\">\r\n <div class=\"name\">{{ lastSelected().name }}</div>\r\n <div>{{ 'asset.original-asset-size' | translate }}: {{ lastSelected().fileSize | filesize }}</div>\r\n\r\n <ng-container *ngIf=\"selectionManager.selection.length === 1\">\r\n <vdr-chip *ngFor=\"let tag of lastSelected().tags\" [colorFrom]=\"tag.value\"\r\n ><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ tag.value }}</vdr-chip\r\n >\r\n <div>\r\n <a [routerLink]=\"['./', lastSelected().id]\" class=\"button-ghost\">\r\n <clr-icon shape=\"pencil\"></clr-icon> {{ 'common.edit' | translate }}\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </div>\r\n <div>\r\n <button (click)=\"previewAsset(lastSelected())\" class=\"button-small mt-1\">\r\n <clr-icon shape=\"eye\"></clr-icon> {{ 'asset.preview' | translate }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"canDelete\">\r\n <button (click)=\"deleteAssets.emit(selectionManager.selection)\" class=\"button-small mt-1\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"mt-1\">\r\n <vdr-asset-preview-links class=\"\" [asset]=\"lastSelected()\"></vdr-asset-preview-links>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"card stack\" [class.visible]=\"selectionManager.selection.length > 1\"></div>\r\n <div class=\"selection-count\" [class.visible]=\"selectionManager.selection.length > 1\">\r\n {{ 'asset.assets-selected-count' | translate : { count: selectionManager.selection.length } }}\r\n <ul>\r\n <li *ngFor=\"let asset of selectionManager.selection\">{{ asset.name }}</li>\r\n </ul>\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column-reverse}@media screen and (min-width: 992px){:host{flex-direction:row}}.gallery{flex:1;display:grid;grid-template-columns:repeat(auto-fill,150px);grid-template-rows:repeat(auto-fill,180px);grid-gap:10px 20px}.gallery .card:hover{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card{margin-top:0;position:relative}img.asset-thumb{aspect-ratio:1}vdr-select-toggle{position:absolute;top:-12px;left:-12px}vdr-select-toggle ::ng-deep .toggle{box-shadow:0 5px 5px -4px #000000bf}.card.selected{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card.selected .selected-checkbox{opacity:1}.detail{display:flex;align-items:center;gap:4px;font-size:12px;margin:3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.detail vdr-entity-info{height:16px}.info-bar{padding:0 6px;overflow-y:auto}@media screen and (min-width: 992px){.info-bar{width:25%}}.info-bar .card{z-index:1}.info-bar .stack{z-index:0;opacity:0;transform:perspective(500px) translateZ(0) translateY(-16px);height:16px;transition:transform .3s,opacity 0s .3s;background-color:#fff}.info-bar .stack.visible{opacity:1;transform:perspective(500px) translateZ(-44px) translateY(0);background-color:var(--color-component-bg-100);transition:transform .3s,color .3s}.info-bar .selection-count{opacity:0;position:relative;text-align:center;visibility:hidden;transition:opacity .3s,visibility 0s .3s}.info-bar .selection-count.visible{opacity:1;visibility:visible;transition:opacity .3s,visibility 0s}.info-bar .selection-count ul{text-align:left;list-style-type:none;margin-left:12px}.info-bar .selection-count ul li{font-size:12px}.info-bar .placeholder{text-align:center;color:var(--color-grey-300)}.info-bar .preview img{max-width:100%}.info-bar .details{font-size:12px;word-break:break-all}.info-bar .name{line-height:14px;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1$4.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "component", type: SelectToggleComponent, selector: "vdr-select-toggle", inputs: ["size", "selected", "hiddenWhenOff", "disabled", "label"], outputs: ["selectedChange"] }, { kind: "component", type: EntityInfoComponent, selector: "vdr-entity-info", inputs: ["small", "entity"] }, { kind: "component", type: AssetPreviewLinksComponent, selector: "vdr-asset-preview-links", inputs: ["asset"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: FileSizePipe, name: "filesize" }, { kind: "pipe", type: AssetPreviewPipe, name: "assetPreview" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
13969
13987
|
}
|
|
13970
13988
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AssetGalleryComponent, decorators: [{
|
|
13971
13989
|
type: Component,
|
|
13972
|
-
args: [{ selector: 'vdr-asset-gallery', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"gallery\">\r\n <div\r\n class=\"card\"\r\n *ngFor=\"let asset of assets\"\r\n (click)=\"toggleSelection(asset, $event)\"\r\n [class.selected]=\"isSelected(asset)\"\r\n >\r\n <div class=\"card-img\">\r\n <vdr-select-toggle\r\n [selected]=\"isSelected(asset)\"\r\n [disabled]=\"true\"\r\n [hiddenWhenOff]=\"true\"\r\n ></vdr-select-toggle>\r\n <img class=\"asset-thumb\" [src]=\"asset | assetPreview : 'thumb'\" />\r\n </div>\r\n <div class=\"detail\">\r\n <vdr-entity-info\r\n [entity]=\"asset\"\r\n [small]=\"true\"\r\n (click)=\"entityInfoClick($event)\"\r\n ></vdr-entity-info>\r\n <span [title]=\"asset.name\">{{ asset.name }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"info-bar\">\r\n <div class=\"card\">\r\n <div class=\"card-img\">\r\n <div class=\"placeholder\" *ngIf=\"selectionManager.selection.length === 0\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n <div>{{ 'catalog.no-selection' | translate }}</div>\r\n </div>\r\n <img\r\n class=\"preview\"\r\n *ngIf=\"selectionManager.selection.length >= 1\"\r\n [src]=\"lastSelected().preview + '?preset=medium'\"\r\n />\r\n </div>\r\n <div class=\"card-block details\" *ngIf=\"selectionManager.selection.length >= 1\">\r\n <div class=\"name\">{{ lastSelected().name }}</div>\r\n <div>{{ 'asset.original-asset-size' | translate }}: {{ lastSelected().fileSize | filesize }}</div>\r\n\r\n <ng-container *ngIf=\"selectionManager.selection.length === 1\">\r\n <vdr-chip *ngFor=\"let tag of lastSelected().tags\" [colorFrom]=\"tag.value\"\r\n ><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ tag.value }}</vdr-chip\r\n >\r\n <div>\r\n <a [routerLink]=\"['./', lastSelected().id]\" class=\"button-ghost\">\r\n <clr-icon shape=\"pencil\"></clr-icon> {{ 'common.edit' | translate }}\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </div>\r\n <div>\r\n <button (click)=\"previewAsset(lastSelected())\" class=\"button-small mt-1\">\r\n <clr-icon shape=\"eye\"></clr-icon> {{ 'asset.preview' | translate }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"canDelete\">\r\n <button (click)=\"deleteAssets.emit(selectionManager.selection)\" class=\"button-small mt-1\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"mt-1\">\r\n <vdr-asset-preview-links class=\"\" [asset]=\"lastSelected()\"></vdr-asset-preview-links>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"card stack\" [class.visible]=\"selectionManager.selection.length > 1\"></div>\r\n <div class=\"selection-count\" [class.visible]=\"selectionManager.selection.length > 1\">\r\n {{ 'asset.assets-selected-count' | translate : { count: selectionManager.selection.length } }}\r\n <ul>\r\n <li *ngFor=\"let asset of selectionManager.selection\">{{ asset.name }}</li>\r\n </ul>\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex}.gallery{flex:1;display:grid;grid-template-columns:repeat(auto-fill,150px);grid-template-rows:repeat(auto-fill,180px);grid-gap:10px 20px}.gallery .card:hover{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card{margin-top:0;position:relative}img.asset-thumb{aspect-ratio:1}vdr-select-toggle{position:absolute;top:-12px;left:-12px}vdr-select-toggle ::ng-deep .toggle{box-shadow:0 5px 5px -4px #000000bf}.card.selected{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card.selected .selected-checkbox{opacity:1}.detail{display:flex;align-items:center;gap:4px;font-size:12px;margin:3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.detail vdr-entity-info{height:16px}.info-bar{
|
|
13990
|
+
args: [{ selector: 'vdr-asset-gallery', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"gallery\">\r\n <div\r\n class=\"card\"\r\n *ngFor=\"let asset of assets\"\r\n (click)=\"toggleSelection(asset, $event)\"\r\n [class.selected]=\"isSelected(asset)\"\r\n >\r\n <div class=\"card-img\">\r\n <vdr-select-toggle\r\n [selected]=\"isSelected(asset)\"\r\n [disabled]=\"true\"\r\n [hiddenWhenOff]=\"true\"\r\n ></vdr-select-toggle>\r\n <img class=\"asset-thumb\" [src]=\"asset | assetPreview : 'thumb'\" />\r\n </div>\r\n <div class=\"detail\">\r\n <vdr-entity-info\r\n [entity]=\"asset\"\r\n [small]=\"true\"\r\n (click)=\"entityInfoClick($event)\"\r\n ></vdr-entity-info>\r\n <span [title]=\"asset.name\">{{ asset.name }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"info-bar\">\r\n <div class=\"card\">\r\n <div class=\"card-img\">\r\n <div class=\"placeholder\" *ngIf=\"selectionManager.selection.length === 0\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n <div>{{ 'catalog.no-selection' | translate }}</div>\r\n </div>\r\n <img\r\n class=\"preview\"\r\n *ngIf=\"selectionManager.selection.length >= 1\"\r\n [src]=\"lastSelected().preview + '?preset=medium'\"\r\n />\r\n </div>\r\n <div class=\"card-block details\" *ngIf=\"selectionManager.selection.length >= 1\">\r\n <div class=\"name\">{{ lastSelected().name }}</div>\r\n <div>{{ 'asset.original-asset-size' | translate }}: {{ lastSelected().fileSize | filesize }}</div>\r\n\r\n <ng-container *ngIf=\"selectionManager.selection.length === 1\">\r\n <vdr-chip *ngFor=\"let tag of lastSelected().tags\" [colorFrom]=\"tag.value\"\r\n ><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ tag.value }}</vdr-chip\r\n >\r\n <div>\r\n <a [routerLink]=\"['./', lastSelected().id]\" class=\"button-ghost\">\r\n <clr-icon shape=\"pencil\"></clr-icon> {{ 'common.edit' | translate }}\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </div>\r\n <div>\r\n <button (click)=\"previewAsset(lastSelected())\" class=\"button-small mt-1\">\r\n <clr-icon shape=\"eye\"></clr-icon> {{ 'asset.preview' | translate }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"canDelete\">\r\n <button (click)=\"deleteAssets.emit(selectionManager.selection)\" class=\"button-small mt-1\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"mt-1\">\r\n <vdr-asset-preview-links class=\"\" [asset]=\"lastSelected()\"></vdr-asset-preview-links>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"card stack\" [class.visible]=\"selectionManager.selection.length > 1\"></div>\r\n <div class=\"selection-count\" [class.visible]=\"selectionManager.selection.length > 1\">\r\n {{ 'asset.assets-selected-count' | translate : { count: selectionManager.selection.length } }}\r\n <ul>\r\n <li *ngFor=\"let asset of selectionManager.selection\">{{ asset.name }}</li>\r\n </ul>\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column-reverse}@media screen and (min-width: 992px){:host{flex-direction:row}}.gallery{flex:1;display:grid;grid-template-columns:repeat(auto-fill,150px);grid-template-rows:repeat(auto-fill,180px);grid-gap:10px 20px}.gallery .card:hover{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card{margin-top:0;position:relative}img.asset-thumb{aspect-ratio:1}vdr-select-toggle{position:absolute;top:-12px;left:-12px}vdr-select-toggle ::ng-deep .toggle{box-shadow:0 5px 5px -4px #000000bf}.card.selected{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card.selected .selected-checkbox{opacity:1}.detail{display:flex;align-items:center;gap:4px;font-size:12px;margin:3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.detail vdr-entity-info{height:16px}.info-bar{padding:0 6px;overflow-y:auto}@media screen and (min-width: 992px){.info-bar{width:25%}}.info-bar .card{z-index:1}.info-bar .stack{z-index:0;opacity:0;transform:perspective(500px) translateZ(0) translateY(-16px);height:16px;transition:transform .3s,opacity 0s .3s;background-color:#fff}.info-bar .stack.visible{opacity:1;transform:perspective(500px) translateZ(-44px) translateY(0);background-color:var(--color-component-bg-100);transition:transform .3s,color .3s}.info-bar .selection-count{opacity:0;position:relative;text-align:center;visibility:hidden;transition:opacity .3s,visibility 0s .3s}.info-bar .selection-count.visible{opacity:1;visibility:visible;transition:opacity .3s,visibility 0s}.info-bar .selection-count ul{text-align:left;list-style-type:none;margin-left:12px}.info-bar .selection-count ul li{font-size:12px}.info-bar .placeholder{text-align:center;color:var(--color-grey-300)}.info-bar .preview img{max-width:100%}.info-bar .details{font-size:12px;word-break:break-all}.info-bar .name{line-height:14px;font-weight:700}\n"] }]
|
|
13973
13991
|
}], ctorParameters: function () { return [{ type: ModalService }]; }, propDecorators: { assets: [{
|
|
13974
13992
|
type: Input
|
|
13975
13993
|
}], multiSelect: [{
|
|
@@ -18209,7 +18227,7 @@ class PageService {
|
|
|
18209
18227
|
if (isComponentWithResolver(config.component)) {
|
|
18210
18228
|
const { component: cmp, breadcrumbFn, resolveFn } = config.component;
|
|
18211
18229
|
component = cmp;
|
|
18212
|
-
route.resolve = { detail:
|
|
18230
|
+
route.resolve = { detail: resolveFn };
|
|
18213
18231
|
route.data = {
|
|
18214
18232
|
breadcrumb: data => data.detail.entity.pipe(map(entity => breadcrumbFn(entity))),
|
|
18215
18233
|
};
|
|
@@ -18220,6 +18238,9 @@ class PageService {
|
|
|
18220
18238
|
const guards = typeof component.prototype.canDeactivate === 'function' ? [CanDeactivateDetailGuard] : [];
|
|
18221
18239
|
route.component = component;
|
|
18222
18240
|
route.canDeactivate = guards;
|
|
18241
|
+
if (config.routeConfig) {
|
|
18242
|
+
Object.assign(route, config.routeConfig);
|
|
18243
|
+
}
|
|
18223
18244
|
return route;
|
|
18224
18245
|
});
|
|
18225
18246
|
}
|
|
@@ -18891,6 +18912,7 @@ function calculateDistance(x1, x2) {
|
|
|
18891
18912
|
class ChartComponent {
|
|
18892
18913
|
constructor() {
|
|
18893
18914
|
this.entries = [];
|
|
18915
|
+
this.options = {};
|
|
18894
18916
|
}
|
|
18895
18917
|
ngOnInit() {
|
|
18896
18918
|
this.chart = new LineChart(this.chartDivRef.nativeElement, this.entriesToLineChartData(this.entries ?? []), {
|
|
@@ -18909,6 +18931,7 @@ class ChartComponent {
|
|
|
18909
18931
|
offset: 1,
|
|
18910
18932
|
},
|
|
18911
18933
|
plugins: [tooltipPlugin()],
|
|
18934
|
+
...this.options,
|
|
18912
18935
|
});
|
|
18913
18936
|
this.chart.on('draw', data => {
|
|
18914
18937
|
if (data.type === 'line' || data.type === 'area') {
|
|
@@ -18961,13 +18984,15 @@ class ChartComponent {
|
|
|
18961
18984
|
return { labels, series };
|
|
18962
18985
|
}
|
|
18963
18986
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18964
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: ChartComponent, selector: "vdr-chart", inputs: { entries: "entries" }, viewQueries: [{ propertyName: "chartDivRef", first: true, predicate: ["chartDiv"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"chart\" style=\"height: 20vh; min-height: 300px;\" #chartDiv></div>\r\n", styles: ["::ng-deep .ct-label{fill:#0006;color:#0006;font-size:.75rem;line-height:1}::ng-deep .ct-chart-line .ct-label,::ng-deep .ct-chart-bar .ct-label{display:flex}::ng-deep .ct-chart-pie .ct-label,::ng-deep .ct-chart-donut .ct-label{dominant-baseline:central}::ng-deep .ct-label.ct-horizontal.ct-start{align-items:flex-end;justify-content:flex-start;text-align:left}::ng-deep .ct-label.ct-horizontal.ct-end{align-items:flex-start;justify-content:flex-start;text-align:left}::ng-deep .ct-label.ct-vertical.ct-start{align-items:flex-end;justify-content:flex-end;text-align:right}::ng-deep .ct-label.ct-vertical.ct-end{align-items:flex-end;justify-content:flex-start;text-align:left}::ng-deep .ct-chart-bar .ct-label.ct-horizontal.ct-start{align-items:flex-end;justify-content:center;text-align:center}::ng-deep .ct-chart-bar .ct-label.ct-horizontal.ct-end{align-items:flex-start;justify-content:center;text-align:center}::ng-deep .ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start{align-items:flex-end;justify-content:flex-start;text-align:left}::ng-deep .ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end{align-items:flex-start;justify-content:flex-start;text-align:left}::ng-deep .ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start{align-items:center;justify-content:flex-end;text-align:right}::ng-deep .ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end{align-items:center;justify-content:flex-start;text-align:left}::ng-deep .ct-grid{stroke:#0003;stroke-width:1px;stroke-dasharray:2px}::ng-deep .ct-grid-background{fill:none}::ng-deep .ct-point{stroke-width:10px;stroke-linecap:round}::ng-deep .ct-line{fill:none;stroke-width:2px}::ng-deep .ct-area{stroke:none;fill-opacity:.5}::ng-deep .ct-bar{fill:none;stroke-width:10px}::ng-deep .ct-slice-donut{fill:none;stroke-width:60px}::ng-deep .ct-series-a .ct-point,::ng-deep .ct-series-a .ct-line,::ng-deep .ct-series-a .ct-bar,::ng-deep .ct-series-a .ct-slice-donut{stroke:var(--color-primary-300)}::ng-deep .ct-series-a .ct-slice-pie,::ng-deep .ct-series-a .ct-area{fill:var(--color-primary-300)}::ng-deep .ct-series-b .ct-point,::ng-deep .ct-series-b .ct-line,::ng-deep .ct-series-b .ct-bar,::ng-deep .ct-series-b .ct-slice-donut{stroke:var(--color-accent-300)}::ng-deep .ct-series-b .ct-slice-pie,::ng-deep .ct-series-b .ct-area{fill:var(--color-accent-300)}::ng-deep .ct-series-c .ct-point,::ng-deep .ct-series-c .ct-line,::ng-deep .ct-series-c .ct-bar,::ng-deep .ct-series-c .ct-slice-donut{stroke:var(--color-primary-800)}::ng-deep .ct-series-c .ct-slice-pie,::ng-deep .ct-series-c .ct-area{fill:var(--color-primary-800)}::ng-deep .ct-series-d .ct-point,::ng-deep .ct-series-d .ct-line,::ng-deep .ct-series-d .ct-bar,::ng-deep .ct-series-d .ct-slice-donut{stroke:var(--color-accent-800)}::ng-deep .ct-series-d .ct-slice-pie,::ng-deep .ct-series-d .ct-area{fill:var(--color-accent-800)}::ng-deep .ct-series-e .ct-point,::ng-deep .ct-series-e .ct-line,::ng-deep .ct-series-e .ct-bar,::ng-deep .ct-series-e .ct-slice-donut{stroke:#453d3f}::ng-deep .ct-series-e .ct-slice-pie,::ng-deep .ct-series-e .ct-area{fill:#453d3f}::ng-deep .ct-series-f .ct-point,::ng-deep .ct-series-f .ct-line,::ng-deep .ct-series-f .ct-bar,::ng-deep .ct-series-f .ct-slice-donut{stroke:#59922b}::ng-deep .ct-series-f .ct-slice-pie,::ng-deep .ct-series-f .ct-area{fill:#59922b}::ng-deep .ct-series-g .ct-point,::ng-deep .ct-series-g .ct-line,::ng-deep .ct-series-g .ct-bar,::ng-deep .ct-series-g .ct-slice-donut{stroke:#0544d3}::ng-deep .ct-series-g .ct-slice-pie,::ng-deep .ct-series-g .ct-area{fill:#0544d3}::ng-deep .ct-series-h .ct-point,::ng-deep .ct-series-h .ct-line,::ng-deep .ct-series-h .ct-bar,::ng-deep .ct-series-h .ct-slice-donut{stroke:#6b0392}::ng-deep .ct-series-h .ct-slice-pie,::ng-deep .ct-series-h .ct-area{fill:#6b0392}::ng-deep .ct-series-i .ct-point,::ng-deep .ct-series-i .ct-line,::ng-deep .ct-series-i .ct-bar,::ng-deep .ct-series-i .ct-slice-donut{stroke:#e6805e}::ng-deep .ct-series-i .ct-slice-pie,::ng-deep .ct-series-i .ct-area{fill:#e6805e}::ng-deep .ct-series-j .ct-point,::ng-deep .ct-series-j .ct-line,::ng-deep .ct-series-j .ct-bar,::ng-deep .ct-series-j .ct-slice-donut{stroke:#dda458}::ng-deep .ct-series-j .ct-slice-pie,::ng-deep .ct-series-j .ct-area{fill:#dda458}::ng-deep .ct-series-k .ct-point,::ng-deep .ct-series-k .ct-line,::ng-deep .ct-series-k .ct-bar,::ng-deep .ct-series-k .ct-slice-donut{stroke:#eacf7d}::ng-deep .ct-series-k .ct-slice-pie,::ng-deep .ct-series-k .ct-area{fill:#eacf7d}::ng-deep .ct-series-l .ct-point,::ng-deep .ct-series-l .ct-line,::ng-deep .ct-series-l .ct-bar,::ng-deep .ct-series-l .ct-slice-donut{stroke:#86797d}::ng-deep .ct-series-l .ct-slice-pie,::ng-deep .ct-series-l .ct-area{fill:#86797d}::ng-deep .ct-series-m .ct-point,::ng-deep .ct-series-m .ct-line,::ng-deep .ct-series-m .ct-bar,::ng-deep .ct-series-m .ct-slice-donut{stroke:#b2c326}::ng-deep .ct-series-m .ct-slice-pie,::ng-deep .ct-series-m .ct-area{fill:#b2c326}::ng-deep .ct-series-n .ct-point,::ng-deep .ct-series-n .ct-line,::ng-deep .ct-series-n .ct-bar,::ng-deep .ct-series-n .ct-slice-donut{stroke:#6188e2}::ng-deep .ct-series-n .ct-slice-pie,::ng-deep .ct-series-n .ct-area{fill:#6188e2}::ng-deep .ct-series-o .ct-point,::ng-deep .ct-series-o .ct-line,::ng-deep .ct-series-o .ct-bar,::ng-deep .ct-series-o .ct-slice-donut{stroke:#a748ca}::ng-deep .ct-series-o .ct-slice-pie,::ng-deep .ct-series-o .ct-area{fill:#a748ca}::ng-deep .ct-square{display:block;position:relative;width:100%}::ng-deep .ct-square:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:100%}::ng-deep .ct-square:after{content:\"\";display:table;clear:both}::ng-deep .ct-square>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-minor-second{display:block;position:relative;width:100%}::ng-deep .ct-minor-second:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:93.75%}::ng-deep .ct-minor-second:after{content:\"\";display:table;clear:both}::ng-deep .ct-minor-second>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-second{display:block;position:relative;width:100%}::ng-deep .ct-major-second:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:88.8888888889%}::ng-deep .ct-major-second:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-second>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-minor-third{display:block;position:relative;width:100%}::ng-deep .ct-minor-third:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:83.3333333333%}::ng-deep .ct-minor-third:after{content:\"\";display:table;clear:both}::ng-deep .ct-minor-third>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-third{display:block;position:relative;width:100%}::ng-deep .ct-major-third:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:80%}::ng-deep .ct-major-third:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-third>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-perfect-fourth{display:block;position:relative;width:100%}::ng-deep .ct-perfect-fourth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:75%}::ng-deep .ct-perfect-fourth:after{content:\"\";display:table;clear:both}::ng-deep .ct-perfect-fourth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-perfect-fifth{display:block;position:relative;width:100%}::ng-deep .ct-perfect-fifth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:66.6666666667%}::ng-deep .ct-perfect-fifth:after{content:\"\";display:table;clear:both}::ng-deep .ct-perfect-fifth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-minor-sixth{display:block;position:relative;width:100%}::ng-deep .ct-minor-sixth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:62.5%}::ng-deep .ct-minor-sixth:after{content:\"\";display:table;clear:both}::ng-deep .ct-minor-sixth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-golden-section{display:block;position:relative;width:100%}::ng-deep .ct-golden-section:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:61.804697157%}::ng-deep .ct-golden-section:after{content:\"\";display:table;clear:both}::ng-deep .ct-golden-section>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-sixth{display:block;position:relative;width:100%}::ng-deep .ct-major-sixth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:60%}::ng-deep .ct-major-sixth:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-sixth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-minor-seventh{display:block;position:relative;width:100%}::ng-deep .ct-minor-seventh:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:56.25%}::ng-deep .ct-minor-seventh:after{content:\"\";display:table;clear:both}::ng-deep .ct-minor-seventh>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-seventh{display:block;position:relative;width:100%}::ng-deep .ct-major-seventh:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:53.3333333333%}::ng-deep .ct-major-seventh:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-seventh>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-octave{display:block;position:relative;width:100%}::ng-deep .ct-octave:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:50%}::ng-deep .ct-octave:after{content:\"\";display:table;clear:both}::ng-deep .ct-octave>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-tenth{display:block;position:relative;width:100%}::ng-deep .ct-major-tenth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:40%}::ng-deep .ct-major-tenth:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-tenth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-eleventh{display:block;position:relative;width:100%}::ng-deep .ct-major-eleventh:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:37.5%}::ng-deep .ct-major-eleventh:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-eleventh>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-twelfth{display:block;position:relative;width:100%}::ng-deep .ct-major-twelfth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:33.3333333333%}::ng-deep .ct-major-twelfth:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-twelfth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-double-octave{display:block;position:relative;width:100%}::ng-deep .ct-double-octave:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:25%}::ng-deep .ct-double-octave:after{content:\"\";display:table;clear:both}::ng-deep .ct-double-octave>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-series-a .ct-slice-pie,::ng-deep .ct-series-a .ct-area{fill:url(#gradient)}::ng-deep .ct-point{opacity:0;transition:opacity .1s}::ng-deep .chartist-tooltip{position:absolute;border-radius:var(--border-radius);border:1px solid var(--color-weight-100);padding:4px;opacity:0;transition:opacity .1s,top .1s,left .1s;font-size:12px;background:var(--color-component-bg-100);box-shadow:0 2px 4px #0000000d;text-align:center}::ng-deep .chartist-tooltip.tooltip-show{opacity:.9}::ng-deep .ct-tooltip-hover{opacity:1}::ng-deep .tooltip-date{color:var(--color-text-200)}::ng-deep .tooltip-value{color:var(--color-primary-600);font-size:14px;text-align:center}:host{display:block;padding-bottom:28px}#chart{position:relative}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
18987
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: ChartComponent, selector: "vdr-chart", inputs: { entries: "entries", options: "options" }, viewQueries: [{ propertyName: "chartDivRef", first: true, predicate: ["chartDiv"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"chart\" style=\"height: 20vh; min-height: 300px;\" #chartDiv></div>\r\n", styles: ["::ng-deep .ct-label{fill:#0006;color:#0006;font-size:.75rem;line-height:1}::ng-deep .ct-chart-line .ct-label,::ng-deep .ct-chart-bar .ct-label{display:flex}::ng-deep .ct-chart-pie .ct-label,::ng-deep .ct-chart-donut .ct-label{dominant-baseline:central}::ng-deep .ct-label.ct-horizontal.ct-start{align-items:flex-end;justify-content:flex-start;text-align:left}::ng-deep .ct-label.ct-horizontal.ct-end{align-items:flex-start;justify-content:flex-start;text-align:left}::ng-deep .ct-label.ct-vertical.ct-start{align-items:flex-end;justify-content:flex-end;text-align:right}::ng-deep .ct-label.ct-vertical.ct-end{align-items:flex-end;justify-content:flex-start;text-align:left}::ng-deep .ct-chart-bar .ct-label.ct-horizontal.ct-start{align-items:flex-end;justify-content:center;text-align:center}::ng-deep .ct-chart-bar .ct-label.ct-horizontal.ct-end{align-items:flex-start;justify-content:center;text-align:center}::ng-deep .ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start{align-items:flex-end;justify-content:flex-start;text-align:left}::ng-deep .ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end{align-items:flex-start;justify-content:flex-start;text-align:left}::ng-deep .ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start{align-items:center;justify-content:flex-end;text-align:right}::ng-deep .ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end{align-items:center;justify-content:flex-start;text-align:left}::ng-deep .ct-grid{stroke:#0003;stroke-width:1px;stroke-dasharray:2px}::ng-deep .ct-grid-background{fill:none}::ng-deep .ct-point{stroke-width:10px;stroke-linecap:round}::ng-deep .ct-line{fill:none;stroke-width:2px}::ng-deep .ct-area{stroke:none;fill-opacity:.5}::ng-deep .ct-bar{fill:none;stroke-width:10px}::ng-deep .ct-slice-donut{fill:none;stroke-width:60px}::ng-deep .ct-series-a .ct-point,::ng-deep .ct-series-a .ct-line,::ng-deep .ct-series-a .ct-bar,::ng-deep .ct-series-a .ct-slice-donut{stroke:var(--color-primary-300)}::ng-deep .ct-series-a .ct-slice-pie,::ng-deep .ct-series-a .ct-area{fill:var(--color-primary-300)}::ng-deep .ct-series-b .ct-point,::ng-deep .ct-series-b .ct-line,::ng-deep .ct-series-b .ct-bar,::ng-deep .ct-series-b .ct-slice-donut{stroke:var(--color-accent-300)}::ng-deep .ct-series-b .ct-slice-pie,::ng-deep .ct-series-b .ct-area{fill:var(--color-accent-300)}::ng-deep .ct-series-c .ct-point,::ng-deep .ct-series-c .ct-line,::ng-deep .ct-series-c .ct-bar,::ng-deep .ct-series-c .ct-slice-donut{stroke:var(--color-primary-800)}::ng-deep .ct-series-c .ct-slice-pie,::ng-deep .ct-series-c .ct-area{fill:var(--color-primary-800)}::ng-deep .ct-series-d .ct-point,::ng-deep .ct-series-d .ct-line,::ng-deep .ct-series-d .ct-bar,::ng-deep .ct-series-d .ct-slice-donut{stroke:var(--color-accent-800)}::ng-deep .ct-series-d .ct-slice-pie,::ng-deep .ct-series-d .ct-area{fill:var(--color-accent-800)}::ng-deep .ct-series-e .ct-point,::ng-deep .ct-series-e .ct-line,::ng-deep .ct-series-e .ct-bar,::ng-deep .ct-series-e .ct-slice-donut{stroke:#453d3f}::ng-deep .ct-series-e .ct-slice-pie,::ng-deep .ct-series-e .ct-area{fill:#453d3f}::ng-deep .ct-series-f .ct-point,::ng-deep .ct-series-f .ct-line,::ng-deep .ct-series-f .ct-bar,::ng-deep .ct-series-f .ct-slice-donut{stroke:#59922b}::ng-deep .ct-series-f .ct-slice-pie,::ng-deep .ct-series-f .ct-area{fill:#59922b}::ng-deep .ct-series-g .ct-point,::ng-deep .ct-series-g .ct-line,::ng-deep .ct-series-g .ct-bar,::ng-deep .ct-series-g .ct-slice-donut{stroke:#0544d3}::ng-deep .ct-series-g .ct-slice-pie,::ng-deep .ct-series-g .ct-area{fill:#0544d3}::ng-deep .ct-series-h .ct-point,::ng-deep .ct-series-h .ct-line,::ng-deep .ct-series-h .ct-bar,::ng-deep .ct-series-h .ct-slice-donut{stroke:#6b0392}::ng-deep .ct-series-h .ct-slice-pie,::ng-deep .ct-series-h .ct-area{fill:#6b0392}::ng-deep .ct-series-i .ct-point,::ng-deep .ct-series-i .ct-line,::ng-deep .ct-series-i .ct-bar,::ng-deep .ct-series-i .ct-slice-donut{stroke:#e6805e}::ng-deep .ct-series-i .ct-slice-pie,::ng-deep .ct-series-i .ct-area{fill:#e6805e}::ng-deep .ct-series-j .ct-point,::ng-deep .ct-series-j .ct-line,::ng-deep .ct-series-j .ct-bar,::ng-deep .ct-series-j .ct-slice-donut{stroke:#dda458}::ng-deep .ct-series-j .ct-slice-pie,::ng-deep .ct-series-j .ct-area{fill:#dda458}::ng-deep .ct-series-k .ct-point,::ng-deep .ct-series-k .ct-line,::ng-deep .ct-series-k .ct-bar,::ng-deep .ct-series-k .ct-slice-donut{stroke:#eacf7d}::ng-deep .ct-series-k .ct-slice-pie,::ng-deep .ct-series-k .ct-area{fill:#eacf7d}::ng-deep .ct-series-l .ct-point,::ng-deep .ct-series-l .ct-line,::ng-deep .ct-series-l .ct-bar,::ng-deep .ct-series-l .ct-slice-donut{stroke:#86797d}::ng-deep .ct-series-l .ct-slice-pie,::ng-deep .ct-series-l .ct-area{fill:#86797d}::ng-deep .ct-series-m .ct-point,::ng-deep .ct-series-m .ct-line,::ng-deep .ct-series-m .ct-bar,::ng-deep .ct-series-m .ct-slice-donut{stroke:#b2c326}::ng-deep .ct-series-m .ct-slice-pie,::ng-deep .ct-series-m .ct-area{fill:#b2c326}::ng-deep .ct-series-n .ct-point,::ng-deep .ct-series-n .ct-line,::ng-deep .ct-series-n .ct-bar,::ng-deep .ct-series-n .ct-slice-donut{stroke:#6188e2}::ng-deep .ct-series-n .ct-slice-pie,::ng-deep .ct-series-n .ct-area{fill:#6188e2}::ng-deep .ct-series-o .ct-point,::ng-deep .ct-series-o .ct-line,::ng-deep .ct-series-o .ct-bar,::ng-deep .ct-series-o .ct-slice-donut{stroke:#a748ca}::ng-deep .ct-series-o .ct-slice-pie,::ng-deep .ct-series-o .ct-area{fill:#a748ca}::ng-deep .ct-square{display:block;position:relative;width:100%}::ng-deep .ct-square:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:100%}::ng-deep .ct-square:after{content:\"\";display:table;clear:both}::ng-deep .ct-square>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-minor-second{display:block;position:relative;width:100%}::ng-deep .ct-minor-second:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:93.75%}::ng-deep .ct-minor-second:after{content:\"\";display:table;clear:both}::ng-deep .ct-minor-second>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-second{display:block;position:relative;width:100%}::ng-deep .ct-major-second:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:88.8888888889%}::ng-deep .ct-major-second:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-second>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-minor-third{display:block;position:relative;width:100%}::ng-deep .ct-minor-third:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:83.3333333333%}::ng-deep .ct-minor-third:after{content:\"\";display:table;clear:both}::ng-deep .ct-minor-third>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-third{display:block;position:relative;width:100%}::ng-deep .ct-major-third:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:80%}::ng-deep .ct-major-third:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-third>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-perfect-fourth{display:block;position:relative;width:100%}::ng-deep .ct-perfect-fourth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:75%}::ng-deep .ct-perfect-fourth:after{content:\"\";display:table;clear:both}::ng-deep .ct-perfect-fourth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-perfect-fifth{display:block;position:relative;width:100%}::ng-deep .ct-perfect-fifth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:66.6666666667%}::ng-deep .ct-perfect-fifth:after{content:\"\";display:table;clear:both}::ng-deep .ct-perfect-fifth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-minor-sixth{display:block;position:relative;width:100%}::ng-deep .ct-minor-sixth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:62.5%}::ng-deep .ct-minor-sixth:after{content:\"\";display:table;clear:both}::ng-deep .ct-minor-sixth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-golden-section{display:block;position:relative;width:100%}::ng-deep .ct-golden-section:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:61.804697157%}::ng-deep .ct-golden-section:after{content:\"\";display:table;clear:both}::ng-deep .ct-golden-section>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-sixth{display:block;position:relative;width:100%}::ng-deep .ct-major-sixth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:60%}::ng-deep .ct-major-sixth:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-sixth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-minor-seventh{display:block;position:relative;width:100%}::ng-deep .ct-minor-seventh:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:56.25%}::ng-deep .ct-minor-seventh:after{content:\"\";display:table;clear:both}::ng-deep .ct-minor-seventh>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-seventh{display:block;position:relative;width:100%}::ng-deep .ct-major-seventh:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:53.3333333333%}::ng-deep .ct-major-seventh:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-seventh>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-octave{display:block;position:relative;width:100%}::ng-deep .ct-octave:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:50%}::ng-deep .ct-octave:after{content:\"\";display:table;clear:both}::ng-deep .ct-octave>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-tenth{display:block;position:relative;width:100%}::ng-deep .ct-major-tenth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:40%}::ng-deep .ct-major-tenth:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-tenth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-eleventh{display:block;position:relative;width:100%}::ng-deep .ct-major-eleventh:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:37.5%}::ng-deep .ct-major-eleventh:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-eleventh>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-twelfth{display:block;position:relative;width:100%}::ng-deep .ct-major-twelfth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:33.3333333333%}::ng-deep .ct-major-twelfth:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-twelfth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-double-octave{display:block;position:relative;width:100%}::ng-deep .ct-double-octave:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:25%}::ng-deep .ct-double-octave:after{content:\"\";display:table;clear:both}::ng-deep .ct-double-octave>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-series-a .ct-slice-pie,::ng-deep .ct-series-a .ct-area{fill:url(#gradient)}::ng-deep .ct-point{opacity:0;transition:opacity .1s}::ng-deep .chartist-tooltip{position:absolute;border-radius:var(--border-radius);border:1px solid var(--color-weight-100);padding:4px;opacity:0;transition:opacity .1s,top .1s,left .1s;font-size:12px;background:var(--color-component-bg-100);box-shadow:0 2px 4px #0000000d;text-align:center}::ng-deep .chartist-tooltip.tooltip-show{opacity:.9}::ng-deep .ct-tooltip-hover{opacity:1}::ng-deep .tooltip-date{color:var(--color-text-200)}::ng-deep .tooltip-value{color:var(--color-primary-600);font-size:14px;text-align:center}:host{display:block;padding-bottom:28px}#chart{position:relative}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
18965
18988
|
}
|
|
18966
18989
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ChartComponent, decorators: [{
|
|
18967
18990
|
type: Component,
|
|
18968
18991
|
args: [{ selector: 'vdr-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"chart\" style=\"height: 20vh; min-height: 300px;\" #chartDiv></div>\r\n", styles: ["::ng-deep .ct-label{fill:#0006;color:#0006;font-size:.75rem;line-height:1}::ng-deep .ct-chart-line .ct-label,::ng-deep .ct-chart-bar .ct-label{display:flex}::ng-deep .ct-chart-pie .ct-label,::ng-deep .ct-chart-donut .ct-label{dominant-baseline:central}::ng-deep .ct-label.ct-horizontal.ct-start{align-items:flex-end;justify-content:flex-start;text-align:left}::ng-deep .ct-label.ct-horizontal.ct-end{align-items:flex-start;justify-content:flex-start;text-align:left}::ng-deep .ct-label.ct-vertical.ct-start{align-items:flex-end;justify-content:flex-end;text-align:right}::ng-deep .ct-label.ct-vertical.ct-end{align-items:flex-end;justify-content:flex-start;text-align:left}::ng-deep .ct-chart-bar .ct-label.ct-horizontal.ct-start{align-items:flex-end;justify-content:center;text-align:center}::ng-deep .ct-chart-bar .ct-label.ct-horizontal.ct-end{align-items:flex-start;justify-content:center;text-align:center}::ng-deep .ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start{align-items:flex-end;justify-content:flex-start;text-align:left}::ng-deep .ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end{align-items:flex-start;justify-content:flex-start;text-align:left}::ng-deep .ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start{align-items:center;justify-content:flex-end;text-align:right}::ng-deep .ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end{align-items:center;justify-content:flex-start;text-align:left}::ng-deep .ct-grid{stroke:#0003;stroke-width:1px;stroke-dasharray:2px}::ng-deep .ct-grid-background{fill:none}::ng-deep .ct-point{stroke-width:10px;stroke-linecap:round}::ng-deep .ct-line{fill:none;stroke-width:2px}::ng-deep .ct-area{stroke:none;fill-opacity:.5}::ng-deep .ct-bar{fill:none;stroke-width:10px}::ng-deep .ct-slice-donut{fill:none;stroke-width:60px}::ng-deep .ct-series-a .ct-point,::ng-deep .ct-series-a .ct-line,::ng-deep .ct-series-a .ct-bar,::ng-deep .ct-series-a .ct-slice-donut{stroke:var(--color-primary-300)}::ng-deep .ct-series-a .ct-slice-pie,::ng-deep .ct-series-a .ct-area{fill:var(--color-primary-300)}::ng-deep .ct-series-b .ct-point,::ng-deep .ct-series-b .ct-line,::ng-deep .ct-series-b .ct-bar,::ng-deep .ct-series-b .ct-slice-donut{stroke:var(--color-accent-300)}::ng-deep .ct-series-b .ct-slice-pie,::ng-deep .ct-series-b .ct-area{fill:var(--color-accent-300)}::ng-deep .ct-series-c .ct-point,::ng-deep .ct-series-c .ct-line,::ng-deep .ct-series-c .ct-bar,::ng-deep .ct-series-c .ct-slice-donut{stroke:var(--color-primary-800)}::ng-deep .ct-series-c .ct-slice-pie,::ng-deep .ct-series-c .ct-area{fill:var(--color-primary-800)}::ng-deep .ct-series-d .ct-point,::ng-deep .ct-series-d .ct-line,::ng-deep .ct-series-d .ct-bar,::ng-deep .ct-series-d .ct-slice-donut{stroke:var(--color-accent-800)}::ng-deep .ct-series-d .ct-slice-pie,::ng-deep .ct-series-d .ct-area{fill:var(--color-accent-800)}::ng-deep .ct-series-e .ct-point,::ng-deep .ct-series-e .ct-line,::ng-deep .ct-series-e .ct-bar,::ng-deep .ct-series-e .ct-slice-donut{stroke:#453d3f}::ng-deep .ct-series-e .ct-slice-pie,::ng-deep .ct-series-e .ct-area{fill:#453d3f}::ng-deep .ct-series-f .ct-point,::ng-deep .ct-series-f .ct-line,::ng-deep .ct-series-f .ct-bar,::ng-deep .ct-series-f .ct-slice-donut{stroke:#59922b}::ng-deep .ct-series-f .ct-slice-pie,::ng-deep .ct-series-f .ct-area{fill:#59922b}::ng-deep .ct-series-g .ct-point,::ng-deep .ct-series-g .ct-line,::ng-deep .ct-series-g .ct-bar,::ng-deep .ct-series-g .ct-slice-donut{stroke:#0544d3}::ng-deep .ct-series-g .ct-slice-pie,::ng-deep .ct-series-g .ct-area{fill:#0544d3}::ng-deep .ct-series-h .ct-point,::ng-deep .ct-series-h .ct-line,::ng-deep .ct-series-h .ct-bar,::ng-deep .ct-series-h .ct-slice-donut{stroke:#6b0392}::ng-deep .ct-series-h .ct-slice-pie,::ng-deep .ct-series-h .ct-area{fill:#6b0392}::ng-deep .ct-series-i .ct-point,::ng-deep .ct-series-i .ct-line,::ng-deep .ct-series-i .ct-bar,::ng-deep .ct-series-i .ct-slice-donut{stroke:#e6805e}::ng-deep .ct-series-i .ct-slice-pie,::ng-deep .ct-series-i .ct-area{fill:#e6805e}::ng-deep .ct-series-j .ct-point,::ng-deep .ct-series-j .ct-line,::ng-deep .ct-series-j .ct-bar,::ng-deep .ct-series-j .ct-slice-donut{stroke:#dda458}::ng-deep .ct-series-j .ct-slice-pie,::ng-deep .ct-series-j .ct-area{fill:#dda458}::ng-deep .ct-series-k .ct-point,::ng-deep .ct-series-k .ct-line,::ng-deep .ct-series-k .ct-bar,::ng-deep .ct-series-k .ct-slice-donut{stroke:#eacf7d}::ng-deep .ct-series-k .ct-slice-pie,::ng-deep .ct-series-k .ct-area{fill:#eacf7d}::ng-deep .ct-series-l .ct-point,::ng-deep .ct-series-l .ct-line,::ng-deep .ct-series-l .ct-bar,::ng-deep .ct-series-l .ct-slice-donut{stroke:#86797d}::ng-deep .ct-series-l .ct-slice-pie,::ng-deep .ct-series-l .ct-area{fill:#86797d}::ng-deep .ct-series-m .ct-point,::ng-deep .ct-series-m .ct-line,::ng-deep .ct-series-m .ct-bar,::ng-deep .ct-series-m .ct-slice-donut{stroke:#b2c326}::ng-deep .ct-series-m .ct-slice-pie,::ng-deep .ct-series-m .ct-area{fill:#b2c326}::ng-deep .ct-series-n .ct-point,::ng-deep .ct-series-n .ct-line,::ng-deep .ct-series-n .ct-bar,::ng-deep .ct-series-n .ct-slice-donut{stroke:#6188e2}::ng-deep .ct-series-n .ct-slice-pie,::ng-deep .ct-series-n .ct-area{fill:#6188e2}::ng-deep .ct-series-o .ct-point,::ng-deep .ct-series-o .ct-line,::ng-deep .ct-series-o .ct-bar,::ng-deep .ct-series-o .ct-slice-donut{stroke:#a748ca}::ng-deep .ct-series-o .ct-slice-pie,::ng-deep .ct-series-o .ct-area{fill:#a748ca}::ng-deep .ct-square{display:block;position:relative;width:100%}::ng-deep .ct-square:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:100%}::ng-deep .ct-square:after{content:\"\";display:table;clear:both}::ng-deep .ct-square>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-minor-second{display:block;position:relative;width:100%}::ng-deep .ct-minor-second:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:93.75%}::ng-deep .ct-minor-second:after{content:\"\";display:table;clear:both}::ng-deep .ct-minor-second>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-second{display:block;position:relative;width:100%}::ng-deep .ct-major-second:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:88.8888888889%}::ng-deep .ct-major-second:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-second>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-minor-third{display:block;position:relative;width:100%}::ng-deep .ct-minor-third:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:83.3333333333%}::ng-deep .ct-minor-third:after{content:\"\";display:table;clear:both}::ng-deep .ct-minor-third>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-third{display:block;position:relative;width:100%}::ng-deep .ct-major-third:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:80%}::ng-deep .ct-major-third:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-third>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-perfect-fourth{display:block;position:relative;width:100%}::ng-deep .ct-perfect-fourth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:75%}::ng-deep .ct-perfect-fourth:after{content:\"\";display:table;clear:both}::ng-deep .ct-perfect-fourth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-perfect-fifth{display:block;position:relative;width:100%}::ng-deep .ct-perfect-fifth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:66.6666666667%}::ng-deep .ct-perfect-fifth:after{content:\"\";display:table;clear:both}::ng-deep .ct-perfect-fifth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-minor-sixth{display:block;position:relative;width:100%}::ng-deep .ct-minor-sixth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:62.5%}::ng-deep .ct-minor-sixth:after{content:\"\";display:table;clear:both}::ng-deep .ct-minor-sixth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-golden-section{display:block;position:relative;width:100%}::ng-deep .ct-golden-section:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:61.804697157%}::ng-deep .ct-golden-section:after{content:\"\";display:table;clear:both}::ng-deep .ct-golden-section>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-sixth{display:block;position:relative;width:100%}::ng-deep .ct-major-sixth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:60%}::ng-deep .ct-major-sixth:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-sixth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-minor-seventh{display:block;position:relative;width:100%}::ng-deep .ct-minor-seventh:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:56.25%}::ng-deep .ct-minor-seventh:after{content:\"\";display:table;clear:both}::ng-deep .ct-minor-seventh>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-seventh{display:block;position:relative;width:100%}::ng-deep .ct-major-seventh:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:53.3333333333%}::ng-deep .ct-major-seventh:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-seventh>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-octave{display:block;position:relative;width:100%}::ng-deep .ct-octave:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:50%}::ng-deep .ct-octave:after{content:\"\";display:table;clear:both}::ng-deep .ct-octave>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-tenth{display:block;position:relative;width:100%}::ng-deep .ct-major-tenth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:40%}::ng-deep .ct-major-tenth:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-tenth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-eleventh{display:block;position:relative;width:100%}::ng-deep .ct-major-eleventh:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:37.5%}::ng-deep .ct-major-eleventh:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-eleventh>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-major-twelfth{display:block;position:relative;width:100%}::ng-deep .ct-major-twelfth:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:33.3333333333%}::ng-deep .ct-major-twelfth:after{content:\"\";display:table;clear:both}::ng-deep .ct-major-twelfth>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-double-octave{display:block;position:relative;width:100%}::ng-deep .ct-double-octave:before{display:block;float:left;content:\"\";width:0;height:0;padding-bottom:25%}::ng-deep .ct-double-octave:after{content:\"\";display:table;clear:both}::ng-deep .ct-double-octave>svg{display:block;position:absolute;top:0;left:0}::ng-deep .ct-series-a .ct-slice-pie,::ng-deep .ct-series-a .ct-area{fill:url(#gradient)}::ng-deep .ct-point{opacity:0;transition:opacity .1s}::ng-deep .chartist-tooltip{position:absolute;border-radius:var(--border-radius);border:1px solid var(--color-weight-100);padding:4px;opacity:0;transition:opacity .1s,top .1s,left .1s;font-size:12px;background:var(--color-component-bg-100);box-shadow:0 2px 4px #0000000d;text-align:center}::ng-deep .chartist-tooltip.tooltip-show{opacity:.9}::ng-deep .ct-tooltip-hover{opacity:1}::ng-deep .tooltip-date{color:var(--color-text-200)}::ng-deep .tooltip-value{color:var(--color-primary-600);font-size:14px;text-align:center}:host{display:block;padding-bottom:28px}#chart{position:relative}\n"] }]
|
|
18969
18992
|
}], propDecorators: { entries: [{
|
|
18970
18993
|
type: Input
|
|
18994
|
+
}], options: [{
|
|
18995
|
+
type: Input
|
|
18971
18996
|
}], chartDivRef: [{
|
|
18972
18997
|
type: ViewChild,
|
|
18973
18998
|
args: ['chartDiv', { static: true }]
|
|
@@ -19884,6 +19909,34 @@ class TypedBaseDetailComponent extends BaseDetailComponent {
|
|
|
19884
19909
|
this.setUpStreams();
|
|
19885
19910
|
}
|
|
19886
19911
|
}
|
|
19912
|
+
/**
|
|
19913
|
+
* @description
|
|
19914
|
+
* A helper function for creating tabs that point to a {@link TypedBaseDetailComponent}. This takes
|
|
19915
|
+
* care of the route resolver parts so that the detail component automatically has access to the
|
|
19916
|
+
* correct resolved detail data.
|
|
19917
|
+
*
|
|
19918
|
+
* @example
|
|
19919
|
+
* ```TypeScript
|
|
19920
|
+
* \@NgModule({
|
|
19921
|
+
* imports: [ReviewsSharedModule],
|
|
19922
|
+
* declarations: [/* ... *\/],
|
|
19923
|
+
* providers: [
|
|
19924
|
+
* registerPageTab({
|
|
19925
|
+
* location: 'product-detail',
|
|
19926
|
+
* tab: 'Specs',
|
|
19927
|
+
* route: 'specs',
|
|
19928
|
+
* component: detailComponentWithResolver({
|
|
19929
|
+
* component: ProductSpecDetailComponent,
|
|
19930
|
+
* query: GetProductSpecsDocument,
|
|
19931
|
+
* entityKey: 'spec',
|
|
19932
|
+
* }),
|
|
19933
|
+
* }),
|
|
19934
|
+
* ],
|
|
19935
|
+
* })
|
|
19936
|
+
* export class ProductSpecsUiExtensionModule {}
|
|
19937
|
+
* ```
|
|
19938
|
+
* @docsCategory list-detail-views
|
|
19939
|
+
*/
|
|
19887
19940
|
function detailComponentWithResolver(config) {
|
|
19888
19941
|
const resolveFn = (route, state) => {
|
|
19889
19942
|
const router = inject(Router);
|
|
@@ -20972,7 +21025,7 @@ function patchObject(obj, patch) {
|
|
|
20972
21025
|
}
|
|
20973
21026
|
|
|
20974
21027
|
// Auto-generated by the set-version.js script.
|
|
20975
|
-
const ADMIN_UI_VERSION = '2.0.
|
|
21028
|
+
const ADMIN_UI_VERSION = '2.0.2';
|
|
20976
21029
|
|
|
20977
21030
|
/**
|
|
20978
21031
|
* @description
|