@ngbase/adk 0.1.18 → 0.1.19
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/ngbase-adk-portal.mjs +5 -0
- package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
- package/fesm2022/ngbase-adk-sidenav.mjs +2 -2
- package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tour.mjs +0 -5
- package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
- package/package.json +1 -1
- package/schematics/components/files/accordion/accordion.ts.template +12 -10
- package/schematics/components/files/badge/badge-llm.md.template +2 -2
- package/schematics/components/files/badge/badge.ts.template +29 -9
- package/schematics/components/files/card/card.ts.template +1 -1
- package/schematics/components/files/checkbox/checkbox.ts.template +2 -5
- package/schematics/components/files/dialog/dialog.ts.template +0 -7
- package/schematics/components/files/drawer/drawer.ts.template +0 -6
- package/schematics/components/files/form-field/form-field.ts.template +10 -2
- package/schematics/components/files/inline-edit/inline-edit.ts.template +3 -1
- package/schematics/components/files/pagination/pagination.ts.template +2 -2
- package/schematics/components/files/picasa/picasa-base.component.ts.template +0 -6
- package/schematics/components/files/popover/popover.ts.template +0 -6
- package/schematics/components/files/selectable/selectable.ts.template +1 -1
- package/schematics/components/files/sheet/sheet.ts.template +0 -6
- package/schematics/components/files/sidenav/sidenav.ts.template +62 -1
- package/schematics/components/files/stepper/stepper-llm.md.template +7 -0
- package/schematics/components/files/table/table-llm.md.template +14 -2
- package/schematics/components/files/table/table.ts.template +1 -2
- package/types/ngbase-adk-portal.d.ts +1 -0
- package/types/ngbase-adk-tour.d.ts +0 -1
|
@@ -61,6 +61,11 @@ class BaseDialog {
|
|
|
61
61
|
// which triggers when the leave animation completes
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
+
onAnimationEnd(event) {
|
|
65
|
+
if (event.target === event.currentTarget) {
|
|
66
|
+
this.animationDone();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
64
69
|
onOpen() {
|
|
65
70
|
// make the body not scrollable and add padding to the right
|
|
66
71
|
// calculate the padding based on the scrollbar width
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-portal.mjs","sources":["../../../projects/adk/portal/dialog-ref.ts","../../../projects/adk/portal/portal-close.directive.ts","../../../projects/adk/portal/portal.component.ts","../../../projects/adk/portal/portal.service.ts","../../../projects/adk/portal/portal-base.service.ts","../../../projects/adk/portal/public-api.ts","../../../projects/adk/portal/ngbase-adk-portal.ts"],"sourcesContent":["import {\n ElementRef,\n InjectionToken,\n Injector,\n TemplateRef,\n Type,\n ViewContainerRef,\n inject,\n signal,\n DOCUMENT,\n} from '@angular/core';\nimport { Subject, first } from 'rxjs';\n\nexport type DialogInput<T = any> = Type<T> | TemplateRef<any>;\n\nexport abstract class BaseDialog {\n dialogRef = inject(DialogRef);\n document = inject(DOCUMENT);\n el = inject(ElementRef);\n\n // Subclasses must provide the ViewContainerRef via viewChild signal\n abstract readonly contentContainer: () => ViewContainerRef | undefined;\n\n get vcRef(): ViewContainerRef {\n return this.contentContainer()!;\n }\n\n target = signal<HTMLElement | null>(null);\n\n // Track animation state: false = waiting for enter, true = enter complete\n private enterAnimationDone = false;\n private isFirst = true;\n private currentActiveElement = new WeakRef(this.document.activeElement as HTMLElement);\n\n // Signal to track closing state for CSS animations\n readonly closing = signal(false);\n\n // Override in subclasses to indicate if animations are used\n // If false, close() will complete immediately without waiting for animationDone()\n protected readonly hasAnimations: boolean = false;\n\n constructor() {\n this.dialogRef.setBaseDialog(this);\n this.onOpen();\n // If no animations, mark enter as done immediately\n if (!this.hasAnimations) {\n this.enterAnimationDone = true;\n }\n }\n\n setOptions(_: DialogOptions): void {}\n\n close() {\n // Only start closing if enter animation is complete\n if (this.enterAnimationDone && !this.closing()) {\n this.closing.set(true);\n // If no animations, complete close immediately\n if (!this.hasAnimations) {\n this.dialogRef._completeClose();\n this.onClose();\n }\n // Otherwise, the actual close will happen after animationDone is called\n // which triggers when the leave animation completes\n }\n }\n\n animationDone = () => {\n if (!this.enterAnimationDone) {\n // First animation end = enter animation complete\n this.enterAnimationDone = true;\n } else if (this.closing()) {\n // Second animation end while closing = leave animation complete\n this.dialogRef._completeClose();\n this.onClose();\n }\n };\n\n private onOpen() {\n // make the body not scrollable and add padding to the right\n // calculate the padding based on the scrollbar width\n this.isFirst = this.document.body.style.overflow !== 'hidden';\n if (this.isFirst) {\n const padding = window.innerWidth - this.document.body.clientWidth;\n this.document.body.style.paddingRight = `${padding}px`;\n this.document.body.style.overflow = 'hidden';\n }\n }\n\n getTarget(): HTMLElement {\n return this.target()!;\n }\n\n onClose = () => {\n if (this.isFirst) {\n this.document.body.style.paddingRight = '';\n this.document.body.style.overflow = '';\n }\n const target =\n this.dialogRef.options.afterFocusEl || this.getTarget() || this.currentActiveElement.deref();\n target?.focus();\n };\n}\n\nexport interface CloseOptions {\n closeParent?: boolean;\n}\n\nexport class DialogRef<T = any> {\n data = this.options.data;\n private baseDialog: BaseDialog | null = null;\n private pendingCloseData: any = undefined;\n private _isClosing = false;\n\n // Expose closing state for consumers who need to check\n get isClosing(): boolean {\n return this._isClosing;\n }\n\n private onDestroySource = new Subject();\n onDestroy = this.onDestroySource.asObservable().pipe(first());\n\n private afterClosedSource = new Subject<any>();\n afterClosed = this.afterClosedSource.asObservable().pipe(first());\n\n events = new Subject<'created'>();\n\n // Parent-child relationship\n private _parent: DialogRef | null = null;\n private _children = new Set<DialogRef>();\n\n get parent(): DialogRef | null {\n return this._parent;\n }\n\n get children(): ReadonlySet<DialogRef> {\n return this._children;\n }\n\n get root(): DialogRef {\n return this._parent?.root ?? this;\n }\n\n constructor(\n public options: DialogOptions<T>,\n private destroyParent: VoidFunction,\n private closeAllFn: VoidFunction,\n private animation = true,\n ) {\n // Register with parent if provided\n if (options.parent) {\n this._setParent(options.parent);\n }\n }\n\n _setParent(parent: DialogRef) {\n this._parent = parent;\n parent._addChild(this);\n }\n\n _addChild(child: DialogRef) {\n this._children.add(child);\n }\n\n _removeChild(child: DialogRef) {\n this._children.delete(child);\n }\n\n // Set the BaseDialog reference so we can trigger animations\n setBaseDialog(baseDialog: BaseDialog) {\n this.baseDialog = baseDialog;\n }\n\n close = (data?: any, options?: CloseOptions) => {\n // Guard: do nothing if already closing - makes close() idempotent\n if (this._isClosing) {\n return;\n }\n\n this._isClosing = true;\n\n // 1. Close all children first (if closeChildrenOnClose is true)\n if (this.options.closeChildrenOnClose !== false) {\n // Create a copy since children will remove themselves during close\n [...this._children].forEach(child => child.close());\n }\n\n // 2. If we have a BaseDialog and animation is enabled, trigger the leave animation\n if (this.baseDialog && this.animation) {\n this.pendingCloseData = data;\n this.baseDialog.close();\n } else {\n // No animation, close immediately\n this.afterClosedSource.next(data);\n this.destroy();\n }\n\n // 3. If closeParent is true, close parent after self (child → parent order)\n // This ensures children animate out before parents, maintaining visual hierarchy\n if (options?.closeParent && this._parent) {\n this._parent.close(undefined, { closeParent: true });\n }\n };\n\n // Called by BaseDialog.animationDone() after leave animation completes\n _completeClose = () => {\n this.afterClosedSource.next(this.pendingCloseData);\n this.destroy();\n };\n\n closeAll() {\n this.closeAllFn();\n }\n\n destroy() {\n // Remove self from parent's children\n this._parent?._removeChild(this);\n\n this.afterClosedSource.complete();\n this.onDestroySource.next(false);\n this.destroyParent();\n }\n}\n\nexport class DialogTestingRef {\n close() {}\n}\n\nexport class DialogOptions<T = any> {\n backdrop? = true;\n backdropColor? = true;\n hideOverlay? = false;\n data?: T;\n // isSidePopup? = false;\n title?: string;\n fullWindow?: boolean;\n minWidth?: string;\n minHeight?: string;\n width?: string;\n height?: string;\n maxWidth?: string;\n maxHeight?: string;\n classNames?: string[] = [];\n header?: boolean;\n disableClose? = false;\n ayId?: string;\n focusTrap? = true;\n afterFocusEl?: HTMLElement;\n\n // Parent-child relationship options\n parent?: DialogRef;\n closeChildrenOnClose? = true;\n}\n\nexport const DIALOG_INJ = new InjectionToken('dialogInj');\n\nexport function createInj(parent: Injector, data: any, diaRef: DialogRef) {\n return Injector.create({\n providers: [\n { provide: DIALOG_INJ, useValue: data },\n { provide: DialogRef, useValue: diaRef },\n ],\n parent,\n name: 'dialogInj',\n });\n}\n\nexport const DialogTestProviders = [\n { provide: DIALOG_INJ, useValue: {} },\n { provide: DialogRef, useValue: null },\n];\n","import { Directive, inject, input } from '@angular/core';\nimport { DialogRef } from './dialog-ref';\n\n@Directive({\n selector: '[ngbPortalClose]',\n host: {\n '(click)': 'close()',\n },\n})\nexport class NgbPortalClose {\n readonly dialogRef = inject(DialogRef);\n readonly ngbPortalClose = input();\n\n close(data = this.ngbPortalClose()) {\n this.dialogRef.close(data);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewContainerRef, viewChild } from '@angular/core';\n\n@Component({\n selector: 'ngb-portal',\n template: `<ng-container #myDialog />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Portal {\n myDialog = viewChild('myDialog', { read: ViewContainerRef });\n}\n","import {\n Injectable,\n Injector,\n ApplicationRef,\n Type,\n ComponentRef,\n inject,\n EnvironmentInjector,\n createComponent,\n DOCUMENT,\n} from '@angular/core';\nimport { Portal } from './portal.component';\n\n@Injectable({ providedIn: 'root' })\nexport class PortalService {\n private mainContainer?: ComponentRef<Portal>;\n private document = inject(DOCUMENT);\n private appRef = inject(ApplicationRef);\n private environmentInjector = inject(EnvironmentInjector);\n\n private trackElements = new Map<string, ComponentRef<any>[]>();\n\n constructor() {}\n\n private componentCreator() {\n this.mainContainer ??= this.appendComponentToBody(Portal);\n return this.mainContainer!.instance.myDialog()!;\n }\n\n appendComponentToBody<T>(component: Type<T>) {\n // 1. Create a component reference from the component\n const componentRef = createComponent(component, {\n environmentInjector: this.environmentInjector,\n });\n\n // 2. append the component to the body\n this.document.body.appendChild(componentRef.location.nativeElement);\n\n // 3. Attach component to the appRef so that it's inside the ng component tree\n this.appRef.attachView(componentRef.hostView);\n return componentRef;\n }\n\n create<T>(component: Type<T>, injector: Injector, container: string) {\n const d = this.componentCreator().createComponent(component, { injector });\n if (!this.trackElements.has(container)) {\n this.trackElements.set(container, []);\n }\n this.trackElements.get(container)!.push(d);\n return d;\n }\n\n delete<T>(container: string, component: ComponentRef<T>) {\n component.destroy();\n const elements = this.trackElements.get(container);\n if (elements) {\n const index = elements.indexOf(component);\n elements.splice(index, 1);\n }\n }\n\n clear(container: string) {\n if (this.trackElements.has(container)) {\n const elements = this.trackElements.get(container);\n // Trigger close on each component to play leave animations\n // The BaseDialog.close() method will handle the animation and eventual destruction\n elements?.forEach(c => c.instance?.close?.());\n }\n }\n}\n","import {\n ComponentRef,\n EmbeddedViewRef,\n Injector,\n TemplateRef,\n Type,\n ViewContainerRef,\n inject,\n signal,\n} from '@angular/core';\nimport { keyMap } from '@ngbase/adk/keys';\nimport { BaseDialog, DialogInput, DialogOptions, DialogRef, createInj } from './dialog-ref';\nimport { PortalService } from './portal.service';\n\nexport function basePortal<U>(name: string, baseComponent: Type<U>) {\n const NAME = name;\n const portal = inject(PortalService);\n const injector = inject(Injector);\n\n function updateBaseComponent(component: Type<U>) {\n baseComponent = component;\n }\n\n function open<T>(\n component?: DialogInput<T>,\n callback?: (comp: ComponentRef<U>, opt: DialogOptions) => void,\n opt?: DialogOptions,\n animation = true,\n parentComponent?: Type<U>,\n ) {\n const options = { ...new DialogOptions(), ...opt };\n const diaRef = new DialogRef(options, destroy, closeAll, animation);\n const childInjector = createInj(injector, options.data, diaRef);\n const parent = portal.create(parentComponent || baseComponent, childInjector, NAME);\n\n // set options\n callback?.(parent, options);\n\n // close on backdrop click\n let sub: () => void | undefined;\n const childSignal = signal<ComponentRef<any> | EmbeddedViewRef<any> | undefined>(undefined);\n\n if (component === undefined) {\n return { diaRef, parent, instance: null, childSignal };\n }\n\n const parentInstance = parent.instance as BaseDialog;\n\n // close on esc - call parentInstance.close() to trigger leave animation\n if (!options.disableClose) {\n sub = keyMap('esc', () => parentInstance.close(), { injector, stop: true });\n }\n\n function destroy() {\n portal.delete(NAME, parent);\n sub?.();\n }\n\n // Trigger change detection to initialize viewChild signals\n parent.changeDetectorRef.detectChanges();\n\n // VCR is now available after detectChanges\n const vcRef = parentInstance.vcRef;\n const child = createChild(component, vcRef);\n diaRef.events.next('created');\n childSignal.set(child);\n\n function replace(component: DialogInput<T>) {\n vcRef.clear();\n createChild(component, vcRef);\n }\n\n function createChild(component: DialogInput<any>, vcRef: ViewContainerRef) {\n // for template type\n if (component instanceof TemplateRef) {\n return vcRef.createEmbeddedView(\n component,\n { $implicit: options.data, ...(Array.isArray(options.data) ? {} : options.data) },\n { injector: parent.injector },\n );\n }\n // for component type\n return vcRef.createComponent(component, {\n injector: parent.injector,\n });\n }\n\n return { diaRef, parent, replace, childSignal };\n }\n\n function closeAll() {\n // Close each dialog properly to trigger leave animations\n portal.clear(NAME);\n }\n return { open, closeAll, updateBaseComponent };\n}\n","/*\n * Public API Surface of portal\n */\n\nexport * from './portal-close.directive';\nexport {\n BaseDialog,\n type CloseOptions,\n DIALOG_INJ,\n type DialogInput,\n DialogOptions,\n DialogRef,\n createInj,\n} from './dialog-ref';\nexport * from './portal-base.service';\nexport * from './portal.component';\nexport * from './portal.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngbase-adk-portal.mjs","sources":["../../../projects/adk/portal/dialog-ref.ts","../../../projects/adk/portal/portal-close.directive.ts","../../../projects/adk/portal/portal.component.ts","../../../projects/adk/portal/portal.service.ts","../../../projects/adk/portal/portal-base.service.ts","../../../projects/adk/portal/public-api.ts","../../../projects/adk/portal/ngbase-adk-portal.ts"],"sourcesContent":["import {\n ElementRef,\n InjectionToken,\n Injector,\n TemplateRef,\n Type,\n ViewContainerRef,\n inject,\n signal,\n DOCUMENT,\n} from '@angular/core';\nimport { Subject, first } from 'rxjs';\n\nexport type DialogInput<T = any> = Type<T> | TemplateRef<any>;\n\nexport abstract class BaseDialog {\n dialogRef = inject(DialogRef);\n document = inject(DOCUMENT);\n el = inject(ElementRef);\n\n // Subclasses must provide the ViewContainerRef via viewChild signal\n abstract readonly contentContainer: () => ViewContainerRef | undefined;\n\n get vcRef(): ViewContainerRef {\n return this.contentContainer()!;\n }\n\n target = signal<HTMLElement | null>(null);\n\n // Track animation state: false = waiting for enter, true = enter complete\n private enterAnimationDone = false;\n private isFirst = true;\n private currentActiveElement = new WeakRef(this.document.activeElement as HTMLElement);\n\n // Signal to track closing state for CSS animations\n readonly closing = signal(false);\n\n // Override in subclasses to indicate if animations are used\n // If false, close() will complete immediately without waiting for animationDone()\n protected readonly hasAnimations: boolean = false;\n\n constructor() {\n this.dialogRef.setBaseDialog(this);\n this.onOpen();\n // If no animations, mark enter as done immediately\n if (!this.hasAnimations) {\n this.enterAnimationDone = true;\n }\n }\n\n setOptions(_: DialogOptions): void {}\n\n close() {\n // Only start closing if enter animation is complete\n if (this.enterAnimationDone && !this.closing()) {\n this.closing.set(true);\n // If no animations, complete close immediately\n if (!this.hasAnimations) {\n this.dialogRef._completeClose();\n this.onClose();\n }\n // Otherwise, the actual close will happen after animationDone is called\n // which triggers when the leave animation completes\n }\n }\n\n onAnimationEnd(event: AnimationEvent) {\n if (event.target === event.currentTarget) {\n this.animationDone();\n }\n }\n\n animationDone = () => {\n if (!this.enterAnimationDone) {\n // First animation end = enter animation complete\n this.enterAnimationDone = true;\n } else if (this.closing()) {\n // Second animation end while closing = leave animation complete\n this.dialogRef._completeClose();\n this.onClose();\n }\n };\n\n private onOpen() {\n // make the body not scrollable and add padding to the right\n // calculate the padding based on the scrollbar width\n this.isFirst = this.document.body.style.overflow !== 'hidden';\n if (this.isFirst) {\n const padding = window.innerWidth - this.document.body.clientWidth;\n this.document.body.style.paddingRight = `${padding}px`;\n this.document.body.style.overflow = 'hidden';\n }\n }\n\n getTarget(): HTMLElement {\n return this.target()!;\n }\n\n onClose = () => {\n if (this.isFirst) {\n this.document.body.style.paddingRight = '';\n this.document.body.style.overflow = '';\n }\n const target =\n this.dialogRef.options.afterFocusEl || this.getTarget() || this.currentActiveElement.deref();\n target?.focus();\n };\n}\n\nexport interface CloseOptions {\n closeParent?: boolean;\n}\n\nexport class DialogRef<T = any> {\n data = this.options.data;\n private baseDialog: BaseDialog | null = null;\n private pendingCloseData: any = undefined;\n private _isClosing = false;\n\n // Expose closing state for consumers who need to check\n get isClosing(): boolean {\n return this._isClosing;\n }\n\n private onDestroySource = new Subject();\n onDestroy = this.onDestroySource.asObservable().pipe(first());\n\n private afterClosedSource = new Subject<any>();\n afterClosed = this.afterClosedSource.asObservable().pipe(first());\n\n events = new Subject<'created'>();\n\n // Parent-child relationship\n private _parent: DialogRef | null = null;\n private _children = new Set<DialogRef>();\n\n get parent(): DialogRef | null {\n return this._parent;\n }\n\n get children(): ReadonlySet<DialogRef> {\n return this._children;\n }\n\n get root(): DialogRef {\n return this._parent?.root ?? this;\n }\n\n constructor(\n public options: DialogOptions<T>,\n private destroyParent: VoidFunction,\n private closeAllFn: VoidFunction,\n private animation = true,\n ) {\n // Register with parent if provided\n if (options.parent) {\n this._setParent(options.parent);\n }\n }\n\n _setParent(parent: DialogRef) {\n this._parent = parent;\n parent._addChild(this);\n }\n\n _addChild(child: DialogRef) {\n this._children.add(child);\n }\n\n _removeChild(child: DialogRef) {\n this._children.delete(child);\n }\n\n // Set the BaseDialog reference so we can trigger animations\n setBaseDialog(baseDialog: BaseDialog) {\n this.baseDialog = baseDialog;\n }\n\n close = (data?: any, options?: CloseOptions) => {\n // Guard: do nothing if already closing - makes close() idempotent\n if (this._isClosing) {\n return;\n }\n\n this._isClosing = true;\n\n // 1. Close all children first (if closeChildrenOnClose is true)\n if (this.options.closeChildrenOnClose !== false) {\n // Create a copy since children will remove themselves during close\n [...this._children].forEach(child => child.close());\n }\n\n // 2. If we have a BaseDialog and animation is enabled, trigger the leave animation\n if (this.baseDialog && this.animation) {\n this.pendingCloseData = data;\n this.baseDialog.close();\n } else {\n // No animation, close immediately\n this.afterClosedSource.next(data);\n this.destroy();\n }\n\n // 3. If closeParent is true, close parent after self (child → parent order)\n // This ensures children animate out before parents, maintaining visual hierarchy\n if (options?.closeParent && this._parent) {\n this._parent.close(undefined, { closeParent: true });\n }\n };\n\n // Called by BaseDialog.animationDone() after leave animation completes\n _completeClose = () => {\n this.afterClosedSource.next(this.pendingCloseData);\n this.destroy();\n };\n\n closeAll() {\n this.closeAllFn();\n }\n\n destroy() {\n // Remove self from parent's children\n this._parent?._removeChild(this);\n\n this.afterClosedSource.complete();\n this.onDestroySource.next(false);\n this.destroyParent();\n }\n}\n\nexport class DialogTestingRef {\n close() {}\n}\n\nexport class DialogOptions<T = any> {\n backdrop? = true;\n backdropColor? = true;\n hideOverlay? = false;\n data?: T;\n // isSidePopup? = false;\n title?: string;\n fullWindow?: boolean;\n minWidth?: string;\n minHeight?: string;\n width?: string;\n height?: string;\n maxWidth?: string;\n maxHeight?: string;\n classNames?: string[] = [];\n header?: boolean;\n disableClose? = false;\n ayId?: string;\n focusTrap? = true;\n afterFocusEl?: HTMLElement;\n\n // Parent-child relationship options\n parent?: DialogRef;\n closeChildrenOnClose? = true;\n}\n\nexport const DIALOG_INJ = new InjectionToken('dialogInj');\n\nexport function createInj(parent: Injector, data: any, diaRef: DialogRef) {\n return Injector.create({\n providers: [\n { provide: DIALOG_INJ, useValue: data },\n { provide: DialogRef, useValue: diaRef },\n ],\n parent,\n name: 'dialogInj',\n });\n}\n\nexport const DialogTestProviders = [\n { provide: DIALOG_INJ, useValue: {} },\n { provide: DialogRef, useValue: null },\n];\n","import { Directive, inject, input } from '@angular/core';\nimport { DialogRef } from './dialog-ref';\n\n@Directive({\n selector: '[ngbPortalClose]',\n host: {\n '(click)': 'close()',\n },\n})\nexport class NgbPortalClose {\n readonly dialogRef = inject(DialogRef);\n readonly ngbPortalClose = input();\n\n close(data = this.ngbPortalClose()) {\n this.dialogRef.close(data);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewContainerRef, viewChild } from '@angular/core';\n\n@Component({\n selector: 'ngb-portal',\n template: `<ng-container #myDialog />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Portal {\n myDialog = viewChild('myDialog', { read: ViewContainerRef });\n}\n","import {\n Injectable,\n Injector,\n ApplicationRef,\n Type,\n ComponentRef,\n inject,\n EnvironmentInjector,\n createComponent,\n DOCUMENT,\n} from '@angular/core';\nimport { Portal } from './portal.component';\n\n@Injectable({ providedIn: 'root' })\nexport class PortalService {\n private mainContainer?: ComponentRef<Portal>;\n private document = inject(DOCUMENT);\n private appRef = inject(ApplicationRef);\n private environmentInjector = inject(EnvironmentInjector);\n\n private trackElements = new Map<string, ComponentRef<any>[]>();\n\n constructor() {}\n\n private componentCreator() {\n this.mainContainer ??= this.appendComponentToBody(Portal);\n return this.mainContainer!.instance.myDialog()!;\n }\n\n appendComponentToBody<T>(component: Type<T>) {\n // 1. Create a component reference from the component\n const componentRef = createComponent(component, {\n environmentInjector: this.environmentInjector,\n });\n\n // 2. append the component to the body\n this.document.body.appendChild(componentRef.location.nativeElement);\n\n // 3. Attach component to the appRef so that it's inside the ng component tree\n this.appRef.attachView(componentRef.hostView);\n return componentRef;\n }\n\n create<T>(component: Type<T>, injector: Injector, container: string) {\n const d = this.componentCreator().createComponent(component, { injector });\n if (!this.trackElements.has(container)) {\n this.trackElements.set(container, []);\n }\n this.trackElements.get(container)!.push(d);\n return d;\n }\n\n delete<T>(container: string, component: ComponentRef<T>) {\n component.destroy();\n const elements = this.trackElements.get(container);\n if (elements) {\n const index = elements.indexOf(component);\n elements.splice(index, 1);\n }\n }\n\n clear(container: string) {\n if (this.trackElements.has(container)) {\n const elements = this.trackElements.get(container);\n // Trigger close on each component to play leave animations\n // The BaseDialog.close() method will handle the animation and eventual destruction\n elements?.forEach(c => c.instance?.close?.());\n }\n }\n}\n","import {\n ComponentRef,\n EmbeddedViewRef,\n Injector,\n TemplateRef,\n Type,\n ViewContainerRef,\n inject,\n signal,\n} from '@angular/core';\nimport { keyMap } from '@ngbase/adk/keys';\nimport { BaseDialog, DialogInput, DialogOptions, DialogRef, createInj } from './dialog-ref';\nimport { PortalService } from './portal.service';\n\nexport function basePortal<U>(name: string, baseComponent: Type<U>) {\n const NAME = name;\n const portal = inject(PortalService);\n const injector = inject(Injector);\n\n function updateBaseComponent(component: Type<U>) {\n baseComponent = component;\n }\n\n function open<T>(\n component?: DialogInput<T>,\n callback?: (comp: ComponentRef<U>, opt: DialogOptions) => void,\n opt?: DialogOptions,\n animation = true,\n parentComponent?: Type<U>,\n ) {\n const options = { ...new DialogOptions(), ...opt };\n const diaRef = new DialogRef(options, destroy, closeAll, animation);\n const childInjector = createInj(injector, options.data, diaRef);\n const parent = portal.create(parentComponent || baseComponent, childInjector, NAME);\n\n // set options\n callback?.(parent, options);\n\n // close on backdrop click\n let sub: () => void | undefined;\n const childSignal = signal<ComponentRef<any> | EmbeddedViewRef<any> | undefined>(undefined);\n\n if (component === undefined) {\n return { diaRef, parent, instance: null, childSignal };\n }\n\n const parentInstance = parent.instance as BaseDialog;\n\n // close on esc - call parentInstance.close() to trigger leave animation\n if (!options.disableClose) {\n sub = keyMap('esc', () => parentInstance.close(), { injector, stop: true });\n }\n\n function destroy() {\n portal.delete(NAME, parent);\n sub?.();\n }\n\n // Trigger change detection to initialize viewChild signals\n parent.changeDetectorRef.detectChanges();\n\n // VCR is now available after detectChanges\n const vcRef = parentInstance.vcRef;\n const child = createChild(component, vcRef);\n diaRef.events.next('created');\n childSignal.set(child);\n\n function replace(component: DialogInput<T>) {\n vcRef.clear();\n createChild(component, vcRef);\n }\n\n function createChild(component: DialogInput<any>, vcRef: ViewContainerRef) {\n // for template type\n if (component instanceof TemplateRef) {\n return vcRef.createEmbeddedView(\n component,\n { $implicit: options.data, ...(Array.isArray(options.data) ? {} : options.data) },\n { injector: parent.injector },\n );\n }\n // for component type\n return vcRef.createComponent(component, {\n injector: parent.injector,\n });\n }\n\n return { diaRef, parent, replace, childSignal };\n }\n\n function closeAll() {\n // Close each dialog properly to trigger leave animations\n portal.clear(NAME);\n }\n return { open, closeAll, updateBaseComponent };\n}\n","/*\n * Public API Surface of portal\n */\n\nexport * from './portal-close.directive';\nexport {\n BaseDialog,\n type CloseOptions,\n DIALOG_INJ,\n type DialogInput,\n DialogOptions,\n DialogRef,\n createInj,\n} from './dialog-ref';\nexport * from './portal-base.service';\nexport * from './portal.component';\nexport * from './portal.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -190,12 +190,12 @@ class NgbSidenavHeader {
|
|
|
190
190
|
});
|
|
191
191
|
}
|
|
192
192
|
onTransitionEnd(event) {
|
|
193
|
-
if (event.propertyName === 'transform') {
|
|
193
|
+
if (event.propertyName === 'transform' || event.propertyName === 'width') {
|
|
194
194
|
this.sidenav.animationDone();
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
onTransitionStart(event) {
|
|
198
|
-
if (event.propertyName === 'transform') {
|
|
198
|
+
if (event.propertyName === 'transform' || event.propertyName === 'width') {
|
|
199
199
|
this.sidenav.animationStart();
|
|
200
200
|
}
|
|
201
201
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-sidenav.mjs","sources":["../../../projects/adk/sidenav/sidenav.service.ts","../../../projects/adk/sidenav/sidenav.ts","../../../projects/adk/sidenav/sidenav-header.ts","../../../projects/adk/sidenav/ngbase-adk-sidenav.ts"],"sourcesContent":["import { computed, Injectable, signal } from '@angular/core';\nimport { injectDirectionality } from '@ngbase/adk/bidi';\n\nexport type SidenavType = 'side' | 'over' | 'partial';\n\n@Injectable()\nexport class SidenavService {\n readonly dir = injectDirectionality();\n width = signal('0');\n show = signal(true);\n mode = signal<'side' | 'over' | 'partial'>('side');\n minWidth = signal('0');\n readonly status = signal(1);\n\n readonly visibility = computed(() => (this.mode() === 'partial' ? true : this.status()));\n readonly animate = computed(() => (this.mode() === 'partial' ? true : this.show()));\n\n readonly w = computed(() =>\n this.show() && this.mode() !== 'over'\n ? this.width()\n : this.mode() === 'partial'\n ? this.minWidth()\n : '0',\n );\n\n readonly styles = computed(() => {\n const styles = {} as any;\n if (this.dir.isRtl()) {\n styles.paddingRight = this.w();\n } else {\n styles.paddingLeft = this.w();\n }\n return styles;\n });\n\n animationDone() {\n this.status.set(this.show() ? 1 : 0);\n }\n\n animationStart() {\n this.status.set(1);\n }\n}\n","import {\n Component,\n computed,\n Directive,\n inject,\n input,\n linkedSignal,\n model,\n Type,\n} from '@angular/core';\nimport { SidenavType } from './sidenav.service';\nimport { SidenavService } from './sidenav.service';\n\n@Component({\n selector: '[ngbSidenavOverlay]',\n template: ``,\n host: {\n class: 'sidenav-overlay',\n style: 'position:absolute;left:0;top:0;width:100%;height:100%;',\n '(click)': 'sidenav.toggle()',\n },\n})\nexport class NgbSidenavOverlay {\n readonly sidenav = inject(NgbSidenav);\n}\n\n@Directive({\n selector: '[ngbSidenav]',\n exportAs: 'ngbSidenav',\n providers: [SidenavService],\n host: {\n style: 'position:relative;width:100%;height:100%;',\n },\n})\nexport class NgbSidenav {\n readonly sidenavService = inject(SidenavService);\n\n // Inputs\n readonly show = model(true);\n readonly mode = input<SidenavType>('side');\n\n readonly showOverlay = computed(() => this.mode() === 'over' && this.show());\n\n constructor() {\n this.sidenavService.show = linkedSignal(this.show);\n this.sidenavService.mode = linkedSignal(this.mode);\n }\n\n toggle() {\n this.show.update(show => !show);\n }\n}\n\nexport const aliasSidenav = (sidenav: Type<NgbSidenav>) => [\n SidenavService,\n { provide: NgbSidenav, useExisting: sidenav },\n];\n","import { computed, Directive, effect, ElementRef, inject, input, linkedSignal, signal } from '@angular/core';\nimport { Directionality } from '@ngbase/adk/bidi';\nimport { SidenavService } from './sidenav.service';\n\n@Directive({\n selector: '[ngbSidenavHeaderContent]',\n host: {\n '[style.width]': 'w()',\n },\n})\nexport class NgbSidenavHeaderContent {\n readonly sidenav = inject(SidenavService);\n readonly w = computed(() =>\n this.sidenav.mode() === 'partial' && !this.sidenav.show()\n ? this.sidenav.minWidth()\n : this.sidenav.width(),\n );\n}\n\n@Directive({\n selector: '[ngbSidenavHeaderTrack]',\n host: {\n '[style.width]': 'sidenav.w()',\n },\n})\nexport class NgbSidenavHeaderTrack {\n readonly sidenav = inject(SidenavService);\n}\n\n@Directive({\n selector: '[ngbSidenavHeader]',\n host: {\n style: 'overflow:hidden;position:absolute;',\n '[style.visibility]': 'sidenav.visibility() ? \"visible\" : \"hidden\"',\n '[style]': `headerStyles()`,\n '[style.width]': `actualWidth()`,\n '[style.transform]': 'translateX()',\n '[attr.aria-hidden]': '!sidenav.show()',\n '[attr.data-mode]': 'sidenav.mode()',\n '(transitionend)': 'onTransitionEnd($event)',\n '(transitionstart)': 'onTransitionStart($event)',\n },\n})\nexport class NgbSidenavHeader {\n readonly sidenav = inject(SidenavService);\n readonly el = inject(ElementRef);\n readonly dir = inject(Directionality);\n\n readonly width = input('250px');\n readonly minWidth = input('0');\n\n // Track if we should skip animation (e.g., during direction change)\n private skipTransition = signal(false);\n\n readonly w = computed(() => (this.sidenav.mode() === 'partial' ? this.minWidth() : this.width()));\n readonly actualWidth = computed(() => {\n if (this.sidenav.show()) {\n return this.width();\n } else if (this.sidenav.mode() === 'partial') {\n return this.minWidth();\n } else if (this.sidenav.mode() === 'over') {\n return this.width();\n }\n return this.width();\n });\n\n readonly translateX = computed(() => {\n if (this.sidenav.animate()) {\n return 'translateX(0)';\n }\n const offset = this.dir.isRtl() ? this.w() : `-${this.w()}`;\n return `translateX(${offset})`;\n });\n\n readonly headerStyles = computed(() => {\n let styles: Record<string, string> = {};\n if (this.sidenav.mode() === 'over') {\n styles = { ...styles, position: 'absolute', top: '0', height: '100%' };\n }\n if (this.dir.isRtl()) {\n styles = { ...styles, right: '0' };\n } else {\n styles = { ...styles, left: '0' };\n }\n // Disable transition during direction change\n if (this.skipTransition()) {\n styles = { ...styles, transition: 'none' };\n }\n return styles;\n });\n\n constructor() {\n this.sidenav.width = linkedSignal(this.width);\n this.sidenav.minWidth = linkedSignal(this.minWidth);\n\n // Watch for direction changes and skip transition\n let prevDir = this.dir.isRtl();\n effect(() => {\n const currentDir = this.dir.isRtl();\n if (currentDir !== prevDir) {\n prevDir = currentDir;\n this.skipTransition.set(true);\n // Re-enable transition after a frame\n requestAnimationFrame(() => {\n this.skipTransition.set(false);\n });\n }\n });\n }\n\n onTransitionEnd(event: TransitionEvent) {\n if (event.propertyName === 'transform') {\n this.sidenav.animationDone();\n }\n }\n\n onTransitionStart(event: TransitionEvent) {\n if (event.propertyName === 'transform') {\n this.sidenav.animationStart();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngbase-adk-sidenav.mjs","sources":["../../../projects/adk/sidenav/sidenav.service.ts","../../../projects/adk/sidenav/sidenav.ts","../../../projects/adk/sidenav/sidenav-header.ts","../../../projects/adk/sidenav/ngbase-adk-sidenav.ts"],"sourcesContent":["import { computed, Injectable, signal } from '@angular/core';\nimport { injectDirectionality } from '@ngbase/adk/bidi';\n\nexport type SidenavType = 'side' | 'over' | 'partial';\n\n@Injectable()\nexport class SidenavService {\n readonly dir = injectDirectionality();\n width = signal('0');\n show = signal(true);\n mode = signal<'side' | 'over' | 'partial'>('side');\n minWidth = signal('0');\n readonly status = signal(1);\n\n readonly visibility = computed(() => (this.mode() === 'partial' ? true : this.status()));\n readonly animate = computed(() => (this.mode() === 'partial' ? true : this.show()));\n\n readonly w = computed(() =>\n this.show() && this.mode() !== 'over'\n ? this.width()\n : this.mode() === 'partial'\n ? this.minWidth()\n : '0',\n );\n\n readonly styles = computed(() => {\n const styles = {} as any;\n if (this.dir.isRtl()) {\n styles.paddingRight = this.w();\n } else {\n styles.paddingLeft = this.w();\n }\n return styles;\n });\n\n animationDone() {\n this.status.set(this.show() ? 1 : 0);\n }\n\n animationStart() {\n this.status.set(1);\n }\n}\n","import {\n Component,\n computed,\n Directive,\n inject,\n input,\n linkedSignal,\n model,\n Type,\n} from '@angular/core';\nimport { SidenavType } from './sidenav.service';\nimport { SidenavService } from './sidenav.service';\n\n@Component({\n selector: '[ngbSidenavOverlay]',\n template: ``,\n host: {\n class: 'sidenav-overlay',\n style: 'position:absolute;left:0;top:0;width:100%;height:100%;',\n '(click)': 'sidenav.toggle()',\n },\n})\nexport class NgbSidenavOverlay {\n readonly sidenav = inject(NgbSidenav);\n}\n\n@Directive({\n selector: '[ngbSidenav]',\n exportAs: 'ngbSidenav',\n providers: [SidenavService],\n host: {\n style: 'position:relative;width:100%;height:100%;',\n },\n})\nexport class NgbSidenav {\n readonly sidenavService = inject(SidenavService);\n\n // Inputs\n readonly show = model(true);\n readonly mode = input<SidenavType>('side');\n\n readonly showOverlay = computed(() => this.mode() === 'over' && this.show());\n\n constructor() {\n this.sidenavService.show = linkedSignal(this.show);\n this.sidenavService.mode = linkedSignal(this.mode);\n }\n\n toggle() {\n this.show.update(show => !show);\n }\n}\n\nexport const aliasSidenav = (sidenav: Type<NgbSidenav>) => [\n SidenavService,\n { provide: NgbSidenav, useExisting: sidenav },\n];\n","import { computed, Directive, effect, ElementRef, inject, input, linkedSignal, signal } from '@angular/core';\nimport { Directionality } from '@ngbase/adk/bidi';\nimport { SidenavService } from './sidenav.service';\n\n@Directive({\n selector: '[ngbSidenavHeaderContent]',\n host: {\n '[style.width]': 'w()',\n },\n})\nexport class NgbSidenavHeaderContent {\n readonly sidenav = inject(SidenavService);\n readonly w = computed(() =>\n this.sidenav.mode() === 'partial' && !this.sidenav.show()\n ? this.sidenav.minWidth()\n : this.sidenav.width(),\n );\n}\n\n@Directive({\n selector: '[ngbSidenavHeaderTrack]',\n host: {\n '[style.width]': 'sidenav.w()',\n },\n})\nexport class NgbSidenavHeaderTrack {\n readonly sidenav = inject(SidenavService);\n}\n\n@Directive({\n selector: '[ngbSidenavHeader]',\n host: {\n style: 'overflow:hidden;position:absolute;',\n '[style.visibility]': 'sidenav.visibility() ? \"visible\" : \"hidden\"',\n '[style]': `headerStyles()`,\n '[style.width]': `actualWidth()`,\n '[style.transform]': 'translateX()',\n '[attr.aria-hidden]': '!sidenav.show()',\n '[attr.data-mode]': 'sidenav.mode()',\n '(transitionend)': 'onTransitionEnd($event)',\n '(transitionstart)': 'onTransitionStart($event)',\n },\n})\nexport class NgbSidenavHeader {\n readonly sidenav = inject(SidenavService);\n readonly el = inject(ElementRef);\n readonly dir = inject(Directionality);\n\n readonly width = input('250px');\n readonly minWidth = input('0');\n\n // Track if we should skip animation (e.g., during direction change)\n private skipTransition = signal(false);\n\n readonly w = computed(() => (this.sidenav.mode() === 'partial' ? this.minWidth() : this.width()));\n readonly actualWidth = computed(() => {\n if (this.sidenav.show()) {\n return this.width();\n } else if (this.sidenav.mode() === 'partial') {\n return this.minWidth();\n } else if (this.sidenav.mode() === 'over') {\n return this.width();\n }\n return this.width();\n });\n\n readonly translateX = computed(() => {\n if (this.sidenav.animate()) {\n return 'translateX(0)';\n }\n const offset = this.dir.isRtl() ? this.w() : `-${this.w()}`;\n return `translateX(${offset})`;\n });\n\n readonly headerStyles = computed(() => {\n let styles: Record<string, string> = {};\n if (this.sidenav.mode() === 'over') {\n styles = { ...styles, position: 'absolute', top: '0', height: '100%' };\n }\n if (this.dir.isRtl()) {\n styles = { ...styles, right: '0' };\n } else {\n styles = { ...styles, left: '0' };\n }\n // Disable transition during direction change\n if (this.skipTransition()) {\n styles = { ...styles, transition: 'none' };\n }\n return styles;\n });\n\n constructor() {\n this.sidenav.width = linkedSignal(this.width);\n this.sidenav.minWidth = linkedSignal(this.minWidth);\n\n // Watch for direction changes and skip transition\n let prevDir = this.dir.isRtl();\n effect(() => {\n const currentDir = this.dir.isRtl();\n if (currentDir !== prevDir) {\n prevDir = currentDir;\n this.skipTransition.set(true);\n // Re-enable transition after a frame\n requestAnimationFrame(() => {\n this.skipTransition.set(false);\n });\n }\n });\n }\n\n onTransitionEnd(event: TransitionEvent) {\n if (event.propertyName === 'transform' || event.propertyName === 'width') {\n this.sidenav.animationDone();\n }\n }\n\n onTransitionStart(event: TransitionEvent) {\n if (event.propertyName === 'transform' || event.propertyName === 'width') {\n this.sidenav.animationStart();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -247,11 +247,6 @@ class NgbBaseTour extends BaseDialog {
|
|
|
247
247
|
setOptions(options) {
|
|
248
248
|
this.options = options;
|
|
249
249
|
}
|
|
250
|
-
onAnimationEnd(event) {
|
|
251
|
-
if (event.target === event.currentTarget) {
|
|
252
|
-
this.animationDone();
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
250
|
ngOnDestroy() {
|
|
256
251
|
window.removeEventListener('wheel', this.updateDimension);
|
|
257
252
|
this.document.body.style.overflow = '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-tour.mjs","sources":["../../../projects/adk/tour/tour.service.ts","../../../projects/adk/tour/tour-step.ts","../../../projects/adk/tour/tour.ts","../../../projects/adk/tour/tour-base.ts","../../../projects/adk/tour/ngbase-adk-tour.ts"],"sourcesContent":["import { Injectable, computed, signal } from '@angular/core';\nimport { DialogInput } from '@ngbase/adk/portal';\nimport { PopoverOpen, ngbPopoverPortal } from '@ngbase/adk/popover';\nimport { NgbTourStep } from './tour-step';\n\n@Injectable({ providedIn: 'root' })\nexport class NgbTourService {\n private readonly popover = ngbPopoverPortal();\n readonly steps = signal<NgbTourStep[]>([]);\n readonly step = signal(-1);\n private readonly ids = signal<string[]>([]);\n readonly currentStep = computed(() => {\n const id = this.ids()[this.step()];\n const steps = this.steps();\n return steps.find(x => x.ngbTourStep() === id);\n });\n private diaRef?: PopoverOpen<any>;\n private id = 0;\n private template!: DialogInput<any>;\n readonly showPrev = computed(() => this.step() > 0);\n readonly showNext = computed(() => this.step() < this.ids().length - 1);\n readonly isLast = computed(() => this.step() === this.ids().length - 1);\n readonly totalSteps = computed(() => this.ids().length);\n scrolled = signal(0);\n private readonly clipPath = computed(() => {\n const _ = this.scrolled();\n const currentStep = this.currentStep();\n if (!currentStep) {\n return '';\n }\n const { width, height, top, left } = currentStep.el.nativeElement.getBoundingClientRect();\n return `polygon(\n 0 0,\n 100% 0,\n 100% ${top}px,\n ${left}px ${top}px,\n ${left}px ${top + height}px,\n ${left + width}px ${top + height}px,\n ${left + width}px ${top}px,\n 100% ${top}px,\n 100% 100%,\n 0 100%,\n 0 0\n )`;\n });\n\n addStep(step: NgbTourStep) {\n this.steps.update(x => [...x, step]);\n }\n\n start<T>(comp: DialogInput<T>, ids: string[]) {\n this.template = comp;\n this.ids.set(ids);\n this.step.set(-1);\n this.next();\n }\n\n prev() {\n const steps = this.ids();\n const prevStep = this.step();\n if (steps.length) {\n const step = (prevStep - 1 + steps.length) % steps.length;\n this.go(step);\n }\n }\n\n next() {\n const steps = this.ids();\n const prevStep = this.step();\n if (steps.length) {\n const step = (prevStep + 1) % steps.length;\n if (prevStep > step) {\n this.stop();\n return;\n }\n this.go(step);\n }\n }\n\n go(id: number) {\n const steps = this.steps();\n const ids = this.ids();\n if (steps.length) {\n // validate the step number is within the range\n if (id < 0 || id >= ids.length) {\n return;\n }\n this.step.set(id);\n const step = steps.find(x => x.ngbTourStep() === ids[id]);\n if (!step) {\n return;\n }\n if (this.diaRef) {\n this.diaRef.parent.target.set(step.el.nativeElement);\n } else {\n this.showOverlay(step.el.nativeElement);\n }\n }\n }\n\n stop() {\n this.hideOverlay();\n clearInterval(this.id);\n }\n\n private showOverlay(el: HTMLElement) {\n this.diaRef?.diaRef.close();\n\n this.diaRef = this.popover.open(this.template, {\n target: el,\n position: 'right',\n className: 'transition-all',\n backdropClassName: 'bg-black/20',\n clipPath: this.clipPath,\n smoothScroll: true,\n anchor: true,\n backdropColor: true,\n width: '400px',\n disableClose: true,\n });\n this.scrolled = this.diaRef.parent.scrolled;\n }\n\n private hideOverlay() {\n this.diaRef?.diaRef.close();\n this.diaRef = undefined;\n }\n}\n","import { Directive, ElementRef, inject, input } from '@angular/core';\nimport { NgbTourService } from './tour.service';\n\n@Directive({\n selector: '[ngbTourStep]',\n})\nexport class NgbTourStep {\n readonly el = inject<ElementRef>(ElementRef);\n readonly tourService = inject(NgbTourService);\n\n // Inputs\n readonly ngbTourStep = input.required<string>();\n\n constructor() {\n this.tourService.addStep(this);\n }\n}\n","import { inject, contentChildren, Directive } from '@angular/core';\nimport { NgbTourService } from './tour.service';\nimport { NgbTourStep } from './tour-step';\n\n@Directive({\n selector: '[ngbTour]',\n})\nexport class NgbTour {\n readonly tourService = inject(NgbTourService);\n readonly steps = contentChildren(NgbTourStep, { descendants: true });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n OnDestroy,\n signal,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { PopoverOptions, PopoverPosition, tooltipPosition } from '@ngbase/adk/popover';\nimport { BaseDialog, DialogOptions } from '@ngbase/adk/portal';\nimport { debounceTime, fromEvent, startWith, take } from 'rxjs';\nimport { NgbTourService } from './tour.service';\n\n@Component({\n selector: '[ngbTour]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n #container\n (animationend)=\"onAnimationEnd($event)\"\n class=\"{{\n 'pointer-events-auto fixed z-10 overflow-auto rounded-md border bg-background p-1 shadow-md' +\n (closing() ? ' tour-content-leave' : ' tour-content')\n }}\"\n >\n <ng-container #contentContainer />\n </div>\n <div\n (animationend)=\"onAnimationEnd($event)\"\n class=\"{{\n 'pointer-events-auto fixed top-0 h-full w-full bg-black/20' +\n (closing() ? ' tour-backdrop-leave' : ' tour-backdrop')\n }}\"\n ></div>\n `,\n})\nexport class NgbBaseTour extends BaseDialog implements OnDestroy {\n protected override readonly hasAnimations = true;\n readonly contentContainer = viewChild('contentContainer', { read: ViewContainerRef });\n readonly tourService = inject(NgbTourService);\n readonly container = viewChild<ElementRef<HTMLElement>>('container');\n\n options!: DialogOptions;\n tooltipOptions!: PopoverOptions;\n private lastPosition: PopoverPosition = 'top';\n readonly scrolled = signal(0);\n\n readonly clipPath = computed(() => {\n const _ = this.scrolled();\n const currentStep = this.tourService.currentStep()!;\n const { width, height, top, left } = currentStep.el.nativeElement.getBoundingClientRect();\n return `polygon(\n 0 0,\n 100% 0,\n 100% ${top}px,\n ${left}px ${top}px,\n ${left}px ${top + height}px,\n ${left + width}px ${top + height}px,\n ${left + width}px ${top}px,\n 100% ${top}px,\n 100% 100%,\n 0 100%,\n 0 0\n )`;\n });\n\n constructor() {\n super();\n setTimeout(() => {\n this.container()!.nativeElement.classList.add('transition-all');\n }, 5000);\n\n effect(() => {\n const target = this.target() || this.tooltipOptions.target;\n this.tooltipOptions.target = target;\n target.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n\n fromEvent(window, 'scroll')\n .pipe(startWith(1), debounceTime(50), take(1))\n .subscribe(() => {\n this.lastPosition = this.tooltipOptions.position || 'bottom';\n const el = this.container()!.nativeElement;\n if (this.options.backdrop) {\n this.document.body.style.overflow = 'hidden';\n }\n if (this.options.width === 'target') {\n // update the width of the container to be the same as the target\n el.style.width = `${this.tooltipOptions.target.offsetWidth}px`;\n } else if (this.options.width) {\n el.style.width = this.options.width;\n }\n if (this.options.height) {\n el.style.height = this.options.height;\n }\n if (this.options.maxHeight) {\n el.style.maxHeight = this.options.maxHeight;\n }\n this.scrolled.update(x => x + 1);\n this.updateDimension();\n });\n // if (!this.options.backdrop) {\n // // window.addEventListener('wheel', this.updateDimension);\n // }\n });\n }\n\n private updateDimension = () => {\n requestAnimationFrame(() => {\n const el = this.container()!.nativeElement;\n const { top, left, bottom, position } = tooltipPosition({\n target: this.tooltipOptions.target,\n el,\n position: this.lastPosition,\n client: this.tooltipOptions.client,\n offset: this.tooltipOptions.offset,\n });\n this.lastPosition = position;\n // we need to update the values directly instead of signal to avoid too many CD checks\n if (bottom) {\n el.style.bottom = `${bottom}px`;\n el.style.top = '';\n } else if (top) {\n el.style.top = `${top}px`;\n el.style.bottom = '';\n }\n el.style.left = `${left}px`;\n });\n };\n\n override setOptions(options: DialogOptions): void {\n this.options = options;\n }\n\n onAnimationEnd(event: AnimationEvent) {\n if (event.target === event.currentTarget) {\n this.animationDone();\n }\n }\n\n ngOnDestroy(): void {\n window.removeEventListener('wheel', this.updateDimension);\n this.document.body.style.overflow = '';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngbase-adk-tour.mjs","sources":["../../../projects/adk/tour/tour.service.ts","../../../projects/adk/tour/tour-step.ts","../../../projects/adk/tour/tour.ts","../../../projects/adk/tour/tour-base.ts","../../../projects/adk/tour/ngbase-adk-tour.ts"],"sourcesContent":["import { Injectable, computed, signal } from '@angular/core';\nimport { DialogInput } from '@ngbase/adk/portal';\nimport { PopoverOpen, ngbPopoverPortal } from '@ngbase/adk/popover';\nimport { NgbTourStep } from './tour-step';\n\n@Injectable({ providedIn: 'root' })\nexport class NgbTourService {\n private readonly popover = ngbPopoverPortal();\n readonly steps = signal<NgbTourStep[]>([]);\n readonly step = signal(-1);\n private readonly ids = signal<string[]>([]);\n readonly currentStep = computed(() => {\n const id = this.ids()[this.step()];\n const steps = this.steps();\n return steps.find(x => x.ngbTourStep() === id);\n });\n private diaRef?: PopoverOpen<any>;\n private id = 0;\n private template!: DialogInput<any>;\n readonly showPrev = computed(() => this.step() > 0);\n readonly showNext = computed(() => this.step() < this.ids().length - 1);\n readonly isLast = computed(() => this.step() === this.ids().length - 1);\n readonly totalSteps = computed(() => this.ids().length);\n scrolled = signal(0);\n private readonly clipPath = computed(() => {\n const _ = this.scrolled();\n const currentStep = this.currentStep();\n if (!currentStep) {\n return '';\n }\n const { width, height, top, left } = currentStep.el.nativeElement.getBoundingClientRect();\n return `polygon(\n 0 0,\n 100% 0,\n 100% ${top}px,\n ${left}px ${top}px,\n ${left}px ${top + height}px,\n ${left + width}px ${top + height}px,\n ${left + width}px ${top}px,\n 100% ${top}px,\n 100% 100%,\n 0 100%,\n 0 0\n )`;\n });\n\n addStep(step: NgbTourStep) {\n this.steps.update(x => [...x, step]);\n }\n\n start<T>(comp: DialogInput<T>, ids: string[]) {\n this.template = comp;\n this.ids.set(ids);\n this.step.set(-1);\n this.next();\n }\n\n prev() {\n const steps = this.ids();\n const prevStep = this.step();\n if (steps.length) {\n const step = (prevStep - 1 + steps.length) % steps.length;\n this.go(step);\n }\n }\n\n next() {\n const steps = this.ids();\n const prevStep = this.step();\n if (steps.length) {\n const step = (prevStep + 1) % steps.length;\n if (prevStep > step) {\n this.stop();\n return;\n }\n this.go(step);\n }\n }\n\n go(id: number) {\n const steps = this.steps();\n const ids = this.ids();\n if (steps.length) {\n // validate the step number is within the range\n if (id < 0 || id >= ids.length) {\n return;\n }\n this.step.set(id);\n const step = steps.find(x => x.ngbTourStep() === ids[id]);\n if (!step) {\n return;\n }\n if (this.diaRef) {\n this.diaRef.parent.target.set(step.el.nativeElement);\n } else {\n this.showOverlay(step.el.nativeElement);\n }\n }\n }\n\n stop() {\n this.hideOverlay();\n clearInterval(this.id);\n }\n\n private showOverlay(el: HTMLElement) {\n this.diaRef?.diaRef.close();\n\n this.diaRef = this.popover.open(this.template, {\n target: el,\n position: 'right',\n className: 'transition-all',\n backdropClassName: 'bg-black/20',\n clipPath: this.clipPath,\n smoothScroll: true,\n anchor: true,\n backdropColor: true,\n width: '400px',\n disableClose: true,\n });\n this.scrolled = this.diaRef.parent.scrolled;\n }\n\n private hideOverlay() {\n this.diaRef?.diaRef.close();\n this.diaRef = undefined;\n }\n}\n","import { Directive, ElementRef, inject, input } from '@angular/core';\nimport { NgbTourService } from './tour.service';\n\n@Directive({\n selector: '[ngbTourStep]',\n})\nexport class NgbTourStep {\n readonly el = inject<ElementRef>(ElementRef);\n readonly tourService = inject(NgbTourService);\n\n // Inputs\n readonly ngbTourStep = input.required<string>();\n\n constructor() {\n this.tourService.addStep(this);\n }\n}\n","import { inject, contentChildren, Directive } from '@angular/core';\nimport { NgbTourService } from './tour.service';\nimport { NgbTourStep } from './tour-step';\n\n@Directive({\n selector: '[ngbTour]',\n})\nexport class NgbTour {\n readonly tourService = inject(NgbTourService);\n readonly steps = contentChildren(NgbTourStep, { descendants: true });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n OnDestroy,\n signal,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { PopoverOptions, PopoverPosition, tooltipPosition } from '@ngbase/adk/popover';\nimport { BaseDialog, DialogOptions } from '@ngbase/adk/portal';\nimport { debounceTime, fromEvent, startWith, take } from 'rxjs';\nimport { NgbTourService } from './tour.service';\n\n@Component({\n selector: '[ngbTour]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div\n #container\n (animationend)=\"onAnimationEnd($event)\"\n class=\"{{\n 'pointer-events-auto fixed z-10 overflow-auto rounded-md border bg-background p-1 shadow-md' +\n (closing() ? ' tour-content-leave' : ' tour-content')\n }}\"\n >\n <ng-container #contentContainer />\n </div>\n <div\n (animationend)=\"onAnimationEnd($event)\"\n class=\"{{\n 'pointer-events-auto fixed top-0 h-full w-full bg-black/20' +\n (closing() ? ' tour-backdrop-leave' : ' tour-backdrop')\n }}\"\n ></div>\n `,\n})\nexport class NgbBaseTour extends BaseDialog implements OnDestroy {\n protected override readonly hasAnimations = true;\n readonly contentContainer = viewChild('contentContainer', { read: ViewContainerRef });\n readonly tourService = inject(NgbTourService);\n readonly container = viewChild<ElementRef<HTMLElement>>('container');\n\n options!: DialogOptions;\n tooltipOptions!: PopoverOptions;\n private lastPosition: PopoverPosition = 'top';\n readonly scrolled = signal(0);\n\n readonly clipPath = computed(() => {\n const _ = this.scrolled();\n const currentStep = this.tourService.currentStep()!;\n const { width, height, top, left } = currentStep.el.nativeElement.getBoundingClientRect();\n return `polygon(\n 0 0,\n 100% 0,\n 100% ${top}px,\n ${left}px ${top}px,\n ${left}px ${top + height}px,\n ${left + width}px ${top + height}px,\n ${left + width}px ${top}px,\n 100% ${top}px,\n 100% 100%,\n 0 100%,\n 0 0\n )`;\n });\n\n constructor() {\n super();\n setTimeout(() => {\n this.container()!.nativeElement.classList.add('transition-all');\n }, 5000);\n\n effect(() => {\n const target = this.target() || this.tooltipOptions.target;\n this.tooltipOptions.target = target;\n target.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n\n fromEvent(window, 'scroll')\n .pipe(startWith(1), debounceTime(50), take(1))\n .subscribe(() => {\n this.lastPosition = this.tooltipOptions.position || 'bottom';\n const el = this.container()!.nativeElement;\n if (this.options.backdrop) {\n this.document.body.style.overflow = 'hidden';\n }\n if (this.options.width === 'target') {\n // update the width of the container to be the same as the target\n el.style.width = `${this.tooltipOptions.target.offsetWidth}px`;\n } else if (this.options.width) {\n el.style.width = this.options.width;\n }\n if (this.options.height) {\n el.style.height = this.options.height;\n }\n if (this.options.maxHeight) {\n el.style.maxHeight = this.options.maxHeight;\n }\n this.scrolled.update(x => x + 1);\n this.updateDimension();\n });\n // if (!this.options.backdrop) {\n // // window.addEventListener('wheel', this.updateDimension);\n // }\n });\n }\n\n private updateDimension = () => {\n requestAnimationFrame(() => {\n const el = this.container()!.nativeElement;\n const { top, left, bottom, position } = tooltipPosition({\n target: this.tooltipOptions.target,\n el,\n position: this.lastPosition,\n client: this.tooltipOptions.client,\n offset: this.tooltipOptions.offset,\n });\n this.lastPosition = position;\n // we need to update the values directly instead of signal to avoid too many CD checks\n if (bottom) {\n el.style.bottom = `${bottom}px`;\n el.style.top = '';\n } else if (top) {\n el.style.top = `${top}px`;\n el.style.bottom = '';\n }\n el.style.left = `${left}px`;\n });\n };\n\n override setOptions(options: DialogOptions): void {\n this.options = options;\n }\n\n ngOnDestroy(): void {\n window.removeEventListener('wheel', this.updateDimension);\n this.document.body.style.overflow = '';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -26,18 +26,20 @@ export class AccordionGroup {}
|
|
|
26
26
|
imports: [NgbAccordionContent],
|
|
27
27
|
template: `
|
|
28
28
|
<ng-content select="[<%= name %>AccordionHeader]" />
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
<div class="
|
|
37
|
-
<
|
|
29
|
+
@if (expanded()) {
|
|
30
|
+
<div
|
|
31
|
+
ngbAccordionContent
|
|
32
|
+
class="grid overflow-hidden"
|
|
33
|
+
animate.enter="height-enter"
|
|
34
|
+
animate.leave="height-leave"
|
|
35
|
+
>
|
|
36
|
+
<div class="min-h-0">
|
|
37
|
+
<div class="px-3 pb-4">
|
|
38
|
+
<ng-content />
|
|
39
|
+
</div>
|
|
38
40
|
</div>
|
|
39
41
|
</div>
|
|
40
|
-
|
|
42
|
+
}
|
|
41
43
|
`,
|
|
42
44
|
host: {
|
|
43
45
|
class: 'block will-change-auto [&:not(:last-child)]:border-b',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# MEE Badge
|
|
2
2
|
|
|
3
3
|
```typescript
|
|
4
|
-
import { Badge } from '@/ui/badge';
|
|
4
|
+
import { Badge, BadgeVariant } from '@/ui/badge';
|
|
5
5
|
```
|
|
6
6
|
|
|
7
7
|
## Components
|
|
@@ -10,7 +10,7 @@ import { Badge } from '@/ui/badge';
|
|
|
10
10
|
|
|
11
11
|
- **Inputs:**
|
|
12
12
|
|
|
13
|
-
- `variant`: 'default' | 'secondary' | 'outline' | 'destructive' = 'default' - Badge variant
|
|
13
|
+
- `variant`: BadgeVariant = 'default' | 'secondary' | 'outline' | 'destructive' = 'default' - Badge variant
|
|
14
14
|
|
|
15
15
|
- **Export:** `<%= name %>Badge`
|
|
16
16
|
|
|
@@ -1,21 +1,41 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, input } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
|
|
2
2
|
|
|
3
|
-
export type BadgeVariant =
|
|
3
|
+
export type BadgeVariant =
|
|
4
|
+
| 'default'
|
|
5
|
+
| 'secondary'
|
|
6
|
+
| 'outline'
|
|
7
|
+
| 'destructive'
|
|
8
|
+
| 'success'
|
|
9
|
+
| 'warning'
|
|
10
|
+
| 'info'
|
|
11
|
+
| 'primary';
|
|
12
|
+
|
|
13
|
+
const badgeStyles = {
|
|
14
|
+
default: 'bg-primary text-primary-foreground border-transparent',
|
|
15
|
+
secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80 border-transparent',
|
|
16
|
+
outline: 'text-foreground border-border bg-background hover:bg-accent',
|
|
17
|
+
destructive:
|
|
18
|
+
'bg-destructive text-destructive-foreground hover:bg-destructive/80 border-transparent',
|
|
19
|
+
success: 'bg-green-100 text-green-700 border-green-200 hover:bg-green-200',
|
|
20
|
+
warning: 'bg-yellow-100 text-yellow-700 border-yellow-200 hover:bg-yellow-200',
|
|
21
|
+
info: 'bg-blue-100 text-blue-700 border-blue-200 hover:bg-blue-200',
|
|
22
|
+
primary: 'bg-primary/10 text-primary border-primary/20 hover:bg-primary/20',
|
|
23
|
+
};
|
|
4
24
|
|
|
5
25
|
@Component({
|
|
6
26
|
selector: '<%= name %>-badge, [<%= name %>Badge]',
|
|
7
27
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
8
28
|
template: `<ng-content />`,
|
|
9
29
|
host: {
|
|
10
|
-
class:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
: variant() === 'secondary' ? 'bg-secondary text-secondary-foreground hover:bg-secondary/80 border-transparent'
|
|
14
|
-
: variant() === 'outline' ? 'text-foreground border-input bg-background hover:bg-accent border-border'
|
|
15
|
-
: variant() === 'destructive' ? 'bg-destructive text-destructive-foreground hover:bg-destructive/80 border-transparent'
|
|
16
|
-
: 'bg-muted border-transparent'`,
|
|
30
|
+
class:
|
|
31
|
+
'inline-flex items-center gap-1 rounded-md border px-2.5 py-0.5 text-xs font-semibold leading-none',
|
|
32
|
+
'[class]': 'styles()',
|
|
17
33
|
},
|
|
18
34
|
})
|
|
19
35
|
export class Badge {
|
|
20
36
|
readonly variant = input<BadgeVariant>('default');
|
|
37
|
+
|
|
38
|
+
readonly styles = computed(() => {
|
|
39
|
+
return badgeStyles[this.variant()];
|
|
40
|
+
});
|
|
21
41
|
}
|
|
@@ -5,7 +5,7 @@ import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
|
5
5
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
6
6
|
template: `<ng-content />`,
|
|
7
7
|
host: {
|
|
8
|
-
class: 'block rounded-lg border bg-card text-card-foreground p-4',
|
|
8
|
+
class: 'block rounded-lg border bg-card text-card-foreground [&:not(.no-p)]:p-4',
|
|
9
9
|
},
|
|
10
10
|
})
|
|
11
11
|
export class Card {}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, computed } from '@angular/core';
|
|
2
|
-
import { FormsModule } from '@angular/forms';
|
|
3
2
|
import { FocusStyle } from './focus-style.directive';
|
|
4
3
|
import { CheckboxButton, NgbCheckbox, aliasCheckbox } from '@ngbase/adk/checkbox';
|
|
5
4
|
|
|
@@ -7,15 +6,13 @@ import { CheckboxButton, NgbCheckbox, aliasCheckbox } from '@ngbase/adk/checkbox
|
|
|
7
6
|
selector: '<%= name %>-checkbox',
|
|
8
7
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
9
8
|
providers: [aliasCheckbox(Checkbox)],
|
|
10
|
-
imports: [
|
|
9
|
+
imports: [FocusStyle, CheckboxButton],
|
|
11
10
|
template: `
|
|
12
11
|
<button
|
|
13
12
|
<%= name %>FocusStyle
|
|
14
13
|
ngbCheckboxButton
|
|
15
14
|
class="custom-checkbox border-primary relative flex h-4 w-4 flex-none items-center justify-center rounded border transition-colors"
|
|
16
|
-
[class]="
|
|
17
|
-
disabled() ? '!border-muted-foreground bg-muted-foreground' : path() ? 'bg-primary' : ''
|
|
18
|
-
"
|
|
15
|
+
[class]="disabled() ? 'border-muted-foreground!' : path() ? 'bg-primary' : ''"
|
|
19
16
|
>
|
|
20
17
|
@if (path(); as d) {
|
|
21
18
|
<svg class="text-background h-full w-full" viewBox="0 0 24 24" aria-hidden="true">
|
|
@@ -70,13 +70,6 @@ import { DragMove } from '@ngbase/adk/drag';
|
|
|
70
70
|
})
|
|
71
71
|
export class DialogContainer extends NgbDialogContainer {
|
|
72
72
|
protected override readonly hasAnimations = true;
|
|
73
|
-
|
|
74
|
-
onAnimationEnd(event: AnimationEvent) {
|
|
75
|
-
// Only count animation end once per element
|
|
76
|
-
if (event.target === event.currentTarget) {
|
|
77
|
-
this.animationDone();
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
73
|
}
|
|
81
74
|
|
|
82
75
|
@Directive({
|
|
@@ -56,12 +56,6 @@ export class DrawerContainer extends BaseDialog {
|
|
|
56
56
|
classNames = '';
|
|
57
57
|
isHideHeader = false;
|
|
58
58
|
|
|
59
|
-
onAnimationEnd(event: AnimationEvent) {
|
|
60
|
-
if (event.target === event.currentTarget) {
|
|
61
|
-
this.animationDone();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
59
|
readonly style = computed(() => {
|
|
66
60
|
return {
|
|
67
61
|
width: this.options.fullWindow ? '100vw' : this.options.width,
|
|
@@ -110,10 +110,18 @@ export class Label {}
|
|
|
110
110
|
})
|
|
111
111
|
export class Description {}
|
|
112
112
|
|
|
113
|
+
@Directive({
|
|
114
|
+
selector: '[<%= name %>Hint]',
|
|
115
|
+
host: {
|
|
116
|
+
class: 'text-xs text-muted-foreground mt-1',
|
|
117
|
+
},
|
|
118
|
+
})
|
|
119
|
+
export class Hint {}
|
|
120
|
+
|
|
113
121
|
@Directive({
|
|
114
122
|
selector: '[<%= name %>Prefix]',
|
|
115
123
|
host: {
|
|
116
|
-
class: 'mr-2.5 text-muted-foreground',
|
|
124
|
+
class: 'mr-2.5 text-muted-foreground flex items-center',
|
|
117
125
|
},
|
|
118
126
|
})
|
|
119
127
|
export class InputPrefix {}
|
|
@@ -121,7 +129,7 @@ export class InputPrefix {}
|
|
|
121
129
|
@Directive({
|
|
122
130
|
selector: '[<%= name %>Suffix]',
|
|
123
131
|
host: {
|
|
124
|
-
class: 'ml-2.5 text-muted-foreground',
|
|
132
|
+
class: 'ml-2.5 text-muted-foreground flex items-center',
|
|
125
133
|
},
|
|
126
134
|
})
|
|
127
135
|
export class InputSuffix {}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
2
|
import {
|
|
3
3
|
NgbInlineEdit,
|
|
4
4
|
NgbInlineInput,
|
|
@@ -8,6 +8,8 @@ import {
|
|
|
8
8
|
|
|
9
9
|
@Component({
|
|
10
10
|
selector: '<%= name %>-inline-edit',
|
|
11
|
+
exportAs: '<%= name %>InlineEdit',
|
|
12
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
11
13
|
providers: [aliasInlineEdit(InlineEdit)],
|
|
12
14
|
imports: [NgbInlineInput, NgbInlineValue],
|
|
13
15
|
template: `
|
|
@@ -25,8 +25,8 @@ import { MeeFormField } from '<%= basepath %>/form-field';
|
|
|
25
25
|
],
|
|
26
26
|
imports: [Button, Icon, Select, Option, NgbPaginationBtn, MeeFormField],
|
|
27
27
|
template: `
|
|
28
|
-
<div class="flex items-center gap-2">
|
|
29
|
-
<div>Rows per page</div>
|
|
28
|
+
<div class="flex flex-1 items-center gap-2">
|
|
29
|
+
<div class="hidden md:block">Rows per page</div>
|
|
30
30
|
<<%= name %>-form-field class="!w-auto [&>.mis]:min-h-8 [&>.mis]:py-0">
|
|
31
31
|
<<%= name %>-select [value]="size()" (valueChange)="sizeChanged($any($event))">
|
|
32
32
|
@for (size of sizeOptions(); track size) {
|
|
@@ -55,10 +55,4 @@ export class PicasaBase extends BaseDialog {
|
|
|
55
55
|
this.isHideHeader = this.options.header || false;
|
|
56
56
|
this.backdropColor = this.options.backdropColor || true;
|
|
57
57
|
}
|
|
58
|
-
|
|
59
|
-
onAnimationEnd(event: AnimationEvent) {
|
|
60
|
-
if (event.target === event.currentTarget) {
|
|
61
|
-
this.animationDone();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
58
|
}
|
|
@@ -38,12 +38,6 @@ import {
|
|
|
38
38
|
})
|
|
39
39
|
class Popover extends NgbPopover {
|
|
40
40
|
protected override readonly hasAnimations = true;
|
|
41
|
-
|
|
42
|
-
onAnimationEnd(event: AnimationEvent) {
|
|
43
|
-
if (event.target === event.currentTarget) {
|
|
44
|
-
this.animationDone();
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
41
|
}
|
|
48
42
|
|
|
49
43
|
export function registerPopover() {
|
|
@@ -66,12 +66,6 @@ import { aliasSheet } from '@ngbase/adk/sheet';
|
|
|
66
66
|
})
|
|
67
67
|
export class SheetContainer extends NgbSheetContainer {
|
|
68
68
|
protected override readonly hasAnimations = true;
|
|
69
|
-
|
|
70
|
-
onAnimationEnd(event: AnimationEvent) {
|
|
71
|
-
if (event.target === event.currentTarget) {
|
|
72
|
-
this.animationDone();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
69
|
}
|
|
76
70
|
|
|
77
71
|
export function sheetPortal() {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, linkedSignal, Signal, signal } from '@angular/core';
|
|
2
|
+
import { breakpointObserver } from '@ngbase/adk/layout';
|
|
2
3
|
import {
|
|
3
4
|
NgbSidenav,
|
|
4
5
|
NgbSidenavHeader,
|
|
@@ -22,6 +23,7 @@ export type { SidenavType };
|
|
|
22
23
|
ngbSidenavOverlay
|
|
23
24
|
class="z-p bg-black/70"
|
|
24
25
|
animate.enter="dialog-backdrop"
|
|
26
|
+
animate.leave="dialog-backdrop-leave"
|
|
25
27
|
></div>
|
|
26
28
|
}
|
|
27
29
|
<div ngbSidenavHeaderTrack class="sidenav-track"></div>
|
|
@@ -48,3 +50,62 @@ export class Sidenav extends NgbSidenav {}
|
|
|
48
50
|
},
|
|
49
51
|
})
|
|
50
52
|
export class SidenavHeader extends NgbSidenavHeader {}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* A record mapping breakpoint names to their media query and the SidenavType to use when matched.
|
|
56
|
+
* Breakpoints are evaluated in order; the first match wins.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* { md: { query: '(max-width: 768px)', mode: 'over' }, lg: { query: '(max-width: 1200px)', mode: 'push' } }
|
|
60
|
+
*/
|
|
61
|
+
export type SidenavBreakpoints = Record<string, { query: string; mode: SidenavType }>;
|
|
62
|
+
|
|
63
|
+
const DEFAULT_BREAKPOINTS: SidenavBreakpoints = {
|
|
64
|
+
md: { query: '(max-width: 768px)', mode: 'over' },
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export function sidenavResponsive(
|
|
68
|
+
sidenav: Signal<Sidenav>,
|
|
69
|
+
breakpointConfig: SidenavBreakpoints = DEFAULT_BREAKPOINTS,
|
|
70
|
+
defaultMode: SidenavType = 'side',
|
|
71
|
+
) {
|
|
72
|
+
const breakpoints = breakpointObserver();
|
|
73
|
+
|
|
74
|
+
// Build the queries record: { md: '(max-width: 768px)', lg: '(max-width: 1200px)' }
|
|
75
|
+
const queries = Object.fromEntries(
|
|
76
|
+
Object.entries(breakpointConfig).map(([key, { query }]) => [key, query]),
|
|
77
|
+
) as Record<string, string>;
|
|
78
|
+
|
|
79
|
+
const bp = breakpoints.observe(queries);
|
|
80
|
+
|
|
81
|
+
const mode = linkedSignal({
|
|
82
|
+
source: bp.state,
|
|
83
|
+
computation: state => {
|
|
84
|
+
// Return the mode of the first matching breakpoint
|
|
85
|
+
for (const key of Object.keys(breakpointConfig)) {
|
|
86
|
+
if (state[key]) {
|
|
87
|
+
return breakpointConfig[key].mode;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return defaultMode;
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// Initially hidden if any breakpoint matches
|
|
95
|
+
const initialMatch = Object.values(breakpointConfig).some(({ query }) =>
|
|
96
|
+
breakpoints.matches(query),
|
|
97
|
+
);
|
|
98
|
+
const show = signal(!initialMatch);
|
|
99
|
+
|
|
100
|
+
function toggle() {
|
|
101
|
+
sidenav().toggle();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function toggleMode() {
|
|
105
|
+
mode.update(current =>
|
|
106
|
+
current === defaultMode ? Object.values(breakpointConfig)[0].mode : defaultMode,
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return { show, mode, toggle, toggleMode };
|
|
111
|
+
}
|
|
@@ -30,3 +30,10 @@ import { Stepper, Step, StepHeader } from '@/ui/stepper';
|
|
|
30
30
|
<<%= name %>-step title="Step 3"> Step 3 </<%= name %>-step>
|
|
31
31
|
</<%= name %>-stepper>
|
|
32
32
|
```
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
class App {
|
|
36
|
+
readonly activeIndex = signal(0);
|
|
37
|
+
readonly direction = signal('horizontal');
|
|
38
|
+
}
|
|
39
|
+
```
|
|
@@ -39,7 +39,7 @@ import { TableComponents, Sort, SortHeader, EmptyState } from '@/ui/table';
|
|
|
39
39
|
## Usage
|
|
40
40
|
|
|
41
41
|
```html
|
|
42
|
-
<table <%= name %>Table [data]="data" [trackBy]="trackBy">
|
|
42
|
+
<table <%= name %>Table [data]="data()" [trackBy]="trackBy">
|
|
43
43
|
<ng-container <%= name %>Column="name">
|
|
44
44
|
<th <%= name %>Head *<%= name %>HeadDef>Name</th>
|
|
45
45
|
<td <%= name %>Cell *<%= name %>CellDef="let row">{{row.name}}</td>
|
|
@@ -56,7 +56,7 @@ import { TableComponents, Sort, SortHeader, EmptyState } from '@/ui/table';
|
|
|
56
56
|
</table>
|
|
57
57
|
|
|
58
58
|
<!-- Table with sort -->
|
|
59
|
-
<table <%= name %>Table [data]="data" [trackBy]="trackBy" <%= name %>Sort>
|
|
59
|
+
<table <%= name %>Table [data]="data()" [trackBy]="trackBy" <%= name %>Sort>
|
|
60
60
|
<ng-container <%= name %>Column="name">
|
|
61
61
|
<th <%= name %>Head *<%= name %>HeadDef <%= name %>SortHeader>Name</th>
|
|
62
62
|
<td <%= name %>Cell *<%= name %>CellDef="let row">{{row.name}}</td>
|
|
@@ -69,3 +69,15 @@ import { TableComponents, Sort, SortHeader, EmptyState } from '@/ui/table';
|
|
|
69
69
|
<tr <%= name %>BodyRow *<%= name %>BodyRowDef="let row; columns: columns()"></tr>
|
|
70
70
|
</table>
|
|
71
71
|
```
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
class App {
|
|
75
|
+
readonly data = signal<T[]>([
|
|
76
|
+
{ id: 1, name: 'John', age: 20 },
|
|
77
|
+
{ id: 2, name: 'Jane', age: 21 },
|
|
78
|
+
{ id: 3, name: 'Jim', age: 22 },
|
|
79
|
+
]);
|
|
80
|
+
readonly columns = signal<string[]>(['name', 'age']);
|
|
81
|
+
readonly trackBy = (index: number, item: T) => item.id;
|
|
82
|
+
}
|
|
83
|
+
```
|
|
@@ -244,7 +244,6 @@ export class SortHeader extends NgbSortHeader<Sort> {
|
|
|
244
244
|
*/
|
|
245
245
|
@Directive({
|
|
246
246
|
selector: 'table[<%= name %>Table][<%= name %>VirtualScroll]',
|
|
247
|
-
standalone: true,
|
|
248
247
|
hostDirectives: [
|
|
249
248
|
{
|
|
250
249
|
directive: NgbTableVirtualScroll,
|
|
@@ -252,4 +251,4 @@ export class SortHeader extends NgbSortHeader<Sort> {
|
|
|
252
251
|
},
|
|
253
252
|
],
|
|
254
253
|
})
|
|
255
|
-
export class
|
|
254
|
+
export class TableVirtualScroll {}
|
|
@@ -59,7 +59,6 @@ declare class NgbBaseTour extends BaseDialog implements OnDestroy {
|
|
|
59
59
|
constructor();
|
|
60
60
|
private updateDimension;
|
|
61
61
|
setOptions(options: DialogOptions): void;
|
|
62
|
-
onAnimationEnd(event: AnimationEvent): void;
|
|
63
62
|
ngOnDestroy(): void;
|
|
64
63
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgbBaseTour, never>;
|
|
65
64
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgbBaseTour, "[ngbTour]", never, {}, {}, never, never, true, never>;
|