@ngx-uk-frontend/core
Version:
Core utilities and shared functionality for ngx-uk-frontend libraries
38 lines • 1.84 kB
JavaScript
import { Directive, input } from '@angular/core';
import * as i0 from "@angular/core";
/**
* Base directive for details components across different design systems.
* Provides common functionality for disclosure/collapsible content components.
*
* This directive serves as the foundation for design system-specific details
* implementations, ensuring consistent behavior and API across different
* design systems (GOV.UK, Scottish Government, NHS, etc.).
*
* @example
* ```typescript
* @Component({
* selector: 'my-details',
* template: `
* <details>
* <summary>{{ summary() }}</summary>
* <ng-content></ng-content>
* </details>
* `
* })
* export class MyDetailsComponent extends DetailsDirective {}
* ```
*/
export class DetailsDirective {
/**
* The text displayed in the details summary element.
* This serves as the clickable trigger that shows/hides the content.
* This input is required.
*/
summary = input.required(...(ngDevMode ? [{ debugName: "summary" }] : []));
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DetailsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.6", type: DetailsDirective, isStandalone: true, inputs: { summary: { classPropertyName: "summary", publicName: "summary", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DetailsDirective, decorators: [{
type: Directive
}], propDecorators: { summary: [{ type: i0.Input, args: [{ isSignal: true, alias: "summary", required: true }] }] } });
//# sourceMappingURL=details.directive.js.map