@spartan-ng/brain 0.0.1-alpha.555 → 0.0.1-alpha.557

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.
Files changed (36) hide show
  1. package/accordion/index.d.ts +6 -1
  2. package/accordion/lib/brn-accordion-content.d.ts +2 -8
  3. package/accordion/lib/brn-accordion-item.d.ts +28 -0
  4. package/accordion/lib/brn-accordion-token.d.ts +19 -0
  5. package/accordion/lib/brn-accordion-trigger.d.ts +16 -0
  6. package/accordion/lib/brn-accordion.d.ts +1 -42
  7. package/collapsible/index.d.ts +1 -0
  8. package/collapsible/lib/brn-collapsible-content.d.ts +6 -9
  9. package/collapsible/lib/brn-collapsible-token.d.ts +16 -0
  10. package/collapsible/lib/brn-collapsible-trigger.d.ts +3 -3
  11. package/collapsible/lib/brn-collapsible.d.ts +5 -1
  12. package/core/helpers/measure-dimensions.d.ts +5 -0
  13. package/core/index.d.ts +1 -0
  14. package/fesm2022/spartan-ng-brain-accordion.mjs +103 -80
  15. package/fesm2022/spartan-ng-brain-accordion.mjs.map +1 -1
  16. package/fesm2022/spartan-ng-brain-alert-dialog.mjs +3 -5
  17. package/fesm2022/spartan-ng-brain-alert-dialog.mjs.map +1 -1
  18. package/fesm2022/spartan-ng-brain-avatar.mjs +2 -3
  19. package/fesm2022/spartan-ng-brain-avatar.mjs.map +1 -1
  20. package/fesm2022/spartan-ng-brain-collapsible.mjs +54 -46
  21. package/fesm2022/spartan-ng-brain-collapsible.mjs.map +1 -1
  22. package/fesm2022/spartan-ng-brain-core.mjs +15 -1
  23. package/fesm2022/spartan-ng-brain-core.mjs.map +1 -1
  24. package/fesm2022/spartan-ng-brain-dialog.mjs +3 -5
  25. package/fesm2022/spartan-ng-brain-dialog.mjs.map +1 -1
  26. package/fesm2022/spartan-ng-brain-popover.mjs +2 -3
  27. package/fesm2022/spartan-ng-brain-popover.mjs.map +1 -1
  28. package/fesm2022/spartan-ng-brain-radio-group.mjs +13 -7
  29. package/fesm2022/spartan-ng-brain-radio-group.mjs.map +1 -1
  30. package/fesm2022/spartan-ng-brain-select.mjs +27 -24
  31. package/fesm2022/spartan-ng-brain-select.mjs.map +1 -1
  32. package/fesm2022/spartan-ng-brain-sheet.mjs +3 -5
  33. package/fesm2022/spartan-ng-brain-sheet.mjs.map +1 -1
  34. package/fesm2022/spartan-ng-brain-tooltip.mjs +2 -3
  35. package/fesm2022/spartan-ng-brain-tooltip.mjs.map +1 -1
  36. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-accordion.mjs","sources":["../../../../libs/brain/accordion/src/lib/brn-accordion.ts","../../../../libs/brain/accordion/src/lib/brn-accordion-content.ts","../../../../libs/brain/accordion/src/index.ts","../../../../libs/brain/accordion/src/spartan-ng-brain-accordion.ts"],"sourcesContent":["import { type FocusableOption, FocusKeyManager, FocusMonitor } from '@angular/cdk/a11y';\nimport { type BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n\ttype AfterContentInit,\n\tcomputed,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tisDevMode,\n\ttype OnDestroy,\n\toutput,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\n\n@Directive({\n\tselector: '[brnAccordionItem]',\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t},\n\texportAs: 'brnAccordionItem',\n})\nexport class BrnAccordionItem {\n\tprivate static _itemIdGenerator = 0;\n\tpublic readonly id = ++BrnAccordionItem._itemIdGenerator;\n\tprivate readonly _accordion = inject(BrnAccordion);\n\t/**\n\t * Whether the item is opened or closed.\n\t * @default false\n\t */\n\tpublic readonly isOpened = input<boolean, BooleanInput>(false, { transform: coerceBooleanProperty });\n\t/**\n\t * Computed state of the item, either 'open' or 'closed'\n\t * @default closed\n\t */\n\tpublic readonly state = computed(() => (this._accordion.openItemIds().includes(this.id) ? 'open' : 'closed'));\n\t/**\n\t * Emits boolean when the item is opened or closed.\n\t */\n\tpublic readonly stateChange = output<'open' | 'closed'>();\n\t/**\n\t * Emits state change when item is opened or closed\n\t */\n\tpublic readonly openedChange = output<boolean>();\n\n\tconstructor() {\n\t\tif (!this._accordion) {\n\t\t\tthrow Error('Accordion item can only be used inside an Accordion. Add brnAccordion to ancestor.');\n\t\t}\n\t\teffect(() => {\n\t\t\tconst state = this.state();\n\t\t\tuntracked(() => {\n\t\t\t\tthis.stateChange.emit(state);\n\t\t\t\tthis.openedChange.emit(state === 'open');\n\t\t\t});\n\t\t});\n\t\teffect(() => {\n\t\t\tconst isOpened = this.isOpened();\n\t\t\tuntracked(() => {\n\t\t\t\tif (isOpened) {\n\t\t\t\t\tthis._accordion.openItem(this.id);\n\t\t\t\t} else {\n\t\t\t\t\tthis._accordion.closeItem(this.id);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n\n@Directive({\n\tselector: '[brnAccordionTrigger]',\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.aria-expanded]': 'state() === \"open\"',\n\t\t'[attr.aria-controls]': 'ariaControls',\n\t\t'[id]': 'id',\n\t\t'[attr.role]': '\"button\"',\n\t\t'(click)': 'toggle($event)',\n\t\t'(keyup.space)': 'toggle($event)',\n\t\t'(keyup.enter)': 'toggle($event)',\n\t},\n})\nexport class BrnAccordionTrigger implements FocusableOption {\n\tprivate readonly _accordion = inject(BrnAccordion);\n\tprivate readonly _item = inject(BrnAccordionItem);\n\tprivate readonly _el = inject(ElementRef<HTMLElement>);\n\n\tpublic readonly state = this._item.state;\n\tpublic readonly id = `brn-accordion-trigger-${this._item.id}`;\n\tpublic readonly ariaControls = `brn-accordion-content-${this._item.id}`;\n\tconstructor() {\n\t\tif (!this._accordion) throw Error('Accordion trigger requires a parent Accordion.');\n\t\tif (!this._item) throw Error('Accordion trigger requires a parent AccordionItem.');\n\t\tthis.validateAriaStructure();\n\n\t\tfromEvent(this._el.nativeElement, 'focus')\n\t\t\t.pipe(takeUntilDestroyed())\n\t\t\t.subscribe(() => {\n\t\t\t\tthis._accordion.setActiveItem(this);\n\t\t\t});\n\t}\n\n\tprotected toggle(event: Event): void {\n\t\tevent.preventDefault();\n\t\tthis._accordion.toggleItem(this._item.id);\n\t}\n\n\tpublic focus() {\n\t\tthis._el.nativeElement.focus();\n\t}\n\n\tprivate validateAriaStructure(): void {\n\t\tconst element = this._el.nativeElement;\n\n\t\tconst isButton = element.tagName === 'BUTTON';\n\t\tconst hasButtonRole = element.getAttribute('role') === 'button';\n\n\t\tif (!isButton && !hasButtonRole) {\n\t\t\tthrow Error(\n\t\t\t\t`BrnAccordionTrigger: The trigger element must be a <button> or have role=\"button\". ` +\n\t\t\t\t\t`Found: <${element.tagName.toLowerCase()}>`,\n\t\t\t);\n\t\t}\n\n\t\tconst parent = element.parentElement;\n\t\tif (!parent) {\n\t\t\tconst message = 'BrnAccordionTrigger: The trigger button must be wrapped in a heading element.';\n\t\t\tif (isDevMode()) {\n\t\t\t\tthrow Error(message);\n\t\t\t} else {\n\t\t\t\tconsole.warn(message);\n\t\t\t}\n\t\t}\n\n\t\tconst isNativeHeading = /^H[1-6]$/.test(parent.tagName);\n\t\tconst hasHeadingRole = parent.getAttribute('role') === 'heading';\n\n\t\tif (!isNativeHeading && !hasHeadingRole) {\n\t\t\tthrow Error(\n\t\t\t\t`BrnAccordionTrigger: The trigger button must be wrapped in a heading element ` +\n\t\t\t\t\t`(h1-h6) or an element with role=\"heading\". Found parent: <${parent.tagName.toLowerCase()}>`,\n\t\t\t);\n\t\t}\n\n\t\tif (hasHeadingRole && !parent.hasAttribute('aria-level')) {\n\t\t\tthrow Error('BrnAccordionTrigger: Elements with role=\"heading\" must have an aria-level attribute.');\n\t\t}\n\t}\n}\n\nconst HORIZONTAL_KEYS_TO_PREVENT_DEFAULT = [\n\t'ArrowLeft',\n\t'ArrowRight',\n\t'PageDown',\n\t'PageUp',\n\t'Home',\n\t'End',\n\t' ',\n\t'Enter',\n] as const;\n\nconst VERTICAL_KEYS_TO_PREVENT_DEFAULT = [\n\t'ArrowUp',\n\t'ArrowDown',\n\t'PageDown',\n\t'PageUp',\n\t'Home',\n\t'End',\n\t' ',\n\t'Enter',\n] as const;\n\n@Directive({\n\tselector: '[brnAccordion]',\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t},\n\texportAs: 'brnAccordion',\n})\nexport class BrnAccordion implements AfterContentInit, OnDestroy {\n\tprivate readonly _el = inject(ElementRef<HTMLElement>);\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\tprivate readonly _keyManager = computed(() =>\n\t\tnew FocusKeyManager<BrnAccordionTrigger>(this.triggers())\n\t\t\t.withHomeAndEnd()\n\t\t\t.withPageUpDown()\n\t\t\t.withWrap()\n\t\t\t.withHorizontalOrientation(this.orientation() === 'vertical' ? null : (this.dir() ?? 'ltr'))\n\t\t\t.withVerticalOrientation(this.orientation() === 'vertical'),\n\t);\n\n\tprivate readonly _focused = signal<boolean>(false);\n\tprivate readonly _openItemIds = signal<number[]>([]);\n\tpublic readonly openItemIds = this._openItemIds.asReadonly();\n\tpublic readonly state = computed(() => (this._openItemIds().length > 0 ? 'open' : 'closed'));\n\n\tpublic readonly triggers = contentChildren(BrnAccordionTrigger, { descendants: true });\n\n\t/**\n\t * Whether the accordion is in single or multiple mode.\n\t * @default 'single'\n\t */\n\tpublic readonly type = input<'single' | 'multiple'>('single');\n\t/**\n\t * The direction of the accordion, either 'ltr' (left-to-right) or 'rtl' (right-to-left).\n\t * @default null\n\t */\n\tpublic readonly dir = input<'ltr' | 'rtl' | null>(null);\n\t/**\n\t * The orientation of the accordion, either 'horizontal' or 'vertical'.\n\t * @default 'vertical'\n\t */\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('vertical');\n\n\tpublic ngAfterContentInit() {\n\t\tthis._el.nativeElement.addEventListener('keydown', (event: KeyboardEvent) => {\n\t\t\tif (this.shouldIgnoreEvent(event)) return;\n\t\t\tthis._keyManager()?.onKeydown(event);\n\t\t\tthis.preventDefaultEvents(event);\n\t\t});\n\t\tthis._focusMonitor.monitor(this._el, true).subscribe((origin) => this._focused.set(origin !== null));\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._focusMonitor.stopMonitoring(this._el);\n\t}\n\n\tpublic setActiveItem(item: BrnAccordionTrigger) {\n\t\tthis._keyManager()?.setActiveItem(item);\n\t}\n\n\tpublic toggleItem(id: number) {\n\t\tif (this._openItemIds().includes(id)) {\n\t\t\tthis.closeItem(id);\n\t\t\treturn;\n\t\t}\n\t\tthis.openItem(id);\n\t}\n\n\tpublic openItem(id: number) {\n\t\tif (this.type() === 'single') {\n\t\t\tthis._openItemIds.set([id]);\n\t\t\treturn;\n\t\t}\n\t\tthis._openItemIds.update((ids) => (ids.includes(id) ? ids : [...ids, id]));\n\t}\n\n\tpublic closeItem(id: number) {\n\t\tthis._openItemIds.update((ids) => ids.filter((openId) => openId !== id));\n\t}\n\n\tprivate isEditableTarget(el: EventTarget | null): boolean {\n\t\tconst node = el as HTMLElement | null;\n\t\tif (!node) return false;\n\n\t\tconst tag = node.tagName;\n\t\tif (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') return true;\n\t\tif (node.isContentEditable) return true;\n\n\t\tconst role = node.getAttribute?.('role') ?? '';\n\t\tif (/^(textbox|searchbox|combobox|listbox|grid|tree|menu|spinbutton|slider)$/.test(role)) return true;\n\n\t\tconst editableAncestor = node.closest?.(\n\t\t\t'input, textarea, select, [contenteditable=\"\"], [contenteditable=\"true\"], ' +\n\t\t\t\t'[role=\"textbox\"], [role=\"searchbox\"], [role=\"combobox\"], [role=\"listbox\"], ' +\n\t\t\t\t'[role=\"grid\"], [role=\"tree\"], [role=\"menu\"], [role=\"spinbutton\"], [role=\"slider\"]',\n\t\t);\n\t\treturn !!editableAncestor;\n\t}\n\n\tprivate shouldIgnoreEvent(e: KeyboardEvent): boolean {\n\t\tif (e.defaultPrevented) return true; // another handler already acted\n\t\tif (e.ctrlKey || e.metaKey || e.altKey) return true; // let shortcuts through\n\t\treturn this.isEditableTarget(e.target); // don't steal from editable/ARIA widgets\n\t}\n\n\tprivate preventDefaultEvents(event: KeyboardEvent) {\n\t\tif (event.defaultPrevented) return;\n\t\tif (!this._focused()) return;\n\t\tif (!('key' in event)) return;\n\n\t\tconst keys: readonly string[] =\n\t\t\tthis.orientation() === 'horizontal' ? HORIZONTAL_KEYS_TO_PREVENT_DEFAULT : VERTICAL_KEYS_TO_PREVENT_DEFAULT;\n\n\t\tif (keys.includes(event.key) && event.code !== 'NumpadEnter') {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n}\n","import { Directive, ElementRef, afterNextRender, computed, inject, input, linkedSignal, signal } from '@angular/core';\nimport { BrnAccordionItem } from './brn-accordion';\n\n@Directive({\n\tselector: 'brn-accordion-content,[brnAccordionContent]',\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.aria-labelledby]': 'ariaLabeledBy',\n\t\trole: 'region',\n\t\t'[id]': 'id',\n\t\t'[style.--brn-accordion-content-width.px]': '_width()',\n\t\t'[style.--brn-accordion-content-height.px]': '_height()',\n\t\t'[attr.inert]': '_inert()',\n\t\t'[attr.style]': '_mutableStyle()',\n\t},\n})\nexport class BrnAccordionContent {\n\tprivate readonly _item = inject(BrnAccordionItem);\n\tprivate readonly _elementRef = inject(ElementRef);\n\n\tprotected readonly _width = signal<number | null>(null);\n\tprotected readonly _height = signal<number | null>(null);\n\tprotected readonly _dimensionsInitiated = signal(false);\n\tprotected readonly _inert = computed(() => (this.state() === 'closed' ? true : undefined));\n\n\tpublic readonly state = this._item.state;\n\tpublic readonly id = `brn-accordion-content-${this._item.id}`;\n\tpublic readonly ariaLabeledBy = `brn-accordion-trigger-${this._item.id}`;\n\t/**\n\t * The style to be applied to the host element after the dimensions are calculated.\n\t * @default 'overflow: hidden'\n\t */\n\tpublic readonly style = input<string>('overflow: hidden');\n\t/**\n\t * The style to be applied to the host element while the dimensions are being calculated.\n\t * @default 'opacity: 0'\n\t */\n\tpublic readonly styleWhileDimensionsAreInitiating = input<string>('overflow: hidden');\n\tprotected readonly _mutableStyle = linkedSignal(() =>\n\t\tthis._dimensionsInitiated() ? this.style() : this.styleWhileDimensionsAreInitiating(),\n\t);\n\n\tconstructor() {\n\t\tif (!this._item) {\n\t\t\tthrow Error('Accordion Content can only be used inside an AccordionItem. Add brnAccordionItem to parent.');\n\t\t}\n\t\tafterNextRender(() => {\n\t\t\tconst content = this._elementRef.nativeElement.firstChild as HTMLElement | null;\n\t\t\tif (!content) return;\n\t\t\tconst { width, height } = content.getBoundingClientRect();\n\t\t\tthis._width.set(width);\n\t\t\tthis._height.set(height);\n\t\t\tthis._dimensionsInitiated.set(true);\n\t\t});\n\t}\n}\n","import { BrnAccordion, BrnAccordionItem, BrnAccordionTrigger } from './lib/brn-accordion';\nimport { BrnAccordionContent } from './lib/brn-accordion-content';\n\nexport * from './lib/brn-accordion';\nexport * from './lib/brn-accordion-content';\n\nexport const BrnAccordionImports = [BrnAccordion, BrnAccordionContent, BrnAccordionItem, BrnAccordionTrigger] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-accordion.mjs","sources":["../../../../libs/brain/accordion/src/lib/brn-accordion-token.ts","../../../../libs/brain/accordion/src/lib/brn-accordion-trigger.ts","../../../../libs/brain/accordion/src/lib/brn-accordion.ts","../../../../libs/brain/accordion/src/lib/brn-accordion-content.ts","../../../../libs/brain/accordion/src/lib/brn-accordion-item.ts","../../../../libs/brain/accordion/src/index.ts","../../../../libs/brain/accordion/src/spartan-ng-brain-accordion.ts"],"sourcesContent":["import { type ExistingProvider, inject, InjectionToken, type Type, type ValueProvider } from '@angular/core';\nimport type { MeasurementDisplay } from '@spartan-ng/brain/core';\nimport type { BrnAccordion } from './brn-accordion';\nimport type { BrnAccordionItem } from './brn-accordion-item';\n\nexport const BrnAccordionToken = new InjectionToken<BrnAccordion>('BrnAccordionToken');\n\nexport function injectBrnAccordion() {\n\treturn inject(BrnAccordionToken);\n}\n\nexport function provideBrnAccordion(accordion: Type<BrnAccordion>): ExistingProvider {\n\treturn { provide: BrnAccordionToken, useExisting: accordion };\n}\n\nexport const BrnAccordionItemToken = new InjectionToken<BrnAccordionItem>('BrnAccordionItemToken');\n\nexport function injectBrnAccordionItem() {\n\treturn inject(BrnAccordionItemToken);\n}\n\nexport function provideBrnAccordionItem(item: Type<BrnAccordionItem>): ExistingProvider {\n\treturn { provide: BrnAccordionItemToken, useExisting: item };\n}\n\nexport interface BrBrnAccordionConfig {\n\t/**\n\t * The display style to use when measuring element dimensions.\n\t * @default 'block'\n\t */\n\tmeasurementDisplay: MeasurementDisplay;\n}\n\nconst defaultConfig: BrBrnAccordionConfig = {\n\tmeasurementDisplay: 'block',\n};\n\nconst BrnAccordionConfigToken = new InjectionToken<BrBrnAccordionConfig>('BrnBrnAccordionConfig');\n\nexport function provideBrnAccordionConfig(config: Partial<BrBrnAccordionConfig>): ValueProvider {\n\treturn { provide: BrnAccordionConfigToken, useValue: { ...defaultConfig, ...config } };\n}\n\nexport function injectBrnAccordionConfig(): BrBrnAccordionConfig {\n\treturn inject(BrnAccordionConfigToken, { optional: true }) ?? defaultConfig;\n}\n","import type { FocusableOption } from '@angular/cdk/a11y';\nimport { Directive, ElementRef, inject, isDevMode } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { injectBrnAccordion, injectBrnAccordionItem } from './brn-accordion-token';\n\n@Directive({\n\tselector: '[brnAccordionTrigger]',\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.aria-expanded]': 'state() === \"open\"',\n\t\t'[attr.aria-controls]': 'ariaControls',\n\t\t'[id]': 'id',\n\t\t'[attr.role]': '\"button\"',\n\t\t'(click)': 'toggle($event)',\n\t\t'(keyup.space)': 'toggle($event)',\n\t\t'(keyup.enter)': 'toggle($event)',\n\t},\n})\nexport class BrnAccordionTrigger implements FocusableOption {\n\tprivate readonly _accordion = injectBrnAccordion();\n\tprivate readonly _item = injectBrnAccordionItem();\n\tprivate readonly _el = inject(ElementRef<HTMLElement>);\n\n\tpublic readonly state = this._item.state;\n\tpublic readonly id = `brn-accordion-trigger-${this._item.id}`;\n\tpublic readonly ariaControls = `brn-accordion-content-${this._item.id}`;\n\tconstructor() {\n\t\tif (!this._accordion) throw Error('Accordion trigger requires a parent Accordion.');\n\t\tif (!this._item) throw Error('Accordion trigger requires a parent AccordionItem.');\n\t\tthis.validateAriaStructure();\n\n\t\tfromEvent(this._el.nativeElement, 'focus')\n\t\t\t.pipe(takeUntilDestroyed())\n\t\t\t.subscribe(() => {\n\t\t\t\tthis._accordion.setActiveItem(this);\n\t\t\t});\n\t}\n\n\tprotected toggle(event: Event): void {\n\t\tevent.preventDefault();\n\t\tthis._accordion.toggleItem(this._item.id);\n\t}\n\n\tpublic focus() {\n\t\tthis._el.nativeElement.focus();\n\t}\n\n\tprivate validateAriaStructure(): void {\n\t\tconst element = this._el.nativeElement;\n\n\t\tconst isButton = element.tagName === 'BUTTON';\n\t\tconst hasButtonRole = element.getAttribute('role') === 'button';\n\n\t\tif (!isButton && !hasButtonRole) {\n\t\t\tthrow Error(\n\t\t\t\t`BrnAccordionTrigger: The trigger element must be a <button> or have role=\"button\". ` +\n\t\t\t\t\t`Found: <${element.tagName.toLowerCase()}>`,\n\t\t\t);\n\t\t}\n\n\t\tconst parent = element.parentElement;\n\t\tif (!parent) {\n\t\t\tconst message = 'BrnAccordionTrigger: The trigger button must be wrapped in a heading element.';\n\t\t\tif (isDevMode()) {\n\t\t\t\tthrow Error(message);\n\t\t\t} else {\n\t\t\t\tconsole.warn(message);\n\t\t\t}\n\t\t}\n\n\t\tconst isNativeHeading = /^H[1-6]$/.test(parent.tagName);\n\t\tconst hasHeadingRole = parent.getAttribute('role') === 'heading';\n\n\t\tif (!isNativeHeading && !hasHeadingRole) {\n\t\t\tthrow Error(\n\t\t\t\t`BrnAccordionTrigger: The trigger button must be wrapped in a heading element ` +\n\t\t\t\t\t`(h1-h6) or an element with role=\"heading\". Found parent: <${parent.tagName.toLowerCase()}>`,\n\t\t\t);\n\t\t}\n\n\t\tif (hasHeadingRole && !parent.hasAttribute('aria-level')) {\n\t\t\tthrow Error('BrnAccordionTrigger: Elements with role=\"heading\" must have an aria-level attribute.');\n\t\t}\n\t}\n}\n","import { FocusKeyManager, FocusMonitor } from '@angular/cdk/a11y';\nimport {\n\ttype AfterContentInit,\n\tcomputed,\n\tcontentChildren,\n\tDirective,\n\tElementRef,\n\tinject,\n\tinput,\n\ttype OnDestroy,\n\tsignal,\n} from '@angular/core';\nimport { provideBrnAccordion } from './brn-accordion-token';\nimport { BrnAccordionTrigger } from './brn-accordion-trigger';\n\nconst HORIZONTAL_KEYS_TO_PREVENT_DEFAULT = [\n\t'ArrowLeft',\n\t'ArrowRight',\n\t'PageDown',\n\t'PageUp',\n\t'Home',\n\t'End',\n\t' ',\n\t'Enter',\n] as const;\n\nconst VERTICAL_KEYS_TO_PREVENT_DEFAULT = [\n\t'ArrowUp',\n\t'ArrowDown',\n\t'PageDown',\n\t'PageUp',\n\t'Home',\n\t'End',\n\t' ',\n\t'Enter',\n] as const;\n\n@Directive({\n\tselector: '[brnAccordion]',\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t},\n\tproviders: [provideBrnAccordion(BrnAccordion)],\n\texportAs: 'brnAccordion',\n})\nexport class BrnAccordion implements AfterContentInit, OnDestroy {\n\tprivate readonly _el = inject(ElementRef<HTMLElement>);\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\tprivate readonly _keyManager = computed(() =>\n\t\tnew FocusKeyManager<BrnAccordionTrigger>(this.triggers())\n\t\t\t.withHomeAndEnd()\n\t\t\t.withPageUpDown()\n\t\t\t.withWrap()\n\t\t\t.withHorizontalOrientation(this.orientation() === 'vertical' ? null : (this.dir() ?? 'ltr'))\n\t\t\t.withVerticalOrientation(this.orientation() === 'vertical'),\n\t);\n\n\tprivate readonly _focused = signal<boolean>(false);\n\tprivate readonly _openItemIds = signal<number[]>([]);\n\tpublic readonly openItemIds = this._openItemIds.asReadonly();\n\tpublic readonly state = computed(() => (this._openItemIds().length > 0 ? 'open' : 'closed'));\n\n\tpublic readonly triggers = contentChildren(BrnAccordionTrigger, { descendants: true });\n\n\t/**\n\t * Whether the accordion is in single or multiple mode.\n\t * @default 'single'\n\t */\n\tpublic readonly type = input<'single' | 'multiple'>('single');\n\t/**\n\t * The direction of the accordion, either 'ltr' (left-to-right) or 'rtl' (right-to-left).\n\t * @default null\n\t */\n\tpublic readonly dir = input<'ltr' | 'rtl' | null>(null);\n\t/**\n\t * The orientation of the accordion, either 'horizontal' or 'vertical'.\n\t * @default 'vertical'\n\t */\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('vertical');\n\n\tpublic ngAfterContentInit() {\n\t\tthis._el.nativeElement.addEventListener('keydown', (event: KeyboardEvent) => {\n\t\t\tif (this.shouldIgnoreEvent(event)) return;\n\t\t\tthis._keyManager()?.onKeydown(event);\n\t\t\tthis.preventDefaultEvents(event);\n\t\t});\n\t\tthis._focusMonitor.monitor(this._el, true).subscribe((origin) => this._focused.set(origin !== null));\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._focusMonitor.stopMonitoring(this._el);\n\t}\n\n\tpublic setActiveItem(item: BrnAccordionTrigger) {\n\t\tthis._keyManager()?.setActiveItem(item);\n\t}\n\n\tpublic toggleItem(id: number) {\n\t\tif (this._openItemIds().includes(id)) {\n\t\t\tthis.closeItem(id);\n\t\t\treturn;\n\t\t}\n\t\tthis.openItem(id);\n\t}\n\n\tpublic openItem(id: number) {\n\t\tif (this.type() === 'single') {\n\t\t\tthis._openItemIds.set([id]);\n\t\t\treturn;\n\t\t}\n\t\tthis._openItemIds.update((ids) => (ids.includes(id) ? ids : [...ids, id]));\n\t}\n\n\tpublic closeItem(id: number) {\n\t\tthis._openItemIds.update((ids) => ids.filter((openId) => openId !== id));\n\t}\n\n\tprivate isEditableTarget(el: EventTarget | null): boolean {\n\t\tconst node = el as HTMLElement | null;\n\t\tif (!node) return false;\n\n\t\tconst tag = node.tagName;\n\t\tif (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') return true;\n\t\tif (node.isContentEditable) return true;\n\n\t\tconst role = node.getAttribute?.('role') ?? '';\n\t\tif (/^(textbox|searchbox|combobox|listbox|grid|tree|menu|spinbutton|slider)$/.test(role)) return true;\n\n\t\tconst editableAncestor = node.closest?.(\n\t\t\t'input, textarea, select, [contenteditable=\"\"], [contenteditable=\"true\"], ' +\n\t\t\t\t'[role=\"textbox\"], [role=\"searchbox\"], [role=\"combobox\"], [role=\"listbox\"], ' +\n\t\t\t\t'[role=\"grid\"], [role=\"tree\"], [role=\"menu\"], [role=\"spinbutton\"], [role=\"slider\"]',\n\t\t);\n\t\treturn !!editableAncestor;\n\t}\n\n\tprivate shouldIgnoreEvent(e: KeyboardEvent): boolean {\n\t\tif (e.defaultPrevented) return true; // another handler already acted\n\t\tif (e.ctrlKey || e.metaKey || e.altKey) return true; // let shortcuts through\n\t\treturn this.isEditableTarget(e.target); // don't steal from editable/ARIA widgets\n\t}\n\n\tprivate preventDefaultEvents(event: KeyboardEvent) {\n\t\tif (event.defaultPrevented) return;\n\t\tif (!this._focused()) return;\n\t\tif (!('key' in event)) return;\n\n\t\tconst keys: readonly string[] =\n\t\t\tthis.orientation() === 'horizontal' ? HORIZONTAL_KEYS_TO_PREVENT_DEFAULT : VERTICAL_KEYS_TO_PREVENT_DEFAULT;\n\n\t\tif (keys.includes(event.key) && event.code !== 'NumpadEnter') {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n}\n","import { Directive, ElementRef, afterNextRender, computed, inject, input, signal } from '@angular/core';\nimport { measureDimensions } from '@spartan-ng/brain/core';\nimport { injectBrnAccordionConfig, injectBrnAccordionItem } from './brn-accordion-token';\n\n@Directive({\n\tselector: 'brn-accordion-content,[brnAccordionContent]',\n\thost: {\n\t\t'[attr.data-state]': 'state?.()',\n\t\t'[attr.aria-labelledby]': 'ariaLabeledBy',\n\t\trole: 'region',\n\t\t'[id]': 'id',\n\t\t'[style.--brn-accordion-content-width.px]': '_width()',\n\t\t'[style.--brn-accordion-content-height.px]': '_height()',\n\t\t'[attr.inert]': '_inert()',\n\t\t'[attr.style]': 'style()',\n\t},\n})\nexport class BrnAccordionContent {\n\tprivate readonly _config = injectBrnAccordionConfig();\n\tprivate readonly _item = injectBrnAccordionItem();\n\tprivate readonly _elementRef = inject(ElementRef);\n\n\tprotected readonly _width = signal<number | null>(null);\n\tprotected readonly _height = signal<number | null>(null);\n\tprotected readonly _inert = computed(() => (this.state?.() === 'closed' ? true : undefined));\n\n\tpublic readonly state = this._item?.state;\n\tpublic readonly id = `brn-accordion-content-${this._item?.id}`;\n\tpublic readonly ariaLabeledBy = `brn-accordion-trigger-${this._item?.id}`;\n\t/**\n\t * The style to be applied to the host element after the dimensions are calculated.\n\t * @default 'overflow: hidden'\n\t */\n\tpublic readonly style = input<string>('overflow: hidden');\n\n\tconstructor() {\n\t\tif (!this._item) {\n\t\t\tthrow Error('Accordion Content can only be used inside an AccordionItem. Add brnAccordionItem to parent.');\n\t\t}\n\t\tafterNextRender(() => {\n\t\t\tconst content = this._elementRef.nativeElement.firstChild as HTMLElement | null;\n\t\t\tif (!content) return;\n\n\t\t\tconst { width, height } = measureDimensions(content, this._config.measurementDisplay);\n\t\t\tthis._width.set(width);\n\t\t\tthis._height.set(height);\n\t\t});\n\t}\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { computed, Directive, effect, input, output, untracked } from '@angular/core';\nimport { injectBrnAccordion, provideBrnAccordionItem } from './brn-accordion-token';\n\n@Directive({\n\tselector: '[brnAccordionItem]',\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t},\n\tproviders: [provideBrnAccordionItem(BrnAccordionItem)],\n\texportAs: 'brnAccordionItem',\n})\nexport class BrnAccordionItem {\n\tprivate static _itemIdGenerator = 0;\n\tpublic readonly id = ++BrnAccordionItem._itemIdGenerator;\n\tprivate readonly _accordion = injectBrnAccordion();\n\t/**\n\t * Whether the item is opened or closed.\n\t * @default false\n\t */\n\tpublic readonly isOpened = input<boolean, BooleanInput>(false, { transform: coerceBooleanProperty });\n\t/**\n\t * Computed state of the item, either 'open' or 'closed'\n\t * @default closed\n\t */\n\tpublic readonly state = computed(() => (this._accordion.openItemIds()?.includes(this.id) ? 'open' : 'closed'));\n\t/**\n\t * Emits boolean when the item is opened or closed.\n\t */\n\tpublic readonly stateChange = output<'open' | 'closed'>();\n\t/**\n\t * Emits state change when item is opened or closed\n\t */\n\tpublic readonly openedChange = output<boolean>();\n\n\tconstructor() {\n\t\tif (!this._accordion) {\n\t\t\tthrow Error('Accordion item can only be used inside an Accordion. Add brnAccordion to ancestor.');\n\t\t}\n\t\teffect(() => {\n\t\t\tconst state = this.state();\n\t\t\tuntracked(() => {\n\t\t\t\tthis.stateChange.emit(state);\n\t\t\t\tthis.openedChange.emit(state === 'open');\n\t\t\t});\n\t\t});\n\t\teffect(() => {\n\t\t\tconst isOpened = this.isOpened();\n\t\t\tuntracked(() => {\n\t\t\t\tif (isOpened) {\n\t\t\t\t\tthis._accordion.openItem(this.id);\n\t\t\t\t} else {\n\t\t\t\t\tthis._accordion.closeItem(this.id);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n","import { BrnAccordion } from './lib/brn-accordion';\nimport { BrnAccordionContent } from './lib/brn-accordion-content';\nimport { BrnAccordionItem } from './lib/brn-accordion-item';\nimport { BrnAccordionTrigger } from './lib/brn-accordion-trigger';\n\nexport * from './lib/brn-accordion';\nexport * from './lib/brn-accordion-content';\nexport * from './lib/brn-accordion-item';\nexport * from './lib/brn-accordion-token';\nexport * from './lib/brn-accordion-trigger';\n\nexport const BrnAccordionImports = [BrnAccordion, BrnAccordionContent, BrnAccordionItem, BrnAccordionTrigger] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { forwardRef, ViewEncapsulation, ChangeDetectionStrategy, Component, Directive, input, effect, untracked } from '@angular/core';
2
+ import { forwardRef, ChangeDetectionStrategy, Component, Directive, input, effect, untracked } from '@angular/core';
3
3
  import { BrnDialog, provideBrnDialogDefaultOptions, BrnDialogContent, BrnDialogDescription, BrnDialogOverlay, BrnDialogTitle, BrnDialogTrigger } from '@spartan-ng/brain/dialog';
4
4
  import { provideExposesStateProviderExisting, provideCustomClassSettableExisting } from '@spartan-ng/brain/core';
5
5
 
@@ -18,7 +18,7 @@ class BrnAlertDialog extends BrnDialog {
18
18
  provideBrnDialogDefaultOptions(BRN_ALERT_DIALOG_DEFAULT_OPTIONS),
19
19
  ], exportAs: ["brnAlertDialog"], usesInheritance: true, ngImport: i0, template: `
20
20
  <ng-content />
21
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
21
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
22
22
  }
23
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnAlertDialog, decorators: [{
24
24
  type: Component,
@@ -35,7 +35,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
35
35
  provideBrnDialogDefaultOptions(BRN_ALERT_DIALOG_DEFAULT_OPTIONS),
36
36
  ],
37
37
  changeDetection: ChangeDetectionStrategy.OnPush,
38
- encapsulation: ViewEncapsulation.None,
39
38
  exportAs: 'brnAlertDialog',
40
39
  }]
41
40
  }] });
@@ -68,7 +67,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
68
67
 
69
68
  class BrnAlertDialogOverlay extends BrnDialogOverlay {
70
69
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnAlertDialogOverlay, deps: null, target: i0.ɵɵFactoryTarget.Component });
71
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: BrnAlertDialogOverlay, isStandalone: true, selector: "brn-alert-dialog-overlay", providers: [provideCustomClassSettableExisting((() => BrnAlertDialogOverlay))], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
70
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: BrnAlertDialogOverlay, isStandalone: true, selector: "brn-alert-dialog-overlay", providers: [provideCustomClassSettableExisting((() => BrnAlertDialogOverlay))], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
72
71
  }
73
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnAlertDialogOverlay, decorators: [{
74
73
  type: Component,
@@ -77,7 +76,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
77
76
  providers: [provideCustomClassSettableExisting((() => BrnAlertDialogOverlay))],
78
77
  template: '',
79
78
  changeDetection: ChangeDetectionStrategy.OnPush,
80
- encapsulation: ViewEncapsulation.None,
81
79
  }]
82
80
  }] });
83
81
 
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-alert-dialog.mjs","sources":["../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-content.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-description.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-overlay.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-title.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-trigger.ts","../../../../libs/brain/alert-dialog/src/index.ts","../../../../libs/brain/alert-dialog/src/spartan-ng-brain-alert-dialog.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, forwardRef, ViewEncapsulation } from '@angular/core';\nimport { BrnDialog, type BrnDialogDefaultOptions, provideBrnDialogDefaultOptions } from '@spartan-ng/brain/dialog';\n\nexport const BRN_ALERT_DIALOG_DEFAULT_OPTIONS: Partial<BrnDialogDefaultOptions> = {\n\tcloseOnBackdropClick: false,\n\tcloseOnOutsidePointerEvents: false,\n\trole: 'alertdialog',\n};\n\n@Component({\n\tselector: 'brn-alert-dialog',\n\ttemplate: `\n\t\t<ng-content />\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: BrnDialog,\n\t\t\tuseExisting: forwardRef(() => BrnAlertDialog),\n\t\t},\n\t\tprovideBrnDialogDefaultOptions(BRN_ALERT_DIALOG_DEFAULT_OPTIONS),\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\texportAs: 'brnAlertDialog',\n})\nexport class BrnAlertDialog extends BrnDialog {}\n","import { Directive } from '@angular/core';\nimport { provideExposesStateProviderExisting } from '@spartan-ng/brain/core';\nimport { BrnDialogContent } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogContent]',\n\tproviders: [provideExposesStateProviderExisting(() => BrnAlertDialogContent)],\n})\nexport class BrnAlertDialogContent<T> extends BrnDialogContent<T> {}\n","import { Directive } from '@angular/core';\nimport { BrnDialogDescription } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogDescription]',\n\thost: {\n\t\t'[id]': '_id()',\n\t},\n})\nexport class BrnAlertDialogDescription extends BrnDialogDescription {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { provideCustomClassSettableExisting } from '@spartan-ng/brain/core';\nimport { BrnDialogOverlay } from '@spartan-ng/brain/dialog';\n\n@Component({\n\tselector: 'brn-alert-dialog-overlay',\n\tproviders: [provideCustomClassSettableExisting(() => BrnAlertDialogOverlay)],\n\ttemplate: '',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class BrnAlertDialogOverlay extends BrnDialogOverlay {}\n","import { Directive } from '@angular/core';\nimport { BrnDialogTitle } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogTitle]',\n\thost: {\n\t\t'[id]': '_id()',\n\t},\n})\nexport class BrnAlertDialogTitle extends BrnDialogTitle {}\n","import { Directive, effect, input, untracked } from '@angular/core';\nimport { BrnDialogTrigger } from '@spartan-ng/brain/dialog';\nimport type { BrnAlertDialog } from './brn-alert-dialog';\n\n@Directive({\n\tselector: 'button[brnAlertDialogTrigger],button[brnAlertDialogTriggerFor]',\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'aria-haspopup': 'dialog',\n\t\t'[attr.aria-expanded]': \"state() === 'open' ? 'true': 'false'\",\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.aria-controls]': 'dialogId',\n\t\t'[type]': 'type()',\n\t},\n})\nexport class BrnAlertDialogTrigger extends BrnDialogTrigger {\n\tpublic readonly brnAlertDialogTriggerFor = input<BrnAlertDialog | undefined>();\n\tpublic readonly type = input<'button' | 'submit' | 'reset'>('button');\n\n\tconstructor() {\n\t\tsuper();\n\t\teffect(() => {\n\t\t\tconst brnDialog = this.brnAlertDialogTriggerFor();\n\t\t\tuntracked(() => {\n\t\t\t\tif (brnDialog) {\n\t\t\t\t\tthis.mutableBrnDialogTriggerFor().set(brnDialog);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n","import { BrnAlertDialog } from './lib/brn-alert-dialog';\nimport { BrnAlertDialogContent } from './lib/brn-alert-dialog-content';\nimport { BrnAlertDialogDescription } from './lib/brn-alert-dialog-description';\nimport { BrnAlertDialogOverlay } from './lib/brn-alert-dialog-overlay';\nimport { BrnAlertDialogTitle } from './lib/brn-alert-dialog-title';\nimport { BrnAlertDialogTrigger } from './lib/brn-alert-dialog-trigger';\n\nexport * from './lib/brn-alert-dialog';\nexport * from './lib/brn-alert-dialog-content';\nexport * from './lib/brn-alert-dialog-description';\nexport * from './lib/brn-alert-dialog-overlay';\nexport * from './lib/brn-alert-dialog-title';\nexport * from './lib/brn-alert-dialog-trigger';\n\nexport const BrnAlertDialogImports = [\n\tBrnAlertDialog,\n\tBrnAlertDialogOverlay,\n\tBrnAlertDialogTrigger,\n\tBrnAlertDialogContent,\n\tBrnAlertDialogTitle,\n\tBrnAlertDialogDescription,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-alert-dialog.mjs","sources":["../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-content.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-description.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-overlay.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-title.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-trigger.ts","../../../../libs/brain/alert-dialog/src/index.ts","../../../../libs/brain/alert-dialog/src/spartan-ng-brain-alert-dialog.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';\nimport { BrnDialog, type BrnDialogDefaultOptions, provideBrnDialogDefaultOptions } from '@spartan-ng/brain/dialog';\n\nexport const BRN_ALERT_DIALOG_DEFAULT_OPTIONS: Partial<BrnDialogDefaultOptions> = {\n\tcloseOnBackdropClick: false,\n\tcloseOnOutsidePointerEvents: false,\n\trole: 'alertdialog',\n};\n\n@Component({\n\tselector: 'brn-alert-dialog',\n\ttemplate: `\n\t\t<ng-content />\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: BrnDialog,\n\t\t\tuseExisting: forwardRef(() => BrnAlertDialog),\n\t\t},\n\t\tprovideBrnDialogDefaultOptions(BRN_ALERT_DIALOG_DEFAULT_OPTIONS),\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\texportAs: 'brnAlertDialog',\n})\nexport class BrnAlertDialog extends BrnDialog {}\n","import { Directive } from '@angular/core';\nimport { provideExposesStateProviderExisting } from '@spartan-ng/brain/core';\nimport { BrnDialogContent } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogContent]',\n\tproviders: [provideExposesStateProviderExisting(() => BrnAlertDialogContent)],\n})\nexport class BrnAlertDialogContent<T> extends BrnDialogContent<T> {}\n","import { Directive } from '@angular/core';\nimport { BrnDialogDescription } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogDescription]',\n\thost: {\n\t\t'[id]': '_id()',\n\t},\n})\nexport class BrnAlertDialogDescription extends BrnDialogDescription {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { provideCustomClassSettableExisting } from '@spartan-ng/brain/core';\nimport { BrnDialogOverlay } from '@spartan-ng/brain/dialog';\n\n@Component({\n\tselector: 'brn-alert-dialog-overlay',\n\tproviders: [provideCustomClassSettableExisting(() => BrnAlertDialogOverlay)],\n\ttemplate: '',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BrnAlertDialogOverlay extends BrnDialogOverlay {}\n","import { Directive } from '@angular/core';\nimport { BrnDialogTitle } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogTitle]',\n\thost: {\n\t\t'[id]': '_id()',\n\t},\n})\nexport class BrnAlertDialogTitle extends BrnDialogTitle {}\n","import { Directive, effect, input, untracked } from '@angular/core';\nimport { BrnDialogTrigger } from '@spartan-ng/brain/dialog';\nimport type { BrnAlertDialog } from './brn-alert-dialog';\n\n@Directive({\n\tselector: 'button[brnAlertDialogTrigger],button[brnAlertDialogTriggerFor]',\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'aria-haspopup': 'dialog',\n\t\t'[attr.aria-expanded]': \"state() === 'open' ? 'true': 'false'\",\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.aria-controls]': 'dialogId',\n\t\t'[type]': 'type()',\n\t},\n})\nexport class BrnAlertDialogTrigger extends BrnDialogTrigger {\n\tpublic readonly brnAlertDialogTriggerFor = input<BrnAlertDialog | undefined>();\n\tpublic readonly type = input<'button' | 'submit' | 'reset'>('button');\n\n\tconstructor() {\n\t\tsuper();\n\t\teffect(() => {\n\t\t\tconst brnDialog = this.brnAlertDialogTriggerFor();\n\t\t\tuntracked(() => {\n\t\t\t\tif (brnDialog) {\n\t\t\t\t\tthis.mutableBrnDialogTriggerFor().set(brnDialog);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n","import { BrnAlertDialog } from './lib/brn-alert-dialog';\nimport { BrnAlertDialogContent } from './lib/brn-alert-dialog-content';\nimport { BrnAlertDialogDescription } from './lib/brn-alert-dialog-description';\nimport { BrnAlertDialogOverlay } from './lib/brn-alert-dialog-overlay';\nimport { BrnAlertDialogTitle } from './lib/brn-alert-dialog-title';\nimport { BrnAlertDialogTrigger } from './lib/brn-alert-dialog-trigger';\n\nexport * from './lib/brn-alert-dialog';\nexport * from './lib/brn-alert-dialog-content';\nexport * from './lib/brn-alert-dialog-description';\nexport * from './lib/brn-alert-dialog-overlay';\nexport * from './lib/brn-alert-dialog-title';\nexport * from './lib/brn-alert-dialog-trigger';\n\nexport const BrnAlertDialogImports = [\n\tBrnAlertDialog,\n\tBrnAlertDialogOverlay,\n\tBrnAlertDialogTrigger,\n\tBrnAlertDialogContent,\n\tBrnAlertDialogTitle,\n\tBrnAlertDialogDescription,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, computed, Directive, contentChild, ViewEncapsulation, ChangeDetectionStrategy, Component, inject, ElementRef, input, Pipe } from '@angular/core';
2
+ import { signal, computed, Directive, contentChild, ChangeDetectionStrategy, Component, inject, ElementRef, input, Pipe } from '@angular/core';
3
3
 
4
4
  class BrnAvatarImage {
5
5
  _loaded = signal(false);
@@ -34,14 +34,13 @@ class BrnAvatar {
34
34
  } @else {
35
35
  <ng-content select="[brnAvatarFallback]" />
36
36
  }
37
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
37
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
38
38
  }
39
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnAvatar, decorators: [{
40
40
  type: Component,
41
41
  args: [{
42
42
  selector: 'brn-avatar',
43
43
  changeDetection: ChangeDetectionStrategy.OnPush,
44
- encapsulation: ViewEncapsulation.None,
45
44
  template: `
46
45
  @if (_image()?.canShow()) {
47
46
  <ng-content select="[brnAvatarImage]" />
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-avatar.mjs","sources":["../../../../libs/brain/avatar/src/lib/image/brn-avatar-image.ts","../../../../libs/brain/avatar/src/lib/brn-avatar.ts","../../../../libs/brain/avatar/src/lib/fallback/brn-avatar-fallback.ts","../../../../libs/brain/avatar/src/lib/util/hex-color-for.ts","../../../../libs/brain/avatar/src/lib/util/initials.pipe.ts","../../../../libs/brain/avatar/src/lib/util/is-bright.ts","../../../../libs/brain/avatar/src/index.ts","../../../../libs/brain/avatar/src/spartan-ng-brain-avatar.ts"],"sourcesContent":["import { Directive, computed, signal } from '@angular/core';\n\n@Directive({\n\tselector: 'img[brnAvatarImage]',\n\texportAs: 'avatarImage',\n\thost: {\n\t\t'(load)': '_onLoad()',\n\t\t'(error)': '_onError()',\n\t},\n})\nexport class BrnAvatarImage {\n\tprivate readonly _loaded = signal(false);\n\n\tprotected _onError() {\n\t\tthis._loaded.set(false);\n\t}\n\n\tprotected _onLoad() {\n\t\tthis._loaded.set(true);\n\t}\n\n\tpublic readonly canShow = computed(() => this._loaded());\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, contentChild } from '@angular/core';\nimport { BrnAvatarImage } from './image';\n\n@Component({\n\tselector: 'brn-avatar',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\ttemplate: `\n\t\t@if (_image()?.canShow()) {\n\t\t\t<ng-content select=\"[brnAvatarImage]\" />\n\t\t} @else {\n\t\t\t<ng-content select=\"[brnAvatarFallback]\" />\n\t\t}\n\t`,\n})\nexport class BrnAvatar {\n\tprotected readonly _image = contentChild(BrnAvatarImage);\n}\n","import { Directive, ElementRef, inject, input } from '@angular/core';\nimport type { ClassValue } from 'clsx';\n\n@Directive({\n\tselector: '[brnAvatarFallback]',\n\texportAs: 'avatarFallback',\n})\nexport class BrnAvatarFallback {\n\tprivate readonly _element = inject(ElementRef).nativeElement;\n\tpublic readonly userClass = input<ClassValue>('', { alias: 'class' });\n\n\tgetTextContent(): string {\n\t\treturn this._element.textContent;\n\t}\n}\n","function hashString(str: string) {\n\tlet h;\n\tfor (let i = 0; i < str.length; i++) h = (Math.imul(31, h || 0) + str.charCodeAt(i)) | 0;\n\n\treturn h || 0;\n}\n\nfunction hashManyTimes(times: number, str: string) {\n\tlet h = hashString(str);\n\n\tfor (let i = 0; i < times; i++) h = hashString(String(h));\n\n\treturn h;\n}\n\nexport function hexColorFor(str: string) {\n\tconst hash = str.length <= 2 ? hashManyTimes(5, str) : hashString(str);\n\n\tlet color = '#';\n\n\tfor (let i = 0; i < 3; i += 1) {\n\t\tconst value = (hash >> (i * 8)) & 0xff;\n\t\tcolor += `00${value.toString(16)}`.slice(-2);\n\t}\n\n\treturn color;\n}\n","import { Pipe, type PipeTransform } from '@angular/core';\n\nconst toInitial =\n\t(capitalize = true) =>\n\t(word: string) => {\n\t\tconst initial = word.charAt(0);\n\t\treturn capitalize ? initial.toLocaleUpperCase() : initial;\n\t};\n\nconst firstAndLast = (initials: string[]) => `${initials[0]}${initials[initials.length - 1]}`;\n\n@Pipe({\n\tname: 'initials',\n})\nexport class InitialsPipe implements PipeTransform {\n\ttransform(name: string, capitalize = true, firstAndLastOnly = true, delimiter = ' '): string {\n\t\tif (!name) return '';\n\n\t\tconst initials = name.trim().split(delimiter).filter(Boolean).map(toInitial(capitalize));\n\n\t\tif (firstAndLastOnly && initials.length > 1) return firstAndLast(initials);\n\n\t\treturn initials.join('');\n\t}\n}\n","const isShortHand = (hex: string) => hex.length === 3;\n\nconst cleanup = (hex: string) => {\n\tconst noHash = hex.replace('#', '').trim().toLowerCase();\n\n\tif (!isShortHand(noHash)) return noHash;\n\n\treturn noHash\n\t\t.split('')\n\t\t.map((char) => char + char)\n\t\t.join('');\n};\n\nexport const isBright = (hex: string) => Number.parseInt(cleanup(hex), 16) > 0xffffff / 1.25;\n","import { BrnAvatar } from './lib/brn-avatar';\nimport { BrnAvatarFallback } from './lib/fallback';\nimport { BrnAvatarImage } from './lib/image';\n\nexport * from './lib/brn-avatar';\nexport * from './lib/fallback';\nexport * from './lib/image';\nexport * from './lib/util';\n\nexport const BrnAvatarImports = [BrnAvatar, BrnAvatarFallback, BrnAvatarImage] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-avatar.mjs","sources":["../../../../libs/brain/avatar/src/lib/image/brn-avatar-image.ts","../../../../libs/brain/avatar/src/lib/brn-avatar.ts","../../../../libs/brain/avatar/src/lib/fallback/brn-avatar-fallback.ts","../../../../libs/brain/avatar/src/lib/util/hex-color-for.ts","../../../../libs/brain/avatar/src/lib/util/initials.pipe.ts","../../../../libs/brain/avatar/src/lib/util/is-bright.ts","../../../../libs/brain/avatar/src/index.ts","../../../../libs/brain/avatar/src/spartan-ng-brain-avatar.ts"],"sourcesContent":["import { Directive, computed, signal } from '@angular/core';\n\n@Directive({\n\tselector: 'img[brnAvatarImage]',\n\texportAs: 'avatarImage',\n\thost: {\n\t\t'(load)': '_onLoad()',\n\t\t'(error)': '_onError()',\n\t},\n})\nexport class BrnAvatarImage {\n\tprivate readonly _loaded = signal(false);\n\n\tprotected _onError() {\n\t\tthis._loaded.set(false);\n\t}\n\n\tprotected _onLoad() {\n\t\tthis._loaded.set(true);\n\t}\n\n\tpublic readonly canShow = computed(() => this._loaded());\n}\n","import { ChangeDetectionStrategy, Component, contentChild } from '@angular/core';\nimport { BrnAvatarImage } from './image';\n\n@Component({\n\tselector: 'brn-avatar',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t@if (_image()?.canShow()) {\n\t\t\t<ng-content select=\"[brnAvatarImage]\" />\n\t\t} @else {\n\t\t\t<ng-content select=\"[brnAvatarFallback]\" />\n\t\t}\n\t`,\n})\nexport class BrnAvatar {\n\tprotected readonly _image = contentChild(BrnAvatarImage);\n}\n","import { Directive, ElementRef, inject, input } from '@angular/core';\nimport type { ClassValue } from 'clsx';\n\n@Directive({\n\tselector: '[brnAvatarFallback]',\n\texportAs: 'avatarFallback',\n})\nexport class BrnAvatarFallback {\n\tprivate readonly _element = inject(ElementRef).nativeElement;\n\tpublic readonly userClass = input<ClassValue>('', { alias: 'class' });\n\n\tgetTextContent(): string {\n\t\treturn this._element.textContent;\n\t}\n}\n","function hashString(str: string) {\n\tlet h;\n\tfor (let i = 0; i < str.length; i++) h = (Math.imul(31, h || 0) + str.charCodeAt(i)) | 0;\n\n\treturn h || 0;\n}\n\nfunction hashManyTimes(times: number, str: string) {\n\tlet h = hashString(str);\n\n\tfor (let i = 0; i < times; i++) h = hashString(String(h));\n\n\treturn h;\n}\n\nexport function hexColorFor(str: string) {\n\tconst hash = str.length <= 2 ? hashManyTimes(5, str) : hashString(str);\n\n\tlet color = '#';\n\n\tfor (let i = 0; i < 3; i += 1) {\n\t\tconst value = (hash >> (i * 8)) & 0xff;\n\t\tcolor += `00${value.toString(16)}`.slice(-2);\n\t}\n\n\treturn color;\n}\n","import { Pipe, type PipeTransform } from '@angular/core';\n\nconst toInitial =\n\t(capitalize = true) =>\n\t(word: string) => {\n\t\tconst initial = word.charAt(0);\n\t\treturn capitalize ? initial.toLocaleUpperCase() : initial;\n\t};\n\nconst firstAndLast = (initials: string[]) => `${initials[0]}${initials[initials.length - 1]}`;\n\n@Pipe({\n\tname: 'initials',\n})\nexport class InitialsPipe implements PipeTransform {\n\ttransform(name: string, capitalize = true, firstAndLastOnly = true, delimiter = ' '): string {\n\t\tif (!name) return '';\n\n\t\tconst initials = name.trim().split(delimiter).filter(Boolean).map(toInitial(capitalize));\n\n\t\tif (firstAndLastOnly && initials.length > 1) return firstAndLast(initials);\n\n\t\treturn initials.join('');\n\t}\n}\n","const isShortHand = (hex: string) => hex.length === 3;\n\nconst cleanup = (hex: string) => {\n\tconst noHash = hex.replace('#', '').trim().toLowerCase();\n\n\tif (!isShortHand(noHash)) return noHash;\n\n\treturn noHash\n\t\t.split('')\n\t\t.map((char) => char + char)\n\t\t.join('');\n};\n\nexport const isBright = (hex: string) => Number.parseInt(cleanup(hex), 16) > 0xffffff / 1.25;\n","import { BrnAvatar } from './lib/brn-avatar';\nimport { BrnAvatarFallback } from './lib/fallback';\nimport { BrnAvatarImage } from './lib/image';\n\nexport * from './lib/brn-avatar';\nexport * from './lib/fallback';\nexport * from './lib/image';\nexport * from './lib/util';\n\nexport const BrnAvatarImports = [BrnAvatar, BrnAvatarFallback, BrnAvatarImage] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,24 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, model, input, booleanAttribute, ChangeDetectionStrategy, Component, inject, ElementRef, PLATFORM_ID, effect, untracked, Directive } from '@angular/core';
3
- import { isPlatformServer } from '@angular/common';
2
+ import { InjectionToken, inject, signal, model, computed, input, booleanAttribute, Directive, ElementRef, effect, untracked, afterNextRender } from '@angular/core';
3
+ import { measureDimensions } from '@spartan-ng/brain/core';
4
+
5
+ const BrnCollapsibleToken = new InjectionToken('BrnCollapsibleToken');
6
+ function injectBrnCollapsible() {
7
+ return inject(BrnCollapsibleToken, { optional: true });
8
+ }
9
+ function provideBrnCollapsible(collapsible) {
10
+ return { provide: BrnCollapsibleToken, useExisting: collapsible };
11
+ }
12
+ const defaultConfig = {
13
+ measurementDisplay: 'block',
14
+ };
15
+ const BrnCollapsibleConfigToken = new InjectionToken('BrnCollapsibleConfig');
16
+ function provideBrnCollapsibleConfig(config) {
17
+ return { provide: BrnCollapsibleConfigToken, useValue: { ...defaultConfig, ...config } };
18
+ }
19
+ function injectBrnCollapsibleConfig() {
20
+ return inject(BrnCollapsibleConfigToken, { optional: true }) ?? defaultConfig;
21
+ }
4
22
 
5
23
  let collapsibleContentIdSequence = 0;
6
24
  class BrnCollapsible {
@@ -9,6 +27,10 @@ class BrnCollapsible {
9
27
  * The expanded or collapsed state of the collapsible component.
10
28
  */
11
29
  expanded = model(false);
30
+ /**
31
+ * The current state of the collapsible component as 'open' or 'closed'.
32
+ */
33
+ state = computed(() => (this.expanded() ? 'open' : 'closed'));
12
34
  /**
13
35
  * The disabled state of the collapsible component.
14
36
  */
@@ -17,38 +39,36 @@ class BrnCollapsible {
17
39
  * Toggles the expanded state of the collapsible component.
18
40
  */
19
41
  toggle() {
42
+ if (this.disabled()) {
43
+ return;
44
+ }
20
45
  this.expanded.update((expanded) => !expanded);
21
46
  }
22
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnCollapsible, deps: [], target: i0.ɵɵFactoryTarget.Component });
23
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.8", type: BrnCollapsible, isStandalone: true, selector: "brn-collapsible", inputs: { expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "attr.data-state": "expanded() ? \"open\" : \"closed\"", "attr.disabled": "disabled() ? true : undefined" } }, ngImport: i0, template: `
24
- <ng-content />
25
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
47
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnCollapsible, deps: [], target: i0.ɵɵFactoryTarget.Directive });
48
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.8", type: BrnCollapsible, isStandalone: true, selector: "[brnCollapsible],brn-collapsible", inputs: { expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "attr.data-state": "state()", "attr.disabled": "disabled() ? true : undefined" } }, providers: [provideBrnCollapsible(BrnCollapsible)], ngImport: i0 });
26
49
  }
27
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnCollapsible, decorators: [{
28
- type: Component,
51
+ type: Directive,
29
52
  args: [{
30
- selector: 'brn-collapsible',
53
+ selector: '[brnCollapsible],brn-collapsible',
31
54
  host: {
32
- '[attr.data-state]': 'expanded() ? "open" : "closed"',
55
+ '[attr.data-state]': 'state()',
33
56
  '[attr.disabled]': 'disabled() ? true : undefined',
34
57
  },
35
- template: `
36
- <ng-content />
37
- `,
38
- changeDetection: ChangeDetectionStrategy.OnPush,
58
+ providers: [provideBrnCollapsible(BrnCollapsible)],
39
59
  }]
40
60
  }] });
41
61
 
42
62
  class BrnCollapsibleContent {
43
- _collapsible = inject(BrnCollapsible, { optional: true });
63
+ _config = injectBrnCollapsibleConfig();
44
64
  _elementRef = inject(ElementRef);
45
- _platformId = inject(PLATFORM_ID);
65
+ _collapsible = injectBrnCollapsible();
66
+ _width = signal(null);
67
+ _height = signal(null);
46
68
  /**
47
69
  * The id of the collapsible content element.
48
70
  */
49
71
  id = input();
50
- _width = signal(null);
51
- _height = signal(null);
52
72
  constructor() {
53
73
  if (!this._collapsible) {
54
74
  throw Error('Collapsible trigger directive can only be used inside a brn-collapsible element.');
@@ -60,45 +80,32 @@ class BrnCollapsibleContent {
60
80
  return;
61
81
  untracked(() => collapsible.contentId.set(id));
62
82
  });
83
+ afterNextRender(() => {
84
+ const { width, height } = measureDimensions(this._elementRef.nativeElement, this._config.measurementDisplay);
85
+ this._width.set(width);
86
+ this._height.set(height);
87
+ });
63
88
  }
64
- ngOnInit() {
65
- if (isPlatformServer(this._platformId)) {
66
- return;
67
- }
68
- // ensure the element is not hidden when measuring its size
69
- this._elementRef.nativeElement.hidden = false;
70
- const { width, height } = this._elementRef.nativeElement.getBoundingClientRect();
71
- this._width.set(width);
72
- this._height.set(height);
73
- // we force the element to be hidden again if collapsed after measuring its size
74
- // this is handled by the host binding, but it can cause a flicker if we don't do this here manually
75
- this._elementRef.nativeElement.hidden = this._collapsible?.expanded() ?? false;
76
- }
77
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnCollapsibleContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
78
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.8", type: BrnCollapsibleContent, isStandalone: true, selector: "brn-collapsible-content", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "hidden": "!_collapsible?.expanded()", "attr.data-state": "_collapsible?.expanded() ? \"open\" : \"closed\"", "id": "_collapsible?.contentId()", "style.--brn-collapsible-content-width.px": "_width()", "style.--brn-collapsible-content-height.px": "_height()" } }, ngImport: i0, template: `
79
- <ng-content />
80
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
89
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnCollapsibleContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
90
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.8", type: BrnCollapsibleContent, isStandalone: true, selector: "[brnCollapsibleContent],brn-collapsible-content", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.inert": "_collapsible?.state() === 'closed' ? true : undefined", "attr.data-state": "_collapsible?.state()", "id": "_collapsible?.contentId()", "style.--brn-collapsible-content-width.px": "_width()", "style.--brn-collapsible-content-height.px": "_height()" } }, ngImport: i0 });
81
91
  }
82
92
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnCollapsibleContent, decorators: [{
83
- type: Component,
93
+ type: Directive,
84
94
  args: [{
85
- selector: 'brn-collapsible-content',
95
+ selector: '[brnCollapsibleContent],brn-collapsible-content',
86
96
  host: {
87
- '[hidden]': '!_collapsible?.expanded()',
88
- '[attr.data-state]': '_collapsible?.expanded() ? "open" : "closed"',
97
+ '[attr.inert]': "_collapsible?.state() === 'closed' ? true : undefined",
98
+ '[attr.data-state]': '_collapsible?.state()',
89
99
  '[id]': '_collapsible?.contentId()',
90
100
  '[style.--brn-collapsible-content-width.px]': '_width()',
91
101
  '[style.--brn-collapsible-content-height.px]': '_height()',
92
102
  },
93
- template: `
94
- <ng-content />
95
- `,
96
- changeDetection: ChangeDetectionStrategy.OnPush,
97
103
  }]
98
104
  }], ctorParameters: () => [] });
99
105
 
100
106
  class BrnCollapsibleTrigger {
101
- _collapsible = inject(BrnCollapsible, { optional: true });
107
+ _collapsible = injectBrnCollapsible();
108
+ type = input('button');
102
109
  constructor() {
103
110
  if (!this._collapsible) {
104
111
  throw Error('Collapsible trigger directive can only be used inside a brn-collapsible element.');
@@ -108,17 +115,18 @@ class BrnCollapsibleTrigger {
108
115
  this._collapsible?.toggle();
109
116
  }
110
117
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnCollapsibleTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
111
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.8", type: BrnCollapsibleTrigger, isStandalone: true, selector: "button[brnCollapsibleTrigger]", host: { listeners: { "click": "toggle()" }, properties: { "attr.data-state": "_collapsible?.expanded() ? \"open\" : \"closed\"", "attr.disabled": "_collapsible?.disabled() ? true : undefined", "attr.aria-expanded": "_collapsible?.expanded()", "attr.aria-controls": "_collapsible?.contentId()" } }, ngImport: i0 });
118
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.8", type: BrnCollapsibleTrigger, isStandalone: true, selector: "button[brnCollapsibleTrigger]", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "toggle()" }, properties: { "attr.data-state": "_collapsible?.state()", "attr.disabled": "_collapsible?.disabled() ? true : undefined", "attr.aria-expanded": "_collapsible?.expanded()", "attr.aria-controls": "_collapsible?.contentId()", "type": "type()" } }, ngImport: i0 });
112
119
  }
113
120
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnCollapsibleTrigger, decorators: [{
114
121
  type: Directive,
115
122
  args: [{
116
123
  selector: 'button[brnCollapsibleTrigger]',
117
124
  host: {
118
- '[attr.data-state]': '_collapsible?.expanded() ? "open" : "closed"',
125
+ '[attr.data-state]': '_collapsible?.state()',
119
126
  '[attr.disabled]': '_collapsible?.disabled() ? true : undefined',
120
127
  '[attr.aria-expanded]': '_collapsible?.expanded()',
121
128
  '[attr.aria-controls]': '_collapsible?.contentId()',
129
+ '[type]': 'type()',
122
130
  '(click)': 'toggle()',
123
131
  },
124
132
  }]
@@ -130,5 +138,5 @@ const BrnCollapsibleImports = [BrnCollapsible, BrnCollapsibleTrigger, BrnCollaps
130
138
  * Generated bundle index. Do not edit.
131
139
  */
132
140
 
133
- export { BrnCollapsible, BrnCollapsibleContent, BrnCollapsibleImports, BrnCollapsibleTrigger };
141
+ export { BrnCollapsible, BrnCollapsibleContent, BrnCollapsibleImports, BrnCollapsibleToken, BrnCollapsibleTrigger, injectBrnCollapsible, injectBrnCollapsibleConfig, provideBrnCollapsible, provideBrnCollapsibleConfig };
134
142
  //# sourceMappingURL=spartan-ng-brain-collapsible.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-collapsible.mjs","sources":["../../../../libs/brain/collapsible/src/lib/brn-collapsible.ts","../../../../libs/brain/collapsible/src/lib/brn-collapsible-content.ts","../../../../libs/brain/collapsible/src/lib/brn-collapsible-trigger.ts","../../../../libs/brain/collapsible/src/index.ts","../../../../libs/brain/collapsible/src/spartan-ng-brain-collapsible.ts"],"sourcesContent":["import type { BooleanInput } from '@angular/cdk/coercion';\nimport { ChangeDetectionStrategy, Component, booleanAttribute, input, model, signal } from '@angular/core';\n\nlet collapsibleContentIdSequence = 0;\n\nexport type BrnCollapsibleState = 'open' | 'closed';\n\n@Component({\n\tselector: 'brn-collapsible',\n\thost: {\n\t\t'[attr.data-state]': 'expanded() ? \"open\" : \"closed\"',\n\t\t'[attr.disabled]': 'disabled() ? true : undefined',\n\t},\n\ttemplate: `\n\t\t<ng-content />\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BrnCollapsible {\n\tpublic readonly contentId = signal(`brn-collapsible-content-${++collapsibleContentIdSequence}`);\n\n\t/**\n\t * The expanded or collapsed state of the collapsible component.\n\t */\n\tpublic readonly expanded = model<boolean>(false);\n\n\t/**\n\t * The disabled state of the collapsible component.\n\t */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/**\n\t * Toggles the expanded state of the collapsible component.\n\t */\n\tpublic toggle(): void {\n\t\tthis.expanded.update((expanded) => !expanded);\n\t}\n}\n","import { isPlatformServer } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\ttype OnInit,\n\tPLATFORM_ID,\n\teffect,\n\tinject,\n\tinput,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { BrnCollapsible } from './brn-collapsible';\n\n@Component({\n\tselector: 'brn-collapsible-content',\n\thost: {\n\t\t'[hidden]': '!_collapsible?.expanded()',\n\t\t'[attr.data-state]': '_collapsible?.expanded() ? \"open\" : \"closed\"',\n\t\t'[id]': '_collapsible?.contentId()',\n\t\t'[style.--brn-collapsible-content-width.px]': '_width()',\n\t\t'[style.--brn-collapsible-content-height.px]': '_height()',\n\t},\n\ttemplate: `\n\t\t<ng-content />\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BrnCollapsibleContent implements OnInit {\n\tprotected readonly _collapsible = inject(BrnCollapsible, { optional: true });\n\tprivate readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprivate readonly _platformId = inject(PLATFORM_ID);\n\t/**\n\t * The id of the collapsible content element.\n\t */\n\tpublic readonly id = input<string | null | undefined>();\n\tprotected readonly _width = signal<number | null>(null);\n\tprotected readonly _height = signal<number | null>(null);\n\n\tconstructor() {\n\t\tif (!this._collapsible) {\n\t\t\tthrow Error('Collapsible trigger directive can only be used inside a brn-collapsible element.');\n\t\t}\n\n\t\teffect(() => {\n\t\t\tconst id = this.id();\n\t\t\tconst collapsible = this._collapsible;\n\t\t\tif (!id || !collapsible) return;\n\t\t\tuntracked(() => collapsible.contentId.set(id));\n\t\t});\n\t}\n\n\tngOnInit(): void {\n\t\tif (isPlatformServer(this._platformId)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// ensure the element is not hidden when measuring its size\n\t\tthis._elementRef.nativeElement.hidden = false;\n\n\t\tconst { width, height } = this._elementRef.nativeElement.getBoundingClientRect();\n\t\tthis._width.set(width);\n\t\tthis._height.set(height);\n\n\t\t// we force the element to be hidden again if collapsed after measuring its size\n\t\t// this is handled by the host binding, but it can cause a flicker if we don't do this here manually\n\t\tthis._elementRef.nativeElement.hidden = this._collapsible?.expanded() ?? false;\n\t}\n}\n","import { Directive, inject } from '@angular/core';\nimport { BrnCollapsible } from './brn-collapsible';\n\n@Directive({\n\tselector: 'button[brnCollapsibleTrigger]',\n\thost: {\n\t\t'[attr.data-state]': '_collapsible?.expanded() ? \"open\" : \"closed\"',\n\t\t'[attr.disabled]': '_collapsible?.disabled() ? true : undefined',\n\t\t'[attr.aria-expanded]': '_collapsible?.expanded()',\n\t\t'[attr.aria-controls]': '_collapsible?.contentId()',\n\t\t'(click)': 'toggle()',\n\t},\n})\nexport class BrnCollapsibleTrigger {\n\tprotected readonly _collapsible = inject(BrnCollapsible, { optional: true });\n\n\tconstructor() {\n\t\tif (!this._collapsible) {\n\t\t\tthrow Error('Collapsible trigger directive can only be used inside a brn-collapsible element.');\n\t\t}\n\t}\n\n\ttoggle(): void {\n\t\tthis._collapsible?.toggle();\n\t}\n}\n","import { BrnCollapsible } from './lib/brn-collapsible';\nimport { BrnCollapsibleContent } from './lib/brn-collapsible-content';\nimport { BrnCollapsibleTrigger } from './lib/brn-collapsible-trigger';\n\nexport * from './lib/brn-collapsible';\nexport * from './lib/brn-collapsible-content';\nexport * from './lib/brn-collapsible-trigger';\n\nexport const BrnCollapsibleImports = [BrnCollapsible, BrnCollapsibleTrigger, BrnCollapsibleContent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAGA,IAAI,4BAA4B,GAAG,CAAC;MAevB,cAAc,CAAA;IACV,SAAS,GAAG,MAAM,CAAC,CAAA,wBAAA,EAA2B,EAAE,4BAA4B,CAAA,CAAE,CAAC;AAE/F;;AAEG;AACa,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AAEhD;;AAEG;IACa,QAAQ,GAAG,KAAK,CAAwB,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAE/F;;AAEG;IACI,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,QAAQ,CAAC;;0HAjBlC,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,oCAAA,EAAA,eAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EALhB;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGW,cAAc,EAAA,UAAA,EAAA,CAAA;kBAX1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,IAAI,EAAE;AACL,wBAAA,mBAAmB,EAAE,gCAAgC;AACrD,wBAAA,iBAAiB,EAAE,+BAA+B;AAClD,qBAAA;AACD,oBAAA,QAAQ,EAAE;;AAET,CAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;;MCYY,qBAAqB,CAAA;IACd,YAAY,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC3D,IAAA,WAAW,GAAG,MAAM,CAA0B,UAAU,CAAC;AACzD,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAClD;;AAEG;IACa,EAAE,GAAG,KAAK,EAA6B;AACpC,IAAA,MAAM,GAAG,MAAM,CAAgB,IAAI,CAAC;AACpC,IAAA,OAAO,GAAG,MAAM,CAAgB,IAAI,CAAC;AAExD,IAAA,WAAA,GAAA;AACC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACvB,YAAA,MAAM,KAAK,CAAC,kFAAkF,CAAC;;QAGhG,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE;AACpB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY;AACrC,YAAA,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW;gBAAE;AACzB,YAAA,SAAS,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/C,SAAC,CAAC;;IAGH,QAAQ,GAAA;AACP,QAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACvC;;;QAID,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,KAAK;AAE7C,QAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAChF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;;;AAIxB,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,KAAK;;0HAtCnE,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,kDAAA,EAAA,IAAA,EAAA,2BAAA,EAAA,0CAAA,EAAA,UAAA,EAAA,2CAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EALvB;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGW,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,IAAI,EAAE;AACL,wBAAA,UAAU,EAAE,2BAA2B;AACvC,wBAAA,mBAAmB,EAAE,8CAA8C;AACnE,wBAAA,MAAM,EAAE,2BAA2B;AACnC,wBAAA,4CAA4C,EAAE,UAAU;AACxD,wBAAA,6CAA6C,EAAE,WAAW;AAC1D,qBAAA;AACD,oBAAA,QAAQ,EAAE;;AAET,CAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;;MCfY,qBAAqB,CAAA;IACd,YAAY,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE5E,IAAA,WAAA,GAAA;AACC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACvB,YAAA,MAAM,KAAK,CAAC,kFAAkF,CAAC;;;IAIjG,MAAM,GAAA;AACL,QAAA,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE;;0HAVhB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,kDAAA,EAAA,eAAA,EAAA,6CAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,IAAI,EAAE;AACL,wBAAA,mBAAmB,EAAE,8CAA8C;AACnE,wBAAA,iBAAiB,EAAE,6CAA6C;AAChE,wBAAA,sBAAsB,EAAE,0BAA0B;AAClD,wBAAA,sBAAsB,EAAE,2BAA2B;AACnD,wBAAA,SAAS,EAAE,UAAU;AACrB,qBAAA;AACD,iBAAA;;;ACJM,MAAM,qBAAqB,GAAG,CAAC,cAAc,EAAE,qBAAqB,EAAE,qBAAqB;;ACRlG;;AAEG;;;;"}
1
+ {"version":3,"file":"spartan-ng-brain-collapsible.mjs","sources":["../../../../libs/brain/collapsible/src/lib/brn-collapsible-token.ts","../../../../libs/brain/collapsible/src/lib/brn-collapsible.ts","../../../../libs/brain/collapsible/src/lib/brn-collapsible-content.ts","../../../../libs/brain/collapsible/src/lib/brn-collapsible-trigger.ts","../../../../libs/brain/collapsible/src/index.ts","../../../../libs/brain/collapsible/src/spartan-ng-brain-collapsible.ts"],"sourcesContent":["import type { ValueProvider } from '@angular/core';\nimport { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { MeasurementDisplay } from '@spartan-ng/brain/core';\nimport type { BrnCollapsible } from './brn-collapsible';\n\nexport const BrnCollapsibleToken = new InjectionToken<BrnCollapsible>('BrnCollapsibleToken');\n\nexport function injectBrnCollapsible() {\n\treturn inject(BrnCollapsibleToken, { optional: true });\n}\n\nexport function provideBrnCollapsible(collapsible: Type<BrnCollapsible>): ExistingProvider {\n\treturn { provide: BrnCollapsibleToken, useExisting: collapsible };\n}\n\nexport interface BrCollapsibleConfig {\n\t/**\n\t * The display style to use when measuring element dimensions.\n\t * @default 'block'\n\t */\n\tmeasurementDisplay: MeasurementDisplay;\n}\n\nconst defaultConfig: BrCollapsibleConfig = {\n\tmeasurementDisplay: 'block',\n};\n\nconst BrnCollapsibleConfigToken = new InjectionToken<BrCollapsibleConfig>('BrnCollapsibleConfig');\n\nexport function provideBrnCollapsibleConfig(config: Partial<BrCollapsibleConfig>): ValueProvider {\n\treturn { provide: BrnCollapsibleConfigToken, useValue: { ...defaultConfig, ...config } };\n}\n\nexport function injectBrnCollapsibleConfig(): BrCollapsibleConfig {\n\treturn inject(BrnCollapsibleConfigToken, { optional: true }) ?? defaultConfig;\n}\n","import type { BooleanInput } from '@angular/cdk/coercion';\nimport { Directive, booleanAttribute, computed, input, model, signal } from '@angular/core';\nimport { provideBrnCollapsible } from './brn-collapsible-token';\n\nlet collapsibleContentIdSequence = 0;\n\nexport type BrnCollapsibleState = 'open' | 'closed';\n\n@Directive({\n\tselector: '[brnCollapsible],brn-collapsible',\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.disabled]': 'disabled() ? true : undefined',\n\t},\n\tproviders: [provideBrnCollapsible(BrnCollapsible)],\n})\nexport class BrnCollapsible {\n\tpublic readonly contentId = signal(`brn-collapsible-content-${++collapsibleContentIdSequence}`);\n\n\t/**\n\t * The expanded or collapsed state of the collapsible component.\n\t */\n\tpublic readonly expanded = model<boolean>(false);\n\n\t/**\n\t * The current state of the collapsible component as 'open' or 'closed'.\n\t */\n\tpublic readonly state = computed<BrnCollapsibleState>(() => (this.expanded() ? 'open' : 'closed'));\n\n\t/**\n\t * The disabled state of the collapsible component.\n\t */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/**\n\t * Toggles the expanded state of the collapsible component.\n\t */\n\tpublic toggle(): void {\n\t\tif (this.disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.expanded.update((expanded) => !expanded);\n\t}\n}\n","import { Directive, ElementRef, afterNextRender, effect, inject, input, signal, untracked } from '@angular/core';\nimport { measureDimensions } from '@spartan-ng/brain/core';\nimport { injectBrnCollapsible, injectBrnCollapsibleConfig } from './brn-collapsible-token';\n\n@Directive({\n\tselector: '[brnCollapsibleContent],brn-collapsible-content',\n\thost: {\n\t\t'[attr.inert]': \"_collapsible?.state() === 'closed' ? true : undefined\",\n\t\t'[attr.data-state]': '_collapsible?.state()',\n\t\t'[id]': '_collapsible?.contentId()',\n\t\t'[style.--brn-collapsible-content-width.px]': '_width()',\n\t\t'[style.--brn-collapsible-content-height.px]': '_height()',\n\t},\n})\nexport class BrnCollapsibleContent {\n\tprivate readonly _config = injectBrnCollapsibleConfig();\n\tprivate readonly _elementRef = inject<ElementRef>(ElementRef);\n\tprotected readonly _collapsible = injectBrnCollapsible();\n\n\tprotected readonly _width = signal<number | null>(null);\n\tprotected readonly _height = signal<number | null>(null);\n\n\t/**\n\t * The id of the collapsible content element.\n\t */\n\tpublic readonly id = input<string | null | undefined>();\n\n\tconstructor() {\n\t\tif (!this._collapsible) {\n\t\t\tthrow Error('Collapsible trigger directive can only be used inside a brn-collapsible element.');\n\t\t}\n\n\t\teffect(() => {\n\t\t\tconst id = this.id();\n\t\t\tconst collapsible = this._collapsible;\n\t\t\tif (!id || !collapsible) return;\n\t\t\tuntracked(() => collapsible.contentId.set(id));\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\tconst { width, height } = measureDimensions(this._elementRef.nativeElement, this._config.measurementDisplay);\n\t\t\tthis._width.set(width);\n\t\t\tthis._height.set(height);\n\t\t});\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { injectBrnCollapsible } from './brn-collapsible-token';\n\n@Directive({\n\tselector: 'button[brnCollapsibleTrigger]',\n\thost: {\n\t\t'[attr.data-state]': '_collapsible?.state()',\n\t\t'[attr.disabled]': '_collapsible?.disabled() ? true : undefined',\n\t\t'[attr.aria-expanded]': '_collapsible?.expanded()',\n\t\t'[attr.aria-controls]': '_collapsible?.contentId()',\n\t\t'[type]': 'type()',\n\t\t'(click)': 'toggle()',\n\t},\n})\nexport class BrnCollapsibleTrigger {\n\tprotected readonly _collapsible = injectBrnCollapsible();\n\n\tpublic readonly type = input<'button' | 'submit' | 'reset'>('button');\n\n\tconstructor() {\n\t\tif (!this._collapsible) {\n\t\t\tthrow Error('Collapsible trigger directive can only be used inside a brn-collapsible element.');\n\t\t}\n\t}\n\n\ttoggle(): void {\n\t\tthis._collapsible?.toggle();\n\t}\n}\n","import { BrnCollapsible } from './lib/brn-collapsible';\nimport { BrnCollapsibleContent } from './lib/brn-collapsible-content';\nimport { BrnCollapsibleTrigger } from './lib/brn-collapsible-trigger';\n\nexport * from './lib/brn-collapsible';\nexport * from './lib/brn-collapsible-content';\nexport * from './lib/brn-collapsible-token';\nexport * from './lib/brn-collapsible-trigger';\n\nexport const BrnCollapsibleImports = [BrnCollapsible, BrnCollapsibleTrigger, BrnCollapsibleContent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -113,6 +113,20 @@ const [injectExposedSideProvider, provideExposedSideProvider, provideExposedSide
113
113
 
114
114
  const [injectExposesStateProvider, provideExposesStateProvider, provideExposesStateProviderExisting, EXPOSES_STATE_TOKEN,] = createInjectionToken('@spartan-ng EXPOSES_STATE_TOKEN');
115
115
 
116
+ const measureDimensions = (elementToMeasure, measurementDisplay) => {
117
+ const previousHeight = elementToMeasure.style.height;
118
+ const previousDisplay = elementToMeasure.style.display;
119
+ const previousHidden = elementToMeasure.hidden;
120
+ elementToMeasure.hidden = false;
121
+ elementToMeasure.style.height = 'auto';
122
+ elementToMeasure.style.display = previousDisplay === 'hidden' ? measurementDisplay : previousDisplay;
123
+ const { width, height } = elementToMeasure.getBoundingClientRect();
124
+ elementToMeasure.hidden = previousHidden;
125
+ elementToMeasure.style.display = previousDisplay;
126
+ elementToMeasure.style.height = previousHeight;
127
+ return { width, height };
128
+ };
129
+
116
130
  const [injectTableClassesSettable, provideTableClassesSettable, provideTableClassesSettableExisting, SET_TABLE_CLASSES_TOKEN,] = createInjectionToken('@spartan-ng SET_TABLE_CLASSES_TOKEN');
117
131
 
118
132
  /**
@@ -142,5 +156,5 @@ async function waitForElementAnimations(el) {
142
156
  * Generated bundle index. Do not edit.
143
157
  */
144
158
 
145
- export { EXPOSES_SIDE_TOKEN, EXPOSES_STATE_TOKEN, SET_CLASS_TO_CUSTOM_ELEMENT_TOKEN, SET_TABLE_CLASSES_TOKEN, brnDevMode, brnZoneFree, brnZoneFull, brnZoneOptimized, computedPrevious, createHoverObservable, debouncedSignal, injectCustomClassSettable, injectExposedSideProvider, injectExposesStateProvider, injectTableClassesSettable, isElement, provideCustomClassSettable, provideCustomClassSettableExisting, provideExposedSideProvider, provideExposedSideProviderExisting, provideExposesStateProvider, provideExposesStateProviderExisting, provideTableClassesSettable, provideTableClassesSettableExisting, waitForElementAnimations };
159
+ export { EXPOSES_SIDE_TOKEN, EXPOSES_STATE_TOKEN, SET_CLASS_TO_CUSTOM_ELEMENT_TOKEN, SET_TABLE_CLASSES_TOKEN, brnDevMode, brnZoneFree, brnZoneFull, brnZoneOptimized, computedPrevious, createHoverObservable, debouncedSignal, injectCustomClassSettable, injectExposedSideProvider, injectExposesStateProvider, injectTableClassesSettable, isElement, measureDimensions, provideCustomClassSettable, provideCustomClassSettableExisting, provideExposedSideProvider, provideExposedSideProviderExisting, provideExposesStateProvider, provideExposesStateProviderExisting, provideTableClassesSettable, provideTableClassesSettableExisting, waitForElementAnimations };
146
160
  //# sourceMappingURL=spartan-ng-brain-core.mjs.map