@theseam/ui-common 0.2.17 → 0.3.2

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 (140) hide show
  1. package/breadcrumbs/_breadcrumbs-theme.scss +3 -0
  2. package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +10 -0
  3. package/breadcrumbs/styles/_utilities.scss +3 -0
  4. package/breadcrumbs/styles/_variables.scss +1 -0
  5. package/breadcrumbs/theseam-ui-common-breadcrumbs.metadata.json +1 -1
  6. package/bundles/theseam-ui-common-breadcrumbs.umd.js +2 -1
  7. package/bundles/theseam-ui-common-breadcrumbs.umd.js.map +1 -1
  8. package/bundles/theseam-ui-common-form-field.umd.js +1 -1
  9. package/bundles/theseam-ui-common-form-field.umd.js.map +1 -1
  10. package/bundles/theseam-ui-common-framework.umd.js +18 -15
  11. package/bundles/theseam-ui-common-framework.umd.js.map +1 -1
  12. package/bundles/theseam-ui-common-google-maps.umd.js +2202 -0
  13. package/bundles/theseam-ui-common-google-maps.umd.js.map +1 -0
  14. package/bundles/theseam-ui-common-menu.umd.js +1 -0
  15. package/bundles/theseam-ui-common-menu.umd.js.map +1 -1
  16. package/bundles/theseam-ui-common-scrollbar.umd.js +1 -1
  17. package/bundles/theseam-ui-common-scrollbar.umd.js.map +1 -1
  18. package/bundles/theseam-ui-common-tel-input.umd.js +59 -7
  19. package/bundles/theseam-ui-common-tel-input.umd.js.map +1 -1
  20. package/bundles/theseam-ui-common-utils.umd.js +610 -136
  21. package/bundles/theseam-ui-common-utils.umd.js.map +1 -1
  22. package/bundles/theseam-ui-common-viewers.umd.js +269 -4
  23. package/bundles/theseam-ui-common-viewers.umd.js.map +1 -1
  24. package/bundles/theseam-ui-common-widget.umd.js +1 -1
  25. package/esm2015/breadcrumbs/breadcrumbs/breadcrumbs.component.js +4 -3
  26. package/esm2015/form-field/input.directive.js +2 -2
  27. package/esm2015/framework/base-layout/base-layout.component.js +3 -3
  28. package/esm2015/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.js +5 -5
  29. package/esm2015/framework/top-bar/top-bar-title/top-bar-title.component.js +4 -3
  30. package/esm2015/framework/top-bar/top-bar.component.js +10 -8
  31. package/esm2015/google-maps/google-maps/google-maps.component.js +261 -0
  32. package/esm2015/google-maps/google-maps-contextmenu.js +113 -0
  33. package/esm2015/google-maps/google-maps-controls.service.js +70 -0
  34. package/esm2015/google-maps/google-maps-feature-helpers.js +177 -0
  35. package/esm2015/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.js +195 -0
  36. package/esm2015/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.directive.js +163 -0
  37. package/esm2015/google-maps/google-maps-recenter-button-control/google-maps-recenter-button-control.component.js +57 -0
  38. package/esm2015/google-maps/google-maps-upload-button-control/google-maps-upload-button-control.component.js +119 -0
  39. package/esm2015/google-maps/google-maps.module.js +45 -0
  40. package/esm2015/google-maps/google-maps.service.js +344 -0
  41. package/esm2015/google-maps/map-control.component.js +65 -0
  42. package/esm2015/google-maps/map-controls-service.js +4 -0
  43. package/esm2015/google-maps/map-file-drop/map-file-drop.component.js +135 -0
  44. package/esm2015/google-maps/map-value-manager.service.js +46 -0
  45. package/esm2015/google-maps/public-api.js +14 -0
  46. package/esm2015/google-maps/theseam-ui-common-google-maps.js +6 -0
  47. package/esm2015/menu/menu-toggle.directive.js +2 -1
  48. package/esm2015/scrollbar/overlay-scrollbar.directive.js +2 -2
  49. package/esm2015/tel-input/tel-input/tel-input.component.js +10 -2
  50. package/esm2015/tel-input/tel-input.directive.js +50 -5
  51. package/esm2015/utils/geo-json/coerce-feature-collection.js +44 -0
  52. package/esm2015/utils/geo-json/geo-json-to-area.js +11 -0
  53. package/esm2015/utils/geo-json/is-feature-collection.validator.js +21 -0
  54. package/esm2015/utils/geo-json/is-only-geometry-types.js +23 -0
  55. package/esm2015/utils/geo-json/is-only-geometry-types.validator.js +32 -0
  56. package/esm2015/utils/geo-json/merge-polygons.js +35 -0
  57. package/esm2015/utils/geo-json/no-inner-rings.validator.js +63 -0
  58. package/esm2015/utils/geo-json/no-kinks.validator.js +39 -0
  59. package/esm2015/utils/geo-json/read-geo-file.js +99 -0
  60. package/esm2015/utils/geo-json/split-multi-polygons.js +29 -0
  61. package/esm2015/utils/is-null-or-undefined.js +1 -1
  62. package/esm2015/utils/public-api.js +11 -1
  63. package/esm2015/viewers/html-template-viewer/html-template-viewer.component.js +219 -0
  64. package/esm2015/viewers/html-template-viewer/html-template-viewer.module.js +23 -0
  65. package/esm2015/viewers/html-template-viewer/index.js +3 -0
  66. package/esm2015/viewers/public-api.js +2 -1
  67. package/esm2015/widget/widget/widget.component.js +1 -1
  68. package/fesm2015/theseam-ui-common-breadcrumbs.js +3 -2
  69. package/fesm2015/theseam-ui-common-breadcrumbs.js.map +1 -1
  70. package/fesm2015/theseam-ui-common-form-field.js +1 -1
  71. package/fesm2015/theseam-ui-common-form-field.js.map +1 -1
  72. package/fesm2015/theseam-ui-common-framework.js +15 -12
  73. package/fesm2015/theseam-ui-common-framework.js.map +1 -1
  74. package/fesm2015/theseam-ui-common-google-maps.js +1729 -0
  75. package/fesm2015/theseam-ui-common-google-maps.js.map +1 -0
  76. package/fesm2015/theseam-ui-common-menu.js +1 -0
  77. package/fesm2015/theseam-ui-common-menu.js.map +1 -1
  78. package/fesm2015/theseam-ui-common-scrollbar.js +1 -1
  79. package/fesm2015/theseam-ui-common-scrollbar.js.map +1 -1
  80. package/fesm2015/theseam-ui-common-tel-input.js +58 -6
  81. package/fesm2015/theseam-ui-common-tel-input.js.map +1 -1
  82. package/fesm2015/theseam-ui-common-utils.js +477 -94
  83. package/fesm2015/theseam-ui-common-utils.js.map +1 -1
  84. package/fesm2015/theseam-ui-common-viewers.js +237 -2
  85. package/fesm2015/theseam-ui-common-viewers.js.map +1 -1
  86. package/fesm2015/theseam-ui-common-widget.js +1 -1
  87. package/form-field/theseam-ui-common-form-field.metadata.json +1 -1
  88. package/framework/base-layout/base-layout.component.scss +14 -0
  89. package/framework/base-layout/styles/_variables.scss +14 -0
  90. package/framework/theseam-ui-common-framework.metadata.json +1 -1
  91. package/framework/top-bar/_top-bar-theme.scss +5 -0
  92. package/framework/top-bar/styles/_utilities.scss +3 -0
  93. package/framework/top-bar/styles/_variables.scss +18 -0
  94. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +3 -1
  95. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.scss +15 -0
  96. package/framework/top-bar/top-bar-title/top-bar-title.component.scss +6 -0
  97. package/framework/top-bar/top-bar.component.d.ts +3 -0
  98. package/framework/top-bar/top-bar.component.scss +39 -0
  99. package/google-maps/google-maps/google-maps.component.d.ts +89 -0
  100. package/google-maps/google-maps-contextmenu.d.ts +15 -0
  101. package/google-maps/google-maps-controls.service.d.ts +23 -0
  102. package/google-maps/google-maps-feature-helpers.d.ts +37 -0
  103. package/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.d.ts +104 -0
  104. package/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.directive.d.ts +80 -0
  105. package/google-maps/google-maps-recenter-button-control/google-maps-recenter-button-control.component.d.ts +21 -0
  106. package/google-maps/google-maps-upload-button-control/google-maps-upload-button-control.component.d.ts +34 -0
  107. package/google-maps/google-maps.module.d.ts +2 -0
  108. package/google-maps/google-maps.service.d.ts +53 -0
  109. package/google-maps/map-control.component.d.ts +20 -0
  110. package/google-maps/map-controls-service.d.ts +13 -0
  111. package/google-maps/map-file-drop/map-file-drop.component.d.ts +34 -0
  112. package/google-maps/map-value-manager.service.d.ts +18 -0
  113. package/google-maps/package.json +11 -0
  114. package/google-maps/public-api.d.ts +13 -0
  115. package/google-maps/theseam-ui-common-google-maps.d.ts +5 -0
  116. package/google-maps/theseam-ui-common-google-maps.metadata.json +1 -0
  117. package/package.json +17 -10
  118. package/tel-input/tel-input.directive.d.ts +7 -3
  119. package/tel-input/theseam-ui-common-tel-input.metadata.json +1 -1
  120. package/utils/geo-json/coerce-feature-collection.d.ts +2 -0
  121. package/utils/geo-json/geo-json-to-area.d.ts +6 -0
  122. package/utils/geo-json/is-feature-collection.validator.d.ts +3 -0
  123. package/utils/geo-json/is-only-geometry-types.d.ts +5 -0
  124. package/utils/geo-json/is-only-geometry-types.validator.d.ts +4 -0
  125. package/utils/geo-json/merge-polygons.d.ts +9 -0
  126. package/utils/geo-json/no-inner-rings.validator.d.ts +10 -0
  127. package/utils/geo-json/no-kinks.validator.d.ts +3 -0
  128. package/utils/geo-json/read-geo-file.d.ts +7 -0
  129. package/utils/geo-json/split-multi-polygons.d.ts +8 -0
  130. package/utils/is-null-or-undefined.d.ts +1 -1
  131. package/utils/public-api.d.ts +10 -0
  132. package/utils/theseam-ui-common-utils.metadata.json +1 -1
  133. package/viewers/html-template-viewer/html-template-viewer.component.d.ts +67 -0
  134. package/viewers/html-template-viewer/html-template-viewer.module.d.ts +2 -0
  135. package/viewers/html-template-viewer/index.d.ts +2 -0
  136. package/viewers/public-api.d.ts +1 -0
  137. package/viewers/theseam-ui-common-viewers.metadata.json +1 -1
  138. package/widget/styles/_variables.scss +2 -0
  139. package/widget/theseam-ui-common-widget.metadata.json +1 -1
  140. package/widget/widget/widget.component.scss +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-viewers.js","sources":["../../../projects/ui-common/viewers/pdf-viewer/pdf-page/pdf-page.component.ts","../../../projects/ui-common/viewers/pdf-viewer/pdf-renderer.service.ts","../../../projects/ui-common/viewers/pdf-viewer/pdf-viewer.component.ts","../../../projects/ui-common/viewers/pdf-viewer/pdf-viewer.module.ts","../../../projects/ui-common/viewers/theseam-ui-common-viewers.ts"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion'\nimport { AfterViewInit, Component, ElementRef, HostBinding, Input, OnDestroy, ViewChild } from '@angular/core'\nimport { from, Observable, Subject } from 'rxjs'\nimport { auditTime, switchMap, takeUntil } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { waitOnConditionAsync } from '@theseam/ui-common/utils'\n\n@Component({\n selector: 'seam-pdf-page',\n template: `\n <div #pdfContainer\n (seamElemResized)=\"onResized()\">\n <canvas #pdfCanvas></canvas>\n </div>\n `,\n styles: [`\n :host { display: block; }\n canvas { display: block; }\n `]\n})\nexport class TheSeamPdfPageComponent implements OnDestroy, AfterViewInit {\n static ngAcceptInputType_shadow: BooleanInput\n static ngAcceptInputType_responsive: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input()\n public get page() { return this._page }\n public set page(value) {\n this._page = value\n setTimeout(() => { this.render() })\n }\n private _page: any\n\n @Input() @InputBoolean() shadow: boolean = false\n\n @HostBinding('class.shadow') get _shadow() { return this.shadow }\n\n @ViewChild('pdfContainer', { static: true }) pdfContainer?: ElementRef<HTMLDivElement>\n @ViewChild('pdfCanvas', { static: true }) pdfCanvas?: ElementRef<HTMLCanvasElement>\n\n /**\n * Canvas will responsively scale and rerender if scaled more than\n * `renderUpdateThreshold` pixels.\n */\n @Input() @InputBoolean() responsive = false\n\n /**\n * The canvas will be rerendered if the canvas size changes by this many\n * pixels from the last render.\n *\n * To make the canvas responsive using only the initial size for its render\n * set the threshold to `-1`. You can still trigger a rerender by calling the\n * `render()` method.\n *\n * NOTE: Only used when `responsive` is `true`.\n */\n @Input() renderUpdateThreshold = 100\n\n public rendering = false\n\n private _renderRequestSubject = new Subject<void>()\n\n private _render$: Observable<void>\n\n constructor() {\n this._render$ = this._renderRequestSubject.pipe(\n takeUntil(this._ngUnsubscribe),\n auditTime(500),\n switchMap(_ => from(waitOnConditionAsync(() => this.rendering === false, 30 * 1000))),\n switchMap(_ => from(this._render()))\n )\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n ngAfterViewInit() {\n this._render$.subscribe()\n this.render()\n }\n\n public render() {\n this._renderRequestSubject.next()\n }\n\n private async _render() {\n if (!this.pdfContainer || !this.pdfCanvas) {\n return\n }\n\n try {\n const w = this.pdfContainer.nativeElement.clientWidth\n const desiredWidth = w\n const viewport = this.page.getViewport({ scale: 1 })\n const scale = desiredWidth / viewport.width\n const scaledViewport = this.page.getViewport({ scale })\n\n // Prepare canvas using PDF page dimensions\n const canvas: HTMLCanvasElement = this.pdfCanvas.nativeElement\n const context = canvas.getContext('2d')\n canvas.height = scaledViewport.height\n canvas.width = scaledViewport.width\n canvas.style.height = `${scaledViewport.height}px`\n canvas.style.width = `${scaledViewport.width}px`\n\n // Render PDF page into canvas context\n const renderContext = {\n canvasContext: context,\n viewport: scaledViewport\n }\n\n const renderTask = await this.page.render(renderContext).promise\n\n // TODO: Allow canceling instead of only waiting\n // await renderTask.cancel()\n this.rendering = false\n if (this.responsive) {\n canvas.style.width = '100%'\n canvas.style.height = '100%'\n }\n } catch (err) {\n // PDF loading error\n console.error(err)\n }\n }\n\n onResized() {\n if (!this.responsive || this.renderUpdateThreshold === -1) { return }\n\n if (!this.pdfContainer || !this.pdfCanvas) {\n return\n }\n\n const containerRect = this.pdfContainer.nativeElement.getBoundingClientRect()\n const pdfWidth = this.pdfCanvas.nativeElement.width\n const pdfHeight = this.pdfCanvas.nativeElement.height\n const wDiff = Math.abs(containerRect.width - pdfWidth)\n const hDiff = Math.abs(containerRect.height - pdfHeight)\n if (wDiff > this.renderUpdateThreshold || hDiff > this.renderUpdateThreshold) {\n this.render()\n }\n\n }\n\n}\n","import { Injectable } from '@angular/core'\nimport { from, Observable } from 'rxjs'\nimport { shareReplay, switchMap, tap } from 'rxjs/operators'\n\nimport { wrapIntoObservable } from '@theseam/ui-common/utils'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PdfRendererService {\n\n private readonly _pdfjs$: Observable<any>\n\n constructor() {\n const pdfjsImport = wrapIntoObservable(import('pdfjs-dist/legacy/build/pdf'))\n this._pdfjs$ = pdfjsImport.pipe(\n tap((pdfJs: any) => {\n if (!pdfJs.GlobalWorkerOptions.workerSrc) {\n // tslint:disable-next-line:max-line-length\n pdfJs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${ (pdfJs as any).version }/pdf.worker.min.js`\n }\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n }\n\n public getDocument(url: string): Observable<any> {\n return from(fetch(url)).pipe(\n switchMap(v => this._pdfjs$.pipe(\n switchMap(pdfjs => pdfjs.getDocument(v).promise)\n ))\n )\n }\n}\n","import { BooleanInput, coerceArray, coerceNumberProperty } from '@angular/cdk/coercion'\nimport { Component, Input } from '@angular/core'\nimport { BehaviorSubject, from, Observable, of, ReplaySubject } from 'rxjs'\nimport { map, shareReplay, switchMap, tap } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { wrapIntoObservable } from '@theseam/ui-common/utils'\n\nimport { PdfRendererService } from './pdf-renderer.service'\n\n@Component({\n selector: 'seam-pdf-viewer',\n template: `\n <ng-container *ngFor=\"let page of pages$ | async\">\n <seam-pdf-page\n class=\"mb-2\"\n [page]=\"page | async\"\n [responsive]=\"responsive\"\n [shadow]=\"shadow\"\n [renderUpdateThreshold]=\"renderUpdateThreshold\">\n </seam-pdf-page>\n </ng-container>\n `,\n styles: [`:host { display: block; }`]\n})\nexport class TheSeamPdfViewerComponent {\n static ngAcceptInputType_shadow: BooleanInput\n static ngAcceptInputType_responsive: BooleanInput\n\n @Input()\n get pdfUrl(): string | undefined | null { return this._pdfUrl }\n set pdfUrl(value: string | undefined | null) {\n this._pdfUrl = value\n this._documentSubject.next(value)\n }\n private _pdfUrl: string | undefined | null\n\n @Input() @InputBoolean() shadow = false\n\n /**\n * Canvas will responsively scale and rerender if scaled more than\n * `renderUpdateThreshold` pixels.\n */\n @Input() @InputBoolean() responsive = false\n\n /**\n * The canvas will be rerendered if the canvas size changes by this many\n * pixels from the last render.\n *\n * To make the canvas responsive using only the initial size for its render\n * set the threshold to `-1`. You can still trigger a rerender by calling the\n * `render()` method.\n *\n * NOTE: Only used when `responsive` is `true`.\n */\n @Input()\n set renderUpdateThreshold(value: number) { this._renderUpdateThreshold = coerceNumberProperty(value) }\n get renderUpdateThreshold(): number { return this._renderUpdateThreshold }\n private _renderUpdateThreshold: number = 100\n\n /**\n * Range of pages to render.\n *\n * Example(page 1 to page 3):\n * [pageRange]=\"[1,3]\"\n */\n @Input()\n get pageRange(): number[] { return this._pageRange }\n set pageRange(value: number[]) {\n this._pageRange = value\n\n if (!this._pageRange) {\n this._pageNumbersSubject.next(undefined)\n }\n\n try {\n const range = coerceArray(this._pageRange)\n if (range.length !== 2) {\n throw new Error('[pdf-viewer] Invalid Page Range. Range array must have two numbers only.')\n }\n if (range[0] > range[1]) {\n throw new Error('[pdf-viewer] Invalid Page Range. Start of the range must be less than or equal to the end.')\n }\n\n const nums: number[] = []\n for (let i = range[0]; i <= range[1]; i++) {\n nums.push(i)\n }\n this._pageNumbersSubject.next(nums)\n } catch (err) {\n // TODO: Decide how to conveniently display these errors.\n console.error(err)\n this._pageNumbersSubject.next([])\n }\n }\n private _pageRange: number[] = []\n\n /**\n * Render a specific page.\n */\n @Input()\n get pageNumber(): number { return this._pageNumber }\n set pageNumber(value: number) {\n this._pageNumber = coerceNumberProperty(value, -1)\n this._pageNumbersSubject.next(this._pageNumber === -1 ? undefined : [ this._pageNumber ])\n }\n private _pageNumber = -1\n\n /**\n * Specific page numbers to render.\n */\n @Input()\n get pageNumbers(): number[] { return this._pageNumbers }\n set pageNumbers(value: number[]) {\n this._pageNumbers = value\n if (Array.isArray(this._pageNumbers)) {\n this._pageNumbersSubject.next(this._pageNumbers)\n } else {\n this._pageNumbersSubject.next(undefined)\n }\n }\n private _pageNumbers: number[] = []\n\n private _documentSubject = new ReplaySubject<any>(1)\n public document$: Observable<any>\n public pages$: Observable<any[]>\n\n /**\n * Undefined means all a pages\n */\n private _pageNumbersSubject = new BehaviorSubject<number[] | undefined>(undefined)\n\n constructor(\n private readonly _pdfRenderer: PdfRendererService\n ) {\n this.document$ = this._documentSubject.asObservable().pipe(\n switchMap(url => {\n if (!url) {\n return of()\n }\n return this._pdfRenderer.getDocument(url)\n })\n )\n\n const pageNumbers$ = this._pageNumbersSubject.asObservable()\n\n this.pages$ = this.document$.pipe(\n switchMap(doc => pageNumbers$.pipe(\n map(pageNumbers => {\n const pages: any[] = []\n for (let i = 0; i < doc.numPages; i++) {\n if (!pageNumbers || pageNumbers.indexOf(i + 1) !== -1) {\n pages.push(from(doc.getPage(i + 1)))\n }\n }\n return pages\n })\n ))\n )\n }\n\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { TheSeamSharedModule } from '@theseam/ui-common/shared'\n\nimport { TheSeamPdfPageComponent } from './pdf-page/pdf-page.component'\nimport { TheSeamPdfViewerComponent } from './pdf-viewer.component'\n\n@NgModule({\n imports: [\n CommonModule,\n TheSeamSharedModule\n ],\n declarations: [\n TheSeamPdfViewerComponent,\n TheSeamPdfPageComponent\n ],\n exports: [\n TheSeamPdfViewerComponent,\n TheSeamPdfPageComponent\n ]\n})\nexport class TheSeamPdfViewerModule { }\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":"theseam-ui-common-viewers.js","sources":["../../../projects/ui-common/viewers/pdf-viewer/pdf-page/pdf-page.component.ts","../../../projects/ui-common/viewers/pdf-viewer/pdf-renderer.service.ts","../../../projects/ui-common/viewers/pdf-viewer/pdf-viewer.component.ts","../../../projects/ui-common/viewers/pdf-viewer/pdf-viewer.module.ts","../../../projects/ui-common/viewers/html-template-viewer/html-template-viewer.component.ts","../../../projects/ui-common/viewers/html-template-viewer/html-template-viewer.module.ts","../../../projects/ui-common/viewers/theseam-ui-common-viewers.ts"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion'\nimport { AfterViewInit, Component, ElementRef, HostBinding, Input, OnDestroy, ViewChild } from '@angular/core'\nimport { from, Observable, Subject } from 'rxjs'\nimport { auditTime, switchMap, takeUntil } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { waitOnConditionAsync } from '@theseam/ui-common/utils'\n\n@Component({\n selector: 'seam-pdf-page',\n template: `\n <div #pdfContainer\n (seamElemResized)=\"onResized()\">\n <canvas #pdfCanvas></canvas>\n </div>\n `,\n styles: [`\n :host { display: block; }\n canvas { display: block; }\n `]\n})\nexport class TheSeamPdfPageComponent implements OnDestroy, AfterViewInit {\n static ngAcceptInputType_shadow: BooleanInput\n static ngAcceptInputType_responsive: BooleanInput\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input()\n public get page() { return this._page }\n public set page(value) {\n this._page = value\n setTimeout(() => { this.render() })\n }\n private _page: any\n\n @Input() @InputBoolean() shadow: boolean = false\n\n @HostBinding('class.shadow') get _shadow() { return this.shadow }\n\n @ViewChild('pdfContainer', { static: true }) pdfContainer?: ElementRef<HTMLDivElement>\n @ViewChild('pdfCanvas', { static: true }) pdfCanvas?: ElementRef<HTMLCanvasElement>\n\n /**\n * Canvas will responsively scale and rerender if scaled more than\n * `renderUpdateThreshold` pixels.\n */\n @Input() @InputBoolean() responsive = false\n\n /**\n * The canvas will be rerendered if the canvas size changes by this many\n * pixels from the last render.\n *\n * To make the canvas responsive using only the initial size for its render\n * set the threshold to `-1`. You can still trigger a rerender by calling the\n * `render()` method.\n *\n * NOTE: Only used when `responsive` is `true`.\n */\n @Input() renderUpdateThreshold = 100\n\n public rendering = false\n\n private _renderRequestSubject = new Subject<void>()\n\n private _render$: Observable<void>\n\n constructor() {\n this._render$ = this._renderRequestSubject.pipe(\n takeUntil(this._ngUnsubscribe),\n auditTime(500),\n switchMap(_ => from(waitOnConditionAsync(() => this.rendering === false, 30 * 1000))),\n switchMap(_ => from(this._render()))\n )\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n ngAfterViewInit() {\n this._render$.subscribe()\n this.render()\n }\n\n public render() {\n this._renderRequestSubject.next()\n }\n\n private async _render() {\n if (!this.pdfContainer || !this.pdfCanvas) {\n return\n }\n\n try {\n const w = this.pdfContainer.nativeElement.clientWidth\n const desiredWidth = w\n const viewport = this.page.getViewport({ scale: 1 })\n const scale = desiredWidth / viewport.width\n const scaledViewport = this.page.getViewport({ scale })\n\n // Prepare canvas using PDF page dimensions\n const canvas: HTMLCanvasElement = this.pdfCanvas.nativeElement\n const context = canvas.getContext('2d')\n canvas.height = scaledViewport.height\n canvas.width = scaledViewport.width\n canvas.style.height = `${scaledViewport.height}px`\n canvas.style.width = `${scaledViewport.width}px`\n\n // Render PDF page into canvas context\n const renderContext = {\n canvasContext: context,\n viewport: scaledViewport\n }\n\n const renderTask = await this.page.render(renderContext).promise\n\n // TODO: Allow canceling instead of only waiting\n // await renderTask.cancel()\n this.rendering = false\n if (this.responsive) {\n canvas.style.width = '100%'\n canvas.style.height = '100%'\n }\n } catch (err) {\n // PDF loading error\n console.error(err)\n }\n }\n\n onResized() {\n if (!this.responsive || this.renderUpdateThreshold === -1) { return }\n\n if (!this.pdfContainer || !this.pdfCanvas) {\n return\n }\n\n const containerRect = this.pdfContainer.nativeElement.getBoundingClientRect()\n const pdfWidth = this.pdfCanvas.nativeElement.width\n const pdfHeight = this.pdfCanvas.nativeElement.height\n const wDiff = Math.abs(containerRect.width - pdfWidth)\n const hDiff = Math.abs(containerRect.height - pdfHeight)\n if (wDiff > this.renderUpdateThreshold || hDiff > this.renderUpdateThreshold) {\n this.render()\n }\n\n }\n\n}\n","import { Injectable } from '@angular/core'\nimport { from, Observable } from 'rxjs'\nimport { shareReplay, switchMap, tap } from 'rxjs/operators'\n\nimport { wrapIntoObservable } from '@theseam/ui-common/utils'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PdfRendererService {\n\n private readonly _pdfjs$: Observable<any>\n\n constructor() {\n const pdfjsImport = wrapIntoObservable(import('pdfjs-dist/legacy/build/pdf'))\n this._pdfjs$ = pdfjsImport.pipe(\n tap((pdfJs: any) => {\n if (!pdfJs.GlobalWorkerOptions.workerSrc) {\n // tslint:disable-next-line:max-line-length\n pdfJs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${ (pdfJs as any).version }/pdf.worker.min.js`\n }\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n }\n\n public getDocument(url: string): Observable<any> {\n return from(fetch(url)).pipe(\n switchMap(v => this._pdfjs$.pipe(\n switchMap(pdfjs => pdfjs.getDocument(v).promise)\n ))\n )\n }\n}\n","import { BooleanInput, coerceArray, coerceNumberProperty } from '@angular/cdk/coercion'\nimport { Component, Input } from '@angular/core'\nimport { BehaviorSubject, from, Observable, of, ReplaySubject } from 'rxjs'\nimport { map, shareReplay, switchMap, tap } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { wrapIntoObservable } from '@theseam/ui-common/utils'\n\nimport { PdfRendererService } from './pdf-renderer.service'\n\n@Component({\n selector: 'seam-pdf-viewer',\n template: `\n <ng-container *ngFor=\"let page of pages$ | async\">\n <seam-pdf-page\n class=\"mb-2\"\n [page]=\"page | async\"\n [responsive]=\"responsive\"\n [shadow]=\"shadow\"\n [renderUpdateThreshold]=\"renderUpdateThreshold\">\n </seam-pdf-page>\n </ng-container>\n `,\n styles: [`:host { display: block; }`]\n})\nexport class TheSeamPdfViewerComponent {\n static ngAcceptInputType_shadow: BooleanInput\n static ngAcceptInputType_responsive: BooleanInput\n\n @Input()\n get pdfUrl(): string | undefined | null { return this._pdfUrl }\n set pdfUrl(value: string | undefined | null) {\n this._pdfUrl = value\n this._documentSubject.next(value)\n }\n private _pdfUrl: string | undefined | null\n\n @Input() @InputBoolean() shadow = false\n\n /**\n * Canvas will responsively scale and rerender if scaled more than\n * `renderUpdateThreshold` pixels.\n */\n @Input() @InputBoolean() responsive = false\n\n /**\n * The canvas will be rerendered if the canvas size changes by this many\n * pixels from the last render.\n *\n * To make the canvas responsive using only the initial size for its render\n * set the threshold to `-1`. You can still trigger a rerender by calling the\n * `render()` method.\n *\n * NOTE: Only used when `responsive` is `true`.\n */\n @Input()\n set renderUpdateThreshold(value: number) { this._renderUpdateThreshold = coerceNumberProperty(value) }\n get renderUpdateThreshold(): number { return this._renderUpdateThreshold }\n private _renderUpdateThreshold: number = 100\n\n /**\n * Range of pages to render.\n *\n * Example(page 1 to page 3):\n * [pageRange]=\"[1,3]\"\n */\n @Input()\n get pageRange(): number[] { return this._pageRange }\n set pageRange(value: number[]) {\n this._pageRange = value\n\n if (!this._pageRange) {\n this._pageNumbersSubject.next(undefined)\n }\n\n try {\n const range = coerceArray(this._pageRange)\n if (range.length !== 2) {\n throw new Error('[pdf-viewer] Invalid Page Range. Range array must have two numbers only.')\n }\n if (range[0] > range[1]) {\n throw new Error('[pdf-viewer] Invalid Page Range. Start of the range must be less than or equal to the end.')\n }\n\n const nums: number[] = []\n for (let i = range[0]; i <= range[1]; i++) {\n nums.push(i)\n }\n this._pageNumbersSubject.next(nums)\n } catch (err) {\n // TODO: Decide how to conveniently display these errors.\n console.error(err)\n this._pageNumbersSubject.next([])\n }\n }\n private _pageRange: number[] = []\n\n /**\n * Render a specific page.\n */\n @Input()\n get pageNumber(): number { return this._pageNumber }\n set pageNumber(value: number) {\n this._pageNumber = coerceNumberProperty(value, -1)\n this._pageNumbersSubject.next(this._pageNumber === -1 ? undefined : [ this._pageNumber ])\n }\n private _pageNumber = -1\n\n /**\n * Specific page numbers to render.\n */\n @Input()\n get pageNumbers(): number[] { return this._pageNumbers }\n set pageNumbers(value: number[]) {\n this._pageNumbers = value\n if (Array.isArray(this._pageNumbers)) {\n this._pageNumbersSubject.next(this._pageNumbers)\n } else {\n this._pageNumbersSubject.next(undefined)\n }\n }\n private _pageNumbers: number[] = []\n\n private _documentSubject = new ReplaySubject<any>(1)\n public document$: Observable<any>\n public pages$: Observable<any[]>\n\n /**\n * Undefined means all a pages\n */\n private _pageNumbersSubject = new BehaviorSubject<number[] | undefined>(undefined)\n\n constructor(\n private readonly _pdfRenderer: PdfRendererService\n ) {\n this.document$ = this._documentSubject.asObservable().pipe(\n switchMap(url => {\n if (!url) {\n return of()\n }\n return this._pdfRenderer.getDocument(url)\n })\n )\n\n const pageNumbers$ = this._pageNumbersSubject.asObservable()\n\n this.pages$ = this.document$.pipe(\n switchMap(doc => pageNumbers$.pipe(\n map(pageNumbers => {\n const pages: any[] = []\n for (let i = 0; i < doc.numPages; i++) {\n if (!pageNumbers || pageNumbers.indexOf(i + 1) !== -1) {\n pages.push(from(doc.getPage(i + 1)))\n }\n }\n return pages\n })\n ))\n )\n }\n\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { TheSeamSharedModule } from '@theseam/ui-common/shared'\n\nimport { TheSeamPdfPageComponent } from './pdf-page/pdf-page.component'\nimport { TheSeamPdfViewerComponent } from './pdf-viewer.component'\n\n@NgModule({\n imports: [\n CommonModule,\n TheSeamSharedModule\n ],\n declarations: [\n TheSeamPdfViewerComponent,\n TheSeamPdfPageComponent\n ],\n exports: [\n TheSeamPdfViewerComponent,\n TheSeamPdfPageComponent\n ]\n})\nexport class TheSeamPdfViewerModule { }\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { ChangeDetectorRef, Component, ElementRef, Input, NgZone, OnDestroy, OnInit, ViewChild } from '@angular/core'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\n\ninterface TemplateResizeMessagePayload {\n width: number\n height: number\n}\n\nenum TemplateMessageType {\n TplData = 'theseam_tpl_data',\n TplResize = 'theseam_tpl_resize',\n}\n\ninterface TemplateMessage<TType, TPayload> {\n type: TType\n payload: TPayload\n}\n\n@Component({\n selector: 'seam-html-template-viewer',\n templateUrl: './html-template-viewer.component.html',\n styleUrls: ['./html-template-viewer.component.scss']\n})\nexport class TheSeamHtmlTemplateViewerComponent implements OnInit, OnDestroy {\n static ngAcceptInputType_scrollable: BooleanInput\n\n private readonly _templateMessageHandlers: { [key in TemplateMessageType]: (payload: any) => void }\n\n private _message: string | undefined | null\n private _dataVersion: number = 0\n private _scrollHandleObserver: MutationObserver | null = null\n\n @Input()\n get src(): string | null | undefined { return this._src }\n set src(val: string | null | undefined) {\n this._src = val\n this._updateSrc()\n }\n private _src: string | null | undefined\n\n @Input()\n set dataVersion(value: number | undefined | null) {\n const dv = value || 0\n const sendData = this._dataVersion !== dv\n this._dataVersion = dv\n if (sendData) {\n this.postMessage(this._message)\n }\n }\n\n @Input()\n set data(value: any) {\n this.postMessage((value !== null && value !== undefined) ? JSON.stringify(value) : value)\n }\n\n @Input() @InputBoolean()\n set scrollable(value: boolean) {\n this._scrollable = value\n if (this._scrollable) {\n this._initScrollHandleObserver()\n } else {\n this._destroyScrollHandleObserver()\n }\n }\n\n _scrollable: boolean = false\n\n @ViewChild('iframeElement', { static: true })\n set iframeElementRef(val: ElementRef<HTMLIFrameElement>) {\n this._iframeElementRef = val\n const iframeNativeElement = this._getIFrameNativeElement()\n if (iframeNativeElement) {\n this._updateSrc()\n iframeNativeElement.onload = () => this.postMessage(this._message)\n }\n }\n private _iframeElementRef!: ElementRef<HTMLIFrameElement>\n\n _scrollbarOptions = {\n callbacks: {\n onInitialized: () => this._initScrollHandleObserver(),\n // Only scrollbar handles from OverlayScrollbars are currently observed,\n // so we can just disable the observer for native scrollbars.\n onInitializationWithdrawn: () => this._destroyScrollHandleObserver(),\n onDestroyed: () => this._destroyScrollHandleObserver(),\n }\n }\n\n _mouseBlockActive: boolean = false\n _mouseBlockWidth: string = '100%'\n _mouseBlockHeight: string = '100%'\n\n constructor(\n private readonly _ngZone: NgZone,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _elementRef: ElementRef\n ) {\n this._templateMessageHandlers = {\n [TemplateMessageType.TplData]: () => { }, // Not listening for message from template\n [TemplateMessageType.TplResize]: this._onResizeMessageFromTemplate\n }\n }\n\n ngOnInit(): void {\n this._ngZone.runOutsideAngular(() => window.addEventListener('message', this._onMessageFromTemplate))\n }\n\n ngOnDestroy(): void {\n window.removeEventListener('message', this._onMessageFromTemplate)\n this._destroyScrollHandleObserver()\n }\n\n private _onMessageFromTemplate = (e: any) => {\n const type = e.data.type as TemplateMessageType\n if (this._templateMessageHandlers[type]) {\n this._ngZone.run(() => this._templateMessageHandlers[type](e.data.payload))\n }\n }\n\n private _onResizeMessageFromTemplate = (payload: TemplateResizeMessagePayload): void => {\n const iframeNativeElement = this._getIFrameNativeElement()\n if (iframeNativeElement) {\n iframeNativeElement.style.height = `${payload.height}px`\n }\n }\n\n private _updateSrc(): void {\n const iframeNativeElement = this._getIFrameNativeElement()\n if (iframeNativeElement) {\n iframeNativeElement.src = this._src || ''\n }\n }\n\n public postMessage(msg: string | undefined | null): void {\n this._message = msg\n\n let _msg = msg\n const contentWindow = this._getIFrameContentWindow()\n if (contentWindow && _msg) {\n if (this._dataVersion === 2) {\n const wrapper: TemplateMessage<TemplateMessageType, any> = { type: TemplateMessageType.TplData, payload: undefined }\n try { wrapper.payload = JSON.parse(_msg) } catch { wrapper.payload = _msg }\n _msg = JSON.stringify(wrapper)\n }\n\n contentWindow.postMessage(_msg, '*')\n }\n }\n\n public reload(): void {\n this._updateSrc()\n }\n\n _onResized(event: { width: number, height: number }) {\n // This ensures the iframe scales itself if it isn't listening to or misses\n // the resize event.\n this.reload()\n }\n\n private _getIFrameNativeElement(): HTMLIFrameElement | null {\n return (this._iframeElementRef?.nativeElement) || null\n }\n\n private _getIFrameContentWindow(): Window | null {\n return (this._iframeElementRef?.nativeElement?.contentWindow) || null\n }\n\n /**\n * Initializes a MutationObserver to detect the 'active' class added to a\n * scroll handle, because OverlayScrollbars does not seem to provide an event\n * for scrollbar handle activation/deactivation.\n *\n * TODO: Do we need this to work for native scrollbars also?\n */\n private _initScrollHandleObserver(): void {\n if (this._scrollHandleObserver !== null) {\n return\n }\n\n this._ngZone.runOutsideAngular(() => {\n const observer = new MutationObserver(() => {\n this._ngZone.run(() => {\n if (this._isScrollbarHandleActive()) {\n this._enableMouseBlock()\n } else {\n this._disableMouseBlock()\n }\n })\n })\n\n observer.observe(this._elementRef.nativeElement, {\n attributes: true,\n attributeFilter: [ 'class' ],\n childList: true,\n subtree: true,\n characterData: false,\n })\n\n this._scrollHandleObserver = observer\n })\n }\n\n private _destroyScrollHandleObserver(): void {\n if (this._scrollHandleObserver === null) {\n return\n }\n\n this._scrollHandleObserver.disconnect()\n this._scrollHandleObserver = null\n }\n\n /**\n * Enables a transparent div to cover the iframe.\n *\n * When the mouse is over an iframe the browser stops letting the parent\n * document receive mouse events. Anything actively tracking mouse movement or\n * button pressed will think the mouse has left the page. So the scrollbar\n * handle would deactivate, when the mouse hovers the iframe. This adds an\n * element to cover the iframe, which prevents mouse events getting sent to\n * the iframe.\n */\n private _enableMouseBlock(): void {\n this._mouseBlockActive = true\n\n const iframeElement = this._getIFrameNativeElement()\n if (iframeElement) {\n const rect = iframeElement.getBoundingClientRect()\n this._mouseBlockWidth = `${rect.width}px`\n this._mouseBlockHeight = `${rect.height}px`\n } else {\n this._mouseBlockWidth = '100%'\n this._mouseBlockHeight = '100%'\n }\n\n this._cdr.detectChanges()\n }\n\n private _disableMouseBlock(): void {\n this._mouseBlockActive = false\n this._cdr.detectChanges()\n }\n\n private _isScrollbarHandleActive(): boolean {\n return this._elementRef.nativeElement.querySelector('.os-scrollbar-handle.active') !== null\n }\n\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { TheSeamScrollbarModule } from '@theseam/ui-common/scrollbar'\nimport { TheSeamSharedModule } from '@theseam/ui-common/shared'\n\nimport { TheSeamHtmlTemplateViewerComponent } from './html-template-viewer.component'\n\n@NgModule({\n imports: [\n CommonModule,\n TheSeamScrollbarModule,\n TheSeamSharedModule,\n ],\n declarations: [\n TheSeamHtmlTemplateViewerComponent,\n ],\n exports: [\n TheSeamHtmlTemplateViewerComponent,\n ]\n})\nexport class TheSeamHtmlTemplateViewerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1038,7 +1038,7 @@ WidgetComponent.decorators = [
1038
1038
  ])
