@alyle/ui
Version:
Minimal Design, a set of components for Angular
1 lines • 32.7 kB
Source Map (JSON)
{"version":3,"file":"alyle-ui-dialog.mjs","sources":["../../../lib/dialog/dialog-ref.ts","../../../lib/dialog/dialog-config.ts","../../../lib/dialog/dialog-data.ts","../../../lib/dialog/dialog-container.component.ts","../../../lib/dialog/dynamic-injector.ts","../../../lib/dialog/dialog.ts","../../../lib/dialog/dialog-title.directive.ts","../../../lib/dialog/dialog-content.directive.ts","../../../lib/dialog/dialog-actions.directive.ts","../../../lib/dialog/dialog.module.ts","../../../lib/dialog/alyle-ui-dialog.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { LyOverlayRef } from '@alyle/ui';\nimport { LyDialogContainer } from './dialog-container.component';\n\n@Injectable()\nexport class LyDialogRef {\n private _result: any;\n get afterOpened() {\n return (\n this._overlayRef.componentRef!.instance as LyDialogContainer\n )._afterOpened.asObservable();\n }\n get beforeClosed() {\n return (\n this._overlayRef.componentRef!.instance as LyDialogContainer\n )._beforeClosed.asObservable();\n }\n get afterClosed() {\n return (\n this._overlayRef.componentRef!.instance as LyDialogContainer\n )._afterClosed.asObservable();\n }\n\n /**\n * @internal\n * @docs-private\n */\n get result() {\n return this._result;\n }\n constructor(\n private _overlayRef: LyOverlayRef\n ) {\n\n }\n close(result?: any) {\n const dialogContainer = (this._overlayRef.componentRef!.instance as LyDialogContainer);\n dialogContainer._beforeClosed.next(result);\n dialogContainer._beforeClosed.complete();\n dialogContainer._startClose();\n this._result = result;\n }\n}\n","import { MediaQueryArray } from '@alyle/ui';\n\n/**\n * Configuration for opening a modal dialog with the LyDialog service.\n */\nexport class LyDialogConfig<DATA = unknown> {\n\n /** Data being injected into the child component. */\n data?: DATA | null;\n\n /**\n * Width of the dialog container.\n * Support beakpoints\n */\n width?: MediaQueryArray | number | string;\n\n /**\n * Height of the dialog container.\n * Support beakpoints\n */\n height?: MediaQueryArray | number | string;\n\n /**\n * Max-height of the dialog container. If a number is provided, pixel units are assumed.\n * Defaults to `['calc(100vw - 90px)']`\n * Support beakpoints\n */\n maxHeight?: MediaQueryArray | number | string | null = ['calc(100vh - 64px)'];\n\n /**\n * Max-width of the dialog container. If a number is provided, pixel units are assumed.\n * Defaults to `['calc(100vw - 90px)']`\n * Support beakpoints\n */\n maxWidth?: MediaQueryArray | number | string | null = ['calc(100vw - 64px)'];\n\n /**\n * Min-height of the dialog container. If a number is provided, pixel units are assumed.\n * Support beakpoints\n */\n minHeight?: MediaQueryArray | number | string;\n\n /**\n * Min-width of the dialog container. If a number is provided, pixel units are assumed.\n * Support beakpoints\n */\n minWidth?: MediaQueryArray | number | string;\n\n /** Whether the dialog has a backdrop. */\n hasBackdrop?: boolean = true;\n\n /**\n * Custom class for the backdrop. Overrides the current style.\n */\n backdropClass?: string;\n\n /**\n * Custom class for the `<ly-dialog-container>`. Overwrite the current style.\n */\n containerClass?: string;\n\n /**\n * Whether the user can click on the backdrop to close the dialog.\n */\n disableClose?: boolean;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const LY_DIALOG_DATA = new InjectionToken('LyDialogData');\n","import {\n OnInit,\n Component,\n ComponentFactory,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n Injector,\n ApplicationRef,\n ComponentRef,\n EmbeddedViewRef,\n ChangeDetectionStrategy,\n Renderer2,\n ElementRef,\n ChangeDetectorRef,\n OnDestroy,\n AfterContentInit,\n } from '@angular/core';\nimport { state, style, transition, animate, trigger, AnimationEvent } from '@angular/animations';\nimport {\n LyOverlayRef,\n LyTheme2,\n ThemeVariables,\n shadowBuilder,\n st2c,\n LyClasses,\n StyleCollection,\n StyleTemplate,\n ThemeRef,\n StyleRenderer,\n WithStyles } from '@alyle/ui';\nimport { Subject } from 'rxjs';\n\nimport { LyDialogRef } from './dialog-ref';\nimport { LyDialogConfig } from './dialog-config';\nimport { LY_DIALOG_DATA } from './dialog-data';\nimport { Color } from '@alyle/ui/color';\nimport {\n FocusTrapFactory,\n FocusTrap,\n} from '@angular/cdk/a11y';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\n\nconst STYLE_PRIORITY = -2;\n\nexport interface LyDialogTheme {\n /** Styles for Dialog Component. */\n root?: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)>\n | ((classes: LyClasses<typeof STYLES>) => StyleTemplate);\n /** Styles that apply when a color is set. */\n color?: (classes: LyClasses<typeof STYLES>, color: Color) => StyleTemplate;\n}\n\nexport interface LyDialogVariables {\n dialog?: LyDialogTheme;\n}\n\n/** @docs-private */\nconst STYLES = (theme: ThemeVariables & LyDialogVariables, ref: ThemeRef) => {\n const dialog = ref.selectorsOf(STYLES);\n return {\n root: ( ) => (_className: string) => `${_className}{display:flex;position:relative;background-color:${theme.background.primary.default};border-radius:4px;box-shadow:${shadowBuilder(12)};overflow:auto;pointer-events:auto;}${_className} > :first-child{display:flex;flex-direction:column;width:100%;}${st2c((\n (theme.dialog\n && theme.dialog.root\n && (theme.dialog.root instanceof StyleCollection\n ? theme.dialog.root.setTransformer(fn => fn(dialog))\n : theme.dialog.root(dialog))\n )), `${_className}`)}`\n };\n};\n\n/** @docs-private */\n@Component({\n selector: 'ly-dialog-container',\n template: '<ng-template></ng-template>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('dialogContainer', [\n state('void, exit', style({opacity: 0, transform: 'scale(0.7)'})),\n state('enter', style({transform: 'none'})),\n transition('* => enter', animate('150ms cubic-bezier(0, 0, 0.2, 1)',\n style({transform: 'none', opacity: 1}))),\n transition('* => void, * => exit',\n animate('75ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({opacity: 0})))\n ])\n ],\n host: {\n '[@dialogContainer]': '_state',\n '(@dialogContainer.start)': '_onAnimationStart($event)',\n '(@dialogContainer.done)': '_onAnimationDone($event)'\n },\n providers: [\n StyleRenderer\n ],\n standalone: false\n})\nexport class LyDialogContainer implements WithStyles, OnInit, AfterContentInit, OnDestroy {\n /** @docs-private */\n readonly classes = this._theme.addStyleSheet(STYLES, STYLE_PRIORITY);\n private _embeddedViewRef: EmbeddedViewRef<any>;\n private _componentRef: ComponentRef<any>;\n private _focusTrap: FocusTrap;\n\n /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n private _previouslyFocusedElement: HTMLElement | null = null;\n\n /** @internal */\n readonly _afterOpened = new Subject<void>();\n /** @internal */\n readonly _beforeClosed = new Subject<any>();\n /** @internal */\n readonly _afterClosed = new Subject<any>();\n\n /**\n * State of the dialog animation.\n * @internal\n */\n _state: 'void' | 'enter' | 'exit' = 'enter';\n\n /** @internal */\n @ViewChild(TemplateRef, { read: ViewContainerRef, static: true }) private readonly viewContainerRef: ViewContainerRef;\n\n /** @internal */\n private _componentFactoryOrTemplate: ComponentFactory<any> | TemplateRef<any>;\n\n private _newInjector: Injector;\n\n constructor(\n readonly sRenderer: StyleRenderer,\n private _appRef: ApplicationRef,\n private _overlayRef: LyOverlayRef,\n private _theme: LyTheme2,\n private _el: ElementRef<HTMLElement>,\n private _cd: ChangeDetectorRef,\n private _renderer: Renderer2,\n private _trapFactory: FocusTrapFactory\n ) {\n _renderer.addClass(_el.nativeElement, this.classes.root);\n }\n ngOnInit() {\n\n if (this._componentFactoryOrTemplate instanceof TemplateRef) {\n\n const context = new LyDialogContext(this._newInjector);\n\n this._embeddedViewRef = this.viewContainerRef\n .createEmbeddedView(this._componentFactoryOrTemplate, context);\n } else {\n this._componentRef = this.viewContainerRef\n .createComponent(this._componentFactoryOrTemplate, undefined, this._newInjector);\n }\n\n // If exist dialogStyleBlock apply for this component, else do nothing.\n const { containerClass } = this._newInjector.get(LyDialogConfig);\n if (containerClass) {\n this._renderer.addClass(this._el.nativeElement, containerClass);\n }\n }\n\n ngAfterContentInit() {\n this._focusTrap = this._trapFactory.create(this._el.nativeElement);\n this._captureFocus();\n }\n\n ngOnDestroy(): void {\n this._focusTrap.destroy();\n if (this._previouslyFocusedElement) {\n this._previouslyFocusedElement.focus();\n this._previouslyFocusedElement = null;\n }\n }\n\n /** @internal */\n _init(componentFactoryOrTemplate: ComponentFactory<any> | TemplateRef<any>, newInjector: Injector) {\n this._componentFactoryOrTemplate = componentFactoryOrTemplate;\n this._newInjector = newInjector;\n }\n\n /**\n * Start to close, starts the dialog exit animation.\n * @internal\n */\n _startClose() {\n this._state = 'exit';\n this._cd.markForCheck();\n }\n\n _onAnimationStart(event: AnimationEvent) {\n if (event.toState === 'enter') {\n this._overlayRef!.onResizeScroll!();\n }\n }\n\n /** @internal */\n _onAnimationDone(event: AnimationEvent) {\n if (event.toState === 'exit') {\n const dialogRef = this._newInjector.get(LyDialogRef);\n this._destroy();\n this._overlayRef.destroy();\n this._afterClosed.next(dialogRef.result);\n this._afterClosed.complete();\n } else if (event.toState === 'enter') {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n }\n\n private _destroy() {\n if (this._componentRef) {\n this._appRef.detachView(this._componentRef.hostView);\n this._componentRef.destroy();\n } else {\n this._appRef.detachView(this._embeddedViewRef);\n this._embeddedViewRef.detach();\n this._embeddedViewRef.destroy();\n }\n }\n\n /** @internal */\n _getHostElement() {\n return this._el.nativeElement;\n }\n\n private _captureFocus() {\n this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();\n this._focusTrap.focusInitialElementWhenReady();\n }\n}\n\nexport class LyDialogContext {\n $implicit: any = this._injector.get(LyDialogRef);\n dialogRef = this._injector.get(LyDialogRef);\n\n get data() {\n return this._injector.get(LY_DIALOG_DATA);\n }\n\n constructor(private _injector: Injector) { }\n}\n","import { Injector, Type, InjectionToken, InjectFlags } from '@angular/core';\n\nexport class DynamicInjector implements Injector {\n\n constructor(private _newInjector: Injector, private _parentInjector: Injector) { }\n\n get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags): T;\n get(token: any, notFoundValue?: any);\n get(token: any, notFoundValue?: any, _flags?: any) {\n const value = this._newInjector.get(token, notFoundValue);\n\n if (value) {\n return value;\n }\n\n return this._parentInjector.get<any>(token, notFoundValue);\n }\n}\n","import { Injectable, Type, TemplateRef, ComponentFactoryResolver, ComponentFactory, Injector, StaticProvider } from '@angular/core';\nimport { LyOverlay, LyOverlayRef, LyTheme2, STYLES_BACKDROP_DARK, createStyle, LyStyle, MediaQueryArray } from '@alyle/ui';\n\nimport { LyDialogContainer } from './dialog-container.component';\nimport { LyDialogRef } from './dialog-ref';\nimport { DynamicInjector } from './dynamic-injector';\nimport { LyDialogConfig } from './dialog-config';\nimport { LY_DIALOG_DATA } from './dialog-data';\nimport { ESCAPE } from '@angular/cdk/keycodes';\n\nconst dialogContainerStyleProperties = [\n 'width',\n 'maxWidth',\n 'minWidth',\n 'height',\n 'maxHeight',\n 'minHeight',\n];\n\n@Injectable()\nexport class LyDialog {\n\n constructor(\n private _overlay: LyOverlay,\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _theme: LyTheme2,\n private _injector: Injector\n ) { }\n open<T, DATA = unknown>(componentOrTemplateRef: Type<T> | TemplateRef<T>,\n config?: LyDialogConfig<DATA>): LyDialogRef {\n\n // merge with default config\n config = { ...new LyDialogConfig(), ...config };\n\n let componentFactoryOrTemplate: ComponentFactory<any> | TemplateRef<any>;\n if (componentOrTemplateRef instanceof TemplateRef) {\n componentFactoryOrTemplate = componentOrTemplateRef;\n } else {\n componentFactoryOrTemplate = this._componentFactoryResolver.resolveComponentFactory(componentOrTemplateRef);\n }\n\n const noop = () => {};\n\n const overlayRef = this._overlay.create(LyDialogContainer, null, {\n styles: {\n top: 0,\n left: 0,\n right: 0,\n bottom: 0\n },\n hasBackdrop: config.hasBackdrop,\n onResizeScroll: noop,\n disableClose: config.disableClose,\n backdropClass: config.backdropClass || this._theme.style(STYLES_BACKDROP_DARK),\n fnDestroy: () => {\n dialogRef.close();\n keydownEventsSuscription.unsubscribe();\n }\n });\n\n const keydownEvents = overlayRef.keydownEvents();\n const keydownEventsSuscription = keydownEvents.subscribe((event) => {\n if (!(config?.disableClose) && event.keyCode === ESCAPE) {\n dialogRef.close();\n }\n });\n\n const instance: LyDialogContainer = overlayRef.componentRef!.instance;\n\n dialogContainerStyleProperties.forEach(property => {\n if (config![property]) {\n createStyle<string | MediaQueryArray | number | null, LyDialogContainer>(\n instance,\n { key: property, и: LyStyle.и },\n config![property],\n LyStyle[property],\n LyStyle.$priority\n );\n }\n });\n\n const providers: StaticProvider[] = [\n {\n provide: LyDialogRef,\n useValue: new LyDialogRef(overlayRef.componentRef!.injector.get(LyOverlayRef))\n },\n {\n provide: LyDialogConfig,\n useValue: config\n }\n ];\n\n if (config.data != null) {\n providers.push({\n provide: LY_DIALOG_DATA,\n useValue: config.data\n });\n }\n\n const newInjector = new DynamicInjector(\n Injector.create(providers, overlayRef.componentRef!.injector), this._injector);\n instance._init(componentFactoryOrTemplate, newInjector);\n const dialogRef = newInjector.get(LyDialogRef);\n return dialogRef;\n }\n}\n\n","import { Directive, ElementRef, OnInit, Renderer2 } from '@angular/core';\nimport {\n LyTheme2,\n ThemeVariables } from '@alyle/ui';\n\n/** @docs-private */\nconst STYLE_PRIORITY = -2;\n\n/** @docs-private */\nconst STYLES_DIALOG_TITLE = (theme: ThemeVariables) => (_className: string) => `${_className}{display:block;flex:0 0 auto;margin:20px 0 16px;padding:0 24px;font-size:20px;line-height:24px;font-weight:500;font-family:${theme.typography.fontFamily};}`;\n\n@Directive({\n selector: '[ly-dialog-title], [lyDialogTitle]',\n exportAs: 'lyDialogTitle',\n standalone: false\n})\nexport class LyDialogTitle implements OnInit {\n constructor(\n private _renderer: Renderer2,\n private _el: ElementRef<HTMLElement>,\n private _theme: LyTheme2) { }\n\n ngOnInit() {\n this._renderer.addClass(\n this._el.nativeElement, this._theme.renderStyle(STYLES_DIALOG_TITLE, STYLE_PRIORITY));\n }\n}\n","import { Directive, ElementRef, OnInit, Renderer2 } from '@angular/core';\nimport {\n LyTheme2 } from '@alyle/ui';\n\n/** @docs-private */\nconst STYLE_PRIORITY = -2;\n\n/** @docs-private */\nconst STYLES_DIALOG_CONTENT = () => (_className: string) => `${_className}{display:block;overflow-y:auto;flex:1 1 auto;padding:0 24px 24px;-webkit-overflow-scrolling:touch;}`;\n\n@Directive({\n selector: 'ly-dialog-content, [ly-dialog-content], [lyDialogContent]',\n exportAs: 'lyDialogContent',\n standalone: false\n})\nexport class LyDialogContent implements OnInit {\n constructor(\n private _renderer: Renderer2,\n private _el: ElementRef<HTMLElement>,\n private _theme: LyTheme2) { }\n\n ngOnInit() {\n this._renderer.addClass(\n this._el.nativeElement, this._theme.renderStyle(STYLES_DIALOG_CONTENT, STYLE_PRIORITY));\n }\n}\n","import { Directive, ElementRef, OnInit, Renderer2 } from '@angular/core';\nimport {\n LyTheme2 } from '@alyle/ui';\n\n/** @docs-private */\nconst STYLE_PRIORITY = -2;\n\n/** @docs-private */\nconst STYLES_DIALOG_ACTIONS = () => (_className: string) => `${_className}{display:flex;flex:0 0 auto;padding:8px;flex-wrap:wrap;min-height:52px;align-items:center;}`;\n\n@Directive({\n selector: 'ly-dialog-actions, [ly-dialog-actions], [lyDialogActions]',\n exportAs: 'lyDialogActions',\n standalone: false\n})\nexport class LyDialogActions implements OnInit {\n constructor(\n private _renderer: Renderer2,\n private _el: ElementRef<HTMLElement>,\n private _theme: LyTheme2) { }\n\n ngOnInit() {\n this._renderer.addClass(\n this._el.nativeElement, this._theme.renderStyle(STYLES_DIALOG_ACTIONS, STYLE_PRIORITY));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LyCommonModule, LyOverlayModule } from '@alyle/ui';\n\nimport { LyDialogContainer } from './dialog-container.component';\nimport { LyDialog } from './dialog';\nimport { LyDialogTitle } from './dialog-title.directive';\nimport { LyDialogContent } from './dialog-content.directive';\nimport { LyDialogActions } from './dialog-actions.directive';\nimport { A11yModule } from '@angular/cdk/a11y';\n\n@NgModule({\n declarations: [\n LyDialogContainer,\n LyDialogTitle,\n LyDialogContent,\n LyDialogActions\n ],\n imports: [\n CommonModule,\n LyCommonModule,\n LyOverlayModule,\n A11yModule\n ],\n exports: [\n LyCommonModule,\n LyDialogContainer,\n LyDialogTitle,\n LyDialogContent,\n LyDialogActions\n ],\n providers: [\n LyDialog\n ]\n})\nexport class LyDialogModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["STYLE_PRIORITY"],"mappings":"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"}