@testgorilla/tgo-ui 10.2.0 → 10.3.0
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.
|
@@ -193,6 +193,7 @@ class SidePanelComponent {
|
|
|
193
193
|
this.size = signal(undefined, ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
194
194
|
this.isSmall = computed(() => this.size() === 'small', ...(ngDevMode ? [{ debugName: "isSmall" }] : /* istanbul ignore next */ []));
|
|
195
195
|
this.isLarge = computed(() => this.size() === 'large', ...(ngDevMode ? [{ debugName: "isLarge" }] : /* istanbul ignore next */ []));
|
|
196
|
+
this.isXLarge = computed(() => this.size() === 'x-large', ...(ngDevMode ? [{ debugName: "isXLarge" }] : /* istanbul ignore next */ []));
|
|
196
197
|
this.animation = computed(() => {
|
|
197
198
|
if (this.isOpen()) {
|
|
198
199
|
return SidePanelAnimationState.Open;
|
|
@@ -219,11 +220,11 @@ class SidePanelComponent {
|
|
|
219
220
|
}, sidePanelAnimationDuration);
|
|
220
221
|
}
|
|
221
222
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: SidePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
222
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: SidePanelComponent, isStandalone: true, selector: "ui-side-panel", viewQueries: [{ propertyName: "sidePanelContainer", first: true, predicate: ["sidePanelContainer"], descendants: true, read: ViewContainerRef, isSignal: true }, { propertyName: "sidePanel", first: true, predicate: ["sidePanel"], descendants: true, isSignal: true }, { propertyName: "backdrop", first: true, predicate: ["sidePanelBackdrop"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n class=\"side-panel-backdrop\"\n #sidePanelBackdrop\n tabindex=\"0\"\n (click)=\"close()\"\n (keydown.enter)=\"close()\"\n [@fadeInOut]=\"isOpen() ? 'open' : 'closed'\"\n></div>\n<div\n class=\"side-panel\"\n [class]=\"sidePanelConfig.panelClass\"\n [class.side-panel-small]=\"isSmall()\"\n [class.side-panel-large]=\"isLarge()\"\n #sidePanel\n [@slideInOut]=\"animation()\"\n>\n @if (sidePanelConfig.showHeader) {\n <div class=\"side-panel-header\">\n <div class=\"side-panel-title-container\">\n @if (sidePanelConfig.showBackButton) {\n <ui-button\n class=\"side-panel-action\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n (click)=\"close()\"\n [tooltip]=\"('COMMON.BACK' | uiTranslate | async)!\"\n size=\"medium\"\n ></ui-button>\n }\n <span class=\"side-panel-title h3 bold\">{{ sidePanelConfig.title }}</span>\n </div>\n @if (sidePanelConfig.showCloseButton) {\n <ui-button\n class=\"side-panel-action side-panel-action-close\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n (click)=\"close()\"\n size=\"medium\"\n ></ui-button>\n }\n </div>\n }\n\n <div class=\"side-panel-content\">\n <ng-container #sidePanelContainer></ng-container>\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.side-panel{position:fixed;top:0;bottom:0;background-color:#fff;padding:32px;box-shadow:2px 24px 48px 8px #00000014;z-index:999999;display:flex;flex-direction:column;will-change:transform;transform:translate(100%)}.side-panel.side-panel-small{width:600px}@media(max-width:600px){.side-panel.side-panel-small{width:100%}}.side-panel.side-panel-large{width:956px}@media(max-width:600px){.side-panel.side-panel-large{width:100%}}@media(max-width:960px){.side-panel.side-panel-large{width:100%}}.side-panel-action-close{margin-left:8px}.side-panel-title-container{display:flex;gap:8px}.side-panel.left{left:0}.side-panel.right{right:0}.side-panel-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background:#000;z-index:899;opacity:0}.side-panel-title{display:block;display:-webkit-box;max-height:3em;line-height:1.6em;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal}.side-panel-content{overflow:auto;flex:1}.side-panel-header{position:sticky;min-height:30px;display:flex;justify-content:space-between;margin-bottom:32px}\n"], dependencies: [{ kind: "ngmodule", type: TooltipComponentModule }, { kind: "ngmodule", type: ButtonComponentModule }, { kind: "component", type: i1.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "loadingWithLabel", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaExpanded", "ariaControls", "ariaPressed", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role", "iconFilled"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "pipe", type: UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [sidePanelAnimation, backdropAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
223
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: SidePanelComponent, isStandalone: true, selector: "ui-side-panel", viewQueries: [{ propertyName: "sidePanelContainer", first: true, predicate: ["sidePanelContainer"], descendants: true, read: ViewContainerRef, isSignal: true }, { propertyName: "sidePanel", first: true, predicate: ["sidePanel"], descendants: true, isSignal: true }, { propertyName: "backdrop", first: true, predicate: ["sidePanelBackdrop"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n class=\"side-panel-backdrop\"\n #sidePanelBackdrop\n tabindex=\"0\"\n (click)=\"close()\"\n (keydown.enter)=\"close()\"\n [@fadeInOut]=\"isOpen() ? 'open' : 'closed'\"\n></div>\n<div\n class=\"side-panel\"\n [class]=\"sidePanelConfig.panelClass\"\n [class.side-panel-small]=\"isSmall()\"\n [class.side-panel-large]=\"isLarge()\"\n [class.side-panel-x-large]=\"isXLarge()\"\n #sidePanel\n [@slideInOut]=\"animation()\"\n>\n @if (sidePanelConfig.showHeader) {\n <div class=\"side-panel-header\">\n <div class=\"side-panel-title-container\">\n @if (sidePanelConfig.showBackButton) {\n <ui-button\n class=\"side-panel-action\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n (click)=\"close()\"\n [tooltip]=\"('COMMON.BACK' | uiTranslate | async)!\"\n size=\"medium\"\n ></ui-button>\n }\n <span class=\"side-panel-title h3 bold\">{{ sidePanelConfig.title }}</span>\n </div>\n @if (sidePanelConfig.showCloseButton) {\n <ui-button\n class=\"side-panel-action side-panel-action-close\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n (click)=\"close()\"\n size=\"medium\"\n ></ui-button>\n }\n </div>\n }\n\n <div class=\"side-panel-content\">\n <ng-container #sidePanelContainer></ng-container>\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.side-panel{position:fixed;top:0;bottom:0;background-color:#fff;padding:32px;box-shadow:2px 24px 48px 8px #00000014;z-index:999999;display:flex;flex-direction:column;will-change:transform;transform:translate(100%)}.side-panel.side-panel-small{width:600px}@media(max-width:600px){.side-panel.side-panel-small{width:100%}}.side-panel.side-panel-large{width:956px}@media(max-width:600px){.side-panel.side-panel-large{width:100%}}@media(max-width:960px){.side-panel.side-panel-large{width:100%}}.side-panel.side-panel-x-large{width:1200px}@media(max-width:1280px){.side-panel.side-panel-x-large{width:100%}}.side-panel-action-close{margin-left:8px}.side-panel-title-container{display:flex;gap:8px}.side-panel.left{left:0}.side-panel.right{right:0}.side-panel-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background:#000;z-index:899;opacity:0}.side-panel-title{display:block;display:-webkit-box;max-height:3em;line-height:1.6em;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal}.side-panel-content{overflow:auto;flex:1}.side-panel-header{position:sticky;min-height:30px;display:flex;justify-content:space-between;margin-bottom:32px}\n"], dependencies: [{ kind: "ngmodule", type: TooltipComponentModule }, { kind: "ngmodule", type: ButtonComponentModule }, { kind: "component", type: i1.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "loadingWithLabel", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaExpanded", "ariaControls", "ariaPressed", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role", "iconFilled"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "pipe", type: UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [sidePanelAnimation, backdropAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
223
224
|
}
|
|
224
225
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: SidePanelComponent, decorators: [{
|
|
225
226
|
type: Component,
|
|
226
|
-
args: [{ selector: 'ui-side-panel', animations: [sidePanelAnimation, backdropAnimation], changeDetection: ChangeDetectionStrategy.OnPush, imports: [TooltipComponentModule, ButtonComponentModule, UiTranslatePipe, AsyncPipe, NgClass], template: "<div\n class=\"side-panel-backdrop\"\n #sidePanelBackdrop\n tabindex=\"0\"\n (click)=\"close()\"\n (keydown.enter)=\"close()\"\n [@fadeInOut]=\"isOpen() ? 'open' : 'closed'\"\n></div>\n<div\n class=\"side-panel\"\n [class]=\"sidePanelConfig.panelClass\"\n [class.side-panel-small]=\"isSmall()\"\n [class.side-panel-large]=\"isLarge()\"\n #sidePanel\n [@slideInOut]=\"animation()\"\n>\n @if (sidePanelConfig.showHeader) {\n <div class=\"side-panel-header\">\n <div class=\"side-panel-title-container\">\n @if (sidePanelConfig.showBackButton) {\n <ui-button\n class=\"side-panel-action\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n (click)=\"close()\"\n [tooltip]=\"('COMMON.BACK' | uiTranslate | async)!\"\n size=\"medium\"\n ></ui-button>\n }\n <span class=\"side-panel-title h3 bold\">{{ sidePanelConfig.title }}</span>\n </div>\n @if (sidePanelConfig.showCloseButton) {\n <ui-button\n class=\"side-panel-action side-panel-action-close\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n (click)=\"close()\"\n size=\"medium\"\n ></ui-button>\n }\n </div>\n }\n\n <div class=\"side-panel-content\">\n <ng-container #sidePanelContainer></ng-container>\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.side-panel{position:fixed;top:0;bottom:0;background-color:#fff;padding:32px;box-shadow:2px 24px 48px 8px #00000014;z-index:999999;display:flex;flex-direction:column;will-change:transform;transform:translate(100%)}.side-panel.side-panel-small{width:600px}@media(max-width:600px){.side-panel.side-panel-small{width:100%}}.side-panel.side-panel-large{width:956px}@media(max-width:600px){.side-panel.side-panel-large{width:100%}}@media(max-width:960px){.side-panel.side-panel-large{width:100%}}.side-panel-action-close{margin-left:8px}.side-panel-title-container{display:flex;gap:8px}.side-panel.left{left:0}.side-panel.right{right:0}.side-panel-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background:#000;z-index:899;opacity:0}.side-panel-title{display:block;display:-webkit-box;max-height:3em;line-height:1.6em;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal}.side-panel-content{overflow:auto;flex:1}.side-panel-header{position:sticky;min-height:30px;display:flex;justify-content:space-between;margin-bottom:32px}\n"] }]
|
|
227
|
+
args: [{ selector: 'ui-side-panel', animations: [sidePanelAnimation, backdropAnimation], changeDetection: ChangeDetectionStrategy.OnPush, imports: [TooltipComponentModule, ButtonComponentModule, UiTranslatePipe, AsyncPipe, NgClass], template: "<div\n class=\"side-panel-backdrop\"\n #sidePanelBackdrop\n tabindex=\"0\"\n (click)=\"close()\"\n (keydown.enter)=\"close()\"\n [@fadeInOut]=\"isOpen() ? 'open' : 'closed'\"\n></div>\n<div\n class=\"side-panel\"\n [class]=\"sidePanelConfig.panelClass\"\n [class.side-panel-small]=\"isSmall()\"\n [class.side-panel-large]=\"isLarge()\"\n [class.side-panel-x-large]=\"isXLarge()\"\n #sidePanel\n [@slideInOut]=\"animation()\"\n>\n @if (sidePanelConfig.showHeader) {\n <div class=\"side-panel-header\">\n <div class=\"side-panel-title-container\">\n @if (sidePanelConfig.showBackButton) {\n <ui-button\n class=\"side-panel-action\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n (click)=\"close()\"\n [tooltip]=\"('COMMON.BACK' | uiTranslate | async)!\"\n size=\"medium\"\n ></ui-button>\n }\n <span class=\"side-panel-title h3 bold\">{{ sidePanelConfig.title }}</span>\n </div>\n @if (sidePanelConfig.showCloseButton) {\n <ui-button\n class=\"side-panel-action side-panel-action-close\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n (click)=\"close()\"\n size=\"medium\"\n ></ui-button>\n }\n </div>\n }\n\n <div class=\"side-panel-content\">\n <ng-container #sidePanelContainer></ng-container>\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.side-panel{position:fixed;top:0;bottom:0;background-color:#fff;padding:32px;box-shadow:2px 24px 48px 8px #00000014;z-index:999999;display:flex;flex-direction:column;will-change:transform;transform:translate(100%)}.side-panel.side-panel-small{width:600px}@media(max-width:600px){.side-panel.side-panel-small{width:100%}}.side-panel.side-panel-large{width:956px}@media(max-width:600px){.side-panel.side-panel-large{width:100%}}@media(max-width:960px){.side-panel.side-panel-large{width:100%}}.side-panel.side-panel-x-large{width:1200px}@media(max-width:1280px){.side-panel.side-panel-x-large{width:100%}}.side-panel-action-close{margin-left:8px}.side-panel-title-container{display:flex;gap:8px}.side-panel.left{left:0}.side-panel.right{right:0}.side-panel-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background:#000;z-index:899;opacity:0}.side-panel-title{display:block;display:-webkit-box;max-height:3em;line-height:1.6em;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal}.side-panel-content{overflow:auto;flex:1}.side-panel-header{position:sticky;min-height:30px;display:flex;justify-content:space-between;margin-bottom:32px}\n"] }]
|
|
227
228
|
}], ctorParameters: () => [], propDecorators: { sidePanelContainer: [{ type: i0.ViewChild, args: ['sidePanelContainer', { ...{ read: ViewContainerRef }, isSignal: true }] }], sidePanel: [{ type: i0.ViewChild, args: ['sidePanel', { isSignal: true }] }], backdrop: [{ type: i0.ViewChild, args: ['sidePanelBackdrop', { isSignal: true }] }] } });
|
|
228
229
|
|
|
229
230
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testgorilla-tgo-ui-components-side-panel.mjs","sources":["../../../components/side-panel/side-panel.model.ts","../../../components/side-panel/side-panel.animations.ts","../../../components/side-panel/side-panel-data-injection-token.ts","../../../components/side-panel/side-panel.service.ts","../../../components/side-panel/side-panel.component.ts","../../../components/side-panel/side-panel.component.html","../../../components/side-panel/testgorilla-tgo-ui-components-side-panel.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nexport type SidePanelPosition = 'left' | 'right';\n\nexport enum SidePanelAnimationState {\n Open = 'open',\n Closed = 'closed',\n ClosedRight = 'closedRight',\n ClosedLeft = 'closedLeft',\n}\n\nexport type SidePanelSize = 'small' | 'large';\n\nexport class SidePanelConfig {\n title: string;\n position: SidePanelPosition;\n showBackButton: boolean;\n data?: unknown;\n showCloseButton?: boolean;\n showHeader?: boolean;\n panelClass?: string;\n size?: SidePanelSize;\n}\n\nexport const defaultSidePanelConfig: SidePanelConfig = {\n position: 'right',\n showBackButton: false,\n title: '',\n data: undefined,\n showHeader: true,\n showCloseButton: true,\n size: 'small',\n};\n\nexport const SIDE_PANEL_CONFIG = new InjectionToken<SidePanelConfig>('SIDE_PANEL_CONFIG', {\n providedIn: 'root',\n factory: () => defaultSidePanelConfig,\n});\n\n/**\n * Reference to a side panel opened via the SidePanelService.\n * Similar to MatDialogRef from Angular Material.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- mirrors MatDialogRef<T, R = any>: untyped-by-default result/component types for consumer ergonomics; the ref is invariant in T/R so `unknown` defaults would break internal ref storage in SidePanelService\nexport class SidePanelRef<T = any, R = any> {\n private readonly _afterClosed = new Subject<T | undefined>();\n\n /**\n * Instance of the component loaded into the side panel.\n * Will be undefined if a TemplateRef was used instead of a component.\n */\n componentInstance?: R;\n\n /**\n * Observable that emits when the side panel is closed.\n * Emits the result passed to the close method, or undefined if no result was provided.\n */\n afterClosed(): Observable<T | undefined> {\n return this._afterClosed.asObservable();\n }\n\n /**\n * Closes the side panel with an optional result.\n * @param result Optional data to be emitted via afterClosed()\n */\n close(_result?: T): void {\n // This will be overridden by the service\n }\n\n /** @internal */\n _emitClose(result?: T): void {\n this._afterClosed.next(result);\n this._afterClosed.complete();\n }\n}\n","/* eslint-disable @typescript-eslint/no-deprecated -- the @angular/animations trigger/state/style/animate/transition DSL is deprecated in 20.2 in favor of template-level animate.enter/animate.leave; migrating every Material/component animation is out of scope for this lint pass */\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\nimport { SidePanelAnimationState } from './side-panel.model';\n\nexport const sidePanelAnimationDuration = 150;\n\nexport const sidePanelAnimation = [\n trigger('slideInOut', [\n state(`${SidePanelAnimationState.Open}`, style({ transform: 'translateX(0)' })),\n state(`${SidePanelAnimationState.ClosedRight}`, style({ transform: 'translateX(100%)' })),\n state(`${SidePanelAnimationState.ClosedLeft}`, style({ transform: 'translateX(-100%)' })),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.ClosedRight}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.ClosedLeft}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n ]),\n];\n\nexport const backdropAnimation = [\n trigger('fadeInOut', [\n state(`${SidePanelAnimationState.Open}`, style({ opacity: 0.25 })),\n state(`${SidePanelAnimationState.Closed}`, style({ opacity: 0 })),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.Closed}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n ]),\n];\n","import { InjectionToken } from '@angular/core';\n\nexport const SIDE_PANEL_DATA = new InjectionToken<unknown>('SIDE_PANEL_DATA');\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n EmbeddedViewRef,\n EnvironmentInjector,\n inject,\n Injectable,\n Injector,\n TemplateRef,\n Type,\n} from '@angular/core';\n\nimport { SIDE_PANEL_DATA } from './side-panel-data-injection-token';\nimport { SidePanelComponent } from './side-panel.component';\nimport { SIDE_PANEL_CONFIG, SidePanelConfig, SidePanelPosition, SidePanelRef } from './side-panel.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SidePanelService {\n private SidePanelComponentRef?: ComponentRef<SidePanelComponent>;\n private contentComponentRef?: ComponentRef<unknown>;\n private embeddedViewRef?: EmbeddedViewRef<unknown>;\n private currentSidePanelRef?: SidePanelRef;\n private readonly defaultSidePanelConfig: SidePanelConfig = inject(SIDE_PANEL_CONFIG);\n private readonly injector = inject(EnvironmentInjector);\n private readonly appRef = inject(ApplicationRef);\n\n constructor() {}\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- mirrors MatDialog.open<T, R = any>: the returned ref's data/component types are untyped-by-default for consumer ergonomics\n open<T = any, R = any>(\n content: Type<R> | TemplateRef<unknown>,\n config: Partial<SidePanelConfig>,\n parentInjector?: Injector\n ): SidePanelRef<T, R> {\n const panelConfig: SidePanelConfig = { ...this.defaultSidePanelConfig, ...config };\n\n const sidePanelRef = new SidePanelRef<T, R>();\n this.currentSidePanelRef = sidePanelRef;\n\n sidePanelRef.close = (result?: T) => {\n this.close(result);\n };\n\n if (!this.SidePanelComponentRef) {\n const injector = this.createSidePanelInjector(panelConfig, parentInjector);\n const SidePanelComponentRef = this.createSidePanelComponent(panelConfig.position, injector);\n this.SidePanelComponentRef = SidePanelComponentRef;\n }\n\n if (content instanceof TemplateRef) {\n this.loadTemplate(content);\n } else {\n this.loadComponent(content, sidePanelRef);\n }\n\n this.SidePanelComponentRef.instance.open();\n\n return sidePanelRef;\n }\n\n close(result?: unknown): void {\n if (this.SidePanelComponentRef) {\n this.SidePanelComponentRef.instance.close(result);\n }\n }\n\n destroyComponent(result?: unknown): void {\n if (this.currentSidePanelRef) {\n // eslint-disable-next-line no-underscore-dangle -- _emitClose is SidePanelRef's @internal API (mirrors MatDialogRef internals)\n this.currentSidePanelRef._emitClose(result);\n this.currentSidePanelRef = undefined;\n }\n\n if (this.SidePanelComponentRef) {\n this.appRef.detachView(this.SidePanelComponentRef.hostView);\n this.SidePanelComponentRef.destroy();\n this.SidePanelComponentRef = undefined;\n }\n\n if (this.contentComponentRef) {\n this.contentComponentRef.destroy();\n this.contentComponentRef = undefined;\n }\n }\n\n private createSidePanelInjector(config: SidePanelConfig, parentInjector?: Injector): Injector {\n return Injector.create({\n parent: parentInjector,\n providers: [\n { provide: SidePanelConfig, useValue: config },\n { provide: SIDE_PANEL_DATA, useValue: config.data },\n ],\n });\n }\n\n private createSidePanelComponent(position: SidePanelPosition, injector: Injector): ComponentRef<SidePanelComponent> {\n const sidePanelComponentRef = createComponent(SidePanelComponent, {\n environmentInjector: this.injector,\n elementInjector: injector,\n });\n\n this.appRef.attachView(sidePanelComponentRef.hostView);\n\n const sidePanelEl = (sidePanelComponentRef.hostView as EmbeddedViewRef<unknown>).rootNodes[0] as HTMLElement;\n sidePanelEl.querySelector('.side-panel')?.classList.add(position);\n\n document.body.appendChild(sidePanelEl);\n\n return sidePanelComponentRef;\n }\n\n private loadComponent<T, R>(component: Type<R>, sidePanelRef: SidePanelRef<T, R>): void {\n const viewContainerRef = this.SidePanelComponentRef?.instance.sidePanelContainer;\n if (viewContainerRef) {\n viewContainerRef().clear();\n this.contentComponentRef = viewContainerRef().createComponent(component);\n // Set the component instance on the SidePanelRef\n sidePanelRef.componentInstance = this.contentComponentRef.instance as R;\n }\n }\n\n private loadTemplate(template: TemplateRef<unknown>): void {\n const viewContainerRef = this.SidePanelComponentRef?.instance.sidePanelContainer;\n if (viewContainerRef) {\n viewContainerRef().clear();\n this.embeddedViewRef = viewContainerRef().createEmbeddedView(template);\n }\n }\n}\n","import { AsyncPipe, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n signal,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe, LanguageService } from '@testgorilla/tgo-ui/components/core';\nimport { TooltipComponentModule } from '@testgorilla/tgo-ui/components/tooltip';\n\nimport { backdropAnimation, sidePanelAnimation, sidePanelAnimationDuration } from './side-panel.animations';\nimport { SidePanelAnimationState, SidePanelConfig, SidePanelPosition, SidePanelSize } from './side-panel.model';\nimport { SidePanelService } from './side-panel.service';\n\n@Component({\n selector: 'ui-side-panel',\n templateUrl: './side-panel.component.html',\n styleUrls: ['./side-panel.component.scss'],\n animations: [sidePanelAnimation, backdropAnimation],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TooltipComponentModule, ButtonComponentModule, UiTranslatePipe, AsyncPipe, NgClass],\n})\nexport class SidePanelComponent {\n sidePanelPosition = signal<SidePanelPosition>('right');\n\n sidePanelContainer = viewChild.required('sidePanelContainer', { read: ViewContainerRef });\n sidePanel = viewChild.required<ElementRef<HTMLDivElement>>('sidePanel');\n backdrop = viewChild.required<ElementRef<HTMLDivElement>>('sidePanelBackdrop');\n language = LanguageService.defaultLanguage;\n isOpen = signal<boolean>(false);\n size = signal<SidePanelSize | undefined>(undefined);\n isSmall = computed(() => this.size() === 'small');\n isLarge = computed(() => this.size() === 'large');\n\n animation = computed(() => {\n if (this.isOpen()) {\n return SidePanelAnimationState.Open;\n }\n\n return this.sidePanelPosition() === 'left'\n ? SidePanelAnimationState.ClosedLeft\n : SidePanelAnimationState.ClosedRight;\n });\n\n private readonly sidePanelService = inject(SidePanelService);\n public sidePanelConfig = inject(SidePanelConfig);\n\n constructor() {\n const { position, size } = this.sidePanelConfig;\n this.sidePanelPosition.set(position);\n this.size.set(size);\n }\n\n open(): void {\n setTimeout(() => {\n this.isOpen.set(true);\n });\n }\n\n close(result?: unknown): void {\n this.isOpen.set(false);\n setTimeout(() => {\n this.sidePanelService.destroyComponent(result);\n }, sidePanelAnimationDuration);\n }\n}\n","<div\n class=\"side-panel-backdrop\"\n #sidePanelBackdrop\n tabindex=\"0\"\n (click)=\"close()\"\n (keydown.enter)=\"close()\"\n [@fadeInOut]=\"isOpen() ? 'open' : 'closed'\"\n></div>\n<div\n class=\"side-panel\"\n [class]=\"sidePanelConfig.panelClass\"\n [class.side-panel-small]=\"isSmall()\"\n [class.side-panel-large]=\"isLarge()\"\n #sidePanel\n [@slideInOut]=\"animation()\"\n>\n @if (sidePanelConfig.showHeader) {\n <div class=\"side-panel-header\">\n <div class=\"side-panel-title-container\">\n @if (sidePanelConfig.showBackButton) {\n <ui-button\n class=\"side-panel-action\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n (click)=\"close()\"\n [tooltip]=\"('COMMON.BACK' | uiTranslate | async)!\"\n size=\"medium\"\n ></ui-button>\n }\n <span class=\"side-panel-title h3 bold\">{{ sidePanelConfig.title }}</span>\n </div>\n @if (sidePanelConfig.showCloseButton) {\n <ui-button\n class=\"side-panel-action side-panel-action-close\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n (click)=\"close()\"\n size=\"medium\"\n ></ui-button>\n }\n </div>\n }\n\n <div class=\"side-panel-content\">\n <ng-container #sidePanelContainer></ng-container>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testgorilla-tgo-ui-components-side-panel.mjs","sources":["../../../components/side-panel/side-panel.model.ts","../../../components/side-panel/side-panel.animations.ts","../../../components/side-panel/side-panel-data-injection-token.ts","../../../components/side-panel/side-panel.service.ts","../../../components/side-panel/side-panel.component.ts","../../../components/side-panel/side-panel.component.html","../../../components/side-panel/testgorilla-tgo-ui-components-side-panel.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nexport type SidePanelPosition = 'left' | 'right';\n\nexport enum SidePanelAnimationState {\n Open = 'open',\n Closed = 'closed',\n ClosedRight = 'closedRight',\n ClosedLeft = 'closedLeft',\n}\n\nexport type SidePanelSize = 'small' | 'large' | 'x-large';\n\nexport class SidePanelConfig {\n title: string;\n position: SidePanelPosition;\n showBackButton: boolean;\n data?: unknown;\n showCloseButton?: boolean;\n showHeader?: boolean;\n panelClass?: string;\n size?: SidePanelSize;\n}\n\nexport const defaultSidePanelConfig: SidePanelConfig = {\n position: 'right',\n showBackButton: false,\n title: '',\n data: undefined,\n showHeader: true,\n showCloseButton: true,\n size: 'small',\n};\n\nexport const SIDE_PANEL_CONFIG = new InjectionToken<SidePanelConfig>('SIDE_PANEL_CONFIG', {\n providedIn: 'root',\n factory: () => defaultSidePanelConfig,\n});\n\n/**\n * Reference to a side panel opened via the SidePanelService.\n * Similar to MatDialogRef from Angular Material.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- mirrors MatDialogRef<T, R = any>: untyped-by-default result/component types for consumer ergonomics; the ref is invariant in T/R so `unknown` defaults would break internal ref storage in SidePanelService\nexport class SidePanelRef<T = any, R = any> {\n private readonly _afterClosed = new Subject<T | undefined>();\n\n /**\n * Instance of the component loaded into the side panel.\n * Will be undefined if a TemplateRef was used instead of a component.\n */\n componentInstance?: R;\n\n /**\n * Observable that emits when the side panel is closed.\n * Emits the result passed to the close method, or undefined if no result was provided.\n */\n afterClosed(): Observable<T | undefined> {\n return this._afterClosed.asObservable();\n }\n\n /**\n * Closes the side panel with an optional result.\n * @param result Optional data to be emitted via afterClosed()\n */\n close(_result?: T): void {\n // This will be overridden by the service\n }\n\n /** @internal */\n _emitClose(result?: T): void {\n this._afterClosed.next(result);\n this._afterClosed.complete();\n }\n}\n","/* eslint-disable @typescript-eslint/no-deprecated -- the @angular/animations trigger/state/style/animate/transition DSL is deprecated in 20.2 in favor of template-level animate.enter/animate.leave; migrating every Material/component animation is out of scope for this lint pass */\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\nimport { SidePanelAnimationState } from './side-panel.model';\n\nexport const sidePanelAnimationDuration = 150;\n\nexport const sidePanelAnimation = [\n trigger('slideInOut', [\n state(`${SidePanelAnimationState.Open}`, style({ transform: 'translateX(0)' })),\n state(`${SidePanelAnimationState.ClosedRight}`, style({ transform: 'translateX(100%)' })),\n state(`${SidePanelAnimationState.ClosedLeft}`, style({ transform: 'translateX(-100%)' })),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.ClosedRight}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.ClosedLeft}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n ]),\n];\n\nexport const backdropAnimation = [\n trigger('fadeInOut', [\n state(`${SidePanelAnimationState.Open}`, style({ opacity: 0.25 })),\n state(`${SidePanelAnimationState.Closed}`, style({ opacity: 0 })),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.Closed}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n ]),\n];\n","import { InjectionToken } from '@angular/core';\n\nexport const SIDE_PANEL_DATA = new InjectionToken<unknown>('SIDE_PANEL_DATA');\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n EmbeddedViewRef,\n EnvironmentInjector,\n inject,\n Injectable,\n Injector,\n TemplateRef,\n Type,\n} from '@angular/core';\n\nimport { SIDE_PANEL_DATA } from './side-panel-data-injection-token';\nimport { SidePanelComponent } from './side-panel.component';\nimport { SIDE_PANEL_CONFIG, SidePanelConfig, SidePanelPosition, SidePanelRef } from './side-panel.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SidePanelService {\n private SidePanelComponentRef?: ComponentRef<SidePanelComponent>;\n private contentComponentRef?: ComponentRef<unknown>;\n private embeddedViewRef?: EmbeddedViewRef<unknown>;\n private currentSidePanelRef?: SidePanelRef;\n private readonly defaultSidePanelConfig: SidePanelConfig = inject(SIDE_PANEL_CONFIG);\n private readonly injector = inject(EnvironmentInjector);\n private readonly appRef = inject(ApplicationRef);\n\n constructor() {}\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- mirrors MatDialog.open<T, R = any>: the returned ref's data/component types are untyped-by-default for consumer ergonomics\n open<T = any, R = any>(\n content: Type<R> | TemplateRef<unknown>,\n config: Partial<SidePanelConfig>,\n parentInjector?: Injector\n ): SidePanelRef<T, R> {\n const panelConfig: SidePanelConfig = { ...this.defaultSidePanelConfig, ...config };\n\n const sidePanelRef = new SidePanelRef<T, R>();\n this.currentSidePanelRef = sidePanelRef;\n\n sidePanelRef.close = (result?: T) => {\n this.close(result);\n };\n\n if (!this.SidePanelComponentRef) {\n const injector = this.createSidePanelInjector(panelConfig, parentInjector);\n const SidePanelComponentRef = this.createSidePanelComponent(panelConfig.position, injector);\n this.SidePanelComponentRef = SidePanelComponentRef;\n }\n\n if (content instanceof TemplateRef) {\n this.loadTemplate(content);\n } else {\n this.loadComponent(content, sidePanelRef);\n }\n\n this.SidePanelComponentRef.instance.open();\n\n return sidePanelRef;\n }\n\n close(result?: unknown): void {\n if (this.SidePanelComponentRef) {\n this.SidePanelComponentRef.instance.close(result);\n }\n }\n\n destroyComponent(result?: unknown): void {\n if (this.currentSidePanelRef) {\n // eslint-disable-next-line no-underscore-dangle -- _emitClose is SidePanelRef's @internal API (mirrors MatDialogRef internals)\n this.currentSidePanelRef._emitClose(result);\n this.currentSidePanelRef = undefined;\n }\n\n if (this.SidePanelComponentRef) {\n this.appRef.detachView(this.SidePanelComponentRef.hostView);\n this.SidePanelComponentRef.destroy();\n this.SidePanelComponentRef = undefined;\n }\n\n if (this.contentComponentRef) {\n this.contentComponentRef.destroy();\n this.contentComponentRef = undefined;\n }\n }\n\n private createSidePanelInjector(config: SidePanelConfig, parentInjector?: Injector): Injector {\n return Injector.create({\n parent: parentInjector,\n providers: [\n { provide: SidePanelConfig, useValue: config },\n { provide: SIDE_PANEL_DATA, useValue: config.data },\n ],\n });\n }\n\n private createSidePanelComponent(position: SidePanelPosition, injector: Injector): ComponentRef<SidePanelComponent> {\n const sidePanelComponentRef = createComponent(SidePanelComponent, {\n environmentInjector: this.injector,\n elementInjector: injector,\n });\n\n this.appRef.attachView(sidePanelComponentRef.hostView);\n\n const sidePanelEl = (sidePanelComponentRef.hostView as EmbeddedViewRef<unknown>).rootNodes[0] as HTMLElement;\n sidePanelEl.querySelector('.side-panel')?.classList.add(position);\n\n document.body.appendChild(sidePanelEl);\n\n return sidePanelComponentRef;\n }\n\n private loadComponent<T, R>(component: Type<R>, sidePanelRef: SidePanelRef<T, R>): void {\n const viewContainerRef = this.SidePanelComponentRef?.instance.sidePanelContainer;\n if (viewContainerRef) {\n viewContainerRef().clear();\n this.contentComponentRef = viewContainerRef().createComponent(component);\n // Set the component instance on the SidePanelRef\n sidePanelRef.componentInstance = this.contentComponentRef.instance as R;\n }\n }\n\n private loadTemplate(template: TemplateRef<unknown>): void {\n const viewContainerRef = this.SidePanelComponentRef?.instance.sidePanelContainer;\n if (viewContainerRef) {\n viewContainerRef().clear();\n this.embeddedViewRef = viewContainerRef().createEmbeddedView(template);\n }\n }\n}\n","import { AsyncPipe, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n signal,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe, LanguageService } from '@testgorilla/tgo-ui/components/core';\nimport { TooltipComponentModule } from '@testgorilla/tgo-ui/components/tooltip';\n\nimport { backdropAnimation, sidePanelAnimation, sidePanelAnimationDuration } from './side-panel.animations';\nimport { SidePanelAnimationState, SidePanelConfig, SidePanelPosition, SidePanelSize } from './side-panel.model';\nimport { SidePanelService } from './side-panel.service';\n\n@Component({\n selector: 'ui-side-panel',\n templateUrl: './side-panel.component.html',\n styleUrls: ['./side-panel.component.scss'],\n animations: [sidePanelAnimation, backdropAnimation],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TooltipComponentModule, ButtonComponentModule, UiTranslatePipe, AsyncPipe, NgClass],\n})\nexport class SidePanelComponent {\n sidePanelPosition = signal<SidePanelPosition>('right');\n\n sidePanelContainer = viewChild.required('sidePanelContainer', { read: ViewContainerRef });\n sidePanel = viewChild.required<ElementRef<HTMLDivElement>>('sidePanel');\n backdrop = viewChild.required<ElementRef<HTMLDivElement>>('sidePanelBackdrop');\n language = LanguageService.defaultLanguage;\n isOpen = signal<boolean>(false);\n size = signal<SidePanelSize | undefined>(undefined);\n isSmall = computed(() => this.size() === 'small');\n isLarge = computed(() => this.size() === 'large');\n isXLarge = computed(() => this.size() === 'x-large');\n\n animation = computed(() => {\n if (this.isOpen()) {\n return SidePanelAnimationState.Open;\n }\n\n return this.sidePanelPosition() === 'left'\n ? SidePanelAnimationState.ClosedLeft\n : SidePanelAnimationState.ClosedRight;\n });\n\n private readonly sidePanelService = inject(SidePanelService);\n public sidePanelConfig = inject(SidePanelConfig);\n\n constructor() {\n const { position, size } = this.sidePanelConfig;\n this.sidePanelPosition.set(position);\n this.size.set(size);\n }\n\n open(): void {\n setTimeout(() => {\n this.isOpen.set(true);\n });\n }\n\n close(result?: unknown): void {\n this.isOpen.set(false);\n setTimeout(() => {\n this.sidePanelService.destroyComponent(result);\n }, sidePanelAnimationDuration);\n }\n}\n","<div\n class=\"side-panel-backdrop\"\n #sidePanelBackdrop\n tabindex=\"0\"\n (click)=\"close()\"\n (keydown.enter)=\"close()\"\n [@fadeInOut]=\"isOpen() ? 'open' : 'closed'\"\n></div>\n<div\n class=\"side-panel\"\n [class]=\"sidePanelConfig.panelClass\"\n [class.side-panel-small]=\"isSmall()\"\n [class.side-panel-large]=\"isLarge()\"\n [class.side-panel-x-large]=\"isXLarge()\"\n #sidePanel\n [@slideInOut]=\"animation()\"\n>\n @if (sidePanelConfig.showHeader) {\n <div class=\"side-panel-header\">\n <div class=\"side-panel-title-container\">\n @if (sidePanelConfig.showBackButton) {\n <ui-button\n class=\"side-panel-action\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n (click)=\"close()\"\n [tooltip]=\"('COMMON.BACK' | uiTranslate | async)!\"\n size=\"medium\"\n ></ui-button>\n }\n <span class=\"side-panel-title h3 bold\">{{ sidePanelConfig.title }}</span>\n </div>\n @if (sidePanelConfig.showCloseButton) {\n <ui-button\n class=\"side-panel-action side-panel-action-close\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n (click)=\"close()\"\n size=\"medium\"\n ></ui-button>\n }\n </div>\n }\n\n <div class=\"side-panel-content\">\n <ng-container #sidePanelContainer></ng-container>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|