@spartan-ng/brain 0.0.1-alpha.456 → 0.0.1-alpha.458
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/fesm2022/spartan-ng-brain-collapsible.mjs +2 -1
- package/fesm2022/spartan-ng-brain-collapsible.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-hover-card.mjs +3 -2
- package/fesm2022/spartan-ng-brain-hover-card.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-input-otp.mjs +5 -3
- package/fesm2022/spartan-ng-brain-input-otp.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-progress.mjs +5 -3
- package/fesm2022/spartan-ng-brain-progress.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-select.mjs +12 -1
- package/fesm2022/spartan-ng-brain-select.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-separator.mjs +3 -2
- package/fesm2022/spartan-ng-brain-separator.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-switch.mjs +3 -2
- package/fesm2022/spartan-ng-brain-switch.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-table.mjs +5 -0
- package/fesm2022/spartan-ng-brain-table.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-toggle-group.mjs +3 -2
- package/fesm2022/spartan-ng-brain-toggle-group.mjs.map +1 -1
- package/package.json +1 -1
- package/select/lib/brn-select-trigger.directive.d.ts +6 -2
- package/table/lib/brn-paginator.directive.d.ts +3 -0
|
@@ -78,7 +78,7 @@ class BrnCollapsibleContentComponent {
|
|
|
78
78
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnCollapsibleContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
79
79
|
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.8", type: BrnCollapsibleContentComponent, 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: `
|
|
80
80
|
<ng-content />
|
|
81
|
-
`, isInline: true });
|
|
81
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
82
82
|
}
|
|
83
83
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnCollapsibleContentComponent, decorators: [{
|
|
84
84
|
type: Component,
|
|
@@ -95,6 +95,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
95
95
|
template: `
|
|
96
96
|
<ng-content />
|
|
97
97
|
`,
|
|
98
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
98
99
|
}]
|
|
99
100
|
}], ctorParameters: () => [] });
|
|
100
101
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-collapsible.mjs","sources":["../../../../libs/brain/collapsible/src/lib/brn-collapsible.component.ts","../../../../libs/brain/collapsible/src/lib/brn-collapsible-content.component.ts","../../../../libs/brain/collapsible/src/lib/brn-collapsible-trigger.directive.ts","../../../../libs/brain/collapsible/src/index.ts","../../../../libs/brain/collapsible/src/spartan-ng-brain-collapsible.ts"],"sourcesContent":["import { 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\tstandalone: true,\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 BrnCollapsibleComponent {\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 { Component, ElementRef, OnInit, PLATFORM_ID, effect, inject, input, signal, untracked } from '@angular/core';\nimport { BrnCollapsibleComponent } from './brn-collapsible.component';\n\n@Component({\n\tselector: 'brn-collapsible-content',\n\tstandalone: true,\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})\nexport class BrnCollapsibleContentComponent implements OnInit {\n\tprotected readonly collapsible = inject(BrnCollapsibleComponent, { 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 { BrnCollapsibleComponent } from './brn-collapsible.component';\n\n@Directive({\n\tselector: 'button[brnCollapsibleTrigger]',\n\tstandalone: true,\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 BrnCollapsibleTriggerDirective {\n\tprotected readonly collapsible = inject(BrnCollapsibleComponent, { 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 { NgModule } from '@angular/core';\n\nimport { BrnCollapsibleContentComponent } from './lib/brn-collapsible-content.component';\nimport { BrnCollapsibleTriggerDirective } from './lib/brn-collapsible-trigger.directive';\nimport { BrnCollapsibleComponent } from './lib/brn-collapsible.component';\n\nexport * from './lib/brn-collapsible-content.component';\nexport * from './lib/brn-collapsible-trigger.directive';\nexport * from './lib/brn-collapsible.component';\n\nexport const BrnCollapsibleImports = [\n\tBrnCollapsibleComponent,\n\tBrnCollapsibleTriggerDirective,\n\tBrnCollapsibleContentComponent,\n] as const;\n\n@NgModule({\n\timports: [...BrnCollapsibleImports],\n\texports: [...BrnCollapsibleImports],\n})\nexport class BrnCollapsibleModule {}\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-collapsible.mjs","sources":["../../../../libs/brain/collapsible/src/lib/brn-collapsible.component.ts","../../../../libs/brain/collapsible/src/lib/brn-collapsible-content.component.ts","../../../../libs/brain/collapsible/src/lib/brn-collapsible-trigger.directive.ts","../../../../libs/brain/collapsible/src/index.ts","../../../../libs/brain/collapsible/src/spartan-ng-brain-collapsible.ts"],"sourcesContent":["import { 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\tstandalone: true,\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 BrnCollapsibleComponent {\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\tOnInit,\n\tPLATFORM_ID,\n\teffect,\n\tinject,\n\tinput,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { BrnCollapsibleComponent } from './brn-collapsible.component';\n\n@Component({\n\tselector: 'brn-collapsible-content',\n\tstandalone: true,\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 BrnCollapsibleContentComponent implements OnInit {\n\tprotected readonly collapsible = inject(BrnCollapsibleComponent, { 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 { BrnCollapsibleComponent } from './brn-collapsible.component';\n\n@Directive({\n\tselector: 'button[brnCollapsibleTrigger]',\n\tstandalone: true,\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 BrnCollapsibleTriggerDirective {\n\tprotected readonly collapsible = inject(BrnCollapsibleComponent, { 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 { NgModule } from '@angular/core';\n\nimport { BrnCollapsibleContentComponent } from './lib/brn-collapsible-content.component';\nimport { BrnCollapsibleTriggerDirective } from './lib/brn-collapsible-trigger.directive';\nimport { BrnCollapsibleComponent } from './lib/brn-collapsible.component';\n\nexport * from './lib/brn-collapsible-content.component';\nexport * from './lib/brn-collapsible-trigger.directive';\nexport * from './lib/brn-collapsible.component';\n\nexport const BrnCollapsibleImports = [\n\tBrnCollapsibleComponent,\n\tBrnCollapsibleTriggerDirective,\n\tBrnCollapsibleContentComponent,\n] as const;\n\n@NgModule({\n\timports: [...BrnCollapsibleImports],\n\texports: [...BrnCollapsibleImports],\n})\nexport class BrnCollapsibleModule {}\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 { inject, TemplateRef, Directive, NgZone, signal, Injectable, ViewContainerRef, ElementRef, input, computed, effect, untracked, contentChild, Component, NgModule } from '@angular/core';
|
|
2
|
+
import { inject, TemplateRef, Directive, NgZone, signal, Injectable, ViewContainerRef, ElementRef, input, computed, effect, untracked, contentChild, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
|
|
3
3
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
4
4
|
import { Overlay, OverlayPositionBuilder } from '@angular/cdk/overlay';
|
|
5
5
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
@@ -223,7 +223,7 @@ class BrnHoverCardComponent {
|
|
|
223
223
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnHoverCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
224
224
|
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.8", type: BrnHoverCardComponent, isStandalone: true, selector: "brn-hover-card", providers: [BrnHoverCardContentService], queries: [{ propertyName: "_trigger", first: true, predicate: BrnHoverCardTriggerDirective, descendants: true, isSignal: true }, { propertyName: "_content", first: true, predicate: BrnHoverCardContentDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
225
225
|
<ng-content />
|
|
226
|
-
`, isInline: true });
|
|
226
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
227
227
|
}
|
|
228
228
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnHoverCardComponent, decorators: [{
|
|
229
229
|
type: Component,
|
|
@@ -234,6 +234,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
234
234
|
template: `
|
|
235
235
|
<ng-content />
|
|
236
236
|
`,
|
|
237
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
237
238
|
}]
|
|
238
239
|
}] });
|
|
239
240
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-hover-card.mjs","sources":["../../../../libs/brain/hover-card/src/lib/createHoverObservable.ts","../../../../libs/brain/hover-card/src/lib/brn-hover-card-content.service.ts","../../../../libs/brain/hover-card/src/lib/brn-hover-card.component.ts","../../../../libs/brain/hover-card/src/index.ts","../../../../libs/brain/hover-card/src/spartan-ng-brain-hover-card.ts"],"sourcesContent":["import type { NgZone } from '@angular/core';\nimport { brnZoneOptimized } from '@spartan-ng/brain/core';\nimport { Observable, Subject, fromEvent, merge } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';\n\nfunction movedOut({ currentTarget, relatedTarget }: MouseEvent): boolean {\n\treturn !isElement(relatedTarget) || !isElement(currentTarget) || !currentTarget.contains(relatedTarget);\n}\n\nexport function isElement(node?: Element | EventTarget | Node | null): node is Element {\n\treturn !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport const createHoverObservable = (\n\tnativeElement: HTMLElement,\n\tzone: NgZone,\n\tdestroyed$: Subject<void>,\n): Observable<boolean> => {\n\treturn merge(\n\t\tfromEvent(nativeElement, 'mouseenter').pipe(map(() => true)),\n\t\tfromEvent(nativeElement, 'mouseleave').pipe(map(() => false)),\n\t\t// Hello, Safari\n\t\tfromEvent<MouseEvent>(nativeElement, 'mouseout').pipe(\n\t\t\tfilter(movedOut),\n\t\t\tmap(() => false),\n\t\t),\n\t\t/**\n\t\t * NOTE: onmouseout events don't trigger when objects move under mouse in Safari\n\t\t * https://bugs.webkit.org/show_bug.cgi?id=4117\n\t\t */\n\t\tfromEvent(nativeElement, 'transitionend').pipe(map(() => nativeElement.matches(':hover'))),\n\t).pipe(distinctUntilChanged(), brnZoneOptimized(zone), takeUntil(destroyed$));\n};\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n\ttype ConnectedOverlayPositionChange,\n\ttype ConnectedPosition,\n\ttype FlexibleConnectedPositionStrategy,\n\tOverlay,\n\ttype OverlayConfig,\n\tOverlayPositionBuilder,\n\ttype OverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n\tcomputed,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjectable,\n\tinput,\n\tNgZone,\n\ttype OnDestroy,\n\ttype OnInit,\n\ttype Signal,\n\tsignal,\n\tTemplateRef,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport {\n\ttype ExposesSide,\n\ttype ExposesState,\n\tprovideExposedSideProviderExisting,\n\tprovideExposesStateProviderExisting,\n} from '@spartan-ng/brain/core';\nimport { BehaviorSubject, fromEvent, merge, Observable, of, Subject } from 'rxjs';\nimport { delay, distinctUntilChanged, filter, map, share, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { createHoverObservable } from './createHoverObservable';\n\n@Directive({\n\tselector: '[brnHoverCardContent]',\n\tstandalone: true,\n\texportAs: 'brnHoverCardContent',\n\tproviders: [\n\t\tprovideExposedSideProviderExisting(() => BrnHoverCardContentDirective),\n\t\tprovideExposesStateProviderExisting(() => BrnHoverCardContentDirective),\n\t],\n})\nexport class BrnHoverCardContentDirective implements ExposesState, ExposesSide {\n\tprivate readonly _contentService = inject(BrnHoverCardContentService);\n\tpublic readonly state = this._contentService.state;\n\tpublic readonly side = this._contentService.side;\n\tpublic readonly template = inject(TemplateRef);\n}\n\n/**\n * We are building on shoulders of giants here and use the implementation provided by the incredible TaigaUI\n * team: https://github.com/taiga-family/taiga-ui/blob/main/projects/core/directives/dropdown/dropdown-hover.directive.ts\n * Check them out! Give them a try! Leave a star! Their work is incredible!\n */\n\nexport type BrnHoverCardOptions = Partial<\n\t{\n\t\tattachTo: ElementRef;\n\t\tattachPositions: ConnectedPosition[];\n\t\talign: 'top' | 'bottom';\n\t\tsideOffset: number;\n\t} & OverlayConfig\n>;\n\nconst topFirstPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n];\nconst bottomFirstPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n];\n\n@Injectable()\nexport class BrnHoverCardContentService {\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _psBuilder = inject(OverlayPositionBuilder);\n\n\tprivate readonly _content = signal<TemplatePortal<unknown> | null>(null);\n\tprivate readonly _state = signal<'open' | 'closed'>('closed');\n\n\tprivate _config: BrnHoverCardOptions = {};\n\tprivate _overlayRef?: OverlayRef;\n\tprivate _positionStrategy?: FlexibleConnectedPositionStrategy;\n\tprivate _destroyed$ = new Subject<void>();\n\n\tprivate readonly _positionChangesObservables$ = new BehaviorSubject<\n\t\tObservable<ConnectedOverlayPositionChange> | undefined\n\t>(undefined);\n\tprivate readonly _overlayHoveredObservables$ = new BehaviorSubject<Observable<boolean> | undefined>(undefined);\n\n\tpublic readonly positionChanges$: Observable<ConnectedOverlayPositionChange> = this._positionChangesObservables$.pipe(\n\t\tswitchMap((positionChangeObservable) => (positionChangeObservable ? positionChangeObservable : of(undefined))),\n\t\tfilter((change): change is NonNullable<ConnectedOverlayPositionChange> => change !== undefined && change !== null),\n\t);\n\tpublic readonly hovered$: Observable<boolean> = this._overlayHoveredObservables$.pipe(\n\t\tswitchMap((overlayHoveredObservable) => (overlayHoveredObservable ? overlayHoveredObservable : of(false))),\n\t);\n\n\tpublic readonly state = this._state.asReadonly();\n\tpublic readonly side: Signal<'top' | 'bottom' | 'left' | 'right'> = toSignal(\n\t\tthis.positionChanges$.pipe(\n\t\t\tmap<ConnectedOverlayPositionChange, 'top' | 'bottom' | 'left' | 'right'>((change) =>\n\t\t\t\t// todo: better translation or adjusting hlm to take that into account\n\t\t\t\tchange.connectionPair.originY === 'center'\n\t\t\t\t\t? change.connectionPair.originX === 'start'\n\t\t\t\t\t\t? 'left'\n\t\t\t\t\t\t: 'right'\n\t\t\t\t\t: change.connectionPair.originY,\n\t\t\t),\n\t\t),\n\t\t{ initialValue: 'bottom' },\n\t);\n\n\tpublic setConfig(config: BrnHoverCardOptions) {\n\t\tthis._config = config;\n\t\tif (config.attachTo) {\n\t\t\tthis._positionStrategy = this._psBuilder\n\t\t\t\t.flexibleConnectedTo(config.attachTo)\n\t\t\t\t.withPositions((config.attachPositions ?? config.align === 'top') ? topFirstPositions : bottomFirstPositions)\n\t\t\t\t.withDefaultOffsetY(config.sideOffset ?? 0);\n\t\t\tthis._config = {\n\t\t\t\t...this._config,\n\t\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t\t};\n\t\t\tthis._positionChangesObservables$.next(this._positionStrategy.positionChanges);\n\t\t}\n\t\tthis._overlayRef = this._overlay.create(this._config);\n\t}\n\n\tpublic setContent(value: TemplateRef<unknown> | BrnHoverCardContentDirective, vcr: ViewContainerRef) {\n\t\tthis._content.set(new TemplatePortal<unknown>(value instanceof TemplateRef ? value : value.template, vcr));\n\n\t\tif (!this._overlayRef) {\n\t\t\tthis._overlayRef = this._overlay.create(this._config);\n\t\t}\n\t}\n\n\tpublic setState(newState: 'open' | 'closed') {\n\t\tthis._state.set(newState);\n\t}\n\n\tpublic show() {\n\t\tconst content = this._content();\n\t\tif (!content || !this._overlayRef) return;\n\n\t\tthis._overlayRef?.detach();\n\t\tthis._overlayRef?.attach(content);\n\n\t\tthis._destroyed$ = new Subject<void>();\n\n\t\tthis._overlayHoveredObservables$.next(\n\t\t\tcreateHoverObservable(this._overlayRef.hostElement, this._zone, this._destroyed$),\n\t\t);\n\t}\n\n\tpublic hide() {\n\t\tthis._overlayRef?.detach();\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t\tthis._destroyed$ = new Subject<void>();\n\t}\n}\n\n@Directive({\n\tselector: '[brnHoverCardTrigger]:not(ng-container),[brnHoverCardTriggerFor]:not(ng-container)',\n\tstandalone: true,\n\texportAs: 'brnHoverCardTrigger',\n})\nexport class BrnHoverCardTriggerDirective implements OnInit, OnDestroy {\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _contentService = inject(BrnHoverCardContentService);\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\n\tpublic readonly focused$: Observable<boolean> = this._focusMonitor.monitor(this._el).pipe(map((e) => e !== null));\n\n\tpublic readonly hovered$: Observable<boolean> = merge(\n\t\tfromEvent(this._el.nativeElement, 'click').pipe(map(() => false)),\n\t\tcreateHoverObservable(this._el.nativeElement, this._zone, this._destroy$),\n\t\tthis._contentService.hovered$,\n\t\tthis.focused$,\n\t).pipe(distinctUntilChanged());\n\tpublic readonly showing$: Observable<boolean> = this.hovered$.pipe(\n\t\t// we set the state to open here because we are about to open show the content\n\t\ttap((visible) => visible && this._contentService.setState('open')),\n\t\tswitchMap((visible) => {\n\t\t\t// we are delaying based on the configure-able input\n\t\t\treturn of(visible).pipe(delay(visible ? this.showDelay() : this.hideDelay()));\n\t\t}),\n\t\tswitchMap((visible) => {\n\t\t\t// don't do anything when we are in the process of showing the content\n\t\t\tif (visible) return of(visible);\n\t\t\t// we set the state to closed here to trigger any animations for the element leaving\n\t\t\tthis._contentService.setState('closed');\n\t\t\t// then delay to wait for the leaving animation to finish\n\t\t\treturn of(visible).pipe(delay(this.animationDelay()));\n\t\t}),\n\t\tdistinctUntilChanged(),\n\t\tshare(),\n\t\ttakeUntil(this._destroy$),\n\t);\n\n\tpublic showDelay = input(300);\n\tpublic hideDelay = input(500);\n\tpublic animationDelay = input(100);\n\tpublic sideOffset = input(5);\n\tpublic align = input<'top' | 'bottom'>('bottom');\n\n\tpublic readonly brnHoverCardTriggerFor = input<TemplateRef<unknown> | BrnHoverCardContentDirective | undefined>(\n\t\tundefined,\n\t);\n\tpublic readonly mutableBrnHoverCardTriggerFor = computed(() => signal(this.brnHoverCardTriggerFor()));\n\tprivate readonly _brnHoverCardTriggerForState = computed(() => this.mutableBrnHoverCardTriggerFor()());\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._brnHoverCardTriggerForState();\n\t\t\tuntracked(() => {\n\t\t\t\tif (value) {\n\t\t\t\t\tthis._contentService.setContent(value, this._vcr);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis._contentService.setConfig({ attachTo: this._el, align: this.align(), sideOffset: this.sideOffset() });\n\t\tthis.showing$.subscribe((isHovered) => {\n\t\t\tif (isHovered) {\n\t\t\t\tthis._contentService.show();\n\t\t\t} else {\n\t\t\t\tthis._contentService.hide();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t}\n}\n","import { type AfterContentInit, Component, contentChild } from '@angular/core';\nimport {\n\tBrnHoverCardContentDirective,\n\tBrnHoverCardContentService,\n\tBrnHoverCardTriggerDirective,\n} from './brn-hover-card-content.service';\n\n@Component({\n\tselector: 'brn-hover-card',\n\tstandalone: true,\n\tproviders: [BrnHoverCardContentService],\n\ttemplate: `\n\t\t<ng-content />\n\t`,\n})\nexport class BrnHoverCardComponent implements AfterContentInit {\n\tprivate readonly _trigger = contentChild(BrnHoverCardTriggerDirective);\n\tprivate readonly _content = contentChild(BrnHoverCardContentDirective);\n\n\tpublic ngAfterContentInit() {\n\t\tif (!this._trigger() || !this._content()) return;\n\t\tthis._trigger()?.mutableBrnHoverCardTriggerFor().set(this._content());\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { BrnHoverCardContentDirective, BrnHoverCardTriggerDirective } from './lib/brn-hover-card-content.service';\nimport { BrnHoverCardComponent } from './lib/brn-hover-card.component';\n\nexport * from './lib/brn-hover-card-content.service';\nexport * from './lib/brn-hover-card.component';\nexport * from './lib/createHoverObservable';\n\nexport const BrnHoverCardImports = [\n\tBrnHoverCardComponent,\n\tBrnHoverCardContentDirective,\n\tBrnHoverCardTriggerDirective,\n] as const;\n\n@NgModule({\n\timports: [...BrnHoverCardImports],\n\texports: [...BrnHoverCardImports],\n})\nexport class BrnHoverCardModule {}\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-hover-card.mjs","sources":["../../../../libs/brain/hover-card/src/lib/createHoverObservable.ts","../../../../libs/brain/hover-card/src/lib/brn-hover-card-content.service.ts","../../../../libs/brain/hover-card/src/lib/brn-hover-card.component.ts","../../../../libs/brain/hover-card/src/index.ts","../../../../libs/brain/hover-card/src/spartan-ng-brain-hover-card.ts"],"sourcesContent":["import type { NgZone } from '@angular/core';\nimport { brnZoneOptimized } from '@spartan-ng/brain/core';\nimport { Observable, Subject, fromEvent, merge } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';\n\nfunction movedOut({ currentTarget, relatedTarget }: MouseEvent): boolean {\n\treturn !isElement(relatedTarget) || !isElement(currentTarget) || !currentTarget.contains(relatedTarget);\n}\n\nexport function isElement(node?: Element | EventTarget | Node | null): node is Element {\n\treturn !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport const createHoverObservable = (\n\tnativeElement: HTMLElement,\n\tzone: NgZone,\n\tdestroyed$: Subject<void>,\n): Observable<boolean> => {\n\treturn merge(\n\t\tfromEvent(nativeElement, 'mouseenter').pipe(map(() => true)),\n\t\tfromEvent(nativeElement, 'mouseleave').pipe(map(() => false)),\n\t\t// Hello, Safari\n\t\tfromEvent<MouseEvent>(nativeElement, 'mouseout').pipe(\n\t\t\tfilter(movedOut),\n\t\t\tmap(() => false),\n\t\t),\n\t\t/**\n\t\t * NOTE: onmouseout events don't trigger when objects move under mouse in Safari\n\t\t * https://bugs.webkit.org/show_bug.cgi?id=4117\n\t\t */\n\t\tfromEvent(nativeElement, 'transitionend').pipe(map(() => nativeElement.matches(':hover'))),\n\t).pipe(distinctUntilChanged(), brnZoneOptimized(zone), takeUntil(destroyed$));\n};\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n\ttype ConnectedOverlayPositionChange,\n\ttype ConnectedPosition,\n\ttype FlexibleConnectedPositionStrategy,\n\tOverlay,\n\ttype OverlayConfig,\n\tOverlayPositionBuilder,\n\ttype OverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n\tcomputed,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjectable,\n\tinput,\n\tNgZone,\n\ttype OnDestroy,\n\ttype OnInit,\n\ttype Signal,\n\tsignal,\n\tTemplateRef,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport {\n\ttype ExposesSide,\n\ttype ExposesState,\n\tprovideExposedSideProviderExisting,\n\tprovideExposesStateProviderExisting,\n} from '@spartan-ng/brain/core';\nimport { BehaviorSubject, fromEvent, merge, Observable, of, Subject } from 'rxjs';\nimport { delay, distinctUntilChanged, filter, map, share, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { createHoverObservable } from './createHoverObservable';\n\n@Directive({\n\tselector: '[brnHoverCardContent]',\n\tstandalone: true,\n\texportAs: 'brnHoverCardContent',\n\tproviders: [\n\t\tprovideExposedSideProviderExisting(() => BrnHoverCardContentDirective),\n\t\tprovideExposesStateProviderExisting(() => BrnHoverCardContentDirective),\n\t],\n})\nexport class BrnHoverCardContentDirective implements ExposesState, ExposesSide {\n\tprivate readonly _contentService = inject(BrnHoverCardContentService);\n\tpublic readonly state = this._contentService.state;\n\tpublic readonly side = this._contentService.side;\n\tpublic readonly template = inject(TemplateRef);\n}\n\n/**\n * We are building on shoulders of giants here and use the implementation provided by the incredible TaigaUI\n * team: https://github.com/taiga-family/taiga-ui/blob/main/projects/core/directives/dropdown/dropdown-hover.directive.ts\n * Check them out! Give them a try! Leave a star! Their work is incredible!\n */\n\nexport type BrnHoverCardOptions = Partial<\n\t{\n\t\tattachTo: ElementRef;\n\t\tattachPositions: ConnectedPosition[];\n\t\talign: 'top' | 'bottom';\n\t\tsideOffset: number;\n\t} & OverlayConfig\n>;\n\nconst topFirstPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n];\nconst bottomFirstPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n];\n\n@Injectable()\nexport class BrnHoverCardContentService {\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _psBuilder = inject(OverlayPositionBuilder);\n\n\tprivate readonly _content = signal<TemplatePortal<unknown> | null>(null);\n\tprivate readonly _state = signal<'open' | 'closed'>('closed');\n\n\tprivate _config: BrnHoverCardOptions = {};\n\tprivate _overlayRef?: OverlayRef;\n\tprivate _positionStrategy?: FlexibleConnectedPositionStrategy;\n\tprivate _destroyed$ = new Subject<void>();\n\n\tprivate readonly _positionChangesObservables$ = new BehaviorSubject<\n\t\tObservable<ConnectedOverlayPositionChange> | undefined\n\t>(undefined);\n\tprivate readonly _overlayHoveredObservables$ = new BehaviorSubject<Observable<boolean> | undefined>(undefined);\n\n\tpublic readonly positionChanges$: Observable<ConnectedOverlayPositionChange> = this._positionChangesObservables$.pipe(\n\t\tswitchMap((positionChangeObservable) => (positionChangeObservable ? positionChangeObservable : of(undefined))),\n\t\tfilter((change): change is NonNullable<ConnectedOverlayPositionChange> => change !== undefined && change !== null),\n\t);\n\tpublic readonly hovered$: Observable<boolean> = this._overlayHoveredObservables$.pipe(\n\t\tswitchMap((overlayHoveredObservable) => (overlayHoveredObservable ? overlayHoveredObservable : of(false))),\n\t);\n\n\tpublic readonly state = this._state.asReadonly();\n\tpublic readonly side: Signal<'top' | 'bottom' | 'left' | 'right'> = toSignal(\n\t\tthis.positionChanges$.pipe(\n\t\t\tmap<ConnectedOverlayPositionChange, 'top' | 'bottom' | 'left' | 'right'>((change) =>\n\t\t\t\t// todo: better translation or adjusting hlm to take that into account\n\t\t\t\tchange.connectionPair.originY === 'center'\n\t\t\t\t\t? change.connectionPair.originX === 'start'\n\t\t\t\t\t\t? 'left'\n\t\t\t\t\t\t: 'right'\n\t\t\t\t\t: change.connectionPair.originY,\n\t\t\t),\n\t\t),\n\t\t{ initialValue: 'bottom' },\n\t);\n\n\tpublic setConfig(config: BrnHoverCardOptions) {\n\t\tthis._config = config;\n\t\tif (config.attachTo) {\n\t\t\tthis._positionStrategy = this._psBuilder\n\t\t\t\t.flexibleConnectedTo(config.attachTo)\n\t\t\t\t.withPositions((config.attachPositions ?? config.align === 'top') ? topFirstPositions : bottomFirstPositions)\n\t\t\t\t.withDefaultOffsetY(config.sideOffset ?? 0);\n\t\t\tthis._config = {\n\t\t\t\t...this._config,\n\t\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t\t};\n\t\t\tthis._positionChangesObservables$.next(this._positionStrategy.positionChanges);\n\t\t}\n\t\tthis._overlayRef = this._overlay.create(this._config);\n\t}\n\n\tpublic setContent(value: TemplateRef<unknown> | BrnHoverCardContentDirective, vcr: ViewContainerRef) {\n\t\tthis._content.set(new TemplatePortal<unknown>(value instanceof TemplateRef ? value : value.template, vcr));\n\n\t\tif (!this._overlayRef) {\n\t\t\tthis._overlayRef = this._overlay.create(this._config);\n\t\t}\n\t}\n\n\tpublic setState(newState: 'open' | 'closed') {\n\t\tthis._state.set(newState);\n\t}\n\n\tpublic show() {\n\t\tconst content = this._content();\n\t\tif (!content || !this._overlayRef) return;\n\n\t\tthis._overlayRef?.detach();\n\t\tthis._overlayRef?.attach(content);\n\n\t\tthis._destroyed$ = new Subject<void>();\n\n\t\tthis._overlayHoveredObservables$.next(\n\t\t\tcreateHoverObservable(this._overlayRef.hostElement, this._zone, this._destroyed$),\n\t\t);\n\t}\n\n\tpublic hide() {\n\t\tthis._overlayRef?.detach();\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t\tthis._destroyed$ = new Subject<void>();\n\t}\n}\n\n@Directive({\n\tselector: '[brnHoverCardTrigger]:not(ng-container),[brnHoverCardTriggerFor]:not(ng-container)',\n\tstandalone: true,\n\texportAs: 'brnHoverCardTrigger',\n})\nexport class BrnHoverCardTriggerDirective implements OnInit, OnDestroy {\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _contentService = inject(BrnHoverCardContentService);\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\n\tpublic readonly focused$: Observable<boolean> = this._focusMonitor.monitor(this._el).pipe(map((e) => e !== null));\n\n\tpublic readonly hovered$: Observable<boolean> = merge(\n\t\tfromEvent(this._el.nativeElement, 'click').pipe(map(() => false)),\n\t\tcreateHoverObservable(this._el.nativeElement, this._zone, this._destroy$),\n\t\tthis._contentService.hovered$,\n\t\tthis.focused$,\n\t).pipe(distinctUntilChanged());\n\tpublic readonly showing$: Observable<boolean> = this.hovered$.pipe(\n\t\t// we set the state to open here because we are about to open show the content\n\t\ttap((visible) => visible && this._contentService.setState('open')),\n\t\tswitchMap((visible) => {\n\t\t\t// we are delaying based on the configure-able input\n\t\t\treturn of(visible).pipe(delay(visible ? this.showDelay() : this.hideDelay()));\n\t\t}),\n\t\tswitchMap((visible) => {\n\t\t\t// don't do anything when we are in the process of showing the content\n\t\t\tif (visible) return of(visible);\n\t\t\t// we set the state to closed here to trigger any animations for the element leaving\n\t\t\tthis._contentService.setState('closed');\n\t\t\t// then delay to wait for the leaving animation to finish\n\t\t\treturn of(visible).pipe(delay(this.animationDelay()));\n\t\t}),\n\t\tdistinctUntilChanged(),\n\t\tshare(),\n\t\ttakeUntil(this._destroy$),\n\t);\n\n\tpublic showDelay = input(300);\n\tpublic hideDelay = input(500);\n\tpublic animationDelay = input(100);\n\tpublic sideOffset = input(5);\n\tpublic align = input<'top' | 'bottom'>('bottom');\n\n\tpublic readonly brnHoverCardTriggerFor = input<TemplateRef<unknown> | BrnHoverCardContentDirective | undefined>(\n\t\tundefined,\n\t);\n\tpublic readonly mutableBrnHoverCardTriggerFor = computed(() => signal(this.brnHoverCardTriggerFor()));\n\tprivate readonly _brnHoverCardTriggerForState = computed(() => this.mutableBrnHoverCardTriggerFor()());\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._brnHoverCardTriggerForState();\n\t\t\tuntracked(() => {\n\t\t\t\tif (value) {\n\t\t\t\t\tthis._contentService.setContent(value, this._vcr);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis._contentService.setConfig({ attachTo: this._el, align: this.align(), sideOffset: this.sideOffset() });\n\t\tthis.showing$.subscribe((isHovered) => {\n\t\t\tif (isHovered) {\n\t\t\t\tthis._contentService.show();\n\t\t\t} else {\n\t\t\t\tthis._contentService.hide();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t}\n}\n","import { type AfterContentInit, ChangeDetectionStrategy, Component, contentChild } from '@angular/core';\nimport {\n\tBrnHoverCardContentDirective,\n\tBrnHoverCardContentService,\n\tBrnHoverCardTriggerDirective,\n} from './brn-hover-card-content.service';\n\n@Component({\n\tselector: 'brn-hover-card',\n\tstandalone: true,\n\tproviders: [BrnHoverCardContentService],\n\ttemplate: `\n\t\t<ng-content />\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BrnHoverCardComponent implements AfterContentInit {\n\tprivate readonly _trigger = contentChild(BrnHoverCardTriggerDirective);\n\tprivate readonly _content = contentChild(BrnHoverCardContentDirective);\n\n\tpublic ngAfterContentInit() {\n\t\tif (!this._trigger() || !this._content()) return;\n\t\tthis._trigger()?.mutableBrnHoverCardTriggerFor().set(this._content());\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { BrnHoverCardContentDirective, BrnHoverCardTriggerDirective } from './lib/brn-hover-card-content.service';\nimport { BrnHoverCardComponent } from './lib/brn-hover-card.component';\n\nexport * from './lib/brn-hover-card-content.service';\nexport * from './lib/brn-hover-card.component';\nexport * from './lib/createHoverObservable';\n\nexport const BrnHoverCardImports = [\n\tBrnHoverCardComponent,\n\tBrnHoverCardContentDirective,\n\tBrnHoverCardTriggerDirective,\n] as const;\n\n@NgModule({\n\timports: [...BrnHoverCardImports],\n\texports: [...BrnHoverCardImports],\n})\nexport class BrnHoverCardModule {}\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 { InjectionToken, inject, input, numberAttribute, computed, Component, forwardRef, signal, booleanAttribute, model, output, NgModule } from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, input, numberAttribute, computed, ChangeDetectionStrategy, Component, forwardRef, signal, booleanAttribute, model, output, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/forms';
|
|
4
4
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
5
5
|
|
|
@@ -23,7 +23,7 @@ class BrnInputOtpSlotComponent {
|
|
|
23
23
|
@if (slot().hasFakeCaret) {
|
|
24
24
|
<ng-content />
|
|
25
25
|
}
|
|
26
|
-
`, isInline: true });
|
|
26
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
27
27
|
}
|
|
28
28
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnInputOtpSlotComponent, decorators: [{
|
|
29
29
|
type: Component,
|
|
@@ -40,6 +40,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
40
40
|
host: {
|
|
41
41
|
'[attr.data-active]': 'slot().isActive',
|
|
42
42
|
},
|
|
43
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
43
44
|
}]
|
|
44
45
|
}] });
|
|
45
46
|
|
|
@@ -157,7 +158,7 @@ class BrnInputOtpComponent {
|
|
|
157
158
|
(blur)="focused.set(false)"
|
|
158
159
|
/>
|
|
159
160
|
</div>
|
|
160
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
161
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
161
162
|
}
|
|
162
163
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnInputOtpComponent, decorators: [{
|
|
163
164
|
type: Component,
|
|
@@ -187,6 +188,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
187
188
|
'data-input-otp-container': 'true',
|
|
188
189
|
},
|
|
189
190
|
providers: [BRN_INPUT_OTP_VALUE_ACCESSOR, provideBrnInputOtp(BrnInputOtpComponent)],
|
|
191
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
190
192
|
}]
|
|
191
193
|
}] });
|
|
192
194
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-input-otp.mjs","sources":["../../../../libs/brain/input-otp/src/lib/brn-input-otp.token.ts","../../../../libs/brain/input-otp/src/lib/brn-input-otp-slot.component.ts","../../../../libs/brain/input-otp/src/lib/brn-input-otp.component.ts","../../../../libs/brain/input-otp/src/index.ts","../../../../libs/brain/input-otp/src/spartan-ng-brain-input-otp.ts"],"sourcesContent":["import { ExistingProvider, inject, InjectionToken, Type } from '@angular/core';\nimport { BrnInputOtpComponent } from './brn-input-otp.component';\n\nexport const BrnInputOtpToken = new InjectionToken<BrnInputOtpComponent>('BrnInputOtpToken');\n\nexport function injectBrnInputOtp(): BrnInputOtpComponent {\n\treturn inject(BrnInputOtpToken) as BrnInputOtpComponent;\n}\n\nexport function provideBrnInputOtp(inputOtp: Type<BrnInputOtpComponent>): ExistingProvider {\n\treturn { provide: BrnInputOtpToken, useExisting: inputOtp };\n}\n","import { NumberInput } from '@angular/cdk/coercion';\nimport { Component, computed, input, numberAttribute } from '@angular/core';\nimport { injectBrnInputOtp } from './brn-input-otp.token';\n\n@Component({\n\tselector: 'brn-input-otp-slot',\n\tstandalone: true,\n\ttemplate: `\n\t\t{{ slot().char }}\n\n\t\t@if (slot().hasFakeCaret) {\n\t\t\t<ng-content />\n\t\t}\n\t`,\n\thost: {\n\t\t'[attr.data-active]': 'slot().isActive',\n\t},\n})\nexport class BrnInputOtpSlotComponent {\n\t/** Access the input-otp component */\n\tprotected readonly inputOtp = injectBrnInputOtp();\n\n\tpublic readonly index = input.required<number, NumberInput>({ transform: numberAttribute });\n\n\tpublic readonly slot = computed(() => this.inputOtp.context()[this.index()]);\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n\tbooleanAttribute,\n\tComponent,\n\tcomputed,\n\tforwardRef,\n\tinput,\n\tmodel,\n\tnumberAttribute,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { provideBrnInputOtp } from './brn-input-otp.token';\n\nexport const BRN_INPUT_OTP_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnInputOtpComponent),\n\tmulti: true,\n};\n\nexport type InputMode = 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';\n\n@Component({\n\tselector: 'brn-input-otp',\n\timports: [FormsModule],\n\ttemplate: `\n\t\t<ng-content />\n\t\t<div [style]=\"containerStyles()\">\n\t\t\t<input\n\t\t\t\t[class]=\"inputClass()\"\n\t\t\t\tautocomplete=\"one-time-code\"\n\t\t\t\tdata-slot=\"input-otp\"\n\t\t\t\t[style]=\"inputStyles()\"\n\t\t\t\t[disabled]=\"state().disabled()\"\n\t\t\t\t[inputMode]=\"inputMode()\"\n\t\t\t\t[ngModel]=\"value()\"\n\t\t\t\t(input)=\"onInputChange($event)\"\n\t\t\t\t(paste)=\"onPaste($event)\"\n\t\t\t\t(focus)=\"focused.set(true)\"\n\t\t\t\t(blur)=\"focused.set(false)\"\n\t\t\t/>\n\t\t</div>\n\t`,\n\thost: {\n\t\t'[style]': 'hostStyles()',\n\t\t'data-input-otp-container': 'true',\n\t},\n\tproviders: [BRN_INPUT_OTP_VALUE_ACCESSOR, provideBrnInputOtp(BrnInputOtpComponent)],\n})\nexport class BrnInputOtpComponent implements ControlValueAccessor {\n\t/** Whether the input has focus. */\n\tprotected readonly focused = signal<boolean>(false);\n\n\tpublic readonly hostStyles = input<string>(\n\t\t'position: relative; cursor: text; user-select: none; pointer-events: none;',\n\t);\n\n\tpublic readonly inputStyles = input<string>(\n\t\t'position: absolute; inset: 0; width: 100%; height: 100%; display: flex; textAlign: left; opacity: 1; color: transparent; pointerEvents: all; background: transparent; caret-color: transparent; border: 0px solid transparent; outline: transparent solid 0px; box-shadow: none; line-height: 1; letter-spacing: -0.5em; font-family: monospace; font-variant-numeric: tabular-nums;',\n\t);\n\n\tpublic readonly containerStyles = input<string>('position: absolute; inset: 0; pointer-events: none;');\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The number of slots. */\n\tpublic readonly maxLength = input.required<number, NumberInput>({ transform: numberAttribute });\n\n\t/** Virtual keyboard appearance on mobile */\n\tpublic readonly inputMode = input<InputMode>('numeric');\n\n\tpublic readonly inputClass = input<string>('');\n\n\t/**\n\t * Defines how the pasted text should be transformed before saving to model/form.\n\t * Allows pasting text which contains extra characters like spaces, dashes, etc. and are longer than the maxLength.\n\t *\n\t * \"XXX-XXX\": (pastedText) => pastedText.replaceAll('-', '')\n\t * \"XXX XXX\": (pastedText) => pastedText.replaceAll(/\\s+/g, '')\n\t */\n\tpublic readonly transformPaste = input<(pastedText: string, maxLength: number) => string>((text) => text);\n\n\t/** The value controlling the input */\n\tpublic readonly value = model('');\n\n\tpublic readonly context = computed(() => {\n\t\tconst value = this.value();\n\t\tconst focused = this.focused();\n\t\tconst maxLength = this.maxLength();\n\t\tconst slots = Array.from({ length: this.maxLength() }).map((_, slotIndex) => {\n\t\t\tconst char = value[slotIndex] !== undefined ? value[slotIndex] : null;\n\n\t\t\tconst isActive =\n\t\t\t\tfocused && (value.length === slotIndex || (value.length === maxLength && slotIndex === maxLength - 1));\n\n\t\t\treturn {\n\t\t\t\tchar,\n\t\t\t\tisActive,\n\t\t\t\thasFakeCaret: isActive && value.length === slotIndex,\n\t\t\t};\n\t\t});\n\n\t\treturn slots;\n\t});\n\n\t/** Emitted when the input is complete, triggered through input or paste. */\n\tpublic readonly completed = output<string>();\n\n\tprotected readonly state = computed(() => ({\n\t\tdisabled: signal(this.disabled()),\n\t}));\n\n\tprotected _onChange?: ChangeFn<string>;\n\tprotected _onTouched?: TouchFn;\n\n\tprotected onInputChange(event: Event) {\n\t\tlet newValue = (event.target as HTMLInputElement).value;\n\t\tconst maxLength = this.maxLength();\n\n\t\tif (newValue.length > maxLength) {\n\t\t\t// Replace the last character when max length is exceeded\n\t\t\tnewValue = newValue.slice(0, maxLength - 1) + newValue.slice(-1);\n\t\t}\n\n\t\tthis.updateValue(newValue, maxLength);\n\t}\n\n\tprotected onPaste(event: ClipboardEvent) {\n\t\tevent.preventDefault();\n\t\tconst clipboardData = event.clipboardData?.getData('text/plain') || '';\n\n\t\tconst maxLength = this.maxLength();\n\n\t\tconst content = this.transformPaste()(clipboardData, maxLength);\n\t\tconst newValue = content.slice(0, maxLength);\n\n\t\tthis.updateValue(newValue, maxLength);\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\twriteValue(value: string | null): void {\n\t\t// optional FormControl is initialized with null value\n\t\tif (value === null) return;\n\n\t\tthis.updateValue(value, this.maxLength());\n\t}\n\n\tregisterOnChange(fn: ChangeFn<string>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.state().disabled.set(isDisabled);\n\t}\n\n\tprivate isCompleted(newValue: string, previousValue: string, maxLength: number) {\n\t\treturn newValue !== previousValue && previousValue.length < maxLength && newValue.length === maxLength;\n\t}\n\n\tprivate updateValue(newValue: string, maxLength: number) {\n\t\tconst previousValue = this.value();\n\n\t\tthis.value.set(newValue);\n\t\tthis._onChange?.(newValue);\n\n\t\tif (this.isCompleted(newValue, previousValue, maxLength)) {\n\t\t\tthis.completed.emit(newValue);\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { BrnInputOtpSlotComponent } from './lib/brn-input-otp-slot.component';\nimport { BrnInputOtpComponent } from './lib/brn-input-otp.component';\n\nexport * from './lib/brn-input-otp-slot.component';\nexport * from './lib/brn-input-otp.component';\n\n@NgModule({\n\timports: [BrnInputOtpComponent, BrnInputOtpSlotComponent],\n\texports: [BrnInputOtpComponent, BrnInputOtpSlotComponent],\n})\nexport class BrnInputOtpModule {}\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-input-otp.mjs","sources":["../../../../libs/brain/input-otp/src/lib/brn-input-otp.token.ts","../../../../libs/brain/input-otp/src/lib/brn-input-otp-slot.component.ts","../../../../libs/brain/input-otp/src/lib/brn-input-otp.component.ts","../../../../libs/brain/input-otp/src/index.ts","../../../../libs/brain/input-otp/src/spartan-ng-brain-input-otp.ts"],"sourcesContent":["import { ExistingProvider, inject, InjectionToken, Type } from '@angular/core';\nimport { BrnInputOtpComponent } from './brn-input-otp.component';\n\nexport const BrnInputOtpToken = new InjectionToken<BrnInputOtpComponent>('BrnInputOtpToken');\n\nexport function injectBrnInputOtp(): BrnInputOtpComponent {\n\treturn inject(BrnInputOtpToken) as BrnInputOtpComponent;\n}\n\nexport function provideBrnInputOtp(inputOtp: Type<BrnInputOtpComponent>): ExistingProvider {\n\treturn { provide: BrnInputOtpToken, useExisting: inputOtp };\n}\n","import { NumberInput } from '@angular/cdk/coercion';\nimport { ChangeDetectionStrategy, Component, computed, input, numberAttribute } from '@angular/core';\nimport { injectBrnInputOtp } from './brn-input-otp.token';\n\n@Component({\n\tselector: 'brn-input-otp-slot',\n\tstandalone: true,\n\ttemplate: `\n\t\t{{ slot().char }}\n\n\t\t@if (slot().hasFakeCaret) {\n\t\t\t<ng-content />\n\t\t}\n\t`,\n\thost: {\n\t\t'[attr.data-active]': 'slot().isActive',\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BrnInputOtpSlotComponent {\n\t/** Access the input-otp component */\n\tprotected readonly inputOtp = injectBrnInputOtp();\n\n\tpublic readonly index = input.required<number, NumberInput>({ transform: numberAttribute });\n\n\tpublic readonly slot = computed(() => this.inputOtp.context()[this.index()]);\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tforwardRef,\n\tinput,\n\tmodel,\n\tnumberAttribute,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { provideBrnInputOtp } from './brn-input-otp.token';\n\nexport const BRN_INPUT_OTP_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnInputOtpComponent),\n\tmulti: true,\n};\n\nexport type InputMode = 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';\n\n@Component({\n\tselector: 'brn-input-otp',\n\timports: [FormsModule],\n\ttemplate: `\n\t\t<ng-content />\n\t\t<div [style]=\"containerStyles()\">\n\t\t\t<input\n\t\t\t\t[class]=\"inputClass()\"\n\t\t\t\tautocomplete=\"one-time-code\"\n\t\t\t\tdata-slot=\"input-otp\"\n\t\t\t\t[style]=\"inputStyles()\"\n\t\t\t\t[disabled]=\"state().disabled()\"\n\t\t\t\t[inputMode]=\"inputMode()\"\n\t\t\t\t[ngModel]=\"value()\"\n\t\t\t\t(input)=\"onInputChange($event)\"\n\t\t\t\t(paste)=\"onPaste($event)\"\n\t\t\t\t(focus)=\"focused.set(true)\"\n\t\t\t\t(blur)=\"focused.set(false)\"\n\t\t\t/>\n\t\t</div>\n\t`,\n\thost: {\n\t\t'[style]': 'hostStyles()',\n\t\t'data-input-otp-container': 'true',\n\t},\n\tproviders: [BRN_INPUT_OTP_VALUE_ACCESSOR, provideBrnInputOtp(BrnInputOtpComponent)],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BrnInputOtpComponent implements ControlValueAccessor {\n\t/** Whether the input has focus. */\n\tprotected readonly focused = signal<boolean>(false);\n\n\tpublic readonly hostStyles = input<string>(\n\t\t'position: relative; cursor: text; user-select: none; pointer-events: none;',\n\t);\n\n\tpublic readonly inputStyles = input<string>(\n\t\t'position: absolute; inset: 0; width: 100%; height: 100%; display: flex; textAlign: left; opacity: 1; color: transparent; pointerEvents: all; background: transparent; caret-color: transparent; border: 0px solid transparent; outline: transparent solid 0px; box-shadow: none; line-height: 1; letter-spacing: -0.5em; font-family: monospace; font-variant-numeric: tabular-nums;',\n\t);\n\n\tpublic readonly containerStyles = input<string>('position: absolute; inset: 0; pointer-events: none;');\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The number of slots. */\n\tpublic readonly maxLength = input.required<number, NumberInput>({ transform: numberAttribute });\n\n\t/** Virtual keyboard appearance on mobile */\n\tpublic readonly inputMode = input<InputMode>('numeric');\n\n\tpublic readonly inputClass = input<string>('');\n\n\t/**\n\t * Defines how the pasted text should be transformed before saving to model/form.\n\t * Allows pasting text which contains extra characters like spaces, dashes, etc. and are longer than the maxLength.\n\t *\n\t * \"XXX-XXX\": (pastedText) => pastedText.replaceAll('-', '')\n\t * \"XXX XXX\": (pastedText) => pastedText.replaceAll(/\\s+/g, '')\n\t */\n\tpublic readonly transformPaste = input<(pastedText: string, maxLength: number) => string>((text) => text);\n\n\t/** The value controlling the input */\n\tpublic readonly value = model('');\n\n\tpublic readonly context = computed(() => {\n\t\tconst value = this.value();\n\t\tconst focused = this.focused();\n\t\tconst maxLength = this.maxLength();\n\t\tconst slots = Array.from({ length: this.maxLength() }).map((_, slotIndex) => {\n\t\t\tconst char = value[slotIndex] !== undefined ? value[slotIndex] : null;\n\n\t\t\tconst isActive =\n\t\t\t\tfocused && (value.length === slotIndex || (value.length === maxLength && slotIndex === maxLength - 1));\n\n\t\t\treturn {\n\t\t\t\tchar,\n\t\t\t\tisActive,\n\t\t\t\thasFakeCaret: isActive && value.length === slotIndex,\n\t\t\t};\n\t\t});\n\n\t\treturn slots;\n\t});\n\n\t/** Emitted when the input is complete, triggered through input or paste. */\n\tpublic readonly completed = output<string>();\n\n\tprotected readonly state = computed(() => ({\n\t\tdisabled: signal(this.disabled()),\n\t}));\n\n\tprotected _onChange?: ChangeFn<string>;\n\tprotected _onTouched?: TouchFn;\n\n\tprotected onInputChange(event: Event) {\n\t\tlet newValue = (event.target as HTMLInputElement).value;\n\t\tconst maxLength = this.maxLength();\n\n\t\tif (newValue.length > maxLength) {\n\t\t\t// Replace the last character when max length is exceeded\n\t\t\tnewValue = newValue.slice(0, maxLength - 1) + newValue.slice(-1);\n\t\t}\n\n\t\tthis.updateValue(newValue, maxLength);\n\t}\n\n\tprotected onPaste(event: ClipboardEvent) {\n\t\tevent.preventDefault();\n\t\tconst clipboardData = event.clipboardData?.getData('text/plain') || '';\n\n\t\tconst maxLength = this.maxLength();\n\n\t\tconst content = this.transformPaste()(clipboardData, maxLength);\n\t\tconst newValue = content.slice(0, maxLength);\n\n\t\tthis.updateValue(newValue, maxLength);\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\twriteValue(value: string | null): void {\n\t\t// optional FormControl is initialized with null value\n\t\tif (value === null) return;\n\n\t\tthis.updateValue(value, this.maxLength());\n\t}\n\n\tregisterOnChange(fn: ChangeFn<string>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.state().disabled.set(isDisabled);\n\t}\n\n\tprivate isCompleted(newValue: string, previousValue: string, maxLength: number) {\n\t\treturn newValue !== previousValue && previousValue.length < maxLength && newValue.length === maxLength;\n\t}\n\n\tprivate updateValue(newValue: string, maxLength: number) {\n\t\tconst previousValue = this.value();\n\n\t\tthis.value.set(newValue);\n\t\tthis._onChange?.(newValue);\n\n\t\tif (this.isCompleted(newValue, previousValue, maxLength)) {\n\t\t\tthis.completed.emit(newValue);\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { BrnInputOtpSlotComponent } from './lib/brn-input-otp-slot.component';\nimport { BrnInputOtpComponent } from './lib/brn-input-otp.component';\n\nexport * from './lib/brn-input-otp-slot.component';\nexport * from './lib/brn-input-otp.component';\n\n@NgModule({\n\timports: [BrnInputOtpComponent, BrnInputOtpSlotComponent],\n\texports: [BrnInputOtpComponent, BrnInputOtpSlotComponent],\n})\nexport class BrnInputOtpModule {}\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 { InjectionToken, inject, Component, input, numberAttribute, computed, NgModule } from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, ChangeDetectionStrategy, Component, input, numberAttribute, computed, NgModule } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
const BrnProgressToken = new InjectionToken('BrnProgressComponent');
|
|
5
5
|
function provideBrnProgress(progress) {
|
|
@@ -12,7 +12,7 @@ function injectBrnProgress() {
|
|
|
12
12
|
class BrnProgressIndicatorComponent {
|
|
13
13
|
progress = injectBrnProgress();
|
|
14
14
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnProgressIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
-
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: BrnProgressIndicatorComponent, isStandalone: true, selector: "brn-progress-indicator", host: { properties: { "attr.data-state": "progress.state()", "attr.data-value": "progress.value()", "attr.data-max": "progress.max()" } }, ngImport: i0, template: '', isInline: true });
|
|
15
|
+
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: BrnProgressIndicatorComponent, isStandalone: true, selector: "brn-progress-indicator", host: { properties: { "attr.data-state": "progress.state()", "attr.data-value": "progress.value()", "attr.data-max": "progress.max()" } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
16
16
|
}
|
|
17
17
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnProgressIndicatorComponent, decorators: [{
|
|
18
18
|
type: Component,
|
|
@@ -25,6 +25,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
25
25
|
'[attr.data-value]': 'progress.value()',
|
|
26
26
|
'[attr.data-max]': 'progress.max()',
|
|
27
27
|
},
|
|
28
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
28
29
|
}]
|
|
29
30
|
}] });
|
|
30
31
|
|
|
@@ -63,7 +64,7 @@ class BrnProgressComponent {
|
|
|
63
64
|
}
|
|
64
65
|
}
|
|
65
66
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
66
|
-
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.8", type: BrnProgressComponent, isStandalone: true, selector: "brn-progress", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, getValueLabel: { classPropertyName: "getValueLabel", publicName: "getValueLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "progressbar" }, properties: { "attr.aria-valuemax": "max()", "attr.aria-valuemin": "0", "attr.aria-valuenow": "value()", "attr.aria-valuetext": "label()", "attr.data-state": "state()", "attr.data-value": "value()", "attr.data-max": "max()" } }, providers: [provideBrnProgress(BrnProgressComponent)], exportAs: ["brnProgress"], usesOnChanges: true, ngImport: i0, template: '<ng-content/>', isInline: true });
|
|
67
|
+
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.8", type: BrnProgressComponent, isStandalone: true, selector: "brn-progress", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, getValueLabel: { classPropertyName: "getValueLabel", publicName: "getValueLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "progressbar" }, properties: { "attr.aria-valuemax": "max()", "attr.aria-valuemin": "0", "attr.aria-valuenow": "value()", "attr.aria-valuetext": "label()", "attr.data-state": "state()", "attr.data-value": "value()", "attr.data-max": "max()" } }, providers: [provideBrnProgress(BrnProgressComponent)], exportAs: ["brnProgress"], usesOnChanges: true, ngImport: i0, template: '<ng-content/>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
67
68
|
}
|
|
68
69
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnProgressComponent, decorators: [{
|
|
69
70
|
type: Component,
|
|
@@ -83,6 +84,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
83
84
|
'[attr.data-value]': 'value()',
|
|
84
85
|
'[attr.data-max]': 'max()',
|
|
85
86
|
},
|
|
87
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
86
88
|
}]
|
|
87
89
|
}] });
|
|
88
90
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-progress.mjs","sources":["../../../../libs/brain/progress/src/lib/brn-progress.token.ts","../../../../libs/brain/progress/src/lib/brn-progress-indicator.component.ts","../../../../libs/brain/progress/src/lib/brn-progress.component.ts","../../../../libs/brain/progress/src/index.ts","../../../../libs/brain/progress/src/spartan-ng-brain-progress.ts"],"sourcesContent":["import { ExistingProvider, InjectionToken, Type, inject } from '@angular/core';\nimport type { BrnProgressComponent } from './brn-progress.component';\n\nconst BrnProgressToken = new InjectionToken<BrnProgressComponent>('BrnProgressComponent');\n\nexport function provideBrnProgress(progress: Type<BrnProgressComponent>): ExistingProvider {\n\treturn { provide: BrnProgressToken, useExisting: progress };\n}\n\nexport function injectBrnProgress(): BrnProgressComponent {\n\treturn inject(BrnProgressToken);\n}\n","import { Component } from '@angular/core';\nimport { injectBrnProgress } from './brn-progress.token';\n\n@Component({\n\tselector: 'brn-progress-indicator',\n\tstandalone: true,\n\ttemplate: '',\n\thost: {\n\t\t'[attr.data-state]': 'progress.state()',\n\t\t'[attr.data-value]': 'progress.value()',\n\t\t'[attr.data-max]': 'progress.max()',\n\t},\n})\nexport class BrnProgressIndicatorComponent {\n\tprotected readonly progress = injectBrnProgress();\n}\n","import { type NumberInput } from '@angular/cdk/coercion';\nimport {
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-progress.mjs","sources":["../../../../libs/brain/progress/src/lib/brn-progress.token.ts","../../../../libs/brain/progress/src/lib/brn-progress-indicator.component.ts","../../../../libs/brain/progress/src/lib/brn-progress.component.ts","../../../../libs/brain/progress/src/index.ts","../../../../libs/brain/progress/src/spartan-ng-brain-progress.ts"],"sourcesContent":["import { ExistingProvider, InjectionToken, Type, inject } from '@angular/core';\nimport type { BrnProgressComponent } from './brn-progress.component';\n\nconst BrnProgressToken = new InjectionToken<BrnProgressComponent>('BrnProgressComponent');\n\nexport function provideBrnProgress(progress: Type<BrnProgressComponent>): ExistingProvider {\n\treturn { provide: BrnProgressToken, useExisting: progress };\n}\n\nexport function injectBrnProgress(): BrnProgressComponent {\n\treturn inject(BrnProgressToken);\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { injectBrnProgress } from './brn-progress.token';\n\n@Component({\n\tselector: 'brn-progress-indicator',\n\tstandalone: true,\n\ttemplate: '',\n\thost: {\n\t\t'[attr.data-state]': 'progress.state()',\n\t\t'[attr.data-value]': 'progress.value()',\n\t\t'[attr.data-max]': 'progress.max()',\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BrnProgressIndicatorComponent {\n\tprotected readonly progress = injectBrnProgress();\n}\n","import { type NumberInput } from '@angular/cdk/coercion';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tOnChanges,\n\tSimpleChanges,\n\tcomputed,\n\tinput,\n\tnumberAttribute,\n} from '@angular/core';\nimport { provideBrnProgress } from './brn-progress.token';\n\n@Component({\n\tselector: 'brn-progress',\n\tstandalone: true,\n\ttemplate: '<ng-content/>',\n\texportAs: 'brnProgress',\n\tproviders: [provideBrnProgress(BrnProgressComponent)],\n\thost: {\n\t\trole: 'progressbar',\n\t\t'[attr.aria-valuemax]': 'max()',\n\t\t'[attr.aria-valuemin]': '0',\n\t\t'[attr.aria-valuenow]': 'value()',\n\t\t'[attr.aria-valuetext]': 'label()',\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.data-value]': 'value()',\n\t\t'[attr.data-max]': 'max()',\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BrnProgressComponent implements OnChanges {\n\tpublic readonly value = input<number | null | undefined, NumberInput>(undefined, {\n\t\ttransform: (value) => (value === undefined || value === null ? undefined : Number(value)),\n\t});\n\tpublic readonly max = input<number, NumberInput>(100, { transform: numberAttribute });\n\tpublic readonly getValueLabel = input<BrnProgressLabelFn>((value, max) => `${Math.round((value / max) * 100)}%`);\n\tprotected readonly label = computed(() => {\n\t\tconst value = this.value();\n\t\treturn value === null || value === undefined ? undefined : this.getValueLabel()(value, this.max());\n\t});\n\n\tprotected readonly state = computed(() => {\n\t\tconst value = this.value();\n\t\tconst max = this.max();\n\n\t\treturn value === null || value === undefined ? 'indeterminate' : value === max ? 'complete' : 'loading';\n\t});\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif ('value' in changes || 'max' in changes) {\n\t\t\tthis.validate();\n\t\t}\n\t}\n\n\tprivate validate(): void {\n\t\t// validate that the value is within the bounds of the max\n\t\tconst value = this.value();\n\t\tconst max = this.max();\n\n\t\tif (value === null || value === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (value > max || value < 0) {\n\t\t\tthrow Error('Value must be 0 or greater and less or equal to max');\n\t\t}\n\n\t\tif (max < 0) {\n\t\t\tthrow Error('max must be greater than 0');\n\t\t}\n\t}\n}\n\nexport type BrnProgressLabelFn = (value: number, max: number) => string;\n","import { NgModule } from '@angular/core';\n\nimport { BrnProgressIndicatorComponent } from './lib/brn-progress-indicator.component';\nimport { BrnProgressComponent } from './lib/brn-progress.component';\nexport { injectBrnProgress } from './lib/brn-progress.token';\n\nexport * from './lib/brn-progress-indicator.component';\nexport * from './lib/brn-progress.component';\n\nexport const BrnProgressImports = [BrnProgressComponent, BrnProgressIndicatorComponent] as const;\n\n@NgModule({\n\timports: [...BrnProgressImports],\n\texports: [...BrnProgressImports],\n})\nexport class BrnProgressModule {}\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 { InjectionToken, inject, ElementRef, input, booleanAttribute, computed, signal, Directive, DestroyRef, Injector, viewChild, contentChild, contentChildren, effect, afterNextRender, untracked, ChangeDetectionStrategy, Component, TemplateRef, PLATFORM_ID, numberAttribute, model, NgModule } from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, ElementRef, input, booleanAttribute, computed, signal, Directive, DestroyRef, Injector, viewChild, contentChild, contentChildren, effect, afterNextRender, untracked, ChangeDetectionStrategy, Component, TemplateRef, ChangeDetectorRef, PLATFORM_ID, numberAttribute, model, NgModule } from '@angular/core';
|
|
3
3
|
import { NgTemplateOutlet, isPlatformBrowser } from '@angular/common';
|
|
4
4
|
import { takeUntilDestroyed, toSignal, toObservable } from '@angular/core/rxjs-interop';
|
|
5
5
|
import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
|
|
@@ -364,6 +364,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
364
364
|
|
|
365
365
|
class BrnSelectTriggerDirective {
|
|
366
366
|
_elementRef = inject(ElementRef);
|
|
367
|
+
/** Access the change detector */
|
|
368
|
+
_changeDetector = inject(ChangeDetectorRef);
|
|
367
369
|
_select = injectBrnSelect();
|
|
368
370
|
_ngControl = inject(NgControl, { optional: true });
|
|
369
371
|
_platform = inject(PLATFORM_ID);
|
|
@@ -378,9 +380,17 @@ class BrnSelectTriggerDirective {
|
|
|
378
380
|
return this._select.labelId();
|
|
379
381
|
});
|
|
380
382
|
_resizeObserver;
|
|
383
|
+
_statusChangedSubscription;
|
|
381
384
|
constructor() {
|
|
382
385
|
this._select.trigger.set(this);
|
|
383
386
|
}
|
|
387
|
+
ngOnInit() {
|
|
388
|
+
if (this._ngControl) {
|
|
389
|
+
this._statusChangedSubscription = this._ngControl.statusChanges?.subscribe(() => {
|
|
390
|
+
this._changeDetector.markForCheck();
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
}
|
|
384
394
|
ngAfterViewInit() {
|
|
385
395
|
this._select.triggerWidth.set(this._elementRef.nativeElement.offsetWidth);
|
|
386
396
|
// if we are on the client, listen for element resize events
|
|
@@ -391,6 +401,7 @@ class BrnSelectTriggerDirective {
|
|
|
391
401
|
}
|
|
392
402
|
ngOnDestroy() {
|
|
393
403
|
this._resizeObserver?.disconnect();
|
|
404
|
+
this._statusChangedSubscription?.unsubscribe();
|
|
394
405
|
}
|
|
395
406
|
focus() {
|
|
396
407
|
this._elementRef.nativeElement.focus();
|