sparc-shared-ui 0.0.7 → 0.0.9

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.
@@ -1,59 +1,27 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Input, Directive, ContentChildren, Component, EventEmitter, Output } from '@angular/core';
2
+ import { TemplateRef, ContentChild, Input, Component, EventEmitter, Output, ContentChildren } from '@angular/core';
3
3
  import * as i1$1 from 'primeng/tabs';
4
4
  import { TabsModule } from 'primeng/tabs';
5
5
  import * as i1 from '@angular/common';
6
6
  import { CommonModule } from '@angular/common';
7
7
 
8
- class AppTabTemplateDirective {
9
- template;
10
- type;
11
- constructor(template) {
12
- this.template = template;
13
- }
14
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: AppTabTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
15
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.5", type: AppTabTemplateDirective, isStandalone: true, selector: "[appTabTemplate]", inputs: { type: ["appTabTemplate", "type"] }, ngImport: i0 });
16
- }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: AppTabTemplateDirective, decorators: [{
18
- type: Directive,
19
- args: [{
20
- selector: '[appTabTemplate]',
21
- standalone: true
22
- }]
23
- }], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { type: [{
24
- type: Input,
25
- args: ['appTabTemplate']
26
- }] } });
27
-
28
8
  class TabPanelComponent {
29
9
  id;
30
10
  header = '';
31
11
  closable = false;
32
12
  data;
13
+ headerType = 'text';
33
14
  headerTemplate;
34
- contentTemplate;
35
- templates;
15
+ content;
36
16
  renderKey = 0;
37
- ngAfterContentInit() {
38
- this.templates.forEach(t => {
39
- if (t.type === 'header') {
40
- this.headerTemplate = t.template;
41
- }
42
- if (t.type === 'content') {
43
- this.contentTemplate = t.template;
44
- }
45
- });
46
- }
47
17
  ngOnChanges() {
48
18
  this.renderKey++;
49
19
  }
50
20
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: TabPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
51
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.5", type: TabPanelComponent, isStandalone: true, selector: "app-tab-panel", inputs: { id: "id", header: "header", closable: "closable", data: "data" }, queries: [{ propertyName: "templates", predicate: AppTabTemplateDirective }], usesOnChanges: true, ngImport: i0, template: `
21
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.5", type: TabPanelComponent, isStandalone: true, selector: "app-tab-panel", inputs: { id: "id", header: "header", closable: "closable", data: "data", headerType: "headerType", headerTemplate: "headerTemplate" }, queries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
52
22
  <ng-container *ngIf="renderKey">
53
- <ng-container *ngIf="contentTemplate">
54
- <ng-container
55
- *ngTemplateOutlet="contentTemplate; context: { data: data }">
56
- </ng-container>
23
+ <ng-container
24
+ *ngTemplateOutlet="content; context: { data: data }">
57
25
  </ng-container>
58
26
  </ng-container>
59
27
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
@@ -66,10 +34,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImpor
66
34
  imports: [CommonModule],
67
35
  template: `
68
36
  <ng-container *ngIf="renderKey">
69
- <ng-container *ngIf="contentTemplate">
70
- <ng-container
71
- *ngTemplateOutlet="contentTemplate; context: { data: data }">
72
- </ng-container>
37
+ <ng-container
38
+ *ngTemplateOutlet="content; context: { data: data }">
73
39
  </ng-container>
74
40
  </ng-container>
75
41
  `
@@ -83,9 +49,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImpor
83
49
  type: Input
84
50
  }], data: [{
85
51
  type: Input
86
- }], templates: [{
87
- type: ContentChildren,
88
- args: [AppTabTemplateDirective]
52
+ }], headerType: [{
53
+ type: Input
54
+ }], headerTemplate: [{
55
+ type: Input
56
+ }], content: [{
57
+ type: ContentChild,
58
+ args: [TemplateRef]
89
59
  }] } });
90
60
 
91
61
  class TabViewComponent {
@@ -136,11 +106,11 @@ class TabViewComponent {
136
106
  });
