@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,7 @@
1
+ # accordion
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Running unit tests
6
+
7
+ Run `nx test accordion` to execute the unit tests.
@@ -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 };