novo-elements 9.3.0-next.2 → 9.3.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/elements/chips/RowChips.scss +9 -1
  2. package/esm2020/elements/aside/aside.component.mjs +3 -3
  3. package/esm2020/elements/autocomplete/autocomplete.component.mjs +2 -2
  4. package/esm2020/elements/button/Button.mjs +2 -2
  5. package/esm2020/elements/calendar/calendar.component.mjs +2 -2
  6. package/esm2020/elements/calendar/month-view/month-view.component.mjs +2 -2
  7. package/esm2020/elements/card/Card.mjs +2 -2
  8. package/esm2020/elements/checkbox/CheckList.mjs +2 -2
  9. package/esm2020/elements/checkbox/Checkbox.mjs +2 -2
  10. package/esm2020/elements/chips/Chip.mjs +2 -2
  11. package/esm2020/elements/chips/RowChips.mjs +5 -3
  12. package/esm2020/elements/color-picker/color-picker.component.mjs +2 -2
  13. package/esm2020/elements/common/selection/pseudo-checkbox/pseudo-checkbox.component.mjs +2 -2
  14. package/esm2020/elements/data-table/data-table.component.mjs +3 -3
  15. package/esm2020/elements/date-picker/DatePicker.mjs +3 -3
  16. package/esm2020/elements/date-picker/DatePickerInput.mjs +2 -2
  17. package/esm2020/elements/date-picker/DateRangeInput.mjs +2 -2
  18. package/esm2020/elements/date-time-picker/DateTimePicker.mjs +3 -3
  19. package/esm2020/elements/field/field.mjs +2 -2
  20. package/esm2020/elements/field/hint/hint.mjs +2 -2
  21. package/esm2020/elements/form/DynamicForm.mjs +3 -3
  22. package/esm2020/elements/form/Form.mjs +2 -2
  23. package/esm2020/elements/form/extras/file/FileInput.mjs +2 -2
  24. package/esm2020/elements/header/Header.mjs +2 -2
  25. package/esm2020/elements/layout/container/layout-container.component.mjs +2 -2
  26. package/esm2020/elements/loading/Loading.mjs +4 -4
  27. package/esm2020/elements/menu/menu-content.component.mjs +2 -2
  28. package/esm2020/elements/modal/modal-container.component.mjs +3 -3
  29. package/esm2020/elements/picker/Picker.mjs +2 -2
  30. package/esm2020/elements/progress/ProgressBar.mjs +2 -2
  31. package/esm2020/elements/query-builder/condition-builder/condition-builder.component.mjs +3 -3
  32. package/esm2020/elements/search/SearchBox.mjs +2 -2
  33. package/esm2020/elements/select/Select.mjs +2 -2
  34. package/esm2020/elements/simple-table/table.mjs +5 -5
  35. package/esm2020/elements/stepper/step-header.component.mjs +2 -2
  36. package/esm2020/elements/switch/Switch.mjs +2 -2
  37. package/esm2020/elements/table/Table.mjs +2 -2
  38. package/esm2020/elements/time-picker/TimePicker.mjs +2 -2
  39. package/esm2020/elements/time-picker/TimePickerInput.mjs +2 -2
  40. package/esm2020/elements/toast/Toast.mjs +2 -2
  41. package/esm2020/elements/tooltip/Tooltip.component.mjs +3 -3
  42. package/esm2020/elements/value/Value.mjs +2 -2
  43. package/fesm2015/novo-elements-elements-aside.mjs +2 -2
  44. package/fesm2015/novo-elements-elements-aside.mjs.map +1 -1
  45. package/fesm2015/novo-elements-elements-autocomplete.mjs +2 -2
  46. package/fesm2015/novo-elements-elements-autocomplete.mjs.map +1 -1
  47. package/fesm2015/novo-elements-elements-button.mjs +2 -2
  48. package/fesm2015/novo-elements-elements-button.mjs.map +1 -1
  49. package/fesm2015/novo-elements-elements-calendar.mjs +4 -4
  50. package/fesm2015/novo-elements-elements-calendar.mjs.map +1 -1
  51. package/fesm2015/novo-elements-elements-card.mjs +2 -2
  52. package/fesm2015/novo-elements-elements-card.mjs.map +1 -1
  53. package/fesm2015/novo-elements-elements-checkbox.mjs +4 -4
  54. package/fesm2015/novo-elements-elements-checkbox.mjs.map +1 -1
  55. package/fesm2015/novo-elements-elements-chips.mjs +6 -4
  56. package/fesm2015/novo-elements-elements-chips.mjs.map +1 -1
  57. package/fesm2015/novo-elements-elements-color-picker.mjs +2 -2
  58. package/fesm2015/novo-elements-elements-color-picker.mjs.map +1 -1
  59. package/fesm2015/novo-elements-elements-common.mjs +2 -2
  60. package/fesm2015/novo-elements-elements-common.mjs.map +1 -1
  61. package/fesm2015/novo-elements-elements-data-table.mjs +2 -2
  62. package/fesm2015/novo-elements-elements-data-table.mjs.map +1 -1
  63. package/fesm2015/novo-elements-elements-date-picker.mjs +6 -6
  64. package/fesm2015/novo-elements-elements-date-picker.mjs.map +1 -1
  65. package/fesm2015/novo-elements-elements-date-time-picker.mjs +2 -2
  66. package/fesm2015/novo-elements-elements-date-time-picker.mjs.map +1 -1
  67. package/fesm2015/novo-elements-elements-field.mjs +4 -4
  68. package/fesm2015/novo-elements-elements-field.mjs.map +1 -1
  69. package/fesm2015/novo-elements-elements-form.mjs +6 -6
  70. package/fesm2015/novo-elements-elements-form.mjs.map +1 -1
  71. package/fesm2015/novo-elements-elements-header.mjs +2 -2
  72. package/fesm2015/novo-elements-elements-header.mjs.map +1 -1
  73. package/fesm2015/novo-elements-elements-layout.mjs +2 -2
  74. package/fesm2015/novo-elements-elements-layout.mjs.map +1 -1
  75. package/fesm2015/novo-elements-elements-loading.mjs +4 -4
  76. package/fesm2015/novo-elements-elements-loading.mjs.map +1 -1
  77. package/fesm2015/novo-elements-elements-menu.mjs +2 -2
  78. package/fesm2015/novo-elements-elements-menu.mjs.map +1 -1
  79. package/fesm2015/novo-elements-elements-modal.mjs +2 -2
  80. package/fesm2015/novo-elements-elements-modal.mjs.map +1 -1
  81. package/fesm2015/novo-elements-elements-picker.mjs +2 -2
  82. package/fesm2015/novo-elements-elements-picker.mjs.map +1 -1
  83. package/fesm2015/novo-elements-elements-progress.mjs +2 -2
  84. package/fesm2015/novo-elements-elements-progress.mjs.map +1 -1
  85. package/fesm2015/novo-elements-elements-query-builder.mjs +2 -2
  86. package/fesm2015/novo-elements-elements-query-builder.mjs.map +1 -1
  87. package/fesm2015/novo-elements-elements-search.mjs +2 -2
  88. package/fesm2015/novo-elements-elements-search.mjs.map +1 -1
  89. package/fesm2015/novo-elements-elements-select.mjs +2 -2
  90. package/fesm2015/novo-elements-elements-select.mjs.map +1 -1
  91. package/fesm2015/novo-elements-elements-simple-table.mjs +4 -4
  92. package/fesm2015/novo-elements-elements-simple-table.mjs.map +1 -1
  93. package/fesm2015/novo-elements-elements-stepper.mjs +2 -2
  94. package/fesm2015/novo-elements-elements-stepper.mjs.map +1 -1
  95. package/fesm2015/novo-elements-elements-switch.mjs +2 -2
  96. package/fesm2015/novo-elements-elements-switch.mjs.map +1 -1
  97. package/fesm2015/novo-elements-elements-table.mjs +2 -2
  98. package/fesm2015/novo-elements-elements-table.mjs.map +1 -1
  99. package/fesm2015/novo-elements-elements-time-picker.mjs +4 -4
  100. package/fesm2015/novo-elements-elements-time-picker.mjs.map +1 -1
  101. package/fesm2015/novo-elements-elements-toast.mjs +2 -2
  102. package/fesm2015/novo-elements-elements-toast.mjs.map +1 -1
  103. package/fesm2015/novo-elements-elements-tooltip.mjs +2 -2
  104. package/fesm2015/novo-elements-elements-tooltip.mjs.map +1 -1
  105. package/fesm2015/novo-elements-elements-value.mjs +2 -2
  106. package/fesm2015/novo-elements-elements-value.mjs.map +1 -1
  107. package/fesm2020/novo-elements-elements-aside.mjs +2 -2
  108. package/fesm2020/novo-elements-elements-aside.mjs.map +1 -1
  109. package/fesm2020/novo-elements-elements-autocomplete.mjs +2 -2
  110. package/fesm2020/novo-elements-elements-autocomplete.mjs.map +1 -1
  111. package/fesm2020/novo-elements-elements-button.mjs +2 -2
  112. package/fesm2020/novo-elements-elements-button.mjs.map +1 -1
  113. package/fesm2020/novo-elements-elements-calendar.mjs +4 -4
  114. package/fesm2020/novo-elements-elements-calendar.mjs.map +1 -1
  115. package/fesm2020/novo-elements-elements-card.mjs +2 -2
  116. package/fesm2020/novo-elements-elements-card.mjs.map +1 -1
  117. package/fesm2020/novo-elements-elements-checkbox.mjs +4 -4
  118. package/fesm2020/novo-elements-elements-checkbox.mjs.map +1 -1
  119. package/fesm2020/novo-elements-elements-chips.mjs +6 -4
  120. package/fesm2020/novo-elements-elements-chips.mjs.map +1 -1
  121. package/fesm2020/novo-elements-elements-color-picker.mjs +2 -2
  122. package/fesm2020/novo-elements-elements-color-picker.mjs.map +1 -1
  123. package/fesm2020/novo-elements-elements-common.mjs +2 -2
  124. package/fesm2020/novo-elements-elements-common.mjs.map +1 -1
  125. package/fesm2020/novo-elements-elements-data-table.mjs +2 -2
  126. package/fesm2020/novo-elements-elements-data-table.mjs.map +1 -1
  127. package/fesm2020/novo-elements-elements-date-picker.mjs +6 -6
  128. package/fesm2020/novo-elements-elements-date-picker.mjs.map +1 -1
  129. package/fesm2020/novo-elements-elements-date-time-picker.mjs +2 -2
  130. package/fesm2020/novo-elements-elements-date-time-picker.mjs.map +1 -1
  131. package/fesm2020/novo-elements-elements-field.mjs +4 -4
  132. package/fesm2020/novo-elements-elements-field.mjs.map +1 -1
  133. package/fesm2020/novo-elements-elements-form.mjs +6 -6
  134. package/fesm2020/novo-elements-elements-form.mjs.map +1 -1
  135. package/fesm2020/novo-elements-elements-header.mjs +2 -2
  136. package/fesm2020/novo-elements-elements-header.mjs.map +1 -1
  137. package/fesm2020/novo-elements-elements-layout.mjs +2 -2
  138. package/fesm2020/novo-elements-elements-layout.mjs.map +1 -1
  139. package/fesm2020/novo-elements-elements-loading.mjs +4 -4
  140. package/fesm2020/novo-elements-elements-loading.mjs.map +1 -1
  141. package/fesm2020/novo-elements-elements-menu.mjs +2 -2
  142. package/fesm2020/novo-elements-elements-menu.mjs.map +1 -1
  143. package/fesm2020/novo-elements-elements-modal.mjs +2 -2
  144. package/fesm2020/novo-elements-elements-modal.mjs.map +1 -1
  145. package/fesm2020/novo-elements-elements-picker.mjs +2 -2
  146. package/fesm2020/novo-elements-elements-picker.mjs.map +1 -1
  147. package/fesm2020/novo-elements-elements-progress.mjs +2 -2
  148. package/fesm2020/novo-elements-elements-progress.mjs.map +1 -1
  149. package/fesm2020/novo-elements-elements-query-builder.mjs +2 -2
  150. package/fesm2020/novo-elements-elements-query-builder.mjs.map +1 -1
  151. package/fesm2020/novo-elements-elements-search.mjs +2 -2
  152. package/fesm2020/novo-elements-elements-search.mjs.map +1 -1
  153. package/fesm2020/novo-elements-elements-select.mjs +2 -2
  154. package/fesm2020/novo-elements-elements-select.mjs.map +1 -1
  155. package/fesm2020/novo-elements-elements-simple-table.mjs +4 -4
  156. package/fesm2020/novo-elements-elements-simple-table.mjs.map +1 -1
  157. package/fesm2020/novo-elements-elements-stepper.mjs +2 -2
  158. package/fesm2020/novo-elements-elements-stepper.mjs.map +1 -1
  159. package/fesm2020/novo-elements-elements-switch.mjs +2 -2
  160. package/fesm2020/novo-elements-elements-switch.mjs.map +1 -1
  161. package/fesm2020/novo-elements-elements-table.mjs +2 -2
  162. package/fesm2020/novo-elements-elements-table.mjs.map +1 -1
  163. package/fesm2020/novo-elements-elements-time-picker.mjs +4 -4
  164. package/fesm2020/novo-elements-elements-time-picker.mjs.map +1 -1
  165. package/fesm2020/novo-elements-elements-toast.mjs +2 -2
  166. package/fesm2020/novo-elements-elements-toast.mjs.map +1 -1
  167. package/fesm2020/novo-elements-elements-tooltip.mjs +2 -2
  168. package/fesm2020/novo-elements-elements-tooltip.mjs.map +1 -1
  169. package/fesm2020/novo-elements-elements-value.mjs +2 -2
  170. package/fesm2020/novo-elements-elements-value.mjs.map +1 -1
  171. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"novo-elements-elements-aside.mjs","sources":["../../../projects/novo-elements/src/elements/aside/aside-ref.ts","../../../projects/novo-elements/src/elements/aside/aside.animation.ts","../../../projects/novo-elements/src/elements/aside/aside.component.ts","../../../projects/novo-elements/src/elements/aside/aside.component.html","../../../projects/novo-elements/src/elements/aside/aside.service.ts","../../../projects/novo-elements/src/elements/aside/aside.module.ts","../../../projects/novo-elements/src/elements/aside/novo-elements-elements-aside.ts"],"sourcesContent":["import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { AsideComponent } from './aside.component';\n\nexport class NovoAsideRef<T = any, R = any> {\n constructor(public component: any, public params: T, private overlayRef: OverlayRef) {}\n\n private _beforeClose = new Subject<R>();\n private _afterClosed = new Subject<R>();\n isClosed: boolean = false;\n componentInstance: AsideComponent;\n\n // Gets a promise that is resolved when the dialog is closed.\n get onClosed(): Promise<R> {\n return this._afterClosed.toPromise();\n }\n\n afterClosed(): Observable<R> {\n return this._afterClosed.asObservable();\n }\n\n beforeClose(): Observable<R> {\n return this._beforeClose.asObservable();\n }\n\n close(result?: R): void {\n // Listen for animation 'start' events\n this.componentInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'start'),\n take(1),\n )\n .subscribe(() => {\n this._beforeClose.next(result);\n this._beforeClose.complete();\n this.overlayRef.detachBackdrop();\n });\n\n // Listen for animation 'done' events\n this.componentInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'done' && event.toState === 'leave'),\n take(1),\n )\n .subscribe(() => {\n this.isClosed = true;\n this.overlayRef.dispose();\n this._afterClosed.next(result);\n this._afterClosed.complete();\n\n // Make sure to also clear the reference to the\n // component instance to avoid memory leaks\n this.componentInstance = null;\n });\n\n // Start exit animation\n this.componentInstance.startExitAnimation();\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport const slideInOut = trigger('slideInOut', [\n state('void', style({ transform: 'translateX(100%)' })),\n state('enter', style({ transform: 'none' })),\n state('leave', style({ transform: 'translateX(100%)' })),\n transition('* => *', animate('800ms cubic-bezier(0.2, 1, 0.3, 1)')),\n]);\n","import { AnimationEvent } from '@angular/animations';\nimport { ComponentPortal, Portal } from '@angular/cdk/portal';\nimport { Component, EventEmitter, Injector, Output } from '@angular/core';\nimport { NovoAsideRef } from './aside-ref';\nimport { slideInOut } from './aside.animation';\n\n@Component({\n selector: 'novo-aside',\n templateUrl: './aside.component.html',\n styleUrls: ['./aside.component.scss'],\n animations: [slideInOut],\n})\nexport class AsideComponent {\n @Output() animationStateChanged = new EventEmitter<AnimationEvent>();\n\n animationState: 'void' | 'enter' | 'leave' = 'enter';\n\n component: Portal<any>;\n\n constructor(private injector: Injector, private asideRef: NovoAsideRef) {\n this.component = new ComponentPortal(asideRef.component, null, injector);\n }\n\n onAnimationStart(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n onAnimationDone(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n startExitAnimation() {\n this.animationState = 'leave';\n }\n}\n","<div class=\"aside-panel\" [@slideInOut]=\"animationState\" (@slideInOut.start)=\"onAnimationStart($event)\"\n (@slideInOut.done)=\"onAnimationDone($event)\">\n <ng-template [cdkPortalOutlet]=\"component\"></ng-template>\n</div>","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, PortalInjector } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, Injector } from '@angular/core';\nimport { NovoAsideRef } from './aside-ref';\nimport { AsideComponent } from './aside.component';\n\ninterface AsideConfig extends OverlayConfig {\n panelClass?: string;\n hasBackdrop?: boolean;\n backdropClass?: string;\n}\n\nconst DEFAULT_CONFIG: AsideConfig = {\n hasBackdrop: true,\n backdropClass: 'aside-overlay-backdrop',\n panelClass: 'aside-overlay-panel',\n};\n\n@Injectable({ providedIn: 'root' })\nexport class NovoAsideService {\n constructor(private injector: Injector, private overlay: Overlay) {}\n\n open<R = any>(component, params = {}, config = {}) {\n // Override default configuration\n const asideConfig = this.getOverlayConfig({ ...DEFAULT_CONFIG, ...config });\n\n // Returns an OverlayRef which is a PortalHost\n const overlayRef = this.createOverlay(asideConfig);\n\n // Instantiate remote control\n const asideRef = new NovoAsideRef<typeof params, R>(component, params, overlayRef);\n\n const overlayComponent = this.attachAsideContainer(AsideComponent, overlayRef, asideConfig, asideRef);\n\n // Pass the instance of the overlay component to the remote control\n asideRef.componentInstance = overlayComponent;\n\n overlayRef.backdropClick().subscribe(() => asideRef.close());\n\n return asideRef;\n }\n\n private createOverlay(config: AsideConfig) {\n return this.overlay.create(config);\n }\n\n private attachAsideContainer(component, overlayRef: OverlayRef, config: AsideConfig, asideRef: NovoAsideRef) {\n const injector = this.createInjector(config, asideRef);\n\n const containerPortal = new ComponentPortal(component, null, injector);\n const containerRef: ComponentRef<any> = overlayRef.attach(containerPortal);\n\n return containerRef.instance;\n }\n\n private createInjector(config: AsideConfig, asideRef: NovoAsideRef): PortalInjector {\n const injectionTokens = new WeakMap();\n\n injectionTokens.set(NovoAsideRef, asideRef);\n\n return new PortalInjector(this.injector, injectionTokens);\n }\n\n private getOverlayConfig(config: AsideConfig): AsideConfig {\n // const positionStrategy = this.overlay.position().global().centerHorizontally().centerVertically();\n const scrollStrategy = config.hasBackdrop ? this.overlay.scrollStrategies.block() : this.overlay.scrollStrategies.noop();\n\n return {\n scrollStrategy,\n hasBackdrop: config.hasBackdrop,\n backdropClass: config.backdropClass,\n panelClass: config.panelClass,\n };\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { AsideComponent } from './aside.component';\nimport { NovoAsideService } from './aside.service';\n\n@NgModule({\n imports: [OverlayModule, PortalModule],\n declarations: [AsideComponent],\n providers: [NovoAsideService],\n})\nexport class NovoAsideModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.NovoAsideRef"],"mappings":"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"}
1
+ {"version":3,"file":"novo-elements-elements-aside.mjs","sources":["../../../projects/novo-elements/src/elements/aside/aside-ref.ts","../../../projects/novo-elements/src/elements/aside/aside.animation.ts","../../../projects/novo-elements/src/elements/aside/aside.component.ts","../../../projects/novo-elements/src/elements/aside/aside.component.html","../../../projects/novo-elements/src/elements/aside/aside.service.ts","../../../projects/novo-elements/src/elements/aside/aside.module.ts","../../../projects/novo-elements/src/elements/aside/novo-elements-elements-aside.ts"],"sourcesContent":["import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { AsideComponent } from './aside.component';\n\nexport class NovoAsideRef<T = any, R = any> {\n constructor(public component: any, public params: T, private overlayRef: OverlayRef) {}\n\n private _beforeClose = new Subject<R>();\n private _afterClosed = new Subject<R>();\n isClosed: boolean = false;\n componentInstance: AsideComponent;\n\n // Gets a promise that is resolved when the dialog is closed.\n get onClosed(): Promise<R> {\n return this._afterClosed.toPromise();\n }\n\n afterClosed(): Observable<R> {\n return this._afterClosed.asObservable();\n }\n\n beforeClose(): Observable<R> {\n return this._beforeClose.asObservable();\n }\n\n close(result?: R): void {\n // Listen for animation 'start' events\n this.componentInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'start'),\n take(1),\n )\n .subscribe(() => {\n this._beforeClose.next(result);\n this._beforeClose.complete();\n this.overlayRef.detachBackdrop();\n });\n\n // Listen for animation 'done' events\n this.componentInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'done' && event.toState === 'leave'),\n take(1),\n )\n .subscribe(() => {\n this.isClosed = true;\n this.overlayRef.dispose();\n this._afterClosed.next(result);\n this._afterClosed.complete();\n\n // Make sure to also clear the reference to the\n // component instance to avoid memory leaks\n this.componentInstance = null;\n });\n\n // Start exit animation\n this.componentInstance.startExitAnimation();\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport const slideInOut = trigger('slideInOut', [\n state('void', style({ transform: 'translateX(100%)' })),\n state('enter', style({ transform: 'none' })),\n state('leave', style({ transform: 'translateX(100%)' })),\n transition('* => *', animate('800ms cubic-bezier(0.2, 1, 0.3, 1)')),\n]);\n","import { AnimationEvent } from '@angular/animations';\nimport { ComponentPortal, Portal } from '@angular/cdk/portal';\nimport { Component, EventEmitter, Injector, Output } from '@angular/core';\nimport { NovoAsideRef } from './aside-ref';\nimport { slideInOut } from './aside.animation';\n\n@Component({\n selector: 'novo-aside',\n templateUrl: './aside.component.html',\n styleUrls: ['./aside.component.scss'],\n animations: [slideInOut],\n})\nexport class AsideComponent {\n @Output() animationStateChanged = new EventEmitter<AnimationEvent>();\n\n animationState: 'void' | 'enter' | 'leave' = 'enter';\n\n component: Portal<any>;\n\n constructor(private injector: Injector, private asideRef: NovoAsideRef) {\n this.component = new ComponentPortal(asideRef.component, null, injector);\n }\n\n onAnimationStart(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n onAnimationDone(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n startExitAnimation() {\n this.animationState = 'leave';\n }\n}\n","<div class=\"aside-panel\" [@slideInOut]=\"animationState\" (@slideInOut.start)=\"onAnimationStart($event)\"\n (@slideInOut.done)=\"onAnimationDone($event)\">\n <ng-template [cdkPortalOutlet]=\"component\"></ng-template>\n</div>","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, PortalInjector } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, Injector } from '@angular/core';\nimport { NovoAsideRef } from './aside-ref';\nimport { AsideComponent } from './aside.component';\n\ninterface AsideConfig extends OverlayConfig {\n panelClass?: string;\n hasBackdrop?: boolean;\n backdropClass?: string;\n}\n\nconst DEFAULT_CONFIG: AsideConfig = {\n hasBackdrop: true,\n backdropClass: 'aside-overlay-backdrop',\n panelClass: 'aside-overlay-panel',\n};\n\n@Injectable({ providedIn: 'root' })\nexport class NovoAsideService {\n constructor(private injector: Injector, private overlay: Overlay) {}\n\n open<R = any>(component, params = {}, config = {}) {\n // Override default configuration\n const asideConfig = this.getOverlayConfig({ ...DEFAULT_CONFIG, ...config });\n\n // Returns an OverlayRef which is a PortalHost\n const overlayRef = this.createOverlay(asideConfig);\n\n // Instantiate remote control\n const asideRef = new NovoAsideRef<typeof params, R>(component, params, overlayRef);\n\n const overlayComponent = this.attachAsideContainer(AsideComponent, overlayRef, asideConfig, asideRef);\n\n // Pass the instance of the overlay component to the remote control\n asideRef.componentInstance = overlayComponent;\n\n overlayRef.backdropClick().subscribe(() => asideRef.close());\n\n return asideRef;\n }\n\n private createOverlay(config: AsideConfig) {\n return this.overlay.create(config);\n }\n\n private attachAsideContainer(component, overlayRef: OverlayRef, config: AsideConfig, asideRef: NovoAsideRef) {\n const injector = this.createInjector(config, asideRef);\n\n const containerPortal = new ComponentPortal(component, null, injector);\n const containerRef: ComponentRef<any> = overlayRef.attach(containerPortal);\n\n return containerRef.instance;\n }\n\n private createInjector(config: AsideConfig, asideRef: NovoAsideRef): PortalInjector {\n const injectionTokens = new WeakMap();\n\n injectionTokens.set(NovoAsideRef, asideRef);\n\n return new PortalInjector(this.injector, injectionTokens);\n }\n\n private getOverlayConfig(config: AsideConfig): AsideConfig {\n // const positionStrategy = this.overlay.position().global().centerHorizontally().centerVertically();\n const scrollStrategy = config.hasBackdrop ? this.overlay.scrollStrategies.block() : this.overlay.scrollStrategies.noop();\n\n return {\n scrollStrategy,\n hasBackdrop: config.hasBackdrop,\n backdropClass: config.backdropClass,\n panelClass: config.panelClass,\n };\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { AsideComponent } from './aside.component';\nimport { NovoAsideService } from './aside.service';\n\n@NgModule({\n imports: [OverlayModule, PortalModule],\n declarations: [AsideComponent],\n providers: [NovoAsideService],\n})\nexport class NovoAsideModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.NovoAsideRef"],"mappings":"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"}
@@ -274,7 +274,7 @@ class NovoAutocompleteElement extends NovoAutocompleteMixins {
274
274
  }
275
275
  }
276
276
  NovoAutocompleteElement.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoAutocompleteElement, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: 'tabindex', attribute: true }, { token: NOVO_FORM_FIELD, optional: true }], target: i0.ɵɵFactoryTarget.Component });
277
- NovoAutocompleteElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NovoAutocompleteElement, selector: "novo-autocomplete", inputs: { tabIndex: "tabIndex", triggerOn: "triggerOn", displayWith: "displayWith", ariaLabel: ["aria-label", "ariaLabel"], multiple: "multiple", disabled: "disabled" }, outputs: { optionSelected: "optionSelected", optionActivated: "optionActivated" }, host: { properties: { "attr.tabindex": "disabled ? null : -1" }, classAttribute: "novo-autocomplete" }, providers: [{ provide: NOVO_OPTION_PARENT_COMPONENT, useExisting: NovoAutocompleteElement }], queries: [{ propertyName: "optionGroups", predicate: NovoOptgroup, descendants: true }, { propertyName: "options", predicate: NovoOption, descendants: true }], viewQueries: [{ propertyName: "overlay", first: true, predicate: NovoOverlayTemplateComponent, descendants: true }], exportAs: ["novoAutocomplete"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<novo-overlay-template [parent]=\"element\" position=\"above-below\">\n <div class=\"novo-autocomplete-options\" cdk-scrollable>\n <ng-content></ng-content>\n </div>\n</novo-overlay-template>", styles: [".novo-autocomplete-options{background-color:var(--background-bright);cursor:default;list-style:none;-webkit-padding-start:0px!important;padding-inline-start:0px!important;box-shadow:0 -1px 3px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}\n"], components: [{ type: i1.NovoOverlayTemplateComponent, selector: "novo-overlay-template", inputs: ["position", "scrollStrategy", "width", "height", "closeOnSelect", "hasBackdrop", "parent"], outputs: ["select", "opening", "closing"] }], directives: [{ type: i2.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
277
+ NovoAutocompleteElement.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NovoAutocompleteElement, selector: "novo-autocomplete", inputs: { tabIndex: "tabIndex", triggerOn: "triggerOn", displayWith: "displayWith", ariaLabel: ["aria-label", "ariaLabel"], multiple: "multiple", disabled: "disabled" }, outputs: { optionSelected: "optionSelected", optionActivated: "optionActivated" }, host: { properties: { "attr.tabindex": "disabled ? null : -1" }, classAttribute: "novo-autocomplete" }, providers: [{ provide: NOVO_OPTION_PARENT_COMPONENT, useExisting: NovoAutocompleteElement }], queries: [{ propertyName: "optionGroups", predicate: NovoOptgroup, descendants: true }, { propertyName: "options", predicate: NovoOption, descendants: true }], viewQueries: [{ propertyName: "overlay", first: true, predicate: NovoOverlayTemplateComponent, descendants: true }], exportAs: ["novoAutocomplete"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<novo-overlay-template [parent]=\"element\" position=\"above-below\">\n <div class=\"novo-autocomplete-options\" cdk-scrollable>\n <ng-content></ng-content>\n </div>\n</novo-overlay-template>", styles: [".novo-autocomplete-options{background-color:var(--background-bright);cursor:default;list-style:none;padding-inline-start:0px!important;box-shadow:0 -1px 3px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}\n"], components: [{ type: i1.NovoOverlayTemplateComponent, selector: "novo-overlay-template", inputs: ["position", "scrollStrategy", "width", "height", "closeOnSelect", "hasBackdrop", "parent"], outputs: ["select", "opening", "closing"] }], directives: [{ type: i2.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
278
278
  __decorate([
279
279
  BooleanInput(),
280
280
  __metadata("design:type", Boolean),
@@ -287,7 +287,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
287
287
  // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the
288
288
  // consumer may have provided, while still being able to receive focus.
289
289
  '[attr.tabindex]': 'disabled ? null : -1',
290
- }, providers: [{ provide: NOVO_OPTION_PARENT_COMPONENT, useExisting: NovoAutocompleteElement }], exportAs: 'novoAutocomplete', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<novo-overlay-template [parent]=\"element\" position=\"above-below\">\n <div class=\"novo-autocomplete-options\" cdk-scrollable>\n <ng-content></ng-content>\n </div>\n</novo-overlay-template>", styles: [".novo-autocomplete-options{background-color:var(--background-bright);cursor:default;list-style:none;-webkit-padding-start:0px!important;padding-inline-start:0px!important;box-shadow:0 -1px 3px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}\n"] }]
290
+ }, providers: [{ provide: NOVO_OPTION_PARENT_COMPONENT, useExisting: NovoAutocompleteElement }], exportAs: 'novoAutocomplete', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<novo-overlay-template [parent]=\"element\" position=\"above-below\">\n <div class=\"novo-autocomplete-options\" cdk-scrollable>\n <ng-content></ng-content>\n </div>\n</novo-overlay-template>", styles: [".novo-autocomplete-options{background-color:var(--background-bright);cursor:default;list-style:none;padding-inline-start:0px!important;box-shadow:0 -1px 3px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}\n"] }]
291
291
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
292
292
  type: Attribute,
293
293
  args: ['tabindex']
@@ -1 +1 @@
1
- {"version":3,"file":"novo-elements-elements-autocomplete.mjs","sources":["../../../projects/novo-elements/src/elements/autocomplete/autocomplete.component.ts","../../../projects/novo-elements/src/elements/autocomplete/autocomplete.component.html","../../../projects/novo-elements/src/elements/autocomplete/autocomplete.module.ts","../../../projects/novo-elements/src/elements/autocomplete/novo-elements-elements-autocomplete.ts"],"sourcesContent":["import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { fromEvent, interval, merge, of, Subscription } from 'rxjs';\nimport { debounce, take } from 'rxjs/operators';\nimport { BooleanInput, Key } from 'novo-elements/utils';\nimport type { NovoChipList } from 'novo-elements/elements/chips';\nimport {\n CanDisable,\n CanDisableCtor,\n HasOverlayCtor,\n mixinDisabled,\n mixinOverlay,\n NovoOptgroup,\n NovoOption,\n NovoOptionSelectionChange,\n NovoOverlayTemplateComponent,\n NOVO_OPTION_PARENT_COMPONENT,\n} from 'novo-elements/elements/common';\nimport { NovoFieldControl, NovoFieldElement, NOVO_FORM_FIELD } from 'novo-elements/elements/field';\n\n/** Event object that is emitted when an autocomplete option is selected. */\nexport class NovoOptionSelectedEvent {\n constructor(\n /** Reference to the autocomplete panel that emitted the event. */\n public source: NovoAutocompleteElement,\n /** Option that was selected. */\n public option: NovoOption,\n ) {}\n}\n\n// Boilerplate for applying mixins\nclass NovoAutocompleteBase {\n constructor() {}\n}\nconst NovoAutocompleteMixins: HasOverlayCtor & CanDisableCtor & typeof NovoAutocompleteBase = mixinOverlay(\n mixinDisabled(NovoAutocompleteBase),\n);\n\n@Component({\n selector: 'novo-autocomplete',\n templateUrl: 'autocomplete.component.html',\n styleUrls: ['autocomplete.component.scss'],\n host: {\n class: 'novo-autocomplete',\n // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the\n // consumer may have provided, while still being able to receive focus.\n '[attr.tabindex]': 'disabled ? null : -1',\n },\n providers: [{ provide: NOVO_OPTION_PARENT_COMPONENT, useExisting: NovoAutocompleteElement }],\n exportAs: 'novoAutocomplete',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NovoAutocompleteElement\n extends NovoAutocompleteMixins\n implements CanDisable, AfterContentInit, AfterViewInit, OnChanges, OnDestroy\n{\n private _stateChanges = Subscription.EMPTY;\n private _activeOptionChanges = Subscription.EMPTY;\n private _selectedOptionChanges = Subscription.EMPTY;\n private _keyDownChanges = Subscription.EMPTY;\n\n /** Manages active item in option list based on key events. */\n private _keyManager: ActiveDescendantKeyManager<NovoOption>;\n\n /** Old value of the native input. Used to work around issues with the `input` event on IE. */\n private _previousValue: string | number | null;\n\n @ContentChildren(NovoOptgroup, { descendants: true }) optionGroups: QueryList<NovoOptgroup>;\n @ContentChildren(NovoOption, { descendants: true }) options: QueryList<NovoOption>;\n\n /** Event that is emitted whenever an option from the list is selected. */\n @Output() readonly optionSelected: EventEmitter<NovoOptionSelectedEvent> = new EventEmitter<NovoOptionSelectedEvent>();\n /** Emits whenever an option is activated using the keyboard. */\n @Output() readonly optionActivated: EventEmitter<NovoOptionSelectedEvent> = new EventEmitter<NovoOptionSelectedEvent>();\n\n /** Tabindex for the toggle. */\n @Input() tabIndex: number | null;\n\n /** Key to use to trigger autocomplete. used for textarea. */\n @Input() triggerOn: (control: NovoFieldControl<any>) => boolean = (control) => control.focused;\n\n /** Function that maps an option's control value to its display value in the trigger. */\n @Input() displayWith: ((value: any) => string) | null = null;\n\n /** Screenreader label for the button. */\n @Input('aria-label') ariaLabel: string;\n\n /** Whether the user should be allowed to select multiple options. */\n @Input()\n get multiple(): boolean {\n return this._multiple;\n }\n set multiple(value: boolean) {\n this._multiple = coerceBooleanProperty(value);\n }\n private _multiple: boolean = false;\n\n /** Whether the toggle button is disabled. */\n @Input()\n @BooleanInput()\n get disabled(): boolean {\n if (this._disabled === undefined && this._formField?._control) {\n return this._formField._control.disabled;\n }\n return !!this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled: boolean;\n\n /** Element for the panel containing the autocomplete options. */\n @ViewChild(NovoOverlayTemplateComponent)\n overlay: NovoOverlayTemplateComponent;\n\n element: ElementRef;\n\n constructor(\n private _elementRef: ElementRef,\n private cdr: ChangeDetectorRef,\n @Attribute('tabindex') defaultTabIndex: string,\n @Optional() @Inject(NOVO_FORM_FIELD) private _formField: NovoFieldElement,\n ) {\n super();\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex = parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this._watchStateChanges();\n this._watchSelectionEvents();\n }\n\n ngOnDestroy() {\n this._stateChanges.unsubscribe();\n this._activeOptionChanges.unsubscribe();\n this._selectedOptionChanges.unsubscribe();\n this._keyDownChanges.unsubscribe();\n }\n\n ngAfterContentInit() {\n this._keyManager = new ActiveDescendantKeyManager<NovoOption>(this.options).withWrap();\n this._activeOptionChanges = this._keyManager.change.subscribe((index) => {\n this.optionActivated.emit({ source: this, option: this.options.toArray()[index] || null });\n });\n this.element = this._formField.getConnectedOverlayOrigin() || this._elementRef;\n this._keyDownChanges = fromEvent(this.element.nativeElement, 'keydown').subscribe((event: KeyboardEvent) => this._handleKeydown(event));\n this.options.changes.subscribe(() => {\n this._watchStateChanges();\n this._watchSelectionEvents();\n Promise.resolve().then(() => {\n this.checkSelectedOptions();\n });\n });\n }\n\n ngAfterViewInit() {\n this._watchStateChanges();\n this._watchSelectionEvents();\n }\n\n checkPanel() {\n const isTriggered = this.triggerOn(this._formField._control);\n if (isTriggered && this.element) {\n this.openPanel();\n }\n }\n\n private _setTriggerValue(option: NovoOption): void {\n const toDisplay = this.displayWith ? this.displayWith(option) : option?.viewValue;\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n const displayValue = toDisplay != null ? toDisplay : '';\n const optionValue = option.value;\n // If it's used within a `NovoField`, we should set it through the property so it can go\n // through change detection.\n if (this._formField) {\n const { controlType, lastCaretPosition = 0 } = this._formField._control;\n if (controlType === 'textarea') {\n const currentValue = this._formField._control.value.split('');\n currentValue.splice(lastCaretPosition, 0, displayValue);\n this._formField._control.value = currentValue.join('');\n } else if (controlType === 'chip-list') {\n const chipList = this._formField._control as NovoChipList;\n const currentValue = this._formField._control.value;\n if (currentValue.includes(optionValue)) {\n chipList.removeValue(optionValue);\n } else {\n chipList.addValue(optionValue);\n }\n } else {\n let valueToEmit: any = optionValue;\n if (this.multiple) {\n const currentValue = this._formField._control.value;\n if (Array.isArray(currentValue)) {\n if (currentValue.includes(optionValue)) {\n valueToEmit = currentValue.filter((it) => it === optionValue);\n } else {\n valueToEmit = [...currentValue, optionValue];\n }\n } else if (currentValue === optionValue) {\n valueToEmit = [];\n } else {\n valueToEmit = [currentValue, optionValue];\n }\n }\n this._formField._control.value = valueToEmit;\n }\n } else {\n // this._element.nativeElement.value = inputValue;\n console.warn(`AutoComplete only intended to be used within a NovoField`);\n }\n this._previousValue = optionValue;\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n private _clearPreviousSelectedOption(skip: NovoOption) {\n this.options.forEach((option) => {\n if (option !== skip && option.selected) {\n option.deselect();\n }\n });\n }\n\n /** Emits the `select` event. */\n private _emitSelectEvent(option: NovoOption): void {\n const event = new NovoOptionSelectedEvent(this, option);\n this.optionSelected.emit(event);\n }\n\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n private _setValueAndClose(event: NovoOptionSelectionChange | null): void {\n if (event && event.source) {\n if (!this.multiple) this._clearPreviousSelectedOption(event.source);\n this._setTriggerValue(event.source);\n // this._onChange(event.source.value);\n // this._element.nativeElement.focus();\n // this._formField._control.focus();\n this._emitSelectEvent(event.source);\n this._watchSelectionEvents();\n }\n\n if (!this.multiple) this.closePanel();\n }\n\n private _watchSelectionEvents() {\n const selectionEvents = this.options ? merge(...this.options.map((option) => option.onSelectionChange)) : of();\n this._selectedOptionChanges.unsubscribe();\n this._selectedOptionChanges = selectionEvents.pipe(take(1)).subscribe((evt: NovoOptionSelectionChange) => {\n this._setValueAndClose(evt);\n });\n }\n\n private _watchStateChanges() {\n const inputStateChanged = this._formField.stateChanges;\n this._stateChanges.unsubscribe();\n this._stateChanges = merge(inputStateChanged)\n .pipe(debounce(() => interval(10)))\n .subscribe(() => {\n this.checkSelectedOptions();\n this.checkPanel();\n this.cdr.markForCheck();\n });\n }\n\n /** The currently active option, coerced to MatOption type. */\n get activeOption(): NovoOption | null {\n if (this._keyManager) {\n return this._keyManager.activeItem;\n }\n\n return null;\n }\n\n _handleKeydown(event: KeyboardEvent): void {\n const key = event.key;\n\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (key === Key.Escape && !hasModifierKey(event)) {\n event.preventDefault();\n }\n\n if (this.activeOption && key === Key.Enter && this.panelOpen) {\n this.activeOption._selectViaInteraction();\n // this._resetActiveItem();\n event.preventDefault();\n } else {\n const prevActiveItem = this._keyManager.activeItem;\n const isArrowKey = key === Key.ArrowUp || key === Key.ArrowDown;\n\n if (this.panelOpen || key === Key.Tab) {\n this._keyManager.onKeydown(event);\n } else if (isArrowKey && !this.overlay.panelOpen) {\n this.openPanel();\n }\n\n // if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n // this._scrollToOption(this.autocomplete._keyManager.activeItemIndex || 0);\n // }\n }\n }\n\n private checkSelectedOptions() {\n if (this.multiple && Array.isArray(this._formField._control.value)) {\n const value = this._formField._control.value;\n this.options.forEach((option) => option.deselect());\n value.forEach((currentValue: any) => this._selectValue(currentValue));\n }\n }\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n private _selectValue(value: any): NovoOption | undefined {\n const correspondingOption = this.options.find((option: NovoOption) => {\n return option.value === value;\n });\n correspondingOption?.select();\n return correspondingOption;\n }\n}\n","<novo-overlay-template [parent]=\"element\" position=\"above-below\">\n <div class=\"novo-autocomplete-options\" cdk-scrollable>\n <ng-content></ng-content>\n </div>\n</novo-overlay-template>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NovoCommonModule, NovoOptionModule, NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoChipsModule } from 'novo-elements/elements/chips';\nimport { NovoFieldModule } from 'novo-elements/elements/field';\nimport { NovoAutocompleteElement } from './autocomplete.component';\n\n@NgModule({\n imports: [CommonModule, NovoButtonModule, NovoOverlayModule, NovoOptionModule, NovoCommonModule, NovoFieldModule, NovoChipsModule],\n declarations: [NovoAutocompleteElement],\n exports: [NovoAutocompleteElement],\n})\nexport class NovoAutoCompleteModule {}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"novo-elements-elements-autocomplete.mjs","sources":["../../../projects/novo-elements/src/elements/autocomplete/autocomplete.component.ts","../../../projects/novo-elements/src/elements/autocomplete/autocomplete.component.html","../../../projects/novo-elements/src/elements/autocomplete/autocomplete.module.ts","../../../projects/novo-elements/src/elements/autocomplete/novo-elements-elements-autocomplete.ts"],"sourcesContent":["import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { fromEvent, interval, merge, of, Subscription } from 'rxjs';\nimport { debounce, take } from 'rxjs/operators';\nimport { BooleanInput, Key } from 'novo-elements/utils';\nimport type { NovoChipList } from 'novo-elements/elements/chips';\nimport {\n CanDisable,\n CanDisableCtor,\n HasOverlayCtor,\n mixinDisabled,\n mixinOverlay,\n NovoOptgroup,\n NovoOption,\n NovoOptionSelectionChange,\n NovoOverlayTemplateComponent,\n NOVO_OPTION_PARENT_COMPONENT,\n} from 'novo-elements/elements/common';\nimport { NovoFieldControl, NovoFieldElement, NOVO_FORM_FIELD } from 'novo-elements/elements/field';\n\n/** Event object that is emitted when an autocomplete option is selected. */\nexport class NovoOptionSelectedEvent {\n constructor(\n /** Reference to the autocomplete panel that emitted the event. */\n public source: NovoAutocompleteElement,\n /** Option that was selected. */\n public option: NovoOption,\n ) {}\n}\n\n// Boilerplate for applying mixins\nclass NovoAutocompleteBase {\n constructor() {}\n}\nconst NovoAutocompleteMixins: HasOverlayCtor & CanDisableCtor & typeof NovoAutocompleteBase = mixinOverlay(\n mixinDisabled(NovoAutocompleteBase),\n);\n\n@Component({\n selector: 'novo-autocomplete',\n templateUrl: 'autocomplete.component.html',\n styleUrls: ['autocomplete.component.scss'],\n host: {\n class: 'novo-autocomplete',\n // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the\n // consumer may have provided, while still being able to receive focus.\n '[attr.tabindex]': 'disabled ? null : -1',\n },\n providers: [{ provide: NOVO_OPTION_PARENT_COMPONENT, useExisting: NovoAutocompleteElement }],\n exportAs: 'novoAutocomplete',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NovoAutocompleteElement\n extends NovoAutocompleteMixins\n implements CanDisable, AfterContentInit, AfterViewInit, OnChanges, OnDestroy\n{\n private _stateChanges = Subscription.EMPTY;\n private _activeOptionChanges = Subscription.EMPTY;\n private _selectedOptionChanges = Subscription.EMPTY;\n private _keyDownChanges = Subscription.EMPTY;\n\n /** Manages active item in option list based on key events. */\n private _keyManager: ActiveDescendantKeyManager<NovoOption>;\n\n /** Old value of the native input. Used to work around issues with the `input` event on IE. */\n private _previousValue: string | number | null;\n\n @ContentChildren(NovoOptgroup, { descendants: true }) optionGroups: QueryList<NovoOptgroup>;\n @ContentChildren(NovoOption, { descendants: true }) options: QueryList<NovoOption>;\n\n /** Event that is emitted whenever an option from the list is selected. */\n @Output() readonly optionSelected: EventEmitter<NovoOptionSelectedEvent> = new EventEmitter<NovoOptionSelectedEvent>();\n /** Emits whenever an option is activated using the keyboard. */\n @Output() readonly optionActivated: EventEmitter<NovoOptionSelectedEvent> = new EventEmitter<NovoOptionSelectedEvent>();\n\n /** Tabindex for the toggle. */\n @Input() tabIndex: number | null;\n\n /** Key to use to trigger autocomplete. used for textarea. */\n @Input() triggerOn: (control: NovoFieldControl<any>) => boolean = (control) => control.focused;\n\n /** Function that maps an option's control value to its display value in the trigger. */\n @Input() displayWith: ((value: any) => string) | null = null;\n\n /** Screenreader label for the button. */\n @Input('aria-label') ariaLabel: string;\n\n /** Whether the user should be allowed to select multiple options. */\n @Input()\n get multiple(): boolean {\n return this._multiple;\n }\n set multiple(value: boolean) {\n this._multiple = coerceBooleanProperty(value);\n }\n private _multiple: boolean = false;\n\n /** Whether the toggle button is disabled. */\n @Input()\n @BooleanInput()\n get disabled(): boolean {\n if (this._disabled === undefined && this._formField?._control) {\n return this._formField._control.disabled;\n }\n return !!this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled: boolean;\n\n /** Element for the panel containing the autocomplete options. */\n @ViewChild(NovoOverlayTemplateComponent)\n overlay: NovoOverlayTemplateComponent;\n\n element: ElementRef;\n\n constructor(\n private _elementRef: ElementRef,\n private cdr: ChangeDetectorRef,\n @Attribute('tabindex') defaultTabIndex: string,\n @Optional() @Inject(NOVO_FORM_FIELD) private _formField: NovoFieldElement,\n ) {\n super();\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex = parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this._watchStateChanges();\n this._watchSelectionEvents();\n }\n\n ngOnDestroy() {\n this._stateChanges.unsubscribe();\n this._activeOptionChanges.unsubscribe();\n this._selectedOptionChanges.unsubscribe();\n this._keyDownChanges.unsubscribe();\n }\n\n ngAfterContentInit() {\n this._keyManager = new ActiveDescendantKeyManager<NovoOption>(this.options).withWrap();\n this._activeOptionChanges = this._keyManager.change.subscribe((index) => {\n this.optionActivated.emit({ source: this, option: this.options.toArray()[index] || null });\n });\n this.element = this._formField.getConnectedOverlayOrigin() || this._elementRef;\n this._keyDownChanges = fromEvent(this.element.nativeElement, 'keydown').subscribe((event: KeyboardEvent) => this._handleKeydown(event));\n this.options.changes.subscribe(() => {\n this._watchStateChanges();\n this._watchSelectionEvents();\n Promise.resolve().then(() => {\n this.checkSelectedOptions();\n });\n });\n }\n\n ngAfterViewInit() {\n this._watchStateChanges();\n this._watchSelectionEvents();\n }\n\n checkPanel() {\n const isTriggered = this.triggerOn(this._formField._control);\n if (isTriggered && this.element) {\n this.openPanel();\n }\n }\n\n private _setTriggerValue(option: NovoOption): void {\n const toDisplay = this.displayWith ? this.displayWith(option) : option?.viewValue;\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n const displayValue = toDisplay != null ? toDisplay : '';\n const optionValue = option.value;\n // If it's used within a `NovoField`, we should set it through the property so it can go\n // through change detection.\n if (this._formField) {\n const { controlType, lastCaretPosition = 0 } = this._formField._control;\n if (controlType === 'textarea') {\n const currentValue = this._formField._control.value.split('');\n currentValue.splice(lastCaretPosition, 0, displayValue);\n this._formField._control.value = currentValue.join('');\n } else if (controlType === 'chip-list') {\n const chipList = this._formField._control as NovoChipList;\n const currentValue = this._formField._control.value;\n if (currentValue.includes(optionValue)) {\n chipList.removeValue(optionValue);\n } else {\n chipList.addValue(optionValue);\n }\n } else {\n let valueToEmit: any = optionValue;\n if (this.multiple) {\n const currentValue = this._formField._control.value;\n if (Array.isArray(currentValue)) {\n if (currentValue.includes(optionValue)) {\n valueToEmit = currentValue.filter((it) => it === optionValue);\n } else {\n valueToEmit = [...currentValue, optionValue];\n }\n } else if (currentValue === optionValue) {\n valueToEmit = [];\n } else {\n valueToEmit = [currentValue, optionValue];\n }\n }\n this._formField._control.value = valueToEmit;\n }\n } else {\n // this._element.nativeElement.value = inputValue;\n console.warn(`AutoComplete only intended to be used within a NovoField`);\n }\n this._previousValue = optionValue;\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n private _clearPreviousSelectedOption(skip: NovoOption) {\n this.options.forEach((option) => {\n if (option !== skip && option.selected) {\n option.deselect();\n }\n });\n }\n\n /** Emits the `select` event. */\n private _emitSelectEvent(option: NovoOption): void {\n const event = new NovoOptionSelectedEvent(this, option);\n this.optionSelected.emit(event);\n }\n\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n private _setValueAndClose(event: NovoOptionSelectionChange | null): void {\n if (event && event.source) {\n if (!this.multiple) this._clearPreviousSelectedOption(event.source);\n this._setTriggerValue(event.source);\n // this._onChange(event.source.value);\n // this._element.nativeElement.focus();\n // this._formField._control.focus();\n this._emitSelectEvent(event.source);\n this._watchSelectionEvents();\n }\n\n if (!this.multiple) this.closePanel();\n }\n\n private _watchSelectionEvents() {\n const selectionEvents = this.options ? merge(...this.options.map((option) => option.onSelectionChange)) : of();\n this._selectedOptionChanges.unsubscribe();\n this._selectedOptionChanges = selectionEvents.pipe(take(1)).subscribe((evt: NovoOptionSelectionChange) => {\n this._setValueAndClose(evt);\n });\n }\n\n private _watchStateChanges() {\n const inputStateChanged = this._formField.stateChanges;\n this._stateChanges.unsubscribe();\n this._stateChanges = merge(inputStateChanged)\n .pipe(debounce(() => interval(10)))\n .subscribe(() => {\n this.checkSelectedOptions();\n this.checkPanel();\n this.cdr.markForCheck();\n });\n }\n\n /** The currently active option, coerced to MatOption type. */\n get activeOption(): NovoOption | null {\n if (this._keyManager) {\n return this._keyManager.activeItem;\n }\n\n return null;\n }\n\n _handleKeydown(event: KeyboardEvent): void {\n const key = event.key;\n\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (key === Key.Escape && !hasModifierKey(event)) {\n event.preventDefault();\n }\n\n if (this.activeOption && key === Key.Enter && this.panelOpen) {\n this.activeOption._selectViaInteraction();\n // this._resetActiveItem();\n event.preventDefault();\n } else {\n const prevActiveItem = this._keyManager.activeItem;\n const isArrowKey = key === Key.ArrowUp || key === Key.ArrowDown;\n\n if (this.panelOpen || key === Key.Tab) {\n this._keyManager.onKeydown(event);\n } else if (isArrowKey && !this.overlay.panelOpen) {\n this.openPanel();\n }\n\n // if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n // this._scrollToOption(this.autocomplete._keyManager.activeItemIndex || 0);\n // }\n }\n }\n\n private checkSelectedOptions() {\n if (this.multiple && Array.isArray(this._formField._control.value)) {\n const value = this._formField._control.value;\n this.options.forEach((option) => option.deselect());\n value.forEach((currentValue: any) => this._selectValue(currentValue));\n }\n }\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n private _selectValue(value: any): NovoOption | undefined {\n const correspondingOption = this.options.find((option: NovoOption) => {\n return option.value === value;\n });\n correspondingOption?.select();\n return correspondingOption;\n }\n}\n","<novo-overlay-template [parent]=\"element\" position=\"above-below\">\n <div class=\"novo-autocomplete-options\" cdk-scrollable>\n <ng-content></ng-content>\n </div>\n</novo-overlay-template>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NovoCommonModule, NovoOptionModule, NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoChipsModule } from 'novo-elements/elements/chips';\nimport { NovoFieldModule } from 'novo-elements/elements/field';\nimport { NovoAutocompleteElement } from './autocomplete.component';\n\n@NgModule({\n imports: [CommonModule, NovoButtonModule, NovoOverlayModule, NovoOptionModule, NovoCommonModule, NovoFieldModule, NovoChipsModule],\n declarations: [NovoAutocompleteElement],\n exports: [NovoAutocompleteElement],\n})\nexport class NovoAutoCompleteModule {}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}