1039
1039
  ])
1040
1040
  ],
1041
- styles: ["seam-widget{display:block;font-size:15px}seam-widget .seam-widget{background:#FFFFFF}seam-widget .widget-header{display:flex;flex-direction:row;border-bottom:1px solid #dee2e6;background:#F4F4F4;font-size:17px}seam-widget .widget-header .widget-header-content{flex:1 1 100%}seam-widget .widget-header .widget-header-btns-container{display:flex;flex-direction:row}seam-widget .widget-header .widget-header-btns-container>div{display:flex;flex-direction:column;justify-content:center;padding:4px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-config .seam-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;height:25px;width:30px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-config .seam-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-collapse .seam-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;height:15px;width:30px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-collapse .seam-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header .widget-header-title{font-size:17px}seam-widget .widget-header-icon{display:inline-block;vertical-align:top;max-height:20px;max-width:20px;height:20px;width:20px}seam-widget .widget-header-icon .widget-header-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;max-height:20px;max-width:20px;height:20px;width:20px}seam-widget .widget-header-icon .widget-header-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header-icon .widget-header-icon--img{height:100%;max-height:20px;max-width:20px}\n"]
1041
+ styles: ["seam-widget{display:block;font-size:15px}seam-widget .seam-widget{background:#FFFFFF;box-shadow:none}seam-widget .widget-header{display:flex;flex-direction:row;border-bottom:1px solid #dee2e6;background:#F4F4F4;font-size:17px}seam-widget .widget-header .widget-header-content{flex:1 1 100%}seam-widget .widget-header .widget-header-btns-container{display:flex;flex-direction:row}seam-widget .widget-header .widget-header-btns-container>div{display:flex;flex-direction:column;justify-content:center;padding:4px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-config .seam-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;height:25px;width:30px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-config .seam-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-collapse .seam-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;height:15px;width:30px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-collapse .seam-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header .widget-header-title{font-size:17px}seam-widget .widget-header-icon{display:inline-block;vertical-align:top;max-height:20px;max-width:20px;height:20px;width:20px;color:currentColor}seam-widget .widget-header-icon .widget-header-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;max-height:20px;max-width:20px;height:20px;width:20px}seam-widget .widget-header-icon .widget-header-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header-icon .widget-header-icon--img{height:100%;max-height:20px;max-width:20px}\n"]
1042
1042
  },] }