137
107
  }
138
108
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: TabViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
139
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.5", type: TabViewComponent, isStandalone: true, selector: "app-tab-view", inputs: { activeIndex: "activeIndex", scrollable: "scrollable" }, outputs: { activeIndexChange: "activeIndexChange", onChange: "onChange", onClose: "onClose" }, queries: [{ propertyName: "panelList", predicate: TabPanelComponent }], usesOnChanges: true, ngImport: i0, template: "<p-tabs [value]=\"activeValue\" (valueChange)=\"onValueChange($event)\" class=\"dashboard-Tab-View\">\r\n\r\n <p-tablist>\r\n @for (panel of panels; track panel.id) {\r\n <p-tab [value]=\"panel.id\">\r\n \r\n <!-- HEADER TEMPLATE GOES HERE -->\r\n @if (panel.headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"panel.headerTemplate;\r\n context: { panel: panel }\">\r\n </ng-container>\r\n } @else {\r\n {{ panel.header }}\r\n }\r\n \r\n </p-tab>\r\n }\r\n </p-tablist>\r\n\r\n <p-tabpanels>\r\n @for (panel of panels; track panel.id) {\r\n <p-tabpanel [value]=\"panel.id\">\r\n <ng-container *ngIf=\"panel.contentTemplate\">\r\n <ng-container *ngTemplateOutlet=\"panel.contentTemplate; context: { data: panel.data }\">\r\n </ng-container>\r\n </ng-container>\r\n </p-tabpanel>\r\n }\r\n </p-tabpanels>\r\n\r\n</p-tabs>", dependencies: [{ kind: "ngmodule", type: TabsModule }, { kind: "component", type: i1$1.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i1$1.TabPanels, selector: "p-tabpanels" }, { kind: "component", type: i1$1.TabPanel, selector: "p-tabpanel", inputs: ["lazy", "value"], outputs: ["valueChange"] }, { kind: "component", type: i1$1.TabList, selector: "p-tablist" }, { kind: "component", type: i1$1.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
109
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.5", type: TabViewComponent, isStandalone: true, selector: "app-tab-view", inputs: { activeIndex: "activeIndex", scrollable: "scrollable" }, outputs: { activeIndexChange: "activeIndexChange", onChange: "onChange", onClose: "onClose" }, queries: [{ propertyName: "panelList", predicate: TabPanelComponent }], usesOnChanges: true, ngImport: i0, template: "<p-tabs [value]=\"activeValue\" (valueChange)=\"onValueChange($event)\" class=\"dashboard-Tab-View\">\r\n\r\n <p-tablist>\r\n @for (panel of panels; track panel.id) {\r\n <p-tab [value]=\"panel.id\">\r\n @if (panel.headerType === 'template' && panel.headerTemplate) {\r\n\r\n <ng-container *ngTemplateOutlet=\"panel.headerTemplate;\r\n context: { panel: panel }\">\r\n </ng-container>\r\n\r\n } @else {\r\n\r\n {{ panel.header }}\r\n\r\n @if (panel.closable) {\r\n <i class=\"pi pi-times\" (click)=\"closeTab(panel, $event)\">\r\n </i>\r\n }\r\n }\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n\r\n <p-tabpanels>\r\n @for (panel of panels; track panel.id) {\r\n <p-tabpanel [value]=\"panel.id\">\r\n <ng-container *ngTemplateOutlet=\"panel.content; context: { data: panel.data }\">\r\n </ng-container>\r\n </p-tabpanel>\r\n }\r\n </p-tabpanels>\r\n\r\n</p-tabs>", dependencies: [{ kind: "ngmodule", type: TabsModule }, { kind: "component", type: i1$1.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i1$1.TabPanels, selector: "p-tabpanels" }, { kind: "component", type: i1$1.TabPanel, selector: "p-tabpanel", inputs: ["lazy", "value"], outputs: ["valueChange"] }, { kind: "component", type: i1$1.TabList, selector: "p-tablist" }, { kind: "component", type: i1$1.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
140
110
  }
141
111
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: TabViewComponent, decorators: [{
142
112
  type: Component,
143
- args: [{ selector: 'app-tab-view', standalone: true, imports: [TabsModule, CommonModule], template: "<p-tabs [value]=\"activeValue\" (valueChange)=\"onValueChange($event)\" class=\"dashboard-Tab-View\">\r\n\r\n <p-tablist>\r\n @for (panel of panels; track panel.id) {\r\n <p-tab [value]=\"panel.id\">\r\n \r\n <!-- HEADER TEMPLATE GOES HERE -->\r\n @if (panel.headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"panel.headerTemplate;\r\n context: { panel: panel }\">\r\n </ng-container>\r\n } @else {\r\n {{ panel.header }}\r\n }\r\n \r\n </p-tab>\r\n }\r\n </p-tablist>\r\n\r\n <p-tabpanels>\r\n @for (panel of panels; track panel.id) {\r\n <p-tabpanel [value]=\"panel.id\">\r\n <ng-container *ngIf=\"panel.contentTemplate\">\r\n <ng-container *ngTemplateOutlet=\"panel.contentTemplate; context: { data: panel.data }\">\r\n </ng-container>\r\n </ng-container>\r\n </p-tabpanel>\r\n }\r\n </p-tabpanels>\r\n\r\n</p-tabs>" }]
113
+ args: [{ selector: 'app-tab-view', standalone: true, imports: [TabsModule, CommonModule], template: "<p-tabs [value]=\"activeValue\" (valueChange)=\"onValueChange($event)\" class=\"dashboard-Tab-View\">\r\n\r\n <p-tablist>\r\n @for (panel of panels; track panel.id) {\r\n <p-tab [value]=\"panel.id\">\r\n @if (panel.headerType === 'template' && panel.headerTemplate) {\r\n\r\n <ng-container *ngTemplateOutlet=\"panel.headerTemplate;\r\n context: { panel: panel }\">\r\n </ng-container>\r\n\r\n } @else {\r\n\r\n {{ panel.header }}\r\n\r\n @if (panel.closable) {\r\n <i class=\"pi pi-times\" (click)=\"closeTab(panel, $event)\">\r\n </i>\r\n }\r\n }\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n\r\n <p-tabpanels>\r\n @for (panel of panels; track panel.id) {\r\n <p-tabpanel [value]=\"panel.id\">\r\n <ng-container *ngTemplateOutlet=\"panel.content; context: { data: panel.data }\">\r\n </ng-container>\r\n </p-tabpanel>\r\n }\r\n </p-tabpanels>\r\n\r\n</p-tabs>" }]
144
114
  }], propDecorators: { panelList: [{
145
115
  type: ContentChildren,
146
116
  args: [TabPanelComponent]
@@ -1 +1 @@
1
- {"version":3,"file":"sparc-shared-ui.mjs","sources":["../../../projects/shared-ui/src/lib/tabs/header.directive.ts","../../../projects/shared-ui/src/lib/tabs/tab-panel/tab-panel.component.ts","../../../projects/shared-ui/src/lib/tabs/tab-view/tab-view.component.ts","../../../projects/shared-ui/src/lib/tabs/tab-view/tab-view.component.html","../../../projects/shared-ui/src/public-api.ts","../../../projects/shared-ui/src/sparc-shared-ui.ts"],"sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appTabTemplate]',\r\n standalone: true\r\n})\r\nexport class AppTabTemplateDirective {\r\n @Input('appTabTemplate') type!: 'header' | 'content';\r\n\r\n constructor(public template: TemplateRef<any>) { }\r\n}","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n Input,\r\n QueryList,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AppTabTemplateDirective } from '../header.directive';\r\n\r\n@Component({\r\n selector: 'app-tab-panel',\r\n standalone: true,\r\n imports: [CommonModule],\r\n template: `\r\n <ng-container *ngIf=\"renderKey\">\r\n <ng-container *ngIf=\"contentTemplate\">\r\n <ng-container\r\n *ngTemplateOutlet=\"contentTemplate; context: { data: data }\">\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n `\r\n})\r\nexport class TabPanelComponent implements AfterContentInit {\r\n\r\n @Input({ required: true }) id!: number | string;\r\n @Input() header = '';\r\n @Input() closable = false;\r\n @Input() data: any;\r\n\r\n headerTemplate?: TemplateRef<any>;\r\n contentTemplate?: TemplateRef<any>;\r\n\r\n @ContentChildren(AppTabTemplateDirective)\r\n templates!: QueryList<AppTabTemplateDirective>;\r\n\r\n renderKey = 0;\r\n\r\n ngAfterContentInit() {\r\n this.templates.forEach(t => {\r\n if (t.type === 'header') {\r\n this.headerTemplate = t.template;\r\n }\r\n if (t.type === 'content') {\r\n this.contentTemplate = t.template;\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges() {\r\n this.renderKey++;\r\n }\r\n}","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n QueryList,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { TabsModule } from 'primeng/tabs';\r\nimport { TabPanelComponent } from '../tab-panel/tab-panel.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-tab-view',\r\n standalone: true,\r\n imports: [TabsModule, CommonModule],\r\n templateUrl: './tab-view.component.html',\r\n})\r\nexport class TabViewComponent implements AfterContentInit, OnChanges {\r\n\r\n @ContentChildren(TabPanelComponent)\r\n panelList!: QueryList<TabPanelComponent>;\r\n\r\n panels: TabPanelComponent[] = [];\r\n\r\n @Input() activeIndex = 0;\r\n @Input() scrollable = false;\r\n\r\n @Output() activeIndexChange = new EventEmitter<number>();\r\n @Output() onChange = new EventEmitter<any>();\r\n @Output() onClose = new EventEmitter<any>();\r\n\r\n activeValue: any;\r\n\r\n ngAfterContentInit() {\r\n this.syncPanels();\r\n\r\n this.panelList.changes.subscribe(() => {\r\n this.syncPanels();\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['activeIndex']) {\r\n this.updateActiveValue();\r\n }\r\n }\r\n\r\n private syncPanels() {\r\n this.panels = this.panelList.toArray();\r\n this.updateActiveValue();\r\n }\r\n\r\n private updateActiveValue() {\r\n this.activeValue = this.panels[this.activeIndex]?.id ?? null;\r\n }\r\n\r\n onValueChange(value: any) {\r\n const index = this.panels.findIndex(p => p.id === value);\r\n if (index === -1) return;\r\n\r\n this.activeIndex = index;\r\n this.activeIndexChange.emit(index);\r\n this.onChange.emit({ index });\r\n this.activeValue = value;\r\n }\r\n\r\n closeTab(panel: TabPanelComponent, event: Event) {\r\n event.stopPropagation();\r\n\r\n const index = this.panels.findIndex(p => p.id === panel.id);\r\n if (index === -1) return;\r\n\r\n // Child does NOT mutate data\r\n this.onClose.emit({\r\n index,\r\n panel\r\n });\r\n }\r\n\r\n\r\n}\r\n","<p-tabs [value]=\"activeValue\" (valueChange)=\"onValueChange($event)\" class=\"dashboard-Tab-View\">\r\n\r\n <p-tablist>\r\n @for (panel of panels; track panel.id) {\r\n <p-tab [value]=\"panel.id\">\r\n \r\n <!-- HEADER TEMPLATE GOES HERE -->\r\n @if (panel.headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"panel.headerTemplate;\r\n context: { panel: panel }\">\r\n </ng-container>\r\n } @else {\r\n {{ panel.header }}\r\n }\r\n \r\n </p-tab>\r\n }\r\n </p-tablist>\r\n\r\n <p-tabpanels>\r\n @for (panel of panels; track panel.id) {\r\n <p-tabpanel [value]=\"panel.id\">\r\n <ng-container *ngIf=\"panel.contentTemplate\">\r\n <ng-container *ngTemplateOutlet=\"panel.contentTemplate; context: { data: panel.data }\">\r\n </ng-container>\r\n </ng-container>\r\n </p-tabpanel>\r\n }\r\n </p-tabpanels>\r\n\r\n</p-tabs>","/*\r\n * Public API Surface of shared-ui\r\n */\r\n\r\nexport * from './lib';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2"],"mappings":"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"}
1
+ {"version":3,"file":"sparc-shared-ui.mjs","sources":["../../../projects/shared-ui/src/lib/tabs/tab-panel/tab-panel.component.ts","../../../projects/shared-ui/src/lib/tabs/tab-view/tab-view.component.ts","../../../projects/shared-ui/src/lib/tabs/tab-view/tab-view.component.html","../../../projects/shared-ui/src/public-api.ts","../../../projects/shared-ui/src/sparc-shared-ui.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, ContentChild, Input, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-tab-panel',\r\n standalone: true,\r\n imports: [CommonModule],\r\n template: `\r\n <ng-container *ngIf=\"renderKey\">\r\n <ng-container\r\n *ngTemplateOutlet=\"content; context: { data: data }\">\r\n </ng-container>\r\n </ng-container>\r\n `\r\n})\r\nexport class TabPanelComponent {\r\n @Input({ required: true }) id!: number | string;\r\n @Input() header = '';\r\n @Input() closable = false;\r\n @Input() data: any;\r\n @Input() headerType: 'text' | 'template' = 'text';\r\n @Input() headerTemplate?: TemplateRef<any>;\r\n\r\n @ContentChild(TemplateRef) content!: TemplateRef<any>;\r\n\r\n renderKey = 0;\r\n\r\n ngOnChanges() {\r\n this.renderKey++;\r\n }\r\n}\r\n\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n QueryList,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { TabsModule } from 'primeng/tabs';\r\nimport { TabPanelComponent } from '../tab-panel/tab-panel.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-tab-view',\r\n standalone: true,\r\n imports: [TabsModule, CommonModule],\r\n templateUrl: './tab-view.component.html',\r\n})\r\nexport class TabViewComponent implements AfterContentInit, OnChanges {\r\n\r\n @ContentChildren(TabPanelComponent)\r\n panelList!: QueryList<TabPanelComponent>;\r\n\r\n panels: TabPanelComponent[] = [];\r\n\r\n @Input() activeIndex = 0;\r\n @Input() scrollable = false;\r\n\r\n @Output() activeIndexChange = new EventEmitter<number>();\r\n @Output() onChange = new EventEmitter<any>();\r\n @Output() onClose = new EventEmitter<any>();\r\n\r\n activeValue: any;\r\n\r\n ngAfterContentInit() {\r\n this.syncPanels();\r\n\r\n this.panelList.changes.subscribe(() => {\r\n this.syncPanels();\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['activeIndex']) {\r\n this.updateActiveValue();\r\n }\r\n }\r\n\r\n private syncPanels() {\r\n this.panels = this.panelList.toArray();\r\n this.updateActiveValue();\r\n }\r\n\r\n private updateActiveValue() {\r\n this.activeValue = this.panels[this.activeIndex]?.id ?? null;\r\n }\r\n\r\n onValueChange(value: any) {\r\n const index = this.panels.findIndex(p => p.id === value);\r\n if (index === -1) return;\r\n\r\n this.activeIndex = index;\r\n this.activeIndexChange.emit(index);\r\n this.onChange.emit({ index });\r\n this.activeValue = value;\r\n }\r\n\r\n closeTab(panel: TabPanelComponent, event: Event) {\r\n event.stopPropagation();\r\n\r\n const index = this.panels.findIndex(p => p.id === panel.id);\r\n if (index === -1) return;\r\n\r\n // Child does NOT mutate data\r\n this.onClose.emit({\r\n index,\r\n panel\r\n });\r\n }\r\n\r\n\r\n}\r\n","<p-tabs [value]=\"activeValue\" (valueChange)=\"onValueChange($event)\" class=\"dashboard-Tab-View\">\r\n\r\n <p-tablist>\r\n @for (panel of panels; track panel.id) {\r\n <p-tab [value]=\"panel.id\">\r\n @if (panel.headerType === 'template' && panel.headerTemplate) {\r\n\r\n <ng-container *ngTemplateOutlet=\"panel.headerTemplate;\r\n context: { panel: panel }\">\r\n </ng-container>\r\n\r\n } @else {\r\n\r\n {{ panel.header }}\r\n\r\n @if (panel.closable) {\r\n <i class=\"pi pi-times\" (click)=\"closeTab(panel, $event)\">\r\n </i>\r\n }\r\n }\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n\r\n <p-tabpanels>\r\n @for (panel of panels; track panel.id) {\r\n <p-tabpanel [value]=\"panel.id\">\r\n <ng-container *ngTemplateOutlet=\"panel.content; context: { data: panel.data }\">\r\n </ng-container>\r\n </p-tabpanel>\r\n }\r\n </p-tabpanels>\r\n\r\n</p-tabs>","/*\r\n * Public API Surface of shared-ui\r\n */\r\n\r\nexport * from './lib';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sparc-shared-ui",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.1.0",
6
6
  "@angular/core": "^21.1.0"
@@ -1,27 +1,18 @@
1
1
  import * as i0 from '@angular/core';
2
- import { TemplateRef, AfterContentInit, QueryList, OnChanges, EventEmitter, SimpleChanges } from '@angular/core';
2
+ import { TemplateRef, AfterContentInit, OnChanges, QueryList, EventEmitter, SimpleChanges } from '@angular/core';
3
3
 
4
- declare class AppTabTemplateDirective {
5
- template: TemplateRef<any>;
6
- type: 'header' | 'content';
7
- constructor(template: TemplateRef<any>);
8
- static ɵfac: i0.ɵɵFactoryDeclaration<AppTabTemplateDirective, never>;
9
- static ɵdir: i0.ɵɵDirectiveDeclaration<AppTabTemplateDirective, "[appTabTemplate]", never, { "type": { "alias": "appTabTemplate"; "required": false; }; }, {}, never, never, true, never>;
10
- }
11
-
12
- declare class TabPanelComponent implements AfterContentInit {
4
+ declare class TabPanelComponent {
13
5
  id: number | string;
14
6
  header: string;
15
7
  closable: boolean;
16
8
  data: any;
9
+ headerType: 'text' | 'template';
17
10
  headerTemplate?: TemplateRef<any>;
18
- contentTemplate?: TemplateRef<any>;
19
- templates: QueryList<AppTabTemplateDirective>;
11
+ content: TemplateRef<any>;
20
12
  renderKey: number;
21
- ngAfterContentInit(): void;
22
13
  ngOnChanges(): void;
23
14
  static ɵfac: i0.ɵɵFactoryDeclaration<TabPanelComponent, never>;
24
- static ɵcmp: i0.ɵɵComponentDeclaration<TabPanelComponent, "app-tab-panel", never, { "id": { "alias": "id"; "required": true; }; "header": { "alias": "header"; "required": false; }; "closable": { "alias": "closable"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, {}, ["templates"], never, true, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<TabPanelComponent, "app-tab-panel", never, { "id": { "alias": "id"; "required": true; }; "header": { "alias": "header"; "required": false; }; "closable": { "alias": "closable"; "required": false; }; "data": { "alias": "data"; "required": false; }; "headerType": { "alias": "headerType"; "required": false; }; "headerTemplate": { "alias": "headerTemplate"; "required": false; }; }, {}, ["content"], never, true, never>;
25
16
  }
26
17
 
27
18
  declare class TabViewComponent implements AfterContentInit, OnChanges {