@fuse_ui/accordion 0.0.1
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/README.md
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, input, inject, viewChild, computed, ChangeDetectionStrategy, Component, contentChildren, signal } from '@angular/core';
|
|
3
|
+
import { FuseIconComponent } from '@fuse_ui/icon';
|
|
4
|
+
|
|
5
|
+
const FUSE_ACCORDION = new InjectionToken('FUSE_ACCORDION');
|
|
6
|
+
|
|
7
|
+
class FuseAccordionItemComponent {
|
|
8
|
+
// ─── Inputs ──────────────────────────────────────────────────────────────────
|
|
9
|
+
itemId = input.required(...(ngDevMode ? [{ debugName: "itemId" }] : /* istanbul ignore next */ []));
|
|
10
|
+
title = input.required(...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
|
|
11
|
+
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
12
|
+
// ─── Parent context ───────────────────────────────────────────────────────────
|
|
13
|
+
accordion = inject(FUSE_ACCORDION);
|
|
14
|
+
// ─── Queries ─────────────────────────────────────────────────────────────────
|
|
15
|
+
contentEl = viewChild('contentEl', ...(ngDevMode ? [{ debugName: "contentEl" }] : /* istanbul ignore next */ []));
|
|
16
|
+
// ─── Derived ─────────────────────────────────────────────────────────────────
|
|
17
|
+
isOpen = computed(() => this.accordion.isOpen(this.itemId()), ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
18
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuseAccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.6", type: FuseAccordionItemComponent, isStandalone: true, selector: "fuse-accordion-item", inputs: { itemId: { classPropertyName: "itemId", publicName: "itemId", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-expanded": "isOpen()", "class.fuse-accordion-item--open": "isOpen()" }, classAttribute: "fuse-accordion-item" }, viewQueries: [{ propertyName: "contentEl", first: true, predicate: ["contentEl"], descendants: true, isSignal: true }], ngImport: i0, template: "<button\n class=\"fuse-accordion__trigger\"\n type=\"button\"\n [id]=\"'trigger-' + itemId()\"\n [attr.aria-controls]=\"'body-' + itemId()\"\n [disabled]=\"disabled() || null\"\n (click)=\"accordion.toggle(itemId())\">\n <span class=\"fuse-accordion__title\">{{ title() }}</span>\n <fuse-icon\n name=\"chevron-down\"\n size=\"sm\"\n class=\"fuse-accordion__chevron\"\n [class.fuse-accordion__chevron--open]=\"isOpen()\">\n </fuse-icon>\n</button>\n\n<div\n #contentEl\n class=\"fuse-accordion__body\"\n role=\"region\"\n [id]=\"'body-' + itemId()\"\n [attr.aria-labelledby]=\"'trigger-' + itemId()\">\n <div class=\"fuse-accordion__body-inner\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{display:block;background:var(--fuse-color-bg-surface);border-bottom:1px solid var(--fuse-color-border-default)}:host:last-of-type{border-bottom:none}:host-context(.ios){font-size:var(--fuse-fluid-md, 1rem)}:host-context(.md){font-size:var(--fuse-fluid-md, 1rem)}.fuse-accordion__trigger{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--fuse-spacing-4, 16px) var(--fuse-spacing-5, 20px);background:transparent;border:none;text-align:left;font-family:var(--fuse-font-family, system-ui, sans-serif);font-size:var(--fuse-fluid-md, 1rem);font-weight:500;color:var(--fuse-color-text-primary);cursor:pointer;transition:background var(--fuse-duration-fast, .15s) var(--fuse-easing-smooth),color var(--fuse-duration-fast, .15s) var(--fuse-easing-smooth)}@media(prefers-reduced-motion:reduce){.fuse-accordion__trigger{transition:none}}.fuse-accordion__trigger:hover:not(:disabled){background:var(--fuse-color-bg-elevated)}.fuse-accordion__trigger:focus-visible{outline:2px solid var(--fuse-color-border-focus);outline-offset:-2px}.fuse-accordion__trigger:disabled{opacity:.4;cursor:not-allowed}.fuse-accordion__trigger[data-pressed=true]{transform:none}.fuse-accordion__title{flex:1}.fuse-accordion__chevron{flex-shrink:0;margin-left:var(--fuse-spacing-3, 12px);color:var(--fuse-color-text-secondary);transition:transform var(--fuse-duration-base, .2s) var(--fuse-easing-smooth)}@media(prefers-reduced-motion:reduce){.fuse-accordion__chevron{transition:none}}.fuse-accordion__chevron--open{transform:rotate(180deg)}.fuse-accordion__body{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--fuse-duration-expand, .3s) var(--fuse-easing-smooth)}@media(prefers-reduced-motion:reduce){.fuse-accordion__body{transition:none}}:host([aria-expanded=true]) .fuse-accordion__body{grid-template-rows:1fr}.fuse-accordion__body-inner{overflow:hidden;padding:0 var(--fuse-spacing-5, 20px);color:var(--fuse-color-text-secondary);font-size:var(--fuse-fluid-sm, .875rem);line-height:1.6}:host([aria-expanded=true]) .fuse-accordion__body-inner{padding-bottom:var(--fuse-spacing-4, 16px)}\n"], dependencies: [{ kind: "component", type: FuseIconComponent, selector: "fuse-icon", inputs: ["name", "size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuseAccordionItemComponent, decorators: [{
|
|
22
|
+
type: Component,
|
|
23
|
+
args: [{ selector: 'fuse-accordion-item', standalone: true, imports: [FuseIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
24
|
+
class: 'fuse-accordion-item',
|
|
25
|
+
'[attr.aria-expanded]': 'isOpen()',
|
|
26
|
+
'[class.fuse-accordion-item--open]': 'isOpen()',
|
|
27
|
+
}, template: "<button\n class=\"fuse-accordion__trigger\"\n type=\"button\"\n [id]=\"'trigger-' + itemId()\"\n [attr.aria-controls]=\"'body-' + itemId()\"\n [disabled]=\"disabled() || null\"\n (click)=\"accordion.toggle(itemId())\">\n <span class=\"fuse-accordion__title\">{{ title() }}</span>\n <fuse-icon\n name=\"chevron-down\"\n size=\"sm\"\n class=\"fuse-accordion__chevron\"\n [class.fuse-accordion__chevron--open]=\"isOpen()\">\n </fuse-icon>\n</button>\n\n<div\n #contentEl\n class=\"fuse-accordion__body\"\n role=\"region\"\n [id]=\"'body-' + itemId()\"\n [attr.aria-labelledby]=\"'trigger-' + itemId()\">\n <div class=\"fuse-accordion__body-inner\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{display:block;background:var(--fuse-color-bg-surface);border-bottom:1px solid var(--fuse-color-border-default)}:host:last-of-type{border-bottom:none}:host-context(.ios){font-size:var(--fuse-fluid-md, 1rem)}:host-context(.md){font-size:var(--fuse-fluid-md, 1rem)}.fuse-accordion__trigger{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--fuse-spacing-4, 16px) var(--fuse-spacing-5, 20px);background:transparent;border:none;text-align:left;font-family:var(--fuse-font-family, system-ui, sans-serif);font-size:var(--fuse-fluid-md, 1rem);font-weight:500;color:var(--fuse-color-text-primary);cursor:pointer;transition:background var(--fuse-duration-fast, .15s) var(--fuse-easing-smooth),color var(--fuse-duration-fast, .15s) var(--fuse-easing-smooth)}@media(prefers-reduced-motion:reduce){.fuse-accordion__trigger{transition:none}}.fuse-accordion__trigger:hover:not(:disabled){background:var(--fuse-color-bg-elevated)}.fuse-accordion__trigger:focus-visible{outline:2px solid var(--fuse-color-border-focus);outline-offset:-2px}.fuse-accordion__trigger:disabled{opacity:.4;cursor:not-allowed}.fuse-accordion__trigger[data-pressed=true]{transform:none}.fuse-accordion__title{flex:1}.fuse-accordion__chevron{flex-shrink:0;margin-left:var(--fuse-spacing-3, 12px);color:var(--fuse-color-text-secondary);transition:transform var(--fuse-duration-base, .2s) var(--fuse-easing-smooth)}@media(prefers-reduced-motion:reduce){.fuse-accordion__chevron{transition:none}}.fuse-accordion__chevron--open{transform:rotate(180deg)}.fuse-accordion__body{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--fuse-duration-expand, .3s) var(--fuse-easing-smooth)}@media(prefers-reduced-motion:reduce){.fuse-accordion__body{transition:none}}:host([aria-expanded=true]) .fuse-accordion__body{grid-template-rows:1fr}.fuse-accordion__body-inner{overflow:hidden;padding:0 var(--fuse-spacing-5, 20px);color:var(--fuse-color-text-secondary);font-size:var(--fuse-fluid-sm, .875rem);line-height:1.6}:host([aria-expanded=true]) .fuse-accordion__body-inner{padding-bottom:var(--fuse-spacing-4, 16px)}\n"] }]
|
|
28
|
+
}], propDecorators: { itemId: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemId", required: true }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], contentEl: [{ type: i0.ViewChild, args: ['contentEl', { isSignal: true }] }] } });
|
|
29
|
+
|
|
30
|
+
class FuseAccordionComponent {
|
|
31
|
+
// ─── Inputs ──────────────────────────────────────────────────────────────────
|
|
32
|
+
multiple = input(false, ...(ngDevMode ? [{ debugName: "multiple" }] : /* istanbul ignore next */ []));
|
|
33
|
+
// ─── Queries ─────────────────────────────────────────────────────────────────
|
|
34
|
+
items = contentChildren(FuseAccordionItemComponent, ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
35
|
+
// ─── State ───────────────────────────────────────────────────────────────────
|
|
36
|
+
openIds = signal(new Set(), ...(ngDevMode ? [{ debugName: "openIds" }] : /* istanbul ignore next */ []));
|
|
37
|
+
// ─── Public API (AccordionRef) ────────────────────────────────────────────────
|
|
38
|
+
toggle(id) {
|
|
39
|
+
this.openIds.update(ids => {
|
|
40
|
+
const next = new Set(ids);
|
|
41
|
+
if (next.has(id)) {
|
|
42
|
+
next.delete(id);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
if (!this.multiple())
|
|
46
|
+
next.clear();
|
|
47
|
+
next.add(id);
|
|
48
|
+
}
|
|
49
|
+
return next;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
isOpen(id) {
|
|
53
|
+
return this.openIds().has(id);
|
|
54
|
+
}
|
|
55
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuseAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.6", type: FuseAccordionComponent, isStandalone: true, selector: "fuse-accordion", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "fuse-accordion-host" }, providers: [{ provide: FUSE_ACCORDION, useExisting: FuseAccordionComponent }], queries: [{ propertyName: "items", predicate: FuseAccordionItemComponent, isSignal: true }], ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:block;border:1px solid var(--fuse-color-border-default);border-radius:var(--fuse-radius-md, 8px);overflow:hidden}:host-context(.ios){border-radius:var(--fuse-radius-lg, 12px)}:host-context(.md){border-radius:var(--fuse-radius-md, 8px)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
57
|
+
}
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuseAccordionComponent, decorators: [{
|
|
59
|
+
type: Component,
|
|
60
|
+
args: [{ selector: 'fuse-accordion', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: FUSE_ACCORDION, useExisting: FuseAccordionComponent }], host: { class: 'fuse-accordion-host' }, template: "<ng-content></ng-content>\n", styles: [":host{display:block;border:1px solid var(--fuse-color-border-default);border-radius:var(--fuse-radius-md, 8px);overflow:hidden}:host-context(.ios){border-radius:var(--fuse-radius-lg, 12px)}:host-context(.md){border-radius:var(--fuse-radius-md, 8px)}\n"] }]
|
|
61
|
+
}], propDecorators: { multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], items: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FuseAccordionItemComponent), { isSignal: true }] }] } });
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Generated bundle index. Do not edit.
|
|
65
|
+
*/
|
|
66
|
+
|
|
67
|
+
export { FUSE_ACCORDION, FuseAccordionComponent, FuseAccordionItemComponent };
|
|
68
|
+
//# sourceMappingURL=fuse_ui-accordion.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fuse_ui-accordion.mjs","sources":["../../../../packages/accordion/src/lib/accordion/fuse-accordion.token.ts","../../../../packages/accordion/src/lib/accordion/fuse-accordion-item.component.ts","../../../../packages/accordion/src/lib/accordion/fuse-accordion-item.component.html","../../../../packages/accordion/src/lib/accordion/fuse-accordion.component.ts","../../../../packages/accordion/src/lib/accordion/fuse-accordion.component.html","../../../../packages/accordion/src/fuse_ui-accordion.ts"],"sourcesContent":["import { InjectionToken, Signal } from '@angular/core';\n\nexport interface AccordionRef {\n openIds: Signal<Set<string>>;\n isOpen(id: string): boolean;\n toggle(id: string): void;\n}\n\nexport const FUSE_ACCORDION = new InjectionToken<AccordionRef>('FUSE_ACCORDION');\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n inject,\n input,\n viewChild,\n} from '@angular/core';\nimport { FuseIconComponent } from '@fuse_ui/icon';\nimport { FUSE_ACCORDION } from './fuse-accordion.token';\n\n@Component({\n selector: 'fuse-accordion-item',\n standalone: true,\n imports: [FuseIconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './fuse-accordion-item.component.html',\n styleUrl: './fuse-accordion-item.component.scss',\n host: {\n class: 'fuse-accordion-item',\n '[attr.aria-expanded]': 'isOpen()',\n '[class.fuse-accordion-item--open]': 'isOpen()',\n },\n})\nexport class FuseAccordionItemComponent {\n // ─── Inputs ──────────────────────────────────────────────────────────────────\n\n readonly itemId = input.required<string>();\n readonly title = input.required<string>();\n readonly disabled = input<boolean>(false);\n\n // ─── Parent context ───────────────────────────────────────────────────────────\n\n protected readonly accordion = inject(FUSE_ACCORDION);\n\n // ─── Queries ─────────────────────────────────────────────────────────────────\n\n readonly contentEl = viewChild<ElementRef>('contentEl');\n\n // ─── Derived ─────────────────────────────────────────────────────────────────\n\n protected readonly isOpen = computed(() => this.accordion.isOpen(this.itemId()));\n}\n","<button\n class=\"fuse-accordion__trigger\"\n type=\"button\"\n [id]=\"'trigger-' + itemId()\"\n [attr.aria-controls]=\"'body-' + itemId()\"\n [disabled]=\"disabled() || null\"\n (click)=\"accordion.toggle(itemId())\">\n <span class=\"fuse-accordion__title\">{{ title() }}</span>\n <fuse-icon\n name=\"chevron-down\"\n size=\"sm\"\n class=\"fuse-accordion__chevron\"\n [class.fuse-accordion__chevron--open]=\"isOpen()\">\n </fuse-icon>\n</button>\n\n<div\n #contentEl\n class=\"fuse-accordion__body\"\n role=\"region\"\n [id]=\"'body-' + itemId()\"\n [attr.aria-labelledby]=\"'trigger-' + itemId()\">\n <div class=\"fuse-accordion__body-inner\">\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n input,\n signal,\n} from '@angular/core';\nimport { FUSE_ACCORDION, AccordionRef } from './fuse-accordion.token';\nimport { FuseAccordionItemComponent } from './fuse-accordion-item.component';\n\n@Component({\n selector: 'fuse-accordion',\n standalone: true,\n imports: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: FUSE_ACCORDION, useExisting: FuseAccordionComponent }],\n templateUrl: './fuse-accordion.component.html',\n styleUrl: './fuse-accordion.component.scss',\n host: { class: 'fuse-accordion-host' },\n})\nexport class FuseAccordionComponent implements AccordionRef {\n // ─── Inputs ──────────────────────────────────────────────────────────────────\n\n readonly multiple = input<boolean>(false);\n\n // ─── Queries ─────────────────────────────────────────────────────────────────\n\n readonly items = contentChildren(FuseAccordionItemComponent);\n\n // ─── State ───────────────────────────────────────────────────────────────────\n\n readonly openIds = signal<Set<string>>(new Set());\n\n // ─── Public API (AccordionRef) ────────────────────────────────────────────────\n\n toggle(id: string): void {\n this.openIds.update(ids => {\n const next = new Set(ids);\n if (next.has(id)) {\n next.delete(id);\n } else {\n if (!this.multiple()) next.clear();\n next.add(id);\n }\n return next;\n });\n }\n\n isOpen(id: string): boolean {\n return this.openIds().has(id);\n }\n}\n","<ng-content></ng-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@fuse_ui/accordion",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"keywords": [
|
|
9
|
+
"fuse-ui",
|
|
10
|
+
"angular",
|
|
11
|
+
"ionic",
|
|
12
|
+
"ionic8",
|
|
13
|
+
"angular18",
|
|
14
|
+
"angular19",
|
|
15
|
+
"angular20",
|
|
16
|
+
"angular21",
|
|
17
|
+
"ui-components",
|
|
18
|
+
"design-system",
|
|
19
|
+
"css-variables",
|
|
20
|
+
"signals",
|
|
21
|
+
"standalone",
|
|
22
|
+
"multi-theme",
|
|
23
|
+
"dark-mode",
|
|
24
|
+
"fluid-typography",
|
|
25
|
+
"animated"
|
|
26
|
+
],
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"@angular/core": ">=18.0.0",
|
|
29
|
+
"@angular/common": ">=18.0.0",
|
|
30
|
+
"rxjs": ">=7.4.0",
|
|
31
|
+
"@fuse_ui/icon": "0.0.1"
|
|
32
|
+
},
|
|
33
|
+
"peerDependenciesMeta": {
|
|
34
|
+
"@ionic/angular": {
|
|
35
|
+
"optional": true
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"sideEffects": [
|
|
39
|
+
"*.css",
|
|
40
|
+
"**/*.scss"
|
|
41
|
+
],
|
|
42
|
+
"engines": {
|
|
43
|
+
"node": ">=20.0.0"
|
|
44
|
+
},
|
|
45
|
+
"module": "fesm2022/fuse_ui-accordion.mjs",
|
|
46
|
+
"typings": "types/fuse_ui-accordion.d.ts",
|
|
47
|
+
"exports": {
|
|
48
|
+
"./package.json": {
|
|
49
|
+
"default": "./package.json"
|
|
50
|
+
},
|
|
51
|
+
".": {
|
|
52
|
+
"types": "./types/fuse_ui-accordion.d.ts",
|
|
53
|
+
"default": "./fesm2022/fuse_ui-accordion.mjs"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"type": "module",
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"tslib": "^2.3.0"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { Signal, InjectionToken, ElementRef } from '@angular/core';
|
|
3
|
+
import * as _fuse_ui_accordion from '@fuse_ui/accordion';
|
|
4
|
+
|
|
5
|
+
interface AccordionRef {
|
|
6
|
+
openIds: Signal<Set<string>>;
|
|
7
|
+
isOpen(id: string): boolean;
|
|
8
|
+
toggle(id: string): void;
|
|
9
|
+
}
|
|
10
|
+
declare const FUSE_ACCORDION: InjectionToken<AccordionRef>;
|
|
11
|
+
|
|
12
|
+
declare class FuseAccordionItemComponent {
|
|
13
|
+
readonly itemId: _angular_core.InputSignal<string>;
|
|
14
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
15
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
16
|
+
protected readonly accordion: _fuse_ui_accordion.AccordionRef;
|
|
17
|
+
readonly contentEl: _angular_core.Signal<ElementRef<any> | undefined>;
|
|
18
|
+
protected readonly isOpen: _angular_core.Signal<boolean>;
|
|
19
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FuseAccordionItemComponent, never>;
|
|
20
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FuseAccordionItemComponent, "fuse-accordion-item", never, { "itemId": { "alias": "itemId"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
declare class FuseAccordionComponent implements AccordionRef {
|
|
24
|
+
readonly multiple: _angular_core.InputSignal<boolean>;
|
|
25
|
+
readonly items: _angular_core.Signal<readonly FuseAccordionItemComponent[]>;
|
|
26
|
+
readonly openIds: _angular_core.WritableSignal<Set<string>>;
|
|
27
|
+
toggle(id: string): void;
|
|
28
|
+
isOpen(id: string): boolean;
|
|
29
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FuseAccordionComponent, never>;
|
|
30
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FuseAccordionComponent, "fuse-accordion", never, { "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; }, {}, ["items"], ["*"], true, never>;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { FUSE_ACCORDION, FuseAccordionComponent, FuseAccordionItemComponent };
|
|
34
|
+
export type { AccordionRef };
|