sparc-shared-ui 0.0.8 → 0.0.10

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,49 +1,20 @@
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 from 'primeng/tabs';
4
4
  import { TabsModule } from 'primeng/tabs';
5
5
  import * as i2 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 = '';
11
+ closable = false;
31
12
  data;
13
+ headerType = 'text';
32
14
  headerTemplate;
33
- contentTemplate;
34
- templates;
35
- ngAfterContentInit() {
36
- this.templates.forEach(t => {
37
- if (t.type === 'header') {
38
- this.headerTemplate = t.template;
39
- }
40
- if (t.type === 'content') {
41
- this.contentTemplate = t.template;
42
- }
43
- });
44
- }
15
+ content;
45
16
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: TabPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
46
- 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", data: "data" }, queries: [{ propertyName: "templates", predicate: AppTabTemplateDirective }], ngImport: i0, template: ``, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
17
+ 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 }], ngImport: i0, template: ``, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
47
18
  }
48
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: TabPanelComponent, decorators: [{
49
20
  type: Component,
@@ -58,11 +29,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImpor
58
29
  args: [{ required: true }]
59
30
  }], header: [{
60
31
  type: Input
32
+ }], closable: [{
33
+ type: Input
61
34
  }], data: [{
62
35
  type: Input
63
- }], templates: [{
64
- type: ContentChildren,
65
- args: [AppTabTemplateDirective]
36
+ }], headerType: [{
37
+ type: Input
38
+ }], headerTemplate: [{
39
+ type: Input
40
+ }], content: [{
41
+ type: ContentChild,
42
+ args: [TemplateRef]
66
43
  }] } });
67
44
 
68
45
  class TabViewComponent {
@@ -113,11 +90,11 @@ class TabViewComponent {
113
90
  });
114
91
  }
