@spartan-ng/brain 0.0.1-alpha.534 → 0.0.1-alpha.536
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/accordion/lib/brn-accordion-content.d.ts +16 -9
- package/accordion/lib/brn-accordion.d.ts +14 -2
- package/checkbox/lib/brn-checkbox.d.ts +10 -12
- package/fesm2022/spartan-ng-brain-accordion.mjs +57 -39
- package/fesm2022/spartan-ng-brain-accordion.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-checkbox.mjs +23 -25
- package/fesm2022/spartan-ng-brain-checkbox.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-menu.mjs +27 -24
- package/fesm2022/spartan-ng-brain-menu.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-resizable.mjs +430 -0
- package/fesm2022/spartan-ng-brain-resizable.mjs.map +1 -0
- package/menu/lib/brn-context-menu-trigger.d.ts +3 -2
- package/menu/lib/brn-menu-align.d.ts +3 -2
- package/menu/lib/brn-menu-trigger.d.ts +3 -2
- package/package.json +9 -5
- package/resizable/README.md +3 -0
- package/resizable/index.d.ts +3 -0
- package/resizable/lib/brn-resizable-group.d.ts +37 -0
- package/resizable/lib/brn-resizable-handle.d.ts +26 -0
- package/resizable/lib/brn-resizable-panel.d.ts +39 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-checkbox.mjs","sources":["../../../../libs/brain/checkbox/src/lib/brn-checkbox.ts","../../../../libs/brain/checkbox/src/index.ts","../../../../libs/brain/checkbox/src/spartan-ng-brain-checkbox.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n\ttype AfterContentInit,\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tcomputed,\n\tDestroyRef,\n\teffect,\n\tElementRef,\n\tforwardRef,\n\tinject,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\ttype OnDestroy,\n\toutput,\n\tPLATFORM_ID,\n\tRenderer2,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\n\nexport const BRN_CHECKBOX_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnCheckbox),\n\tmulti: true,\n};\n\nlet uniqueIdCounter = 0;\n\nconst CONTAINER_POST_FIX = '-checkbox';\n\n@Component({\n\tselector: 'brn-checkbox',\n\ttemplate: `\n\t\t<button\n\t\t\t#checkBox\n\t\t\trole=\"checkbox\"\n\t\t\ttype=\"button\"\n\t\t\t[id]=\"getCheckboxButtonId(_state().id) ?? ''\"\n\t\t\t[name]=\"getCheckboxButtonId(_state().name) ?? ''\"\n\t\t\t[class]=\"class()\"\n\t\t\t[attr.aria-checked]=\"_ariaChecked()\"\n\t\t\t[attr.aria-label]=\"ariaLabel() || null\"\n\t\t\t[attr.aria-labelledby]=\"mutableAriaLabelledby() || null\"\n\t\t\t[attr.aria-describedby]=\"ariaDescribedby() || null\"\n\t\t\t[attr.data-state]=\"_dataState()\"\n\t\t\t[attr.data-focus-visible]=\"_focusVisible()\"\n\t\t\t[attr.data-focus]=\"_focused()\"\n\t\t\t[attr.data-disabled]=\"_state().disabled()\"\n\t\t\t[disabled]=\"_state().disabled()\"\n\t\t\t[tabIndex]=\"_state().disabled() ? -1 : 0\"\n\t\t\t(click)=\"$event.preventDefault(); toggle()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</button>\n\t`,\n\thost: {\n\t\t'[style]': '{display: \"contents\"}',\n\t\t'[attr.id]': '_state().id',\n\t\t'[attr.name]': '_state().name',\n\t\t'[attr.aria-labelledby]': 'null',\n\t\t'[attr.aria-label]': 'null',\n\t\t'[attr.aria-describedby]': 'null',\n\t\t'[attr.data-state]': '_dataState()',\n\t\t'[attr.data-focus-visible]': '_focusVisible()',\n\t\t'[attr.data-focus]': '_focused()',\n\t\t'[attr.data-disabled]': '_state().disabled()',\n\t},\n\tproviders: [BRN_CHECKBOX_VALUE_ACCESSOR],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BrnCheckbox implements ControlValueAccessor, AfterContentInit, OnDestroy {\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\tprivate readonly _cdr = inject(ChangeDetectorRef);\n\tprivate readonly _document = inject(DOCUMENT);\n\tprivate readonly _isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n\tprotected readonly _focusVisible = signal(false);\n\tprotected readonly _focused = signal(false);\n\n\t/**\n\t * Current checked state of checkbox.\n\t * Can be boolean (true/false) or 'indeterminate'.\n\t * Can be bound with [(checked)] for two-way binding.\n\t */\n\tpublic readonly checked = model<BrnCheckboxValue>(false);\n\n\t/** Emits when checked state changes. */\n\tpublic readonly checkedChange = output<BrnCheckboxValue>();\n\n\t/**\n\t * Read-only signal of current checkbox state.\n\t * Use this when you only need to read state without changing it.\n\t */\n\tpublic readonly isChecked = this.checked.asReadonly();\n\n\t/**\n\t * Computed data-state attribute value based on checked state.\n\t * Returns 'checked', 'unchecked', or 'indeterminate'.\n\t */\n\tprotected readonly _dataState = computed(() => {\n\t\tconst checked = this.checked();\n\t\tif (checked === 'indeterminate') return 'indeterminate';\n\t\treturn checked ? 'checked' : 'unchecked';\n\t});\n\n\t/**\n\t * Computed aria-checked attribute value for accessibility.\n\t * Returns 'true', 'false', or 'mixed' (for indeterminate).\n\t */\n\tprotected readonly _ariaChecked = computed(() => {\n\t\tconst checked = this.checked();\n\t\tif (checked === 'indeterminate') return 'mixed';\n\t\treturn checked ? 'true' : 'false';\n\t});\n\n\t/**\n\t * Unique identifier for checkbox component.\n\t * When provided, inner button gets ID without '-checkbox' suffix.\n\t * Auto-generates ID if not provided.\n\t */\n\tpublic readonly id = input<string | null>(++uniqueIdCounter + '');\n\n\t/**\n\t * Form control name for checkbox.\n\t * When provided, inner button gets name without '-checkbox' suffix.\n\t */\n\tpublic readonly name = input<string | null>(null);\n\n\t/**\n\t * CSS classes applied to inner button element.\n\t */\n\tpublic readonly class = input<string | null>(null);\n\n\t/**\n\t * Accessibility label for screen readers.\n\t * Use when no visible label exists.\n\t */\n\tpublic readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n\n\t/**\n\t * ID of element that labels this checkbox for accessibility.\n\t * Auto-set when checkbox is inside label element.\n\t */\n\tpublic readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n\tpublic readonly mutableAriaLabelledby = linkedSignal(() => this.ariaLabelledby());\n\n\t/**\n\t * ID of element that describes this checkbox for accessibility.\n\t */\n\tpublic readonly ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\n\n\t/**\n\t * Whether checkbox is required in a form.\n\t */\n\tpublic readonly required = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/**\n\t * Whether checkbox is disabled.\n\t * Disabled checkboxes cannot be toggled and indicate disabled state through data-disabled attribute.\n\t */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/**\n\t * Computed state for checkbox container and accessibility.\n\t * Manages ID, name, and disabled state.\n\t */\n\tprotected readonly _state = computed(() => {\n\t\tconst name = this.name();\n\t\tconst id = this.id();\n\t\treturn {\n\t\t\tdisabled: signal(this.disabled()),\n\t\t\tname: name ? name + CONTAINER_POST_FIX : null,\n\t\t\tid: id ? id + CONTAINER_POST_FIX : null,\n\t\t};\n\t});\n\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\tprotected _onChange: ChangeFn<BrnCheckboxValue> = () => {};\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\tprivate _onTouched: TouchFn = () => {};\n\n\t/**\n\t * Reference to the checkbox button element in the template.\n\t */\n\tpublic readonly checkbox = viewChild.required<ElementRef<HTMLButtonElement>>('checkBox');\n\n\t/**\n\t * Event emitted when checkbox is blurred (loses focus).\n\t * Used for form validation.\n\t */\n\tpublic readonly touched = output<void>();\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst state = this._state();\n\t\t\tconst isDisabled = state.disabled();\n\n\t\t\tif (!this._elementRef.nativeElement || !this._isBrowser) return;\n\n\t\t\tconst newLabelId = state.id + '-label';\n\t\t\tconst checkboxButtonId = this.getCheckboxButtonId(state.id);\n\t\t\tconst labelElement =\n\t\t\t\tthis._elementRef.nativeElement.closest('label') ??\n\t\t\t\tthis._document.querySelector(`label[for=\"${checkboxButtonId}\"]`);\n\n\t\t\tif (!labelElement) return;\n\t\t\tconst existingLabelId = labelElement.id;\n\n\t\t\tthis._renderer.setAttribute(labelElement, 'data-disabled', isDisabled ? 'true' : 'false');\n\t\t\tthis.mutableAriaLabelledby.set(existingLabelId || newLabelId);\n\n\t\t\tif (!existingLabelId || existingLabelId.length === 0) {\n\t\t\t\tthis._renderer.setAttribute(labelElement, 'id', newLabelId);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Toggles checkbox between checked/unchecked states.\n\t * If checkbox is indeterminate, sets to checked.\n\t * Does nothing if checkbox is disabled.\n\t */\n\ttoggle() {\n\t\tif (this._state().disabled()) return;\n\n\t\tthis._onTouched();\n\t\tthis.touched.emit();\n\n\t\tconst previousChecked = this.checked();\n\t\tthis.checked.set(previousChecked === 'indeterminate' ? true : !previousChecked);\n\t\tthis._onChange(this.checked());\n\t\tthis.checkedChange.emit(this.checked());\n\t}\n\n\tngAfterContentInit() {\n\t\tthis._focusMonitor\n\t\t\t.monitor(this._elementRef, true)\n\t\t\t.pipe(takeUntilDestroyed(this._destroyRef))\n\t\t\t.subscribe((focusOrigin) => {\n\t\t\t\tif (focusOrigin) this._focused.set(true);\n\t\t\t\tif (focusOrigin === 'keyboard' || focusOrigin === 'program') {\n\t\t\t\t\tthis._focusVisible.set(true);\n\t\t\t\t\tthis._cdr.markForCheck();\n\t\t\t\t}\n\t\t\t\tif (!focusOrigin) {\n\t\t\t\t\t// When a focused element becomes disabled, the browser *immediately* fires a blur event.\n\t\t\t\t\t// Angular does not expect events to be raised during change detection, so any state\n\t\t\t\t\t// change (such as a form control's ng-touched) will cause a changed-after-checked error.\n\t\t\t\t\t// See https://github.com/angular/angular/issues/17793. To work around this, we defer\n\t\t\t\t\t// telling the form control it has been touched until the next tick.\n\t\t\t\t\tPromise.resolve().then(() => {\n\t\t\t\t\t\tthis._focusVisible.set(false);\n\t\t\t\t\t\tthis._focused.set(false);\n\t\t\t\t\t\tthis._onTouched();\n\t\t\t\t\t\tthis.touched.emit();\n\t\t\t\t\t\tthis._cdr.markForCheck();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tngOnDestroy() {\n\t\tthis._focusMonitor.stopMonitoring(this._elementRef);\n\t}\n\n\t/**\n\t * Gets proper ID for inner button element.\n\t * Removes '-checkbox' suffix if present in container ID.\n\t *\n\t * @param idPassedToContainer - ID applied to container element\n\t * @returns ID to use for inner button or null\n\t */\n\tprotected getCheckboxButtonId(idPassedToContainer: string | null | undefined): string | null {\n\t\treturn idPassedToContainer ? idPassedToContainer.replace(CONTAINER_POST_FIX, '') : null;\n\t}\n\n\t/**\n\t * Updates internal state when control value changes from outside.\n\t * Handles boolean and 'indeterminate' values.\n\t * Part of ControlValueAccessor interface.\n\t *\n\t * @param value - New checkbox state (true/false/'indeterminate')\n\t */\n\twriteValue(value: BrnCheckboxValue): void {\n\t\tif (value === 'indeterminate') {\n\t\t\tthis.checked.set('indeterminate');\n\t\t} else {\n\t\t\tthis.checked.set(value);\n\t\t}\n\t}\n\n\t/**\n\t * Registers callback for value changes.\n\t * Part of ControlValueAccessor interface.\n\t *\n\t * @param fn - Function to call when value changes\n\t */\n\tregisterOnChange(fn: ChangeFn<BrnCheckboxValue>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\t/**\n\t * Registers callback for touched events.\n\t * Part of ControlValueAccessor interface.\n\t *\n\t * @param fn - Function to call when control is touched\n\t */\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\t/**\n\t * Updates disabled state from form control.\n\t * Part of ControlValueAccessor interface.\n\t *\n\t * @param isDisabled - Whether checkbox should be disabled\n\t */\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis._state().disabled.set(isDisabled);\n\t\tthis._cdr.markForCheck();\n\t}\n}\n\ntype BrnCheckboxValue = boolean | 'indeterminate';\n","import { BrnCheckbox } from './lib/brn-checkbox';\n\nexport * from './lib/brn-checkbox';\n\nexport const BrnCheckboxImports = [BrnCheckbox] 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-checkbox.mjs","sources":["../../../../libs/brain/checkbox/src/lib/brn-checkbox.ts","../../../../libs/brain/checkbox/src/index.ts","../../../../libs/brain/checkbox/src/spartan-ng-brain-checkbox.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n\ttype AfterContentInit,\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tcomputed,\n\tDestroyRef,\n\teffect,\n\tElementRef,\n\tforwardRef,\n\tinject,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\ttype OnDestroy,\n\toutput,\n\tPLATFORM_ID,\n\tRenderer2,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\n\nexport const BRN_CHECKBOX_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnCheckbox),\n\tmulti: true,\n};\n\nlet uniqueIdCounter = 0;\n\nconst CONTAINER_POST_FIX = '-checkbox';\n\n@Component({\n\tselector: 'brn-checkbox',\n\ttemplate: `\n\t\t<button\n\t\t\t#checkBox\n\t\t\trole=\"checkbox\"\n\t\t\ttype=\"button\"\n\t\t\t[id]=\"_getCheckboxButtonId(_state().id) ?? ''\"\n\t\t\t[name]=\"_getCheckboxButtonId(_state().name) ?? ''\"\n\t\t\t[class]=\"class()\"\n\t\t\t[attr.aria-checked]=\"_ariaChecked()\"\n\t\t\t[attr.aria-label]=\"ariaLabel() || null\"\n\t\t\t[attr.aria-labelledby]=\"mutableAriaLabelledby() || null\"\n\t\t\t[attr.aria-describedby]=\"ariaDescribedby() || null\"\n\t\t\t[attr.data-state]=\"_dataState()\"\n\t\t\t[attr.data-focus-visible]=\"_focusVisible()\"\n\t\t\t[attr.data-focus]=\"_focused()\"\n\t\t\t[attr.data-disabled]=\"_state().disabled()\"\n\t\t\t[disabled]=\"_state().disabled()\"\n\t\t\t[tabIndex]=\"_state().disabled() ? -1 : 0\"\n\t\t\t(click)=\"$event.preventDefault(); toggle()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</button>\n\t`,\n\thost: {\n\t\t'[style]': '{display: \"contents\"}',\n\t\t'[attr.id]': '_state().id',\n\t\t'[attr.name]': '_state().name',\n\t\t'[attr.aria-labelledby]': 'null',\n\t\t'[attr.aria-label]': 'null',\n\t\t'[attr.aria-describedby]': 'null',\n\t\t'[attr.data-state]': '_dataState()',\n\t\t'[attr.data-focus-visible]': '_focusVisible()',\n\t\t'[attr.data-focus]': '_focused()',\n\t\t'[attr.data-disabled]': '_state().disabled()',\n\t},\n\tproviders: [BRN_CHECKBOX_VALUE_ACCESSOR],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BrnCheckbox implements ControlValueAccessor, AfterContentInit, OnDestroy {\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\tprivate readonly _cdr = inject(ChangeDetectorRef);\n\tprivate readonly _document = inject(DOCUMENT);\n\tprivate readonly _isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n\tprotected readonly _focusVisible = signal(false);\n\tprotected readonly _focused = signal(false);\n\n\t/**\n\t * The checked state of the checkbox.\n\t * Can be bound with [(checked)] for two-way binding.\n\t */\n\tpublic readonly checked = model<boolean>(false);\n\n\t/** Emits when checked state changes. */\n\tpublic readonly checkedChange = output<boolean>();\n\n\t/**\n\t * Read-only signal of current checkbox state.\n\t * Use this when you only need to read state without changing it.\n\t */\n\tpublic readonly isChecked = this.checked.asReadonly();\n\n\t/*\n\t * The indeterminate state of the checkbox.\n\t * For example, a \"select all/deselect all\" checkbox may be in the indeterminate state when some but not all of its sub-controls are checked.\n\t */\n\tpublic readonly indeterminate = model<boolean>(false);\n\n\t/**\n\t * Computed data-state attribute value based on checked state.\n\t * Returns 'checked', 'unchecked', or 'indeterminate'.\n\t */\n\tprotected readonly _dataState = computed(() => {\n\t\tif (this.indeterminate()) return 'indeterminate';\n\t\treturn this.checked() ? 'checked' : 'unchecked';\n\t});\n\n\t/**\n\t * Computed aria-checked attribute value for accessibility.\n\t * Returns 'true', 'false', or 'mixed' (for indeterminate).\n\t */\n\tprotected readonly _ariaChecked = computed(() => {\n\t\tif (this.indeterminate()) return 'mixed';\n\t\treturn this.checked() ? 'true' : 'false';\n\t});\n\n\t/**\n\t * Unique identifier for checkbox component.\n\t * When provided, inner button gets ID without '-checkbox' suffix.\n\t * Auto-generates ID if not provided.\n\t */\n\tpublic readonly id = input<string | null>(++uniqueIdCounter + '');\n\n\t/**\n\t * Form control name for checkbox.\n\t * When provided, inner button gets name without '-checkbox' suffix.\n\t */\n\tpublic readonly name = input<string | null>(null);\n\n\t/**\n\t * CSS classes applied to inner button element.\n\t */\n\tpublic readonly class = input<string | null>(null);\n\n\t/**\n\t * Accessibility label for screen readers.\n\t * Use when no visible label exists.\n\t */\n\tpublic readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n\n\t/**\n\t * ID of element that labels this checkbox for accessibility.\n\t * Auto-set when checkbox is inside label element.\n\t */\n\tpublic readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n\tpublic readonly mutableAriaLabelledby = linkedSignal(() => this.ariaLabelledby());\n\n\t/**\n\t * ID of element that describes this checkbox for accessibility.\n\t */\n\tpublic readonly ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\n\n\t/**\n\t * Whether checkbox is required in a form.\n\t */\n\tpublic readonly required = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/**\n\t * Whether checkbox is disabled.\n\t * Disabled checkboxes cannot be toggled and indicate disabled state through data-disabled attribute.\n\t */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/**\n\t * Computed state for checkbox container and accessibility.\n\t * Manages ID, name, and disabled state.\n\t */\n\tprotected readonly _state = computed(() => {\n\t\tconst name = this.name();\n\t\tconst id = this.id();\n\t\treturn {\n\t\t\tdisabled: signal(this.disabled()),\n\t\t\tname: name ? name + CONTAINER_POST_FIX : null,\n\t\t\tid: id ? id + CONTAINER_POST_FIX : null,\n\t\t};\n\t});\n\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\tprotected _onChange: ChangeFn<boolean> = () => {};\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\tprivate _onTouched: TouchFn = () => {};\n\n\t/**\n\t * Reference to the checkbox button element in the template.\n\t */\n\tpublic readonly checkbox = viewChild.required<ElementRef<HTMLButtonElement>>('checkBox');\n\n\t/**\n\t * Event emitted when checkbox is blurred (loses focus).\n\t * Used for form validation.\n\t */\n\tpublic readonly touched = output<void>();\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst state = this._state();\n\t\t\tconst isDisabled = state.disabled();\n\n\t\t\tif (!this._elementRef.nativeElement || !this._isBrowser) return;\n\n\t\t\tconst newLabelId = state.id + '-label';\n\t\t\tconst checkboxButtonId = this._getCheckboxButtonId(state.id);\n\t\t\tconst labelElement =\n\t\t\t\tthis._elementRef.nativeElement.closest('label') ??\n\t\t\t\tthis._document.querySelector(`label[for=\"${checkboxButtonId}\"]`);\n\n\t\t\tif (!labelElement) return;\n\t\t\tconst existingLabelId = labelElement.id;\n\n\t\t\tthis._renderer.setAttribute(labelElement, 'data-disabled', isDisabled ? 'true' : 'false');\n\t\t\tthis.mutableAriaLabelledby.set(existingLabelId || newLabelId);\n\n\t\t\tif (!existingLabelId || existingLabelId.length === 0) {\n\t\t\t\tthis._renderer.setAttribute(labelElement, 'id', newLabelId);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Toggles checkbox between checked/unchecked states.\n\t * If checkbox is indeterminate, sets to checked.\n\t * Does nothing if checkbox is disabled.\n\t */\n\ttoggle() {\n\t\tif (this._state().disabled()) return;\n\n\t\tthis._onTouched();\n\t\tthis.touched.emit();\n\n\t\tconst newChecked = this.indeterminate() ? true : !this.checked();\n\t\tthis.indeterminate.set(false);\n\t\tthis.checkedChange.emit(newChecked);\n\t\tthis.checked.set(newChecked);\n\t\tthis._onChange(newChecked);\n\t}\n\n\tngAfterContentInit() {\n\t\tthis._focusMonitor\n\t\t\t.monitor(this._elementRef, true)\n\t\t\t.pipe(takeUntilDestroyed(this._destroyRef))\n\t\t\t.subscribe((focusOrigin) => {\n\t\t\t\tif (focusOrigin) this._focused.set(true);\n\t\t\t\tif (focusOrigin === 'keyboard' || focusOrigin === 'program') {\n\t\t\t\t\tthis._focusVisible.set(true);\n\t\t\t\t\tthis._cdr.markForCheck();\n\t\t\t\t}\n\t\t\t\tif (!focusOrigin) {\n\t\t\t\t\t// When a focused element becomes disabled, the browser *immediately* fires a blur event.\n\t\t\t\t\t// Angular does not expect events to be raised during change detection, so any state\n\t\t\t\t\t// change (such as a form control's ng-touched) will cause a changed-after-checked error.\n\t\t\t\t\t// See https://github.com/angular/angular/issues/17793. To work around this, we defer\n\t\t\t\t\t// telling the form control it has been touched until the next tick.\n\t\t\t\t\tPromise.resolve().then(() => {\n\t\t\t\t\t\tthis._focusVisible.set(false);\n\t\t\t\t\t\tthis._focused.set(false);\n\t\t\t\t\t\tthis._onTouched();\n\t\t\t\t\t\tthis.touched.emit();\n\t\t\t\t\t\tthis._cdr.markForCheck();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tngOnDestroy() {\n\t\tthis._focusMonitor.stopMonitoring(this._elementRef);\n\t}\n\n\t/**\n\t * Gets proper ID for inner button element.\n\t * Removes '-checkbox' suffix if present in container ID.\n\t *\n\t * @param idPassedToContainer - ID applied to container element\n\t * @returns ID to use for inner button or null\n\t */\n\tprotected _getCheckboxButtonId(idPassedToContainer: string | null | undefined): string | null {\n\t\treturn idPassedToContainer ? idPassedToContainer.replace(CONTAINER_POST_FIX, '') : null;\n\t}\n\n\t/**\n\t * Updates internal state when control value changes from outside.\n\t * Handles boolean and 'indeterminate' values.\n\t * Part of ControlValueAccessor interface.\n\t *\n\t * @param value - New checkbox state (true/false/'indeterminate')\n\t */\n\twriteValue(value: boolean): void {\n\t\tthis.checked.set(value);\n\t}\n\n\t/**\n\t * Registers callback for value changes.\n\t * Part of ControlValueAccessor interface.\n\t *\n\t * @param fn - Function to call when value changes\n\t */\n\tregisterOnChange(fn: ChangeFn<boolean>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\t/**\n\t * Registers callback for touched events.\n\t * Part of ControlValueAccessor interface.\n\t *\n\t * @param fn - Function to call when control is touched\n\t */\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\t/**\n\t * Updates disabled state from form control.\n\t * Part of ControlValueAccessor interface.\n\t *\n\t * @param isDisabled - Whether checkbox should be disabled\n\t */\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis._state().disabled.set(isDisabled);\n\t\tthis._cdr.markForCheck();\n\t}\n}\n","import { BrnCheckbox } from './lib/brn-checkbox';\n\nexport * from './lib/brn-checkbox';\n\nexport const BrnCheckboxImports = [BrnCheckbox] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AA6BO,MAAM,2BAA2B,GAAG;AAC1C,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,WAAW,CAAC;AAC1C,IAAA,KAAK,EAAE,IAAI;;AAGZ,IAAI,eAAe,GAAG,CAAC;AAEvB,MAAM,kBAAkB,GAAG,WAAW;MA0CzB,WAAW,CAAA;AACN,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,WAAW,GAAG,MAAM,CAA0B,UAAU,CAAC;AACzD,IAAA,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;AACpC,IAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChC,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC5B,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEjD,IAAA,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;AAC7B,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;AAE3C;;;AAGG;AACa,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,CAAC;;IAG/B,aAAa,GAAG,MAAM,EAAW;AAEjD;;;AAGG;AACa,IAAA,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAErD;;;AAGG;AACa,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,CAAC;AAErD;;;AAGG;AACgB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAC7C,IAAI,IAAI,CAAC,aAAa,EAAE;AAAE,YAAA,OAAO,eAAe;AAChD,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,GAAG,WAAW;AAChD,KAAC,CAAC;AAEF;;;AAGG;AACgB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QAC/C,IAAI,IAAI,CAAC,aAAa,EAAE;AAAE,YAAA,OAAO,OAAO;AACxC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,OAAO;AACzC,KAAC,CAAC;AAEF;;;;AAIG;IACa,EAAE,GAAG,KAAK,CAAgB,EAAE,eAAe,GAAG,EAAE,CAAC;AAEjE;;;AAGG;AACa,IAAA,IAAI,GAAG,KAAK,CAAgB,IAAI,CAAC;AAEjD;;AAEG;AACa,IAAA,KAAK,GAAG,KAAK,CAAgB,IAAI,CAAC;AAElD;;;AAGG;IACa,SAAS,GAAG,KAAK,CAAgB,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;AAE/E;;;AAGG;IACa,cAAc,GAAG,KAAK,CAAgB,IAAI,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IACzE,qBAAqB,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAEjF;;AAEG;IACa,eAAe,GAAG,KAAK,CAAgB,IAAI,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;AAE3F;;AAEG;IACa,QAAQ,GAAG,KAAK,CAAwB,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAE/F;;;AAGG;IACa,QAAQ,GAAG,KAAK,CAAwB,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAE/F;;;AAGG;AACgB,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE;QACpB,OAAO;AACN,YAAA,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,kBAAkB,GAAG,IAAI;YAC7C,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,kBAAkB,GAAG,IAAI;SACvC;AACF,KAAC,CAAC;;AAGQ,IAAA,SAAS,GAAsB,MAAK,GAAG;;AAEzC,IAAA,UAAU,GAAY,MAAK,GAAG;AAEtC;;AAEG;AACa,IAAA,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAgC,UAAU,CAAC;AAExF;;;AAGG;IACa,OAAO,GAAG,MAAM,EAAQ;AAExC,IAAA,WAAA,GAAA;QACC,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;AAC3B,YAAA,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE;YAEnC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE;AAEzD,YAAA,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE,GAAG,QAAQ;YACtC,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,MAAM,YAAY,GACjB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC/C,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA,WAAA,EAAc,gBAAgB,CAAA,EAAA,CAAI,CAAC;AAEjE,YAAA,IAAI,CAAC,YAAY;gBAAE;AACnB,YAAA,MAAM,eAAe,GAAG,YAAY,CAAC,EAAE;AAEvC,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,eAAe,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;YACzF,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,eAAe,IAAI,UAAU,CAAC;YAE7D,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC;;AAE7D,SAAC,CAAC;;AAGH;;;;AAIG;IACH,MAAM,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAAE;QAE9B,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AAEnB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;AAChE,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AAC5B,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;;IAG3B,kBAAkB,GAAA;AACjB,QAAA,IAAI,CAAC;AACH,aAAA,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI;AAC9B,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACzC,aAAA,SAAS,CAAC,CAAC,WAAW,KAAI;AAC1B,YAAA,IAAI,WAAW;AAAE,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACxC,IAAI,WAAW,KAAK,UAAU,IAAI,WAAW,KAAK,SAAS,EAAE;AAC5D,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;;YAEzB,IAAI,CAAC,WAAW,EAAE;;;;;;AAMjB,gBAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AAC3B,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;oBACxB,IAAI,CAAC,UAAU,EAAE;AACjB,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnB,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACzB,iBAAC,CAAC;;AAEJ,SAAC,CAAC;;IAGJ,WAAW,GAAA;QACV,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;;AAGpD;;;;;;AAMG;AACO,IAAA,oBAAoB,CAAC,mBAA8C,EAAA;AAC5E,QAAA,OAAO,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,GAAG,IAAI;;AAGxF;;;;;;AAMG;AACH,IAAA,UAAU,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGxB;;;;;AAKG;AACH,IAAA,gBAAgB,CAAC,EAAqB,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGpB;;;;;AAKG;AACH,IAAA,iBAAiB,CAAC,EAAW,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;AAGrB;;;;;AAKG;AACH,IAAA,gBAAgB,CAAC,UAAmB,EAAA;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;;0HA5Pb,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,kBAAA,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,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,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,SAAA,EAHZ,CAAC,2BAA2B,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnC9B;;;;;;;;;;;;;;;;;;;;;;AAsBT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAgBW,WAAW,EAAA,UAAA,EAAA,CAAA;kBAxCvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;AAsBT,CAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACL,wBAAA,SAAS,EAAE,uBAAuB;AAClC,wBAAA,WAAW,EAAE,aAAa;AAC1B,wBAAA,aAAa,EAAE,eAAe;AAC9B,wBAAA,wBAAwB,EAAE,MAAM;AAChC,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,yBAAyB,EAAE,MAAM;AACjC,wBAAA,mBAAmB,EAAE,cAAc;AACnC,wBAAA,2BAA2B,EAAE,iBAAiB;AAC9C,wBAAA,mBAAmB,EAAE,YAAY;AACjC,wBAAA,sBAAsB,EAAE,qBAAqB;AAC7C,qBAAA;oBACD,SAAS,EAAE,CAAC,2BAA2B,CAAC;oBACxC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA;;;AC1EM,MAAM,kBAAkB,GAAG,CAAC,WAAW;;ACJ9C;;AAEG;;;;"}
|
|
@@ -4,26 +4,30 @@ import * as i0 from '@angular/core';
|
|
|
4
4
|
import { inject, input, effect, Directive, signal, booleanAttribute } from '@angular/core';
|
|
5
5
|
import { takeUntilDestroyed, outputFromObservable } from '@angular/core/rxjs-interop';
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
originY
|
|
11
|
-
overlayX:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
7
|
+
const getBrnMenuPosition = (align, side) => {
|
|
8
|
+
const verticalAlign = align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center';
|
|
9
|
+
const createPositions = (originX, originY, overlayX, overlayY) => [
|
|
10
|
+
{ originX, originY, overlayX, overlayY },
|
|
11
|
+
{ originX: overlayX, originY: overlayY, overlayX: originX, overlayY: originY },
|
|
12
|
+
];
|
|
13
|
+
switch (side) {
|
|
14
|
+
case 'top':
|
|
15
|
+
return createPositions(align, 'top', align, 'bottom');
|
|
16
|
+
case 'bottom':
|
|
17
|
+
return createPositions(align, 'bottom', align, 'top');
|
|
18
|
+
case 'left':
|
|
19
|
+
return createPositions('start', verticalAlign, 'end', verticalAlign);
|
|
20
|
+
case 'right':
|
|
21
|
+
return createPositions('end', verticalAlign, 'start', verticalAlign);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
21
24
|
|
|
22
25
|
class BrnContextMenuTrigger {
|
|
23
26
|
_cdkTrigger = inject(CdkContextMenuTrigger, { host: true });
|
|
24
27
|
brnCtxMenuTriggerFor = input(null);
|
|
25
28
|
brnCtxMenuTriggerData = input(undefined);
|
|
26
|
-
align = input(
|
|
29
|
+
align = input('center');
|
|
30
|
+
side = input('bottom');
|
|
27
31
|
constructor() {
|
|
28
32
|
// once the trigger opens we wait until the next tick and then grab the last position
|
|
29
33
|
// used to position the menu. we store this in our trigger which the brnMenu directive has
|
|
@@ -36,13 +40,12 @@ class BrnContextMenuTrigger {
|
|
|
36
40
|
effect(() => (this._cdkTrigger.menuData = this.brnCtxMenuTriggerData()));
|
|
37
41
|
effect(() => {
|
|
38
42
|
const align = this.align();
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
this._cdkTrigger.menuPosition = getBrnMenuAlign(align);
|
|
43
|
+
const side = this.side();
|
|
44
|
+
this._cdkTrigger.menuPosition = getBrnMenuPosition(align, side);
|
|
42
45
|
});
|
|
43
46
|
}
|
|
44
47
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnContextMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
45
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.8", type: BrnContextMenuTrigger, isStandalone: true, selector: "[brnCtxMenuTriggerFor]", inputs: { brnCtxMenuTriggerFor: { classPropertyName: "brnCtxMenuTriggerFor", publicName: "brnCtxMenuTriggerFor", isSignal: true, isRequired: false, transformFunction: null }, brnCtxMenuTriggerData: { classPropertyName: "brnCtxMenuTriggerData", publicName: "brnCtxMenuTriggerData", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.CdkContextMenuTrigger }], ngImport: i0 });
|
|
48
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.8", type: BrnContextMenuTrigger, isStandalone: true, selector: "[brnCtxMenuTriggerFor]", inputs: { brnCtxMenuTriggerFor: { classPropertyName: "brnCtxMenuTriggerFor", publicName: "brnCtxMenuTriggerFor", isSignal: true, isRequired: false, transformFunction: null }, brnCtxMenuTriggerData: { classPropertyName: "brnCtxMenuTriggerData", publicName: "brnCtxMenuTriggerData", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.CdkContextMenuTrigger }], ngImport: i0 });
|
|
46
49
|
}
|
|
47
50
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnContextMenuTrigger, decorators: [{
|
|
48
51
|
type: Directive,
|
|
@@ -198,7 +201,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
198
201
|
|
|
199
202
|
class BrnMenuTrigger {
|
|
200
203
|
_cdkTrigger = inject(CdkMenuTrigger, { host: true });
|
|
201
|
-
align = input(
|
|
204
|
+
align = input('center');
|
|
205
|
+
side = input('bottom');
|
|
202
206
|
constructor() {
|
|
203
207
|
// once the trigger opens we wait until the next tick and then grab the last position
|
|
204
208
|
// used to position the menu. we store this in our trigger which the brnMenu directive has
|
|
@@ -209,13 +213,12 @@ class BrnMenuTrigger {
|
|
|
209
213
|
this._cdkTrigger.overlayRef._positionStrategy._lastPosition)));
|
|
210
214
|
effect(() => {
|
|
211
215
|
const align = this.align();
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
this._cdkTrigger.menuPosition = getBrnMenuAlign(align);
|
|
216
|
+
const side = this.side();
|
|
217
|
+
this._cdkTrigger.menuPosition = getBrnMenuPosition(align, side);
|
|
215
218
|
});
|
|
216
219
|
}
|
|
217
220
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
218
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.8", type: BrnMenuTrigger, isStandalone: true, selector: "[brnMenuTriggerFor]", inputs: { align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.CdkMenuTrigger, inputs: ["cdkMenuTriggerFor", "brnMenuTriggerFor", "cdkMenuTriggerData", "brnMenuTriggerData"], outputs: ["cdkMenuOpened", "brnMenuOpened", "cdkMenuClosed", "brnMenuClosed"] }], ngImport: i0 });
|
|
221
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.8", type: BrnMenuTrigger, isStandalone: true, selector: "[brnMenuTriggerFor]", inputs: { align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.CdkMenuTrigger, inputs: ["cdkMenuTriggerFor", "brnMenuTriggerFor", "cdkMenuTriggerData", "brnMenuTriggerData"], outputs: ["cdkMenuOpened", "brnMenuOpened", "cdkMenuClosed", "brnMenuClosed"] }], ngImport: i0 });
|
|
219
222
|
}
|
|
220
223
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnMenuTrigger, decorators: [{
|
|
221
224
|
type: Directive,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-menu.mjs","sources":["../../../../libs/brain/menu/src/lib/brn-menu-align.ts","../../../../libs/brain/menu/src/lib/brn-context-menu-trigger.ts","../../../../libs/brain/menu/src/lib/brn-menu.ts","../../../../libs/brain/menu/src/lib/brn-menu-bar.ts","../../../../libs/brain/menu/src/lib/brn-menu-group.ts","../../../../libs/brain/menu/src/lib/brn-menu-item.ts","../../../../libs/brain/menu/src/lib/brn-menu-item-checkbox.ts","../../../../libs/brain/menu/src/lib/brn-menu-item-radio.ts","../../../../libs/brain/menu/src/lib/brn-menu-trigger.ts","../../../../libs/brain/menu/src/index.ts","../../../../libs/brain/menu/src/spartan-ng-brain-menu.ts"],"sourcesContent":["import type { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport type BrnMenuAlign = 'start' | 'center' | 'end' | undefined;\nexport const getBrnMenuAlign = (align: Exclude<BrnMenuAlign, undefined>): ConnectedPosition[] => [\n\t{\n\t\toriginX: align,\n\t\toriginY: 'bottom',\n\t\toverlayX: align,\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: align,\n\t\toriginY: 'top',\n\t\toverlayX: align,\n\t\toverlayY: 'bottom',\n\t},\n];\n","import { CdkContextMenuTrigger } from '@angular/cdk/menu';\nimport { Directive, effect, inject, input, type TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type BrnMenuAlign, getBrnMenuAlign } from './brn-menu-align';\n\n@Directive({\n\tselector: '[brnCtxMenuTriggerFor]',\n\thostDirectives: [CdkContextMenuTrigger],\n})\nexport class BrnContextMenuTrigger {\n\tprivate readonly _cdkTrigger = inject(CdkContextMenuTrigger, { host: true });\n\tpublic readonly brnCtxMenuTriggerFor = input<TemplateRef<unknown> | null>(null);\n\tpublic readonly brnCtxMenuTriggerData = input<unknown>(undefined);\n\tpublic readonly align = input<BrnMenuAlign>(undefined);\n\n\tconstructor() {\n\t\t// once the trigger opens we wait until the next tick and then grab the last position\n\t\t// used to position the menu. we store this in our trigger which the brnMenu directive has\n\t\t// access to through DI\n\t\tthis._cdkTrigger.opened.pipe(takeUntilDestroyed()).subscribe(() =>\n\t\t\tsetTimeout(\n\t\t\t\t() =>\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t((this._cdkTrigger as any)._spartanLastPosition = // eslint-disable-next-line\n\t\t\t\t\t\t(this._cdkTrigger as any).overlayRef._positionStrategy._lastPosition),\n\t\t\t),\n\t\t);\n\n\t\teffect(() => (this._cdkTrigger.menuTemplateRef = this.brnCtxMenuTriggerFor()));\n\t\teffect(() => (this._cdkTrigger.menuData = this.brnCtxMenuTriggerData()));\n\t\teffect(() => {\n\t\t\tconst align = this.align();\n\t\t\tif (!align) return;\n\t\t\tthis._cdkTrigger.menuPosition = getBrnMenuAlign(align);\n\t\t});\n\t}\n}\n","import { CdkMenu } from '@angular/cdk/menu';\nimport { Directive, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenu],[brnSubMenu]',\n\thost: {\n\t\t'[attr.data-state]': '_state()',\n\t\t'[attr.data-side]': '_side()',\n\t},\n\thostDirectives: [CdkMenu],\n})\nexport class BrnMenu {\n\tprivate readonly _host = inject(CdkMenu);\n\n\tprotected readonly _state = signal('open');\n\tprotected readonly _side = signal('top');\n\n\tconstructor() {\n\t\tthis.setSideWithDarkMagic();\n\t\t// this is a best effort, but does not seem to work currently\n\t\t// TODO: figure out a way for us to know the host is about to be closed. might not be possible with CDK\n\t\tthis._host.closed.pipe(takeUntilDestroyed()).subscribe(() => this._state.set('closed'));\n\t}\n\n\tprivate setSideWithDarkMagic() {\n\t\t/**\n\t\t * This is an ugly workaround to at least figure out the correct side of where a submenu\n\t\t * will appear and set the attribute to the host accordingly\n\t\t *\n\t\t * First of all we take advantage of the menu stack not being aware of the root\n\t\t * object immediately after it is added. This code executes before the root element is added,\n\t\t * which means the stack is still empty and the peek method returns undefined.\n\t\t */\n\t\tconst isRoot = this._host.menuStack.peek() === undefined;\n\t\tsetTimeout(() => {\n\t\t\t// our menu trigger directive leaves the last position used for use immediately after opening\n\t\t\t// we can access it here and determine the correct side.\n\t\t\t// eslint-disable-next-line\n\t\t\tconst ps = (this._host as any)._parentTrigger._spartanLastPosition;\n\t\t\tif (!ps) {\n\t\t\t\t// if we have no last position we default to the most likely option\n\t\t\t\t// I hate that we have to do this and hope we can revisit soon and improve\n\t\t\t\tthis._side.set(isRoot ? 'top' : 'left');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst side = isRoot ? ps.originY : ps.originX === 'end' ? 'right' : 'left';\n\t\t\tthis._side.set(side);\n\t\t});\n\t}\n}\n","import { CdkMenuBar } from '@angular/cdk/menu';\nimport { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnMenuBar]',\n\thostDirectives: [CdkMenuBar],\n})\nexport class BrnMenuBar {}\n","import { CdkMenuGroup } from '@angular/cdk/menu';\nimport { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnMenuGroup]',\n\thostDirectives: [CdkMenuGroup],\n})\nexport class BrnMenuGroup {}\n","import { CdkMenuItem } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItem]',\n\thostDirectives: [CdkMenuItem],\n\thost: {\n\t\t'[disabled]': 'disabled()',\n\t\t'[attr.data-disabled]': 'disabled() ? \"\" : null',\n\t},\n})\nexport class BrnMenuItem {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItem);\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t}\n}\n","import { CdkMenuItemCheckbox } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItemCheckbox]',\n\thostDirectives: [CdkMenuItemCheckbox],\n\thost: {\n\t\t'[class.checked]': 'checked()',\n\t\t'[disabled]': 'disabled()',\n\t},\n})\nexport class BrnMenuItemCheckbox {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItemCheckbox);\n\tpublic readonly checked = input(this._cdkMenuItem.checked, { transform: booleanAttribute });\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t\teffect(() => (this._cdkMenuItem.checked = this.checked()));\n\t}\n}\n","import { CdkMenuItemRadio } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItemRadio]',\n\thostDirectives: [CdkMenuItemRadio],\n\thost: {\n\t\t'[class.checked]': 'checked()',\n\t\t'[disabled]': 'disabled()',\n\t},\n})\nexport class BrnMenuItemRadio {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItemRadio);\n\tpublic readonly checked = input(this._cdkMenuItem.checked, { transform: booleanAttribute });\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t\teffect(() => (this._cdkMenuItem.checked = this.checked()));\n\t}\n}\n","import { CdkMenuTrigger } from '@angular/cdk/menu';\nimport { Directive, effect, inject, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type BrnMenuAlign, getBrnMenuAlign } from './brn-menu-align';\n\n@Directive({\n\tselector: '[brnMenuTriggerFor]',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: CdkMenuTrigger,\n\t\t\tinputs: ['cdkMenuTriggerFor: brnMenuTriggerFor', 'cdkMenuTriggerData: brnMenuTriggerData'],\n\t\t\toutputs: ['cdkMenuOpened: brnMenuOpened', 'cdkMenuClosed: brnMenuClosed'],\n\t\t},\n\t],\n})\nexport class BrnMenuTrigger {\n\tprivate readonly _cdkTrigger = inject(CdkMenuTrigger, { host: true });\n\tpublic readonly align = input<BrnMenuAlign>(undefined);\n\n\tconstructor() {\n\t\t// once the trigger opens we wait until the next tick and then grab the last position\n\t\t// used to position the menu. we store this in our trigger which the brnMenu directive has\n\t\t// access to through DI\n\t\tthis._cdkTrigger.opened.pipe(takeUntilDestroyed()).subscribe(() =>\n\t\t\tsetTimeout(\n\t\t\t\t() =>\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t((this._cdkTrigger as any)._spartanLastPosition = // eslint-disable-next-line\n\t\t\t\t\t\t(this._cdkTrigger as any).overlayRef._positionStrategy._lastPosition),\n\t\t\t),\n\t\t);\n\n\t\teffect(() => {\n\t\t\tconst align = this.align();\n\t\t\tif (!align) return;\n\t\t\tthis._cdkTrigger.menuPosition = getBrnMenuAlign(align);\n\t\t});\n\t}\n}\n","import { BrnContextMenuTrigger } from './lib/brn-context-menu-trigger';\nimport { BrnMenu } from './lib/brn-menu';\nimport { BrnMenuBar } from './lib/brn-menu-bar';\nimport { BrnMenuGroup } from './lib/brn-menu-group';\nimport { BrnMenuItem } from './lib/brn-menu-item';\nimport { BrnMenuItemCheckbox } from './lib/brn-menu-item-checkbox';\nimport { BrnMenuItemRadio } from './lib/brn-menu-item-radio';\nimport { BrnMenuTrigger } from './lib/brn-menu-trigger';\n\nexport * from './lib/brn-context-menu-trigger';\nexport * from './lib/brn-menu';\nexport * from './lib/brn-menu-bar';\nexport * from './lib/brn-menu-group';\nexport * from './lib/brn-menu-item';\nexport * from './lib/brn-menu-item-checkbox';\nexport * from './lib/brn-menu-item-radio';\nexport * from './lib/brn-menu-trigger';\n\nexport const BrnMenuImports = [\n\tBrnMenuTrigger,\n\tBrnMenu,\n\tBrnMenuBar,\n\tBrnContextMenuTrigger,\n\tBrnMenuGroup,\n\tBrnMenuItem,\n\tBrnMenuItemRadio,\n\tBrnMenuItemCheckbox,\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-menu.mjs","sources":["../../../../libs/brain/menu/src/lib/brn-menu-align.ts","../../../../libs/brain/menu/src/lib/brn-context-menu-trigger.ts","../../../../libs/brain/menu/src/lib/brn-menu.ts","../../../../libs/brain/menu/src/lib/brn-menu-bar.ts","../../../../libs/brain/menu/src/lib/brn-menu-group.ts","../../../../libs/brain/menu/src/lib/brn-menu-item.ts","../../../../libs/brain/menu/src/lib/brn-menu-item-checkbox.ts","../../../../libs/brain/menu/src/lib/brn-menu-item-radio.ts","../../../../libs/brain/menu/src/lib/brn-menu-trigger.ts","../../../../libs/brain/menu/src/index.ts","../../../../libs/brain/menu/src/spartan-ng-brain-menu.ts"],"sourcesContent":["import type { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport type BrnMenuAlign = 'start' | 'center' | 'end';\nexport type BrnMenuSide = 'top' | 'bottom' | 'left' | 'right';\n\nexport const getBrnMenuPosition = (align: BrnMenuAlign, side: BrnMenuSide): ConnectedPosition[] => {\n\tconst verticalAlign = align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center';\n\n\tconst createPositions = (\n\t\toriginX: 'start' | 'center' | 'end',\n\t\toriginY: 'top' | 'center' | 'bottom',\n\t\toverlayX: 'start' | 'center' | 'end',\n\t\toverlayY: 'top' | 'center' | 'bottom',\n\t): ConnectedPosition[] => [\n\t\t{ originX, originY, overlayX, overlayY },\n\t\t{ originX: overlayX, originY: overlayY, overlayX: originX, overlayY: originY },\n\t];\n\n\tswitch (side) {\n\t\tcase 'top':\n\t\t\treturn createPositions(align, 'top', align, 'bottom');\n\t\tcase 'bottom':\n\t\t\treturn createPositions(align, 'bottom', align, 'top');\n\t\tcase 'left':\n\t\t\treturn createPositions('start', verticalAlign, 'end', verticalAlign);\n\t\tcase 'right':\n\t\t\treturn createPositions('end', verticalAlign, 'start', verticalAlign);\n\t}\n};\n","import { CdkContextMenuTrigger } from '@angular/cdk/menu';\nimport { Directive, effect, inject, input, type TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type BrnMenuAlign, BrnMenuSide, getBrnMenuPosition } from './brn-menu-align';\n\n@Directive({\n\tselector: '[brnCtxMenuTriggerFor]',\n\thostDirectives: [CdkContextMenuTrigger],\n})\nexport class BrnContextMenuTrigger {\n\tprivate readonly _cdkTrigger = inject(CdkContextMenuTrigger, { host: true });\n\tpublic readonly brnCtxMenuTriggerFor = input<TemplateRef<unknown> | null>(null);\n\tpublic readonly brnCtxMenuTriggerData = input<unknown>(undefined);\n\tpublic readonly align = input<BrnMenuAlign>('center');\n\tpublic readonly side = input<BrnMenuSide>('bottom');\n\n\tconstructor() {\n\t\t// once the trigger opens we wait until the next tick and then grab the last position\n\t\t// used to position the menu. we store this in our trigger which the brnMenu directive has\n\t\t// access to through DI\n\t\tthis._cdkTrigger.opened.pipe(takeUntilDestroyed()).subscribe(() =>\n\t\t\tsetTimeout(\n\t\t\t\t() =>\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t((this._cdkTrigger as any)._spartanLastPosition = // eslint-disable-next-line\n\t\t\t\t\t\t(this._cdkTrigger as any).overlayRef._positionStrategy._lastPosition),\n\t\t\t),\n\t\t);\n\n\t\teffect(() => (this._cdkTrigger.menuTemplateRef = this.brnCtxMenuTriggerFor()));\n\t\teffect(() => (this._cdkTrigger.menuData = this.brnCtxMenuTriggerData()));\n\t\teffect(() => {\n\t\t\tconst align = this.align();\n\t\t\tconst side = this.side();\n\t\t\tthis._cdkTrigger.menuPosition = getBrnMenuPosition(align, side);\n\t\t});\n\t}\n}\n","import { CdkMenu } from '@angular/cdk/menu';\nimport { Directive, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenu],[brnSubMenu]',\n\thost: {\n\t\t'[attr.data-state]': '_state()',\n\t\t'[attr.data-side]': '_side()',\n\t},\n\thostDirectives: [CdkMenu],\n})\nexport class BrnMenu {\n\tprivate readonly _host = inject(CdkMenu);\n\n\tprotected readonly _state = signal('open');\n\tprotected readonly _side = signal('top');\n\n\tconstructor() {\n\t\tthis.setSideWithDarkMagic();\n\t\t// this is a best effort, but does not seem to work currently\n\t\t// TODO: figure out a way for us to know the host is about to be closed. might not be possible with CDK\n\t\tthis._host.closed.pipe(takeUntilDestroyed()).subscribe(() => this._state.set('closed'));\n\t}\n\n\tprivate setSideWithDarkMagic() {\n\t\t/**\n\t\t * This is an ugly workaround to at least figure out the correct side of where a submenu\n\t\t * will appear and set the attribute to the host accordingly\n\t\t *\n\t\t * First of all we take advantage of the menu stack not being aware of the root\n\t\t * object immediately after it is added. This code executes before the root element is added,\n\t\t * which means the stack is still empty and the peek method returns undefined.\n\t\t */\n\t\tconst isRoot = this._host.menuStack.peek() === undefined;\n\t\tsetTimeout(() => {\n\t\t\t// our menu trigger directive leaves the last position used for use immediately after opening\n\t\t\t// we can access it here and determine the correct side.\n\t\t\t// eslint-disable-next-line\n\t\t\tconst ps = (this._host as any)._parentTrigger._spartanLastPosition;\n\t\t\tif (!ps) {\n\t\t\t\t// if we have no last position we default to the most likely option\n\t\t\t\t// I hate that we have to do this and hope we can revisit soon and improve\n\t\t\t\tthis._side.set(isRoot ? 'top' : 'left');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst side = isRoot ? ps.originY : ps.originX === 'end' ? 'right' : 'left';\n\t\t\tthis._side.set(side);\n\t\t});\n\t}\n}\n","import { CdkMenuBar } from '@angular/cdk/menu';\nimport { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnMenuBar]',\n\thostDirectives: [CdkMenuBar],\n})\nexport class BrnMenuBar {}\n","import { CdkMenuGroup } from '@angular/cdk/menu';\nimport { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnMenuGroup]',\n\thostDirectives: [CdkMenuGroup],\n})\nexport class BrnMenuGroup {}\n","import { CdkMenuItem } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItem]',\n\thostDirectives: [CdkMenuItem],\n\thost: {\n\t\t'[disabled]': 'disabled()',\n\t\t'[attr.data-disabled]': 'disabled() ? \"\" : null',\n\t},\n})\nexport class BrnMenuItem {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItem);\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t}\n}\n","import { CdkMenuItemCheckbox } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItemCheckbox]',\n\thostDirectives: [CdkMenuItemCheckbox],\n\thost: {\n\t\t'[class.checked]': 'checked()',\n\t\t'[disabled]': 'disabled()',\n\t},\n})\nexport class BrnMenuItemCheckbox {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItemCheckbox);\n\tpublic readonly checked = input(this._cdkMenuItem.checked, { transform: booleanAttribute });\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t\teffect(() => (this._cdkMenuItem.checked = this.checked()));\n\t}\n}\n","import { CdkMenuItemRadio } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItemRadio]',\n\thostDirectives: [CdkMenuItemRadio],\n\thost: {\n\t\t'[class.checked]': 'checked()',\n\t\t'[disabled]': 'disabled()',\n\t},\n})\nexport class BrnMenuItemRadio {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItemRadio);\n\tpublic readonly checked = input(this._cdkMenuItem.checked, { transform: booleanAttribute });\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t\teffect(() => (this._cdkMenuItem.checked = this.checked()));\n\t}\n}\n","import { CdkMenuTrigger } from '@angular/cdk/menu';\nimport { Directive, effect, inject, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type BrnMenuAlign, BrnMenuSide, getBrnMenuPosition } from './brn-menu-align';\n\n@Directive({\n\tselector: '[brnMenuTriggerFor]',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: CdkMenuTrigger,\n\t\t\tinputs: ['cdkMenuTriggerFor: brnMenuTriggerFor', 'cdkMenuTriggerData: brnMenuTriggerData'],\n\t\t\toutputs: ['cdkMenuOpened: brnMenuOpened', 'cdkMenuClosed: brnMenuClosed'],\n\t\t},\n\t],\n})\nexport class BrnMenuTrigger {\n\tprivate readonly _cdkTrigger = inject(CdkMenuTrigger, { host: true });\n\tpublic readonly align = input<BrnMenuAlign>('center');\n\tpublic readonly side = input<BrnMenuSide>('bottom');\n\n\tconstructor() {\n\t\t// once the trigger opens we wait until the next tick and then grab the last position\n\t\t// used to position the menu. we store this in our trigger which the brnMenu directive has\n\t\t// access to through DI\n\t\tthis._cdkTrigger.opened.pipe(takeUntilDestroyed()).subscribe(() =>\n\t\t\tsetTimeout(\n\t\t\t\t() =>\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t((this._cdkTrigger as any)._spartanLastPosition = // eslint-disable-next-line\n\t\t\t\t\t\t(this._cdkTrigger as any).overlayRef._positionStrategy._lastPosition),\n\t\t\t),\n\t\t);\n\n\t\teffect(() => {\n\t\t\tconst align = this.align();\n\t\t\tconst side = this.side();\n\t\t\tthis._cdkTrigger.menuPosition = getBrnMenuPosition(align, side);\n\t\t});\n\t}\n}\n","import { BrnContextMenuTrigger } from './lib/brn-context-menu-trigger';\nimport { BrnMenu } from './lib/brn-menu';\nimport { BrnMenuBar } from './lib/brn-menu-bar';\nimport { BrnMenuGroup } from './lib/brn-menu-group';\nimport { BrnMenuItem } from './lib/brn-menu-item';\nimport { BrnMenuItemCheckbox } from './lib/brn-menu-item-checkbox';\nimport { BrnMenuItemRadio } from './lib/brn-menu-item-radio';\nimport { BrnMenuTrigger } from './lib/brn-menu-trigger';\n\nexport * from './lib/brn-context-menu-trigger';\nexport * from './lib/brn-menu';\nexport * from './lib/brn-menu-bar';\nexport * from './lib/brn-menu-group';\nexport * from './lib/brn-menu-item';\nexport * from './lib/brn-menu-item-checkbox';\nexport * from './lib/brn-menu-item-radio';\nexport * from './lib/brn-menu-trigger';\n\nexport const BrnMenuImports = [\n\tBrnMenuTrigger,\n\tBrnMenu,\n\tBrnMenuBar,\n\tBrnContextMenuTrigger,\n\tBrnMenuGroup,\n\tBrnMenuItem,\n\tBrnMenuItemRadio,\n\tBrnMenuItemCheckbox,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|