inugami-ng 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/inugami-ng-components-inu-checkbox-group.mjs +23 -15
- package/fesm2022/inugami-ng-components-inu-checkbox-group.mjs.map +1 -1
- package/fesm2022/inugami-ng-components-inu-panel-tabs.mjs +7 -3
- package/fesm2022/inugami-ng-components-inu-panel-tabs.mjs.map +1 -1
- package/package.json +1 -1
- package/types/inugami-ng-components-inu-checkbox-group.d.ts +2 -2
- package/types/inugami-ng-components-inu-panel-tabs.d.ts +2 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, model, signal, effect,
|
|
2
|
+
import { input, output, model, signal, effect, Component } from '@angular/core';
|
|
3
3
|
import { InuIcon } from 'inugami-icons';
|
|
4
4
|
|
|
5
5
|
class InuCheckboxGroup {
|
|
@@ -12,9 +12,7 @@ class InuCheckboxGroup {
|
|
|
12
12
|
_required = input(false, { ...(ngDevMode ? { debugName: "_required" } : {}), alias: 'required' });
|
|
13
13
|
values = input([], ...(ngDevMode ? [{ debugName: "values" }] : []));
|
|
14
14
|
vertical = input(false, ...(ngDevMode ? [{ debugName: "vertical" }] : []));
|
|
15
|
-
|
|
16
|
-
console.log('RECU VIA DECORATEUR :', v);
|
|
17
|
-
}
|
|
15
|
+
changed = output();
|
|
18
16
|
// FormValueControl
|
|
19
17
|
value = model([], ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
20
18
|
_values = signal([], ...(ngDevMode ? [{ debugName: "_values" }] : []));
|
|
@@ -26,15 +24,10 @@ class InuCheckboxGroup {
|
|
|
26
24
|
constructor() {
|
|
27
25
|
effect(() => {
|
|
28
26
|
this.initStyleClass();
|
|
29
|
-
const required = this._required();
|
|
30
|
-
console.log('required', required);
|
|
31
27
|
});
|
|
32
28
|
}
|
|
33
29
|
ngOnInit() {
|
|
34
30
|
this.initSelectItems();
|
|
35
|
-
setTimeout(() => {
|
|
36
|
-
console.log('Required après timeout:', this._required());
|
|
37
|
-
}, 100);
|
|
38
31
|
}
|
|
39
32
|
initSelectItems() {
|
|
40
33
|
const values = this.values();
|
|
@@ -70,6 +63,21 @@ class InuCheckboxGroup {
|
|
|
70
63
|
if (this.disabled()) {
|
|
71
64
|
result.push('disabled');
|
|
72
65
|
}
|
|
66
|
+
if (this._required()) {
|
|
67
|
+
const values = this._values();
|
|
68
|
+
let found = false;
|
|
69
|
+
if (values) {
|
|
70
|
+
for (let value of values) {
|
|
71
|
+
found = value.selected != undefined && value.selected;
|
|
72
|
+
if (found) {
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (!found) {
|
|
78
|
+
result.push('notValid');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
73
81
|
this.styleClass.set(result.join(' '));
|
|
74
82
|
}
|
|
75
83
|
//==================================================================================================================
|
|
@@ -85,9 +93,9 @@ class InuCheckboxGroup {
|
|
|
85
93
|
else {
|
|
86
94
|
value.selected = !value.selected;
|
|
87
95
|
}
|
|
96
|
+
const newSelectedValues = [];
|
|
88
97
|
const currentValues = this._values();
|
|
89
98
|
if (currentValues) {
|
|
90
|
-
const newSelectedValues = [];
|
|
91
99
|
for (let selectItem of currentValues) {
|
|
92
100
|
if (selectItem.selected) {
|
|
93
101
|
newSelectedValues.push(selectItem.value);
|
|
@@ -95,6 +103,8 @@ class InuCheckboxGroup {
|
|
|
95
103
|
}
|
|
96
104
|
this.value.set(newSelectedValues);
|
|
97
105
|
}
|
|
106
|
+
this.initStyleClass();
|
|
107
|
+
this.changed.emit(newSelectedValues);
|
|
98
108
|
}
|
|
99
109
|
getItemClass(selectItem) {
|
|
100
110
|
return selectItem.styleClass;
|
|
@@ -103,14 +113,12 @@ class InuCheckboxGroup {
|
|
|
103
113
|
return valueItem === resultItem.value;
|
|
104
114
|
}
|
|
105
115
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuCheckboxGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
106
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: InuCheckboxGroup, isStandalone: true, selector: "inu-checkbox-group", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, _required: { classPropertyName: "_required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: false, transformFunction: null }, vertical: { classPropertyName: "vertical", publicName: "vertical", isSignal: true, isRequired: false, transformFunction: null },
|
|
116
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: InuCheckboxGroup, isStandalone: true, selector: "inu-checkbox-group", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, _required: { classPropertyName: "_required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: false, transformFunction: null }, vertical: { classPropertyName: "vertical", publicName: "vertical", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed", value: "valueChange" }, providers: [], ngImport: i0, template: "<div [class]=\"styleClass()\">\n\n <div class=\"inu-checkbox-group-label-grp\">\n <div class=\"inu-checkbox-group-label\">\n @if (label()) {\n {{ label() }}\n }\n </div>\n @if (_required()) {\n <div class=\"inu-checkbox-group-required\">\n <inu-icon icon=\"required\" [size]=\"0.5\"></inu-icon>\n </div>\n }\n </div>\n <ul>\n @if (_values()) {\n @for (selectItem of _values(); track selectItem.value; ) {\n <li (click)=\"toggle(selectItem)\" [class]=\"getItemClass(selectItem)\">\n <div class=\"inu-checkbox-group-icon\">\n @if (selectItem.selected) {\n <inu-icon icon=\"check\" [size]=\"0.9\" tabindex=\"0\"></inu-icon>\n }\n </div>\n <div class=\"inu-checkbox-group-label\">\n <span>{{ selectItem.title! }}</span>\n </div>\n\n </li>\n }\n }\n </ul>\n</div>\n", styles: [".inu-checkbox-group{display:flex;flex-direction:column;gap:1rem}.inu-checkbox-group .inu-checkbox-group-label-grp{display:flex}.inu-checkbox-group .inu-checkbox-group-label-grp .inu-checkbox-group-label{font-weight:700}.inu-checkbox-group .inu-checkbox-group-label-grp .inu-checkbox-group-required{display:flex;fill:var(--danger)}.inu-checkbox-group .inu-checkbox-group-label-grp .inu-checkbox-group-required ::ng-deep span{height:1rem;display:flex;align-items:baseline}.inu-checkbox-group ul{display:flex;margin:0;padding:0;gap:1rem}.inu-checkbox-group ul li{display:flex;gap:.25rem;align-items:center}.inu-checkbox-group ul li .inu-checkbox-group-icon{-webkit-user-select:none;user-select:none;cursor:pointer;border:.125px solid var(--text-color);display:flex;height:1rem;width:1rem;align-items:center}.inu-checkbox-group ul li .inu-checkbox-group-icon ::ng-deep span{display:flex;align-items:center}.inu-checkbox-group ul li .inu-checkbox-group-label{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;user-select:none}.inu-checkbox-group.vertical ul{flex-direction:column}.inu-checkbox-group.disabled .inu-checkbox-group-icon{border:.125px solid var(--neutral);fill:var(--neutral)}.inu-checkbox-group.disabled .inu-checkbox-group-label{color:var(--neutral)}.inu-checkbox-group.notValid .inu-checkbox-group-label-grp{color:var(--danger)}.inu-checkbox-group.notValid li .inu-checkbox-group-icon{border:.125px solid var(--danger)!important}\n"], dependencies: [{ kind: "component", type: InuIcon, selector: "inu-icon", inputs: ["icon", "defaultIcon", "styleclass", "size"] }] });
|
|
107
117
|
}
|
|
108
118
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuCheckboxGroup, decorators: [{
|
|
109
119
|
type: Component,
|
|
110
|
-
args: [{ selector: 'inu-checkbox-group', standalone: true, providers: [], imports: [InuIcon], template: "<div [class]=\"styleClass()\">\n\n <div class=\"inu-checkbox-group-label-grp\">\n <div class=\"inu-checkbox-group-label\">\n @if (label()) {\n {{ label() }}\n }\n </div>\n @if (_required()) {\n <div class=\"inu-checkbox-group-required\">\n <inu-icon icon=\"required\" [size]=\"0.5\"></inu-icon>\n </div>\n }\n </div>\n <ul>\n @if (_values()) {\n @for (selectItem of _values(); track selectItem.value; ) {\n <li (click)=\"toggle(selectItem)\" [class]=\"getItemClass(selectItem)\">\n <div class=\"inu-checkbox-group-icon\">\n @if (selectItem.selected) {\n <inu-icon icon=\"check\" [size]=\"0.9\" tabindex=\"0\"></inu-icon>\n }\n </div>\n <div class=\"inu-checkbox-group-label\">\n <span>{{ selectItem.title! }}</span>\n </div>\n\n </li>\n }\n }\n </ul>\n</div>\n", styles: [".inu-checkbox-group{display:flex;flex-direction:column;gap:1rem}.inu-checkbox-group .inu-checkbox-group-label-grp{display:flex}.inu-checkbox-group .inu-checkbox-group-label-grp .inu-checkbox-group-label{font-weight:700}.inu-checkbox-group .inu-checkbox-group-label-grp .inu-checkbox-group-required{display:flex;fill:var(--danger)}.inu-checkbox-group .inu-checkbox-group-label-grp .inu-checkbox-group-required ::ng-deep span{height:1rem;display:flex;align-items:baseline}.inu-checkbox-group ul{display:flex;margin:0;padding:0;gap:1rem}.inu-checkbox-group ul li{display:flex;gap:.25rem;align-items:center}.inu-checkbox-group ul li .inu-checkbox-group-icon{-webkit-user-select:none;user-select:none;cursor:pointer;border:.125px solid var(--text-color);display:flex;height:1rem;width:1rem;align-items:center}.inu-checkbox-group ul li .inu-checkbox-group-icon ::ng-deep span{display:flex;align-items:center}.inu-checkbox-group ul li .inu-checkbox-group-label{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;user-select:none}.inu-checkbox-group.vertical ul{flex-direction:column}.inu-checkbox-group.disabled .inu-checkbox-group-icon{border:.125px solid var(--neutral);fill:var(--neutral)}.inu-checkbox-group.disabled .inu-checkbox-group-label{color:var(--neutral)}\n"] }]
|
|
111
|
-
}], ctorParameters: () => [], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], _required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], values: [{ type: i0.Input, args: [{ isSignal: true, alias: "values", required: false }] }], vertical: [{ type: i0.Input, args: [{ isSignal: true, alias: "vertical", required: false }] }],
|
|
112
|
-
type: Input
|
|
113
|
-
}], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
|
|
120
|
+
args: [{ selector: 'inu-checkbox-group', standalone: true, providers: [], imports: [InuIcon], template: "<div [class]=\"styleClass()\">\n\n <div class=\"inu-checkbox-group-label-grp\">\n <div class=\"inu-checkbox-group-label\">\n @if (label()) {\n {{ label() }}\n }\n </div>\n @if (_required()) {\n <div class=\"inu-checkbox-group-required\">\n <inu-icon icon=\"required\" [size]=\"0.5\"></inu-icon>\n </div>\n }\n </div>\n <ul>\n @if (_values()) {\n @for (selectItem of _values(); track selectItem.value; ) {\n <li (click)=\"toggle(selectItem)\" [class]=\"getItemClass(selectItem)\">\n <div class=\"inu-checkbox-group-icon\">\n @if (selectItem.selected) {\n <inu-icon icon=\"check\" [size]=\"0.9\" tabindex=\"0\"></inu-icon>\n }\n </div>\n <div class=\"inu-checkbox-group-label\">\n <span>{{ selectItem.title! }}</span>\n </div>\n\n </li>\n }\n }\n </ul>\n</div>\n", styles: [".inu-checkbox-group{display:flex;flex-direction:column;gap:1rem}.inu-checkbox-group .inu-checkbox-group-label-grp{display:flex}.inu-checkbox-group .inu-checkbox-group-label-grp .inu-checkbox-group-label{font-weight:700}.inu-checkbox-group .inu-checkbox-group-label-grp .inu-checkbox-group-required{display:flex;fill:var(--danger)}.inu-checkbox-group .inu-checkbox-group-label-grp .inu-checkbox-group-required ::ng-deep span{height:1rem;display:flex;align-items:baseline}.inu-checkbox-group ul{display:flex;margin:0;padding:0;gap:1rem}.inu-checkbox-group ul li{display:flex;gap:.25rem;align-items:center}.inu-checkbox-group ul li .inu-checkbox-group-icon{-webkit-user-select:none;user-select:none;cursor:pointer;border:.125px solid var(--text-color);display:flex;height:1rem;width:1rem;align-items:center}.inu-checkbox-group ul li .inu-checkbox-group-icon ::ng-deep span{display:flex;align-items:center}.inu-checkbox-group ul li .inu-checkbox-group-label{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;user-select:none}.inu-checkbox-group.vertical ul{flex-direction:column}.inu-checkbox-group.disabled .inu-checkbox-group-icon{border:.125px solid var(--neutral);fill:var(--neutral)}.inu-checkbox-group.disabled .inu-checkbox-group-label{color:var(--neutral)}.inu-checkbox-group.notValid .inu-checkbox-group-label-grp{color:var(--danger)}.inu-checkbox-group.notValid li .inu-checkbox-group-icon{border:.125px solid var(--danger)!important}\n"] }]
|
|
121
|
+
}], ctorParameters: () => [], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], _required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], values: [{ type: i0.Input, args: [{ isSignal: true, alias: "values", required: false }] }], vertical: [{ type: i0.Input, args: [{ isSignal: true, alias: "vertical", required: false }] }], changed: [{ type: i0.Output, args: ["changed"] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
|
|
114
122
|
|
|
115
123
|
/**
|
|
116
124
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inugami-ng-components-inu-checkbox-group.mjs","sources":["../../../projects/inugami-ng/components/inu-checkbox-group/inu-checkbox-group.component.ts","../../../projects/inugami-ng/components/inu-checkbox-group/inu-checkbox-group.component.html","../../../projects/inugami-ng/components/inu-checkbox-group/inugami-ng-components-inu-checkbox-group.ts"],"sourcesContent":["import {Component, effect,
|
|
1
|
+
{"version":3,"file":"inugami-ng-components-inu-checkbox-group.mjs","sources":["../../../projects/inugami-ng/components/inu-checkbox-group/inu-checkbox-group.component.ts","../../../projects/inugami-ng/components/inu-checkbox-group/inu-checkbox-group.component.html","../../../projects/inugami-ng/components/inu-checkbox-group/inugami-ng-components-inu-checkbox-group.ts"],"sourcesContent":["import {Component, effect, input, model, ModelSignal, OnInit, output, signal} from '@angular/core';\nimport {InuSelectItem} from 'inugami-ng/models';\nimport {FormValueControl} from '@angular/forms/signals';\nimport {InuIcon} from 'inugami-icons';\n\n@Component({\n selector: 'inu-checkbox-group',\n standalone: true,\n providers: [],\n imports: [InuIcon],\n templateUrl: './inu-checkbox-group.component.html',\n styleUrl: './inu-checkbox-group.component.scss',\n})\nexport class InuCheckboxGroup<T> implements FormValueControl<T[]>, OnInit {\n\n\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n // input\n readonly disabled = input(false);\n readonly label = input('');\n readonly _required = input(false, {alias: 'required'});\n readonly values = input<InuSelectItem<T>[]>([]);\n readonly vertical = input(false);\n changed = output<T[]>();\n\n // FormValueControl\n value: ModelSignal<T[]> = model(<T[]>[]);\n _values = signal<InuSelectItem<T>[]>([]);\n // internal\n\n styleClass = signal<string>('');\n\n\n //==================================================================================================================\n // INIT\n //==================================================================================================================\n\n constructor() {\n effect(() => {\n this.initStyleClass();\n });\n }\n\n ngOnInit(): void {\n this.initSelectItems();\n }\n\n private initSelectItems() {\n\n const values = this.values();\n if (!values) {\n return;\n }\n\n const result: InuSelectItem<T>[] = [];\n for (let item of values) {\n result.push(Object.assign({}, item));\n }\n const currentValue = this.value();\n if (!currentValue) {\n return;\n }\n\n for (let valueItem of currentValue) {\n for (let resultItem of result) {\n if (this.match(valueItem, resultItem)) {\n resultItem.selected = true;\n break;\n }\n }\n }\n this._values.set(result);\n }\n\n private initStyleClass() {\n const result: string[] = ['inu-checkbox-group'];\n if (this.vertical()) {\n result.push('vertical');\n }\n if (this._required()) {\n result.push('required');\n }\n if (this.disabled()) {\n result.push('disabled');\n }\n\n if (this._required()) {\n const values = this._values();\n let found = false;\n\n if (values) {\n for (let value of values) {\n found = value.selected != undefined && value.selected;\n if (found) {\n break;\n }\n }\n }\n if(!found){\n result.push('notValid');\n }\n }\n\n this.styleClass.set(result.join(' '));\n }\n\n\n //==================================================================================================================\n // ACTIONS\n //==================================================================================================================\n protected toggle(value: InuSelectItem<T>) {\n if (this.disabled()) {\n return;\n }\n if (value.selected == undefined) {\n value.selected = true\n } else {\n value.selected = !value.selected;\n }\n\n const newSelectedValues: T[] = [];\n const currentValues = this._values();\n if (currentValues) {\n for (let selectItem of currentValues) {\n if (selectItem.selected) {\n newSelectedValues.push(selectItem.value);\n }\n }\n this.value.set(newSelectedValues);\n }\n\n this.initStyleClass();\n\n this.changed.emit(newSelectedValues);\n }\n\n\n protected getItemClass(selectItem: InuSelectItem<T>): string {\n return selectItem.styleClass!;\n }\n\n\n private match(valueItem: T, resultItem: InuSelectItem<T>) {\n return valueItem === resultItem.value;\n }\n}\n","<div [class]=\"styleClass()\">\n\n <div class=\"inu-checkbox-group-label-grp\">\n <div class=\"inu-checkbox-group-label\">\n @if (label()) {\n {{ label() }}\n }\n </div>\n @if (_required()) {\n <div class=\"inu-checkbox-group-required\">\n <inu-icon icon=\"required\" [size]=\"0.5\"></inu-icon>\n </div>\n }\n </div>\n <ul>\n @if (_values()) {\n @for (selectItem of _values(); track selectItem.value; ) {\n <li (click)=\"toggle(selectItem)\" [class]=\"getItemClass(selectItem)\">\n <div class=\"inu-checkbox-group-icon\">\n @if (selectItem.selected) {\n <inu-icon icon=\"check\" [size]=\"0.9\" tabindex=\"0\"></inu-icon>\n }\n </div>\n <div class=\"inu-checkbox-group-label\">\n <span>{{ selectItem.title! }}</span>\n </div>\n\n </li>\n }\n }\n </ul>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, viewChild, signal, effect, Component, contentChildren } from '@angular/core';
|
|
2
|
+
import { input, viewChild, signal, effect, Component, contentChildren, output } from '@angular/core';
|
|
3
3
|
import { NgTemplateOutlet } from '@angular/common';
|
|
4
4
|
import { InuIcon } from 'inugami-icons';
|
|
5
5
|
|
|
@@ -65,6 +65,7 @@ class InuPanelTabs {
|
|
|
65
65
|
styleClass = input('', ...(ngDevMode ? [{ debugName: "styleClass" }] : []));
|
|
66
66
|
vertical = input(false, ...(ngDevMode ? [{ debugName: "vertical" }] : []));
|
|
67
67
|
childrenTabs = contentChildren(InuPanelTab, ...(ngDevMode ? [{ debugName: "childrenTabs" }] : []));
|
|
68
|
+
changed = output();
|
|
68
69
|
//
|
|
69
70
|
_styleClass = signal('', ...(ngDevMode ? [{ debugName: "_styleClass" }] : []));
|
|
70
71
|
valid = signal(true, ...(ngDevMode ? [{ debugName: "valid" }] : []));
|
|
@@ -103,6 +104,7 @@ class InuPanelTabs {
|
|
|
103
104
|
for (let child of children) {
|
|
104
105
|
if (activeTab == child.name()) {
|
|
105
106
|
child.display.set(true);
|
|
107
|
+
this.changed.emit(child.name());
|
|
106
108
|
this.valid.set(child.valid());
|
|
107
109
|
found = true;
|
|
108
110
|
}
|
|
@@ -113,6 +115,7 @@ class InuPanelTabs {
|
|
|
113
115
|
for (let child of children) {
|
|
114
116
|
if (first) {
|
|
115
117
|
child.display.set(true);
|
|
118
|
+
this.changed.emit(child.name());
|
|
116
119
|
this.valid.set(child.valid());
|
|
117
120
|
first = false;
|
|
118
121
|
}
|
|
@@ -136,6 +139,7 @@ class InuPanelTabs {
|
|
|
136
139
|
if (child.name() === panel.name()) {
|
|
137
140
|
child.display.set(true);
|
|
138
141
|
this.valid.set(child.valid());
|
|
142
|
+
this.changed.emit(child.name());
|
|
139
143
|
}
|
|
140
144
|
else {
|
|
141
145
|
child.display.set(false);
|
|
@@ -159,7 +163,7 @@ class InuPanelTabs {
|
|
|
159
163
|
}
|
|
160
164
|
}
|
|
161
165
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuPanelTabs, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
162
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: InuPanelTabs, isStandalone: true, selector: "inu-panel-tabs", inputs: { activeTab: { classPropertyName: "activeTab", publicName: "activeTab", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, vertical: { classPropertyName: "vertical", publicName: "vertical", isSignal: true, isRequired: false, transformFunction: null } }, providers: [], queries: [{ propertyName: "childrenTabs", predicate: InuPanelTab, isSignal: true }], ngImport: i0, template: "<div [class]=\"_styleClass()\">\n\n\n <div class=\"inu-panel-tabs-headers\">\n <ul [class.noValid]=\"!valid()\">\n @for (tab of tabs(); track tab) {\n <li [class.display]=\"tab.display()\"\n [class.noAccess]=\"!tab.hasAccess()\"\n [class.noValid]=\"!tab.valid()\"\n (click)=\"openTab(tab)\">\n <div class=\"inu-panel-tabs-headers-child\">\n <div class=\"inu-panel-tabs-headers-child-tab\">\n <div class=\"inu-panel-tabs-headers-child-tab-icon\">\n @if(tab.icon()){\n <inu-icon [icon]=\"tab.icon()\" [size]=\"1\"></inu-icon>\n }\n </div>\n <div class=\"inu-panel-tabs-headers-child-tab-label\">{{tab.label()!}}</div>\n </div>\n </div>\n </li>\n }\n </ul>\n </div>\n <div class=\"inu-panel-tabs-content\">\n @for (tab of tabs(); track tab) {\n <div class=\"tab-panel\">\n @if(tab.display() && tab.hasAccess()){\n @if(tab.templateRef()){\n <ng-container [ngTemplateOutlet]=\"tab.templateRef()\" />\n }\n }\n </div>\n }\n </div>\n\n\n\n</div>\n", styles: [".inu-panel-tabs{display:flex;flex-direction:column}.inu-panel-tabs .inu-panel-tabs-headers{display:flex}.inu-panel-tabs .inu-panel-tabs-headers ul{list-style:none;padding:0;margin:0;display:flex;gap:.25rem;width:100%;border-bottom:1px solid var(--secondary)}.inu-panel-tabs .inu-panel-tabs-headers ul.noValid{border-bottom:1px solid var(--danger)}.inu-panel-tabs .inu-panel-tabs-headers ul li{cursor:pointer;display:flex;border:1px solid var(--neutral-light);transition:background-color .25s}.inu-panel-tabs .inu-panel-tabs-headers ul li .inu-panel-tabs-headers-child-tab{display:flex;gap:1rem;align-items:baseline}.inu-panel-tabs .inu-panel-tabs-headers ul li.noValid{border:1px solid var(--danger-light-extra-extra);background-color:var(--danger-light-extra-extra)}.inu-panel-tabs .inu-panel-tabs-headers ul li.display{background-color:var(--secondary-light-extra);border:1px solid var(--secondary-light-extra);border-bottom:2px solid var(--secondary)}.inu-panel-tabs .inu-panel-tabs-headers ul li.noValid.display{background-color:var(--danger-light);border:1px solid var(--danger-light);border-bottom:2px solid var(--danger)}.inu-panel-tabs .inu-panel-tabs-headers ul li:hover{background-color:var(--secondary-light-extra)}.inu-panel-tabs .inu-panel-tabs-headers ul li.noValid:hover{background-color:var(--danger-light-extra)}.inu-panel-tabs .inu-panel-tabs-headers ul li.noAccess{cursor:not-allowed;color:var(--neutral);background-color:var(--neutral-light-extra)}.inu-panel-tabs .inu-panel-tabs-headers ul li{padding:.25rem 1rem}.inu-panel-tabs.vertical{gap:1rem}.inu-panel-tabs.vertical .inu-panel-tabs-headers ul{flex-direction:column;border-right:2px solid var(--secondary);border-bottom:none}.inu-panel-tabs.vertical .inu-panel-tabs-headers ul.noValid{border-right:2px solid var(--danger)}.inu-panel-tabs.vertical .inu-panel-tabs-headers ul li.display{border-bottom:none;border-right:2px solid var(--secondary)}.inu-panel-tabs.vertical .inu-panel-tabs-headers ul li.noValid.display{border-bottom:none;border-right:2px solid var(--danger)}.inu-panel-tabs .inu-panel-tabs-content{flex:1}.inu-panel-tabs.vertical{flex-direction:row}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: InuIcon, selector: "inu-icon", inputs: ["icon", "defaultIcon", "styleclass", "size"] }] });
|
|
166
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: InuPanelTabs, isStandalone: true, selector: "inu-panel-tabs", inputs: { activeTab: { classPropertyName: "activeTab", publicName: "activeTab", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, vertical: { classPropertyName: "vertical", publicName: "vertical", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed" }, providers: [], queries: [{ propertyName: "childrenTabs", predicate: InuPanelTab, isSignal: true }], ngImport: i0, template: "<div [class]=\"_styleClass()\">\n\n\n <div class=\"inu-panel-tabs-headers\">\n <ul [class.noValid]=\"!valid()\">\n @for (tab of tabs(); track tab) {\n <li [class.display]=\"tab.display()\"\n [class.noAccess]=\"!tab.hasAccess()\"\n [class.noValid]=\"!tab.valid()\"\n (click)=\"openTab(tab)\">\n <div class=\"inu-panel-tabs-headers-child\">\n <div class=\"inu-panel-tabs-headers-child-tab\">\n <div class=\"inu-panel-tabs-headers-child-tab-icon\">\n @if(tab.icon()){\n <inu-icon [icon]=\"tab.icon()\" [size]=\"1\"></inu-icon>\n }\n </div>\n <div class=\"inu-panel-tabs-headers-child-tab-label\">{{tab.label()!}}</div>\n </div>\n </div>\n </li>\n }\n </ul>\n </div>\n <div class=\"inu-panel-tabs-content\">\n @for (tab of tabs(); track tab) {\n <div class=\"tab-panel\">\n @if(tab.display() && tab.hasAccess()){\n @if(tab.templateRef()){\n <ng-container [ngTemplateOutlet]=\"tab.templateRef()\" />\n }\n }\n </div>\n }\n </div>\n\n\n\n</div>\n", styles: [".inu-panel-tabs{display:flex;flex-direction:column}.inu-panel-tabs .inu-panel-tabs-headers{display:flex}.inu-panel-tabs .inu-panel-tabs-headers ul{list-style:none;padding:0;margin:0;display:flex;gap:.25rem;width:100%;border-bottom:1px solid var(--secondary)}.inu-panel-tabs .inu-panel-tabs-headers ul.noValid{border-bottom:1px solid var(--danger)}.inu-panel-tabs .inu-panel-tabs-headers ul li{cursor:pointer;display:flex;border:1px solid var(--neutral-light);transition:background-color .25s}.inu-panel-tabs .inu-panel-tabs-headers ul li .inu-panel-tabs-headers-child-tab{display:flex;gap:1rem;align-items:baseline}.inu-panel-tabs .inu-panel-tabs-headers ul li.noValid{border:1px solid var(--danger-light-extra-extra);background-color:var(--danger-light-extra-extra)}.inu-panel-tabs .inu-panel-tabs-headers ul li.display{background-color:var(--secondary-light-extra);border:1px solid var(--secondary-light-extra);border-bottom:2px solid var(--secondary)}.inu-panel-tabs .inu-panel-tabs-headers ul li.noValid.display{background-color:var(--danger-light);border:1px solid var(--danger-light);border-bottom:2px solid var(--danger)}.inu-panel-tabs .inu-panel-tabs-headers ul li:hover{background-color:var(--secondary-light-extra)}.inu-panel-tabs .inu-panel-tabs-headers ul li.noValid:hover{background-color:var(--danger-light-extra)}.inu-panel-tabs .inu-panel-tabs-headers ul li.noAccess{cursor:not-allowed;color:var(--neutral);background-color:var(--neutral-light-extra)}.inu-panel-tabs .inu-panel-tabs-headers ul li{padding:.25rem 1rem}.inu-panel-tabs.vertical{gap:1rem}.inu-panel-tabs.vertical .inu-panel-tabs-headers ul{flex-direction:column;border-right:2px solid var(--secondary);border-bottom:none}.inu-panel-tabs.vertical .inu-panel-tabs-headers ul.noValid{border-right:2px solid var(--danger)}.inu-panel-tabs.vertical .inu-panel-tabs-headers ul li.display{border-bottom:none;border-right:2px solid var(--secondary)}.inu-panel-tabs.vertical .inu-panel-tabs-headers ul li.noValid.display{border-bottom:none;border-right:2px solid var(--danger)}.inu-panel-tabs .inu-panel-tabs-content{flex:1}.inu-panel-tabs.vertical{flex-direction:row}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: InuIcon, selector: "inu-icon", inputs: ["icon", "defaultIcon", "styleclass", "size"] }] });
|
|
163
167
|
}
|
|
164
168
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InuPanelTabs, decorators: [{
|
|
165
169
|
type: Component,
|
|
@@ -167,7 +171,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
167
171
|
NgTemplateOutlet,
|
|
168
172
|
InuIcon
|
|
169
173
|
], template: "<div [class]=\"_styleClass()\">\n\n\n <div class=\"inu-panel-tabs-headers\">\n <ul [class.noValid]=\"!valid()\">\n @for (tab of tabs(); track tab) {\n <li [class.display]=\"tab.display()\"\n [class.noAccess]=\"!tab.hasAccess()\"\n [class.noValid]=\"!tab.valid()\"\n (click)=\"openTab(tab)\">\n <div class=\"inu-panel-tabs-headers-child\">\n <div class=\"inu-panel-tabs-headers-child-tab\">\n <div class=\"inu-panel-tabs-headers-child-tab-icon\">\n @if(tab.icon()){\n <inu-icon [icon]=\"tab.icon()\" [size]=\"1\"></inu-icon>\n }\n </div>\n <div class=\"inu-panel-tabs-headers-child-tab-label\">{{tab.label()!}}</div>\n </div>\n </div>\n </li>\n }\n </ul>\n </div>\n <div class=\"inu-panel-tabs-content\">\n @for (tab of tabs(); track tab) {\n <div class=\"tab-panel\">\n @if(tab.display() && tab.hasAccess()){\n @if(tab.templateRef()){\n <ng-container [ngTemplateOutlet]=\"tab.templateRef()\" />\n }\n }\n </div>\n }\n </div>\n\n\n\n</div>\n", styles: [".inu-panel-tabs{display:flex;flex-direction:column}.inu-panel-tabs .inu-panel-tabs-headers{display:flex}.inu-panel-tabs .inu-panel-tabs-headers ul{list-style:none;padding:0;margin:0;display:flex;gap:.25rem;width:100%;border-bottom:1px solid var(--secondary)}.inu-panel-tabs .inu-panel-tabs-headers ul.noValid{border-bottom:1px solid var(--danger)}.inu-panel-tabs .inu-panel-tabs-headers ul li{cursor:pointer;display:flex;border:1px solid var(--neutral-light);transition:background-color .25s}.inu-panel-tabs .inu-panel-tabs-headers ul li .inu-panel-tabs-headers-child-tab{display:flex;gap:1rem;align-items:baseline}.inu-panel-tabs .inu-panel-tabs-headers ul li.noValid{border:1px solid var(--danger-light-extra-extra);background-color:var(--danger-light-extra-extra)}.inu-panel-tabs .inu-panel-tabs-headers ul li.display{background-color:var(--secondary-light-extra);border:1px solid var(--secondary-light-extra);border-bottom:2px solid var(--secondary)}.inu-panel-tabs .inu-panel-tabs-headers ul li.noValid.display{background-color:var(--danger-light);border:1px solid var(--danger-light);border-bottom:2px solid var(--danger)}.inu-panel-tabs .inu-panel-tabs-headers ul li:hover{background-color:var(--secondary-light-extra)}.inu-panel-tabs .inu-panel-tabs-headers ul li.noValid:hover{background-color:var(--danger-light-extra)}.inu-panel-tabs .inu-panel-tabs-headers ul li.noAccess{cursor:not-allowed;color:var(--neutral);background-color:var(--neutral-light-extra)}.inu-panel-tabs .inu-panel-tabs-headers ul li{padding:.25rem 1rem}.inu-panel-tabs.vertical{gap:1rem}.inu-panel-tabs.vertical .inu-panel-tabs-headers ul{flex-direction:column;border-right:2px solid var(--secondary);border-bottom:none}.inu-panel-tabs.vertical .inu-panel-tabs-headers ul.noValid{border-right:2px solid var(--danger)}.inu-panel-tabs.vertical .inu-panel-tabs-headers ul li.display{border-bottom:none;border-right:2px solid var(--secondary)}.inu-panel-tabs.vertical .inu-panel-tabs-headers ul li.noValid.display{border-bottom:none;border-right:2px solid var(--danger)}.inu-panel-tabs .inu-panel-tabs-content{flex:1}.inu-panel-tabs.vertical{flex-direction:row}\n"] }]
|
|
170
|
-
}], ctorParameters: () => [], propDecorators: { activeTab: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeTab", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], vertical: [{ type: i0.Input, args: [{ isSignal: true, alias: "vertical", required: false }] }], childrenTabs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => InuPanelTab), { isSignal: true }] }] } });
|
|
174
|
+
}], ctorParameters: () => [], propDecorators: { activeTab: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeTab", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], vertical: [{ type: i0.Input, args: [{ isSignal: true, alias: "vertical", required: false }] }], childrenTabs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => InuPanelTab), { isSignal: true }] }], changed: [{ type: i0.Output, args: ["changed"] }] } });
|
|
171
175
|
|
|
172
176
|
/**
|
|
173
177
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inugami-ng-components-inu-panel-tabs.mjs","sources":["../../../projects/inugami-ng/components/inu-panel-tabs/inu-panel-tab/inu-panel-tab.component.ts","../../../projects/inugami-ng/components/inu-panel-tabs/inu-panel-tabs.ts","../../../projects/inugami-ng/components/inu-panel-tabs/inu-panel-tabs.html","../../../projects/inugami-ng/components/inu-panel-tabs/inugami-ng-components-inu-panel-tabs.ts"],"sourcesContent":["import {Component, effect, input, signal, TemplateRef, viewChild} from '@angular/core';\n\n@Component({\n selector: 'inu-panel-tab',\n standalone: true,\n providers: [],\n imports: [],\n template: `\n <ng-template #content>\n <div [class]=\"_styleClass()\">\n <ng-content/>\n </div>\n </ng-template>\n `\n})\nexport class InuPanelTab {\n\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n icon = input<string>('');\n hasAccess = input<boolean>(true);\n label = input<string>('');\n name = input.required<string>();\n styleClass = input<string | undefined | null>('');\n valid = input<boolean>(true);\n //\n readonly templateRef = viewChild.required<TemplateRef<any>>('content');\n //\n display = signal<boolean>(false);\n _styleClass = signal<string>('');\n\n //==================================================================================================================\n // INIT\n //==================================================================================================================\n constructor() {\n effect(() => {\n const styles: string[] = ['inu-panel-tab'];\n const style = this.styleClass();\n if (style) {\n styles.push(style);\n }\n this._styleClass.set(styles.join(\" \"));\n });\n }\n}\n","import {AfterViewInit, Component, contentChildren, effect, input, signal} from '@angular/core';\nimport {InuPanelTab} from './inu-panel-tab/inu-panel-tab.component';\nimport {NgTemplateOutlet} from '@angular/common';\nimport {InuIcon} from 'inugami-icons';\n\n@Component({\n selector: 'inu-panel-tabs',\n standalone: true,\n providers: [],\n imports: [\n NgTemplateOutlet,\n InuIcon\n ],\n templateUrl: './inu-panel-tabs.html',\n styleUrl: './inu-panel-tabs.scss',\n})\nexport class InuPanelTabs implements AfterViewInit {\n\n\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n readonly activeTab = input<string|undefined>(undefined);\n styleClass = input<string | undefined | null>('');\n readonly vertical = input(false);\n readonly childrenTabs = contentChildren(InuPanelTab);\n\n\n //\n _styleClass = signal<string>('');\n valid = signal<boolean>(true);\n tabs = signal<InuPanelTab[]>([]);\n\n //==================================================================================================================\n // INIT\n //==================================================================================================================\n constructor() {\n effect(() => {\n this.initStyleClass();\n });\n }\n\n private initStyleClass() {\n const styles: string[] = ['inu-panel-tabs'];\n const style = this.styleClass();\n if (style) {\n styles.push(style);\n }\n if (this.vertical()) {\n styles.push('vertical');\n }\n this._styleClass.set(styles.join(\" \"));\n }\n\n\n ngAfterViewInit(): void {\n this.initTabs();\n }\n\n private initTabs() {\n const result: InuPanelTab[] = [];\n const children = this.childrenTabs();\n\n\n\n for (let child of children) {\n result.push(child);\n }\n\n let found = false;\n const activeTab = this.activeTab();\n if(activeTab){\n for (let child of children) {\n if (activeTab == child.name()) {\n child.display.set(true);\n this.valid.set(child.valid());\n found = true;\n }\n }\n }\n\n if(!found){\n let first = true;\n for (let child of children) {\n if (first) {\n child.display.set(true);\n this.valid.set(child.valid());\n first = false;\n }\n }\n }\n\n this.tabs.set(result);\n }\n\n //==================================================================================================================\n // ACTIONS\n //==================================================================================================================\n openTab(panel: InuPanelTab) {\n if (!panel.hasAccess()) {\n return;\n }\n this.valid.set(true);\n const children = this.childrenTabs();\n if (!children) {\n return;\n }\n for (let child of children) {\n if (child.name() === panel.name()) {\n child.display.set(true);\n this.valid.set(child.valid());\n } else {\n child.display.set(false);\n }\n }\n }\n\n //==================================================================================================================\n // TOOLS\n //==================================================================================================================\n private checkValidity() {\n const children = this.childrenTabs();\n if (!children) {\n return;\n }\n this.valid.set(true);\n for (let child of children) {\n if(!child.valid()){\n this.valid.set(false);\n break;\n }\n }\n }\n}\n","<div [class]=\"_styleClass()\">\n\n\n <div class=\"inu-panel-tabs-headers\">\n <ul [class.noValid]=\"!valid()\">\n @for (tab of tabs(); track tab) {\n <li [class.display]=\"tab.display()\"\n [class.noAccess]=\"!tab.hasAccess()\"\n [class.noValid]=\"!tab.valid()\"\n (click)=\"openTab(tab)\">\n <div class=\"inu-panel-tabs-headers-child\">\n <div class=\"inu-panel-tabs-headers-child-tab\">\n <div class=\"inu-panel-tabs-headers-child-tab-icon\">\n @if(tab.icon()){\n <inu-icon [icon]=\"tab.icon()\" [size]=\"1\"></inu-icon>\n }\n </div>\n <div class=\"inu-panel-tabs-headers-child-tab-label\">{{tab.label()!}}</div>\n </div>\n </div>\n </li>\n }\n </ul>\n </div>\n <div class=\"inu-panel-tabs-content\">\n @for (tab of tabs(); track tab) {\n <div class=\"tab-panel\">\n @if(tab.display() && tab.hasAccess()){\n @if(tab.templateRef()){\n <ng-container [ngTemplateOutlet]=\"tab.templateRef()\" />\n }\n }\n </div>\n }\n </div>\n\n\n\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":"inugami-ng-components-inu-panel-tabs.mjs","sources":["../../../projects/inugami-ng/components/inu-panel-tabs/inu-panel-tab/inu-panel-tab.component.ts","../../../projects/inugami-ng/components/inu-panel-tabs/inu-panel-tabs.ts","../../../projects/inugami-ng/components/inu-panel-tabs/inu-panel-tabs.html","../../../projects/inugami-ng/components/inu-panel-tabs/inugami-ng-components-inu-panel-tabs.ts"],"sourcesContent":["import {Component, effect, input, signal, TemplateRef, viewChild} from '@angular/core';\n\n@Component({\n selector: 'inu-panel-tab',\n standalone: true,\n providers: [],\n imports: [],\n template: `\n <ng-template #content>\n <div [class]=\"_styleClass()\">\n <ng-content/>\n </div>\n </ng-template>\n `\n})\nexport class InuPanelTab {\n\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n icon = input<string>('');\n hasAccess = input<boolean>(true);\n label = input<string>('');\n name = input.required<string>();\n styleClass = input<string | undefined | null>('');\n valid = input<boolean>(true);\n //\n readonly templateRef = viewChild.required<TemplateRef<any>>('content');\n //\n display = signal<boolean>(false);\n _styleClass = signal<string>('');\n\n //==================================================================================================================\n // INIT\n //==================================================================================================================\n constructor() {\n effect(() => {\n const styles: string[] = ['inu-panel-tab'];\n const style = this.styleClass();\n if (style) {\n styles.push(style);\n }\n this._styleClass.set(styles.join(\" \"));\n });\n }\n}\n","import {AfterViewInit, Component, contentChildren, effect, input, output, signal} from '@angular/core';\nimport {InuPanelTab} from './inu-panel-tab/inu-panel-tab.component';\nimport {NgTemplateOutlet} from '@angular/common';\nimport {InuIcon} from 'inugami-icons';\n\n@Component({\n selector: 'inu-panel-tabs',\n standalone: true,\n providers: [],\n imports: [\n NgTemplateOutlet,\n InuIcon\n ],\n templateUrl: './inu-panel-tabs.html',\n styleUrl: './inu-panel-tabs.scss',\n})\nexport class InuPanelTabs implements AfterViewInit {\n\n\n //==================================================================================================================\n // ATTRIBUTES\n //==================================================================================================================\n readonly activeTab = input<string|undefined>(undefined);\n styleClass = input<string | undefined | null>('');\n readonly vertical = input(false);\n readonly childrenTabs = contentChildren(InuPanelTab);\n changed = output<string>();\n\n //\n _styleClass = signal<string>('');\n valid = signal<boolean>(true);\n tabs = signal<InuPanelTab[]>([]);\n\n //==================================================================================================================\n // INIT\n //==================================================================================================================\n constructor() {\n effect(() => {\n this.initStyleClass();\n });\n }\n\n private initStyleClass() {\n const styles: string[] = ['inu-panel-tabs'];\n const style = this.styleClass();\n if (style) {\n styles.push(style);\n }\n if (this.vertical()) {\n styles.push('vertical');\n }\n this._styleClass.set(styles.join(\" \"));\n }\n\n\n ngAfterViewInit(): void {\n this.initTabs();\n }\n\n private initTabs() {\n const result: InuPanelTab[] = [];\n const children = this.childrenTabs();\n\n\n\n for (let child of children) {\n result.push(child);\n }\n\n let found = false;\n const activeTab = this.activeTab();\n if(activeTab){\n for (let child of children) {\n if (activeTab == child.name()) {\n child.display.set(true);\n this.changed.emit(child.name());\n this.valid.set(child.valid());\n found = true;\n }\n }\n }\n\n if(!found){\n let first = true;\n for (let child of children) {\n if (first) {\n child.display.set(true);\n this.changed.emit(child.name());\n this.valid.set(child.valid());\n first = false;\n }\n }\n }\n\n this.tabs.set(result);\n }\n\n //==================================================================================================================\n // ACTIONS\n //==================================================================================================================\n openTab(panel: InuPanelTab) {\n if (!panel.hasAccess()) {\n return;\n }\n this.valid.set(true);\n const children = this.childrenTabs();\n if (!children) {\n return;\n }\n for (let child of children) {\n if (child.name() === panel.name()) {\n child.display.set(true);\n this.valid.set(child.valid());\n this.changed.emit(child.name());\n } else {\n child.display.set(false);\n }\n }\n }\n\n //==================================================================================================================\n // TOOLS\n //==================================================================================================================\n private checkValidity() {\n const children = this.childrenTabs();\n if (!children) {\n return;\n }\n this.valid.set(true);\n for (let child of children) {\n if(!child.valid()){\n this.valid.set(false);\n break;\n }\n }\n }\n}\n","<div [class]=\"_styleClass()\">\n\n\n <div class=\"inu-panel-tabs-headers\">\n <ul [class.noValid]=\"!valid()\">\n @for (tab of tabs(); track tab) {\n <li [class.display]=\"tab.display()\"\n [class.noAccess]=\"!tab.hasAccess()\"\n [class.noValid]=\"!tab.valid()\"\n (click)=\"openTab(tab)\">\n <div class=\"inu-panel-tabs-headers-child\">\n <div class=\"inu-panel-tabs-headers-child-tab\">\n <div class=\"inu-panel-tabs-headers-child-tab-icon\">\n @if(tab.icon()){\n <inu-icon [icon]=\"tab.icon()\" [size]=\"1\"></inu-icon>\n }\n </div>\n <div class=\"inu-panel-tabs-headers-child-tab-label\">{{tab.label()!}}</div>\n </div>\n </div>\n </li>\n }\n </ul>\n </div>\n <div class=\"inu-panel-tabs-content\">\n @for (tab of tabs(); track tab) {\n <div class=\"tab-panel\">\n @if(tab.display() && tab.hasAccess()){\n @if(tab.templateRef()){\n <ng-container [ngTemplateOutlet]=\"tab.templateRef()\" />\n }\n }\n </div>\n }\n </div>\n\n\n\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@ declare class InuCheckboxGroup<T> implements FormValueControl<T[]>, OnInit {
|
|
|
9
9
|
readonly _required: _angular_core.InputSignal<boolean>;
|
|
10
10
|
readonly values: _angular_core.InputSignal<InuSelectItem<T>[]>;
|
|
11
11
|
readonly vertical: _angular_core.InputSignal<boolean>;
|
|
12
|
-
|
|
12
|
+
changed: _angular_core.OutputEmitterRef<T[]>;
|
|
13
13
|
value: ModelSignal<T[]>;
|
|
14
14
|
_values: _angular_core.WritableSignal<InuSelectItem<T>[]>;
|
|
15
15
|
styleClass: _angular_core.WritableSignal<string>;
|
|
@@ -21,7 +21,7 @@ declare class InuCheckboxGroup<T> implements FormValueControl<T[]>, OnInit {
|
|
|
21
21
|
protected getItemClass(selectItem: InuSelectItem<T>): string;
|
|
22
22
|
private match;
|
|
23
23
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InuCheckboxGroup<any>, never>;
|
|
24
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InuCheckboxGroup<any>, "inu-checkbox-group", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "_required": { "alias": "required"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; "
|
|
24
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InuCheckboxGroup<any>, "inu-checkbox-group", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "_required": { "alias": "required"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "changed": "changed"; "value": "valueChange"; }, never, never, true, never>;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
export { InuCheckboxGroup };
|
|
@@ -21,6 +21,7 @@ declare class InuPanelTabs implements AfterViewInit {
|
|
|
21
21
|
styleClass: _angular_core.InputSignal<string | null | undefined>;
|
|
22
22
|
readonly vertical: _angular_core.InputSignal<boolean>;
|
|
23
23
|
readonly childrenTabs: _angular_core.Signal<readonly InuPanelTab[]>;
|
|
24
|
+
changed: _angular_core.OutputEmitterRef<string>;
|
|
24
25
|
_styleClass: _angular_core.WritableSignal<string>;
|
|
25
26
|
valid: _angular_core.WritableSignal<boolean>;
|
|
26
27
|
tabs: _angular_core.WritableSignal<InuPanelTab[]>;
|
|
@@ -31,7 +32,7 @@ declare class InuPanelTabs implements AfterViewInit {
|
|
|
31
32
|
openTab(panel: InuPanelTab): void;
|
|
32
33
|
private checkValidity;
|
|
33
34
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InuPanelTabs, never>;
|
|
34
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InuPanelTabs, "inu-panel-tabs", never, { "activeTab": { "alias": "activeTab"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; }, {}, ["childrenTabs"], never, true, never>;
|
|
35
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InuPanelTabs, "inu-panel-tabs", never, { "activeTab": { "alias": "activeTab"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, ["childrenTabs"], never, true, never>;
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
export { InuPanelTab, InuPanelTabs };
|