115
92
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: TabViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
116
- 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 @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 <!-- CONTENT -->\r\n <p-tabpanels>\r\n @for (panel of panels; track panel.id) {\r\n <p-tabpanel [value]=\"panel.id\">\r\n\r\n @if (panel.contentTemplate) {\r\n <ng-container *ngTemplateOutlet=\"panel.contentTemplate;\r\n context: { data: panel.data }\">\r\n </ng-container>\r\n }\r\n\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.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i1.TabPanels, selector: "p-tabpanels" }, { kind: "component", type: i1.TabPanel, selector: "p-tabpanel", inputs: ["lazy", "value"], outputs: ["valueChange"] }, { kind: "component", type: i1.TabList, selector: "p-tablist" }, { kind: "component", type: i1.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
93
+ 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 <!-- HEADER -->\r\n <p-tablist>\r\n @for (panel of panels; track panel.id) {\r\n <p-tab [value]=\"panel.id\">\r\n\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\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n\r\n <!-- CONTENT -->\r\n <p-tabpanels>\r\n @for (panel of panels; track panel.id) {\r\n <p-tabpanel [value]=\"panel.id\">\r\n\r\n <ng-container *ngTemplateOutlet=\"panel.content;\r\n context: { data: panel.data }\">\r\n </ng-container>\r\n\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.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i1.TabPanels, selector: "p-tabpanels" }, { kind: "component", type: i1.TabPanel, selector: "p-tabpanel", inputs: ["lazy", "value"], outputs: ["valueChange"] }, { kind: "component", type: i1.TabList, selector: "p-tablist" }, { kind: "component", type: i1.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
117
94
  }
118
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: TabViewComponent, decorators: [{
119
96
  type: Component,
120
- 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 @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 <!-- CONTENT -->\r\n <p-tabpanels>\r\n @for (panel of panels; track panel.id) {\r\n <p-tabpanel [value]=\"panel.id\">\r\n\r\n @if (panel.contentTemplate) {\r\n <ng-container *ngTemplateOutlet=\"panel.contentTemplate;\r\n context: { data: panel.data }\">\r\n </ng-container>\r\n }\r\n\r\n </p-tabpanel>\r\n }\r\n </p-tabpanels>\r\n\r\n</p-tabs>" }]
97
+ 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 <!-- HEADER -->\r\n <p-tablist>\r\n @for (panel of panels; track panel.id) {\r\n <p-tab [value]=\"panel.id\">\r\n\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\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n\r\n <!-- CONTENT -->\r\n <p-tabpanels>\r\n @for (panel of panels; track panel.id) {\r\n <p-tabpanel [value]=\"panel.id\">\r\n\r\n <ng-container *ngTemplateOutlet=\"panel.content;\r\n context: { data: panel.data }\">\r\n </ng-container>\r\n\r\n </p-tabpanel>\r\n }\r\n </p-tabpanels>\r\n\r\n</p-tabs>" }]
121
98
  }], propDecorators: { panelList: [{
122
99
  type: ContentChildren,
123
100
  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})\r\nexport class TabPanelComponent implements AfterContentInit {\r\n\r\n @Input({ required: true }) id!: number | string;\r\n @Input() header = '';\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 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}","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 @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 <!-- CONTENT -->\r\n <p-tabpanels>\r\n @for (panel of panels; track panel.id) {\r\n <p-tabpanel [value]=\"panel.id\">\r\n\r\n @if (panel.contentTemplate) {\r\n <ng-container *ngTemplateOutlet=\"panel.contentTemplate;\r\n context: { data: panel.data }\">\r\n </ng-container>\r\n }\r\n\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":[],"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})\r\nexport class TabPanelComponent {\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 @Input() headerType: 'text' | 'template' = 'text';\r\n @Input() headerTemplate?: TemplateRef<any>;\r\n\r\n @ContentChild(TemplateRef)\r\n content!: TemplateRef<any>;\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 <!-- HEADER -->\r\n <p-tablist>\r\n @for (panel of panels; track panel.id) {\r\n <p-tab [value]=\"panel.id\">\r\n\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\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n\r\n <!-- CONTENT -->\r\n <p-tabpanels>\r\n @for (panel of panels; track panel.id) {\r\n <p-tabpanel [value]=\"panel.id\">\r\n\r\n <ng-container *ngTemplateOutlet=\"panel.content;\r\n context: { data: panel.data }\">\r\n </ng-container>\r\n\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":[],"mappings":";;;;;;;MASa,iBAAiB,CAAA;AAED,IAAA,EAAE;IACpB,MAAM,GAAG,EAAE;IACX,QAAQ,GAAG,KAAK;AAChB,IAAA,IAAI;IACJ,UAAU,GAAwB,MAAM;AACxC,IAAA,cAAc;AAGvB,IAAA,OAAO;uGAVI,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EASd,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXf,CAAA,CAAE,2DADF,YAAY,EAAA,CAAA,EAAA,CAAA;;2FAGX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE,CAAA;AACX,iBAAA;;sBAGE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA,YAAY;uBAAC,WAAW;;;MCGd,gBAAgB,CAAA;AAG3B,IAAA,SAAS;IAET,MAAM,GAAwB,EAAE;IAEvB,WAAW,GAAG,CAAC;IACf,UAAU,GAAG,KAAK;AAEjB,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU;AAC9C,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAO;AAClC,IAAA,OAAO,GAAG,IAAI,YAAY,EAAO;AAE3C,IAAA,WAAW;IAEX,kBAAkB,GAAA;QAChB,IAAI,CAAC,UAAU,EAAE;QAEjB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YACpC,IAAI,CAAC,UAAU,EAAE;AACnB,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;YAC1B,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;IAEQ,UAAU,GAAA;QAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;QACtC,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,IAAI;IAC9D;AAEA,IAAA,aAAa,CAAC,KAAU,EAAA;AACtB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC;QACxD,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE;AAElB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC1B;IAEA,QAAQ,CAAC,KAAwB,EAAE,KAAY,EAAA;QAC7C,KAAK,CAAC,eAAe,EAAE;QAEvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;QAC3D,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE;;AAGlB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,KAAK;YACL;AACD,SAAA,CAAC;IACJ;uGA5DW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,mQAEV,iBAAiB,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBpC,6pCAwCS,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtBG,UAAU,sjBAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGvB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cACZ,IAAI,EAAA,OAAA,EACP,CAAC,UAAU,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,6pCAAA,EAAA;;sBAKlC,eAAe;uBAAC,iBAAiB;;sBAKjC;;sBACA;;sBAEA;;sBACA;;sBACA;;;AEjCH;;AAEG;;ACFH;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sparc-shared-ui",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.1.0",
6
6
  "@angular/core": "^21.1.0"
@@ -1,24 +1,16 @@
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;
7
+ closable: boolean;
15
8
  data: any;
9
+ headerType: 'text' | 'template';
16
10
  headerTemplate?: TemplateRef<any>;
17
- contentTemplate?: TemplateRef<any>;
18
- templates: QueryList<AppTabTemplateDirective>;
19
- ngAfterContentInit(): void;
11
+ content: TemplateRef<any>;
20
12
  static ɵfac: i0.ɵɵFactoryDeclaration<TabPanelComponent, never>;
21
- static ɵcmp: i0.ɵɵComponentDeclaration<TabPanelComponent, "app-tab-panel", never, { "id": { "alias": "id"; "required": true; }; "header": { "alias": "header"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, {}, ["templates"], never, true, never>;
13
+ 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>;
22
14
  }
23
15
 
24
16
  declare class TabViewComponent implements AfterContentInit, OnChanges {