{"version":3,"file":"edsis-component-collapsible.mjs","sources":["../../../library/component/collapsible/collapsible.component.ts","../../../library/component/collapsible/edsis-component-collapsible.ts"],"sourcesContent":["import {\n  booleanAttribute,\n  Component,\n  Directive,\n  computed,\n  forwardRef,\n  inject,\n  input,\n  model,\n} from '@angular/core';\nimport { cn } from '@edsis/component/class';\nimport { uniqueId } from '@edsis/component/id';\n\n@Directive()\nexport abstract class CollapsibleContextBase {\n  abstract readonly triggerId: string;\n  abstract readonly contentId: string;\n\n  abstract isOpen(): boolean;\n  abstract isDisabled(): boolean;\n  abstract toggle(): void;\n}\n\n@Component({\n  selector: 'Collapsible',\n  providers: [\n    { provide: CollapsibleContextBase, useExisting: forwardRef(() => CollapsibleComponent) },\n  ],\n  host: {\n    '[class]': 'classes()',\n    '[attr.data-state]': 'open() ? \"open\" : \"closed\"',\n    '[attr.data-disabled]': 'disabled() ? \"\" : null',\n  },\n  template: `<ng-content />`,\n})\nexport class CollapsibleComponent extends CollapsibleContextBase {\n  readonly open = model<boolean>(false);\n  readonly disabled = input(false, { transform: booleanAttribute });\n  readonly class = input<string>('');\n\n  private readonly instanceId = uniqueId('Collapsible');\n\n  readonly triggerId = `collapsible-trigger-${this.instanceId}`;\n  readonly contentId = `collapsible-content-${this.instanceId}`;\n\n  protected readonly classes = computed(() => cn('block', this.class()));\n\n  override isOpen(): boolean {\n    return this.open();\n  }\n\n  override isDisabled(): boolean {\n    return this.disabled();\n  }\n\n  override toggle(): void {\n    if (!this.disabled()) this.open.update((value) => !value);\n  }\n}\n\n@Directive({\n  selector: 'button[CollapsibleTrigger]',\n  host: {\n    class:\n      'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n    type: 'button',\n    '[attr.id]': 'ctx.triggerId',\n    '[attr.aria-controls]': 'ctx.contentId',\n    '[attr.aria-expanded]': 'ctx.isOpen()',\n    '[attr.data-state]': 'ctx.isOpen() ? \"open\" : \"closed\"',\n    '[attr.data-disabled]': 'ctx.isDisabled() ? \"\" : null',\n    '[disabled]': 'ctx.isDisabled() || null',\n    '(click)': 'toggle()',\n  },\n})\nexport class CollapsibleTriggerDirective {\n  protected readonly ctx = inject(CollapsibleContextBase);\n\n  protected toggle(): void {\n    this.ctx.toggle();\n  }\n}\n\n@Component({\n  selector: 'CollapsibleContent',\n  host: {\n    '[class]': 'classes()',\n    '[attr.id]': 'ctx.contentId',\n    '[attr.role]': '\"region\"',\n    '[attr.aria-labelledby]': 'ctx.triggerId',\n    '[attr.data-state]': 'ctx.isOpen() ? \"open\" : \"closed\"',\n    '[attr.data-disabled]': 'ctx.isDisabled() ? \"\" : null',\n    '[hidden]': '!ctx.isOpen()',\n  },\n  template: `\n    @if (renderContent()) {\n      <ng-content />\n    }\n  `,\n})\nexport class CollapsibleContentComponent {\n  protected readonly ctx = inject(CollapsibleContextBase);\n  readonly forceMount = input<boolean>(false);\n  readonly class = input<string>('');\n\n  protected readonly classes = computed(() => cn('block overflow-hidden text-sm', this.class()));\n  protected readonly renderContent = computed(() => this.ctx.isOpen() || this.forceMount());\n}\n\nlet _id = 0;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}