1043
1043
  ];
1044
1044
  WidgetComponent.ctorParameters = () => [];
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"FormFieldErrorDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"[seamFormFieldError]"}]}],"members":{"validatorName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"seamFormFieldError":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"external":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@theseam/ui-common/core","name":"InputBoolean","line":18,"character":12}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}},"FormFieldHelpTextDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":2,"character":1},"arguments":[{"selector":"[seamFormFieldHelpText]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}},"FormFieldLabelTplDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":2,"character":1},"arguments":[{"selector":"[seamFormFieldLabelTpl]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}},"FormFieldRequiredIndicatorComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"seam-form-field-required-indicator","template":"\n <ng-container *ngIf=\"_formField?.contentInput; else noControl\">\n <ng-container *ngIf=\"_formField?.contentInput?.required\">*</ng-container>\n </ng-container>\n <ng-template #noControl>\n <ng-container *ngIf=\"required\">*</ng-container>\n </ng-template>\n ","styles":[],"host":{"class":"text-danger","$quoted$":["class"]},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":21,"character":19},"member":"OnPush"}}]}],"members":{"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@theseam/ui-common/core","name":"InputBoolean","line":27,"character":12}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":30,"character":5}}]],"parameters":[{"__symbolic":"reference","name":"TheSeamFormFieldComponent"}]}]}},"TheSeamFormFieldComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":28,"character":1},"arguments":[{"selector":"seam-form-field","template":"<div>\n <div [class.seam-form-field-inline]=\"inline\">\n <label *ngIf=\"label || labelTpl\"\n #labelElem\n [attr.id]=\"labelId\"\n [attr.for]=\"contentInput?.id\"\n class=\"control-label {{ labelClass }}\"\n (seamElemResized)=\"_labelElemResized(labelElem)\">\n <ng-container *ngIf=\"labelTpl; else noLabelTpl\">\n <ng-template [ngTemplateOutlet]=\"labelTpl.template\" [ngTemplateOutletContext]=\"{ $implicit: label, label: label, required: contentInput?.required || false }\"></ng-template>\n </ng-container>\n <ng-template #noLabelTpl>\n {{ label }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-template>\n </label>\n <ng-container *ngIf=\"!isPasswordInput\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"isPasswordInput\">\n <div class=\"position-relative\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n <seam-password-input-reveal [inputRef]=\"$any(passwordInputElement)\"></seam-password-input-reveal>\n </div>\n </ng-container>\n </div>\n <!-- Need `.d-block` to make errors show without input sibling selector -->\n <ng-container *ngIf=\"contentInput\">\n <seam-form-field-error-list *ngIf=\"fieldErrors$ | async as fieldErrors\"\n [style.paddingLeft]=\"(label || labelTpl) && inline ? _errorPadding : undefined\"\n [control]=\"contentInput.ngControl\"\n [errors]=\"fieldErrors2$ | async\"\n [maxErrors]=\"maxErrors\"\n [numPaddingErrors]=\"numPaddingErrors\"\n class=\"invalid-feedback\">\n </seam-form-field-error-list>\n </ng-container>\n</div>\n\n<ng-template #content><ng-content></ng-content></ng-template>\n","styles":[".seam-form-field-inline{display:flex;flex-direction:row}.seam-form-field-inline .control-label{margin-bottom:0;display:flex;flex-direction:column;justify-content:center}\n"]}]}],"members":{"_displayStyle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":50,"character":3},"arguments":["style.display"]}]}],"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":58,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@theseam/ui-common/core","name":"InputBoolean","line":58,"character":12}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"labelPosition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":69,"character":3}}]}],"labelClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":77,"character":3}}]}],"maxErrors":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3}}]}],"numPaddingErrors":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"labelId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":92,"character":3}}]}],"helpText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":101,"character":3}}]}],"helpTextId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":111,"character":3}}]}],"helpTextTpl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":118,"character":3},"arguments":[{"__symbolic":"reference","name":"FormFieldHelpTextDirective"},{"static":true}]}]}],"labelTpl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":125,"character":3},"arguments":[{"__symbolic":"reference","name":"FormFieldLabelTplDirective"},{"static":true}]}]}],"contentInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":128,"character":3},"arguments":[{"__symbolic":"reference","name":"InputDirective"},{"static":true}]}]}],"fieldErrors":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":134,"character":3},"arguments":[{"__symbolic":"reference","name":"FormFieldErrorDirective"}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":190,"character":34}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"isValidatorMatch":[{"__symbolic":"method"}],"_labelElemResized":[{"__symbolic":"method"}],"getElement":[{"__symbolic":"method"}]}},"TheSeamFormFieldModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"TheSeamFormFieldComponent"},{"__symbolic":"reference","name":"InputDirective"},{"__symbolic":"reference","name":"FormFieldErrorDirective"},{"__symbolic":"reference","name":"FormFieldLabelTplDirective"},{"__symbolic":"reference","name":"FormFieldRequiredIndicatorComponent"},{"__symbolic":"reference","name":"FormFieldHelpTextDirective"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":25,"character":4},{"__symbolic":"reference","module":"@theseam/ui-common/form-field-error","name":"TheSeamFormFieldErrorModule","line":26,"character":4},{"__symbolic":"reference","module":"@theseam/ui-common/shared","name":"TheSeamSharedModule","line":27,"character":4}],"exports":[{"__symbolic":"reference","name":"TheSeamFormFieldComponent"},{"__symbolic":"reference","name":"InputDirective"},{"__symbolic":"reference","name":"FormFieldErrorDirective"},{"__symbolic":"reference","name":"FormFieldLabelTplDirective"},{"__symbolic":"reference","name":"FormFieldRequiredIndicatorComponent"},{"__symbolic":"reference","name":"FormFieldHelpTextDirective"}]}]}],"members":{}},"InputDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":14,"character":1},"arguments":[{"selector":"input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput]","exportAs":"seamInput"}]}],"members":{"_isFormControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":30,"character":3},"arguments":["class.form-control"]}]}],"_isFormControlSmall":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":31,"character":3},"arguments":["class.form-control-sm"]}]}],"_isInvalid":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":34,"character":3},"arguments":["class.is-invalid"]}]}],"_attrId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":38,"character":3},"arguments":["attr.id"]}]}],"_attrPlaceholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":39,"character":3},"arguments":["attr.placeholder"]}]}],"ariaDescribedBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":40,"character":3},"arguments":["attr.aria-describedby"]}]}],"seamInputSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":42,"character":3}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":69,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@theseam/ui-common/core","name":"InputBoolean","line":75,"character":12}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":81,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":114,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@theseam/ui-common/core","name":"InputBoolean","line":114,"character":12}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":118,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":118,"character":17}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":119,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":120,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":122,"character":5}}]],"parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":117,"character":35,"context":{"typeName":"HTMLInputElement"},"module":"./input.directive"}]},{"__symbolic":"reference","module":"@angular/forms","name":"NgControl","line":118,"character":42},{"__symbolic":"reference","module":"@angular/forms","name":"NgForm","line":119,"character":37},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":120,"character":42},{"__symbolic":"reference","module":"@ng-select/ng-select","name":"NgSelectComponent","line":122,"character":35}]}],"ngDoCheck":[{"__symbolic":"method"}],"_shouldHaveFormControlCssClass":[{"__symbolic":"method"}],"_isTextarea":[{"__symbolic":"method"}],"_isNgSelect":[{"__symbolic":"method"}],"_isSeamCheckbox":[{"__symbolic":"method"}],"_isRadioInput":[{"__symbolic":"method"}],"_isNgbRadioGroup":[{"__symbolic":"method"}],"_isTelInput":[{"__symbolic":"method"}],"_isQuillEditor":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"blur":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}]}}},"origins":{"FormFieldErrorDirective":"./form-field-error.directive","FormFieldHelpTextDirective":"./form-field-help-text.directive","FormFieldLabelTplDirective":"./form-field-label-tpl.directive","FormFieldRequiredIndicatorComponent":"./form-field-required-indicator.component","TheSeamFormFieldComponent":"./form-field.component","TheSeamFormFieldModule":"./form-field.module","InputDirective":"./input.directive"},"importAs":"@theseam/ui-common/form-field"}
1
+ {"__symbolic":"module","version":4,"metadata":{"FormFieldErrorDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"[seamFormFieldError]"}]}],"members":{"validatorName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"seamFormFieldError":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"external":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@theseam/ui-common/core","name":"InputBoolean","line":18,"character":12}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}},"FormFieldHelpTextDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":2,"character":1},"arguments":[{"selector":"[seamFormFieldHelpText]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}},"FormFieldLabelTplDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":2,"character":1},"arguments":[{"selector":"[seamFormFieldLabelTpl]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}},"FormFieldRequiredIndicatorComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"seam-form-field-required-indicator","template":"\n <ng-container *ngIf=\"_formField?.contentInput; else noControl\">\n <ng-container *ngIf=\"_formField?.contentInput?.required\">*</ng-container>\n </ng-container>\n <ng-template #noControl>\n <ng-container *ngIf=\"required\">*</ng-container>\n </ng-template>\n ","styles":[],"host":{"class":"text-danger","$quoted$":["class"]},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":21,"character":19},"member":"OnPush"}}]}],"members":{"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@theseam/ui-common/core","name":"InputBoolean","line":27,"character":12}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":30,"character":5}}]],"parameters":[{"__symbolic":"reference","name":"TheSeamFormFieldComponent"}]}]}},"TheSeamFormFieldComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":28,"character":1},"arguments":[{"selector":"seam-form-field","template":"<div>\n <div [class.seam-form-field-inline]=\"inline\">\n <label *ngIf=\"label || labelTpl\"\n #labelElem\n [attr.id]=\"labelId\"\n [attr.for]=\"contentInput?.id\"\n class=\"control-label {{ labelClass }}\"\n (seamElemResized)=\"_labelElemResized(labelElem)\">\n <ng-container *ngIf=\"labelTpl; else noLabelTpl\">\n <ng-template [ngTemplateOutlet]=\"labelTpl.template\" [ngTemplateOutletContext]=\"{ $implicit: label, label: label, required: contentInput?.required || false }\"></ng-template>\n </ng-container>\n <ng-template #noLabelTpl>\n {{ label }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-template>\n </label>\n <ng-container *ngIf=\"!isPasswordInput\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"isPasswordInput\">\n <div class=\"position-relative\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n <seam-password-input-reveal [inputRef]=\"$any(passwordInputElement)\"></seam-password-input-reveal>\n </div>\n </ng-container>\n </div>\n <!-- Need `.d-block` to make errors show without input sibling selector -->\n <ng-container *ngIf=\"contentInput\">\n <seam-form-field-error-list *ngIf=\"fieldErrors$ | async as fieldErrors\"\n [style.paddingLeft]=\"(label || labelTpl) && inline ? _errorPadding : undefined\"\n [control]=\"contentInput.ngControl\"\n [errors]=\"fieldErrors2$ | async\"\n [maxErrors]=\"maxErrors\"\n [numPaddingErrors]=\"numPaddingErrors\"\n class=\"invalid-feedback\">\n </seam-form-field-error-list>\n </ng-container>\n</div>\n\n<ng-template #content><ng-content></ng-content></ng-template>\n","styles":[".seam-form-field-inline{display:flex;flex-direction:row}.seam-form-field-inline .control-label{margin-bottom:0;display:flex;flex-direction:column;justify-content:center}\n"]}]}],"members":{"_displayStyle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":50,"character":3},"arguments":["style.display"]}]}],"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":58,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@theseam/ui-common/core","name":"InputBoolean","line":58,"character":12}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"labelPosition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":69,"character":3}}]}],"labelClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":77,"character":3}}]}],"maxErrors":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3}}]}],"numPaddingErrors":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"labelId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":92,"character":3}}]}],"helpText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":101,"character":3}}]}],"helpTextId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":111,"character":3}}]}],"helpTextTpl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":118,"character":3},"arguments":[{"__symbolic":"reference","name":"FormFieldHelpTextDirective"},{"static":true}]}]}],"labelTpl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":125,"character":3},"arguments":[{"__symbolic":"reference","name":"FormFieldLabelTplDirective"},{"static":true}]}]}],"contentInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":128,"character":3},"arguments":[{"__symbolic":"reference","name":"InputDirective"},{"static":true}]}]}],"fieldErrors":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":134,"character":3},"arguments":[{"__symbolic":"reference","name":"FormFieldErrorDirective"}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":190,"character":34}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"isValidatorMatch":[{"__symbolic":"method"}],"_labelElemResized":[{"__symbolic":"method"}],"getElement":[{"__symbolic":"method"}]}},"TheSeamFormFieldModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"TheSeamFormFieldComponent"},{"__symbolic":"reference","name":"InputDirective"},{"__symbolic":"reference","name":"FormFieldErrorDirective"},{"__symbolic":"reference","name":"FormFieldLabelTplDirective"},{"__symbolic":"reference","name":"FormFieldRequiredIndicatorComponent"},{"__symbolic":"reference","name":"FormFieldHelpTextDirective"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":25,"character":4},{"__symbolic":"reference","module":"@theseam/ui-common/form-field-error","name":"TheSeamFormFieldErrorModule","line":26,"character":4},{"__symbolic":"reference","module":"@theseam/ui-common/shared","name":"TheSeamSharedModule","line":27,"character":4}],"exports":[{"__symbolic":"reference","name":"TheSeamFormFieldComponent"},{"__symbolic":"reference","name":"InputDirective"},{"__symbolic":"reference","name":"FormFieldErrorDirective"},{"__symbolic":"reference","name":"FormFieldLabelTplDirective"},{"__symbolic":"reference","name":"FormFieldRequiredIndicatorComponent"},{"__symbolic":"reference","name":"FormFieldHelpTextDirective"}]}]}],"members":{}},"InputDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":14,"character":1},"arguments":[{"selector":"input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]","exportAs":"seamInput"}]}],"members":{"_isFormControl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":30,"character":3},"arguments":["class.form-control"]}]}],"_isFormControlSmall":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":31,"character":3},"arguments":["class.form-control-sm"]}]}],"_isInvalid":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":34,"character":3},"arguments":["class.is-invalid"]}]}],"_attrId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":38,"character":3},"arguments":["attr.id"]}]}],"_attrPlaceholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":39,"character":3},"arguments":["attr.placeholder"]}]}],"ariaDescribedBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":40,"character":3},"arguments":["attr.aria-describedby"]}]}],"seamInputSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":42,"character":3}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":69,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@theseam/ui-common/core","name":"InputBoolean","line":75,"character":12}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":81,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":114,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@theseam/ui-common/core","name":"InputBoolean","line":114,"character":12}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":118,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":118,"character":17}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":119,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":120,"character":5}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":122,"character":5}}]],"parameters":[{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":117,"character":35,"context":{"typeName":"HTMLInputElement"},"module":"./input.directive"}]},{"__symbolic":"reference","module":"@angular/forms","name":"NgControl","line":118,"character":42},{"__symbolic":"reference","module":"@angular/forms","name":"NgForm","line":119,"character":37},{"__symbolic":"reference","module":"@angular/forms","name":"FormGroupDirective","line":120,"character":42},{"__symbolic":"reference","module":"@ng-select/ng-select","name":"NgSelectComponent","line":122,"character":35}]}],"ngDoCheck":[{"__symbolic":"method"}],"_shouldHaveFormControlCssClass":[{"__symbolic":"method"}],"_isTextarea":[{"__symbolic":"method"}],"_isNgSelect":[{"__symbolic":"method"}],"_isSeamCheckbox":[{"__symbolic":"method"}],"_isRadioInput":[{"__symbolic":"method"}],"_isNgbRadioGroup":[{"__symbolic":"method"}],"_isTelInput":[{"__symbolic":"method"}],"_isQuillEditor":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"blur":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}]}}},"origins":{"FormFieldErrorDirective":"./form-field-error.directive","FormFieldHelpTextDirective":"./form-field-help-text.directive","FormFieldLabelTplDirective":"./form-field-label-tpl.directive","FormFieldRequiredIndicatorComponent":"./form-field-required-indicator.component","TheSeamFormFieldComponent":"./form-field.component","TheSeamFormFieldModule":"./form-field.module","InputDirective":"./input.directive"},"importAs":"@theseam/ui-common/form-field"}
@@ -20,6 +20,11 @@ seam-base-layout {
20
20
  display: flex;
21
21
  flex-direction: column;
22
22
 
23
+ border-top: $base-layout-side-bar-container-border-top;
24
+ border-right: $base-layout-side-bar-container-border-right;
25
+ border-bottom: $base-layout-side-bar-container-border-bottom;
26
+ border-left: $base-layout-side-bar-container-border-left;
27
+
23
28
  .base-layout-side-bar-nav-content {
24
29
  flex: 1 1 0;
25
30
  }
@@ -34,6 +39,11 @@ seam-base-layout {
34
39
 
35
40
  .base-layout-top-bar-container {
36
41
  flex: 0 0 auto;
42
+
43
+ border-top: $base-layout-top-bar-container-border-top;
44
+ border-right: $base-layout-top-bar-container-border-right;
45
+ border-bottom: $base-layout-top-bar-container-border-bottom;
46
+ border-left: $base-layout-top-bar-container-border-left;
37
47
  }
38
48
 
39
49
  .base-layout-content-container {
@@ -56,6 +66,10 @@ seam-base-layout {
56
66
 
57
67
  .base-layout-content-container-header {
58
68
  margin: $base-header-margin;
69
+ padding: $base-header-padding;
70
+ background: $base-header-background;
71
+ border-radius: $base-header-border-radius;
72
+ overflow: hidden;
59
73
  }
60
74
 
61
75
  .btn-baselayout-action {
@@ -1,4 +1,8 @@
1
1
  $base-header-margin: .25rem !default;
2
+ $base-header-padding: 0 !default;
3
+ $base-header-background: none !default;
4
+ $base-header-border-radius: 0 !default;
5
+
2
6
  $base-action-margin: 0 0 0 .25rem !default;
3
7
  $base-action-bg: $gray-200 !default;
4
8
  $base-action-hover-bg: #d3d9df !default;
@@ -7,3 +11,13 @@ $base-action-hover-color: $gray-600 !default;
7
11
  $base-action-padding-x: 1rem !default;
8
12
  $base-action-padding-y: .5rem !default;
9
13
  $base-action-border-radius: .25rem !default;
14
+
15
+ $base-layout-top-bar-container-border-top: none !default;
16
+ $base-layout-top-bar-container-border-right: none !default;
17
+ $base-layout-top-bar-container-border-bottom: 1px solid #dee2e6 !default;
18
+ $base-layout-top-bar-container-border-left: none !default;
19
+
20
+ $base-layout-side-bar-container-border-top: none !default;
21
+ $base-layout-side-bar-container-border-right: 1px solid #dee2e6 !default;
22
+ $base-layout-side-bar-container-border-bottom: none !default;
23
+ $base-layout-side-bar-container-border-left: none !default;