@fundamental-ngx/core 0.39.2 → 0.40.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dialog/base/dialog-config-base.class.d.ts +2 -0
- package/esm2020/avatar/avatar.component.mjs +6 -3
- package/esm2020/calendar/calendar-views/calendar-day-view/calendar-day-view.component.mjs +6 -3
- package/esm2020/date-picker/date-picker.component.mjs +5 -15
- package/esm2020/dialog/base/dialog-config-base.class.mjs +3 -1
- package/esm2020/dialog/dialog-body/dialog-body.component.mjs +3 -3
- package/esm2020/dialog/dialog.component.mjs +4 -3
- package/esm2020/dynamic-page/dynamic-page.component.mjs +2 -2
- package/esm2020/form/form-input-message-group/form-input-message-group.component.mjs +1 -1
- package/esm2020/form/form-label/form-label.component.mjs +8 -2
- package/esm2020/icon/icon.component.mjs +1 -1
- package/esm2020/illustrated-message/illustrated-message.component.mjs +5 -2
- package/esm2020/layout-panel/layout-panel-footer/layout-panel-footer.component.mjs +40 -22
- package/esm2020/layout-panel/layout-panel-title/layout-panel-title.directive.mjs +4 -4
- package/esm2020/layout-panel/layout-panel.component.mjs +15 -3
- package/esm2020/link/link.component.mjs +3 -3
- package/esm2020/list/list-component.interface.mjs +1 -1
- package/esm2020/list/list-item/list-item.component.mjs +9 -10
- package/esm2020/list/list-navigation-item/list-navigation-item.component.mjs +2 -2
- package/esm2020/list/list.component.mjs +2 -2
- package/esm2020/list/tokens.mjs +1 -1
- package/esm2020/multi-combobox/base-multi-combobox.class.mjs +2 -2
- package/esm2020/multi-combobox/multi-combobox.component.mjs +8 -9
- package/esm2020/multi-input/multi-input.component.mjs +7 -4
- package/esm2020/object-status/object-status.component.mjs +1 -1
- package/esm2020/popover/base/base-popover.class.mjs +18 -4
- package/esm2020/popover/popover-service/popover.service.mjs +22 -8
- package/esm2020/segmented-button/segmented-button.component.mjs +11 -15
- package/esm2020/select/option/option.component.mjs +21 -5
- package/esm2020/select/select.component.mjs +1 -1
- package/esm2020/splitter/splitter-pane-container/splitter-pane-container.component.mjs +9 -3
- package/esm2020/text/text.component.mjs +3 -3
- package/esm2020/theming/theming.service.mjs +11 -4
- package/esm2020/timeline/timeline.component.mjs +11 -11
- package/esm2020/token/token.component.mjs +27 -6
- package/esm2020/token/tokenizer.component.mjs +151 -71
- package/fesm2015/fundamental-ngx-core-avatar.mjs +5 -2
- package/fesm2015/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-calendar.mjs +5 -2
- package/fesm2015/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-date-picker.mjs +4 -14
- package/fesm2015/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-dialog.mjs +6 -4
- package/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-form.mjs +7 -1
- package/fesm2015/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-icon.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-illustrated-message.mjs +4 -1
- package/fesm2015/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-layout-panel.mjs +55 -25
- package/fesm2015/fundamental-ngx-core-layout-panel.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-link.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-list.mjs +15 -19
- package/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-multi-combobox.mjs +9 -11
- package/fesm2015/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-multi-input.mjs +6 -3
- package/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-popover.mjs +38 -10
- package/fesm2015/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-segmented-button.mjs +11 -15
- package/fesm2015/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-select.mjs +29 -14
- package/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-splitter.mjs +8 -2
- package/fesm2015/fundamental-ngx-core-splitter.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-text.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-text.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-theming.mjs +10 -3
- package/fesm2015/fundamental-ngx-core-theming.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-timeline.mjs +9 -10
- package/fesm2015/fundamental-ngx-core-timeline.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-token.mjs +179 -76
- package/fesm2015/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-avatar.mjs +5 -2
- package/fesm2020/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-calendar.mjs +5 -2
- package/fesm2020/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-date-picker.mjs +4 -14
- package/fesm2020/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-dialog.mjs +6 -4
- package/fesm2020/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-form.mjs +7 -1
- package/fesm2020/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-icon.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-illustrated-message.mjs +4 -1
- package/fesm2020/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-layout-panel.mjs +55 -25
- package/fesm2020/fundamental-ngx-core-layout-panel.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-link.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-list.mjs +15 -18
- package/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-combobox.mjs +8 -9
- package/fesm2020/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-input.mjs +6 -3
- package/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-popover.mjs +38 -10
- package/fesm2020/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-segmented-button.mjs +11 -15
- package/fesm2020/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-select.mjs +27 -14
- package/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-splitter.mjs +8 -2
- package/fesm2020/fundamental-ngx-core-splitter.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-text.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-text.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-theming.mjs +10 -3
- package/fesm2020/fundamental-ngx-core-theming.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-timeline.mjs +9 -10
- package/fesm2020/fundamental-ngx-core-timeline.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-token.mjs +173 -74
- package/fesm2020/fundamental-ngx-core-token.mjs.map +1 -1
- package/form/form-input-message-group/form-input-message-group.component.d.ts +2 -1
- package/fundamental-ngx-core-v0.40.0-rc.0.tgz +0 -0
- package/illustrated-message/illustrated-message.component.d.ts +2 -2
- package/layout-panel/layout-panel-footer/layout-panel-footer.component.d.ts +23 -14
- package/layout-panel/layout-panel-title/layout-panel-title.directive.d.ts +1 -1
- package/layout-panel/layout-panel.component.d.ts +5 -1
- package/list/list-component.interface.d.ts +1 -0
- package/list/list-item/list-item.component.d.ts +2 -2
- package/list/tokens.d.ts +1 -1
- package/multi-combobox/base-multi-combobox.class.d.ts +1 -2
- package/multi-combobox/multi-combobox.component.d.ts +2 -3
- package/object-status/object-status.component.d.ts +1 -1
- package/package.json +4 -4
- package/popover/base/base-popover.class.d.ts +17 -3
- package/popover/popover-service/popover.service.d.ts +2 -0
- package/schematics/add-dependencies/index.js +6 -6
- package/segmented-button/segmented-button.component.d.ts +0 -1
- package/select/option/option.component.d.ts +9 -2
- package/select/select.component.d.ts +1 -1
- package/splitter/splitter-pane-container/splitter-pane-container.component.d.ts +5 -1
- package/theming/theming.service.d.ts +12 -6
- package/timeline/timeline.component.d.ts +3 -2
- package/token/token.component.d.ts +7 -1
- package/token/tokenizer.component.d.ts +28 -7
- package/esm2020/list/list-component.token.mjs +0 -4
- package/fundamental-ngx-core-v0.39.2.tgz +0 -0
- package/list/list-component.token.d.ts +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-splitter.mjs","sources":["../../../../libs/core/src/lib/splitter/constants.ts","../../../../libs/core/src/lib/splitter/splitter-split-pane/splitter-split-pane.component.ts","../../../../libs/core/src/lib/splitter/splitter-split-pane/splitter-split-pane.component.html","../../../../libs/core/src/lib/splitter/splitter.component.ts","../../../../libs/core/src/lib/splitter/splitter.component.html","../../../../libs/core/src/lib/splitter/splitter-pagination/splitter-pagination.component.ts","../../../../libs/core/src/lib/splitter/splitter-pagination/splitter-pagination.component.html","../../../../libs/core/src/lib/splitter/splitter-pane-container/splitter-pane-orientation.enum.ts","../../../../libs/core/src/lib/splitter/splitter-resizer/splitter-resizer.component.ts","../../../../libs/core/src/lib/splitter/splitter-resizer/splitter-resizer.component.html","../../../../libs/core/src/lib/splitter/splitter-pane-container/splitter-pane-container.component.ts","../../../../libs/core/src/lib/splitter/splitter-pane-container/splitter-pane-container.component.html","../../../../libs/core/src/lib/splitter/splitter.module.ts","../../../../libs/core/src/lib/splitter/fundamental-ngx-core-splitter.ts"],"sourcesContent":["export const PANE_AUTO_SIZE = 'auto';\n\nexport const PANE_NONE_SIZE = 'none';\n\nexport const RESIZER_SIZE_PX = 16;\n\nexport const ROOT_PAGE = 'FD_SPLITTER_ROOT_PAGE';\n","import { TemplatePortal } from '@angular/cdk/portal';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { PANE_AUTO_SIZE } from '../constants';\n\nlet paneUniqueId = 0;\n\n/** @dynamic */\n@Component({\n selector: 'fd-splitter-split-pane',\n templateUrl: './splitter-split-pane.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SplitterSplitPaneComponent implements OnInit, AfterViewInit, OnDestroy {\n /** Size (height in vertical orientation, width in horizontal orientation) of the pane. */\n @Input()\n set size(size: string) {\n this._size = size;\n this._actualSize = this._size;\n }\n\n get size(): string {\n return this._size;\n }\n\n /** Id of the split pane. Generated if not provided. */\n @Input()\n id = `fd-splitter-split-pane-${paneUniqueId++}`;\n\n /** Required browser's window width in pixels when the panel will be shown. */\n @Input()\n requiredParentWidth: number;\n\n /** Whether pane is reachable using pagination bar when is off-canvas. */\n @Input()\n demandPane = true;\n\n /** Event emitted when the pane appears on/disappears out of canvas. */\n @Output()\n readonly toggleOnCanvas = new EventEmitter<boolean>();\n\n /** @hidden */\n @ViewChild(TemplateRef, { static: true })\n _templateRef: TemplateRef<any>;\n\n /** @hidden */\n _actualSize = PANE_AUTO_SIZE;\n\n /** @hidden */\n private _size = PANE_AUTO_SIZE;\n\n /** @hidden */\n private _contentPortal: TemplatePortal | null = null;\n\n /** @hidden */\n private _isOnCanvas = true;\n\n /** @hidden */\n private _unsubscribe$ = new Subject<void>();\n\n /** Returns if the pane is on canvas. */\n get isOnCanvas(): boolean {\n return this._isOnCanvas;\n }\n\n /** @hidden */\n get _content(): TemplatePortal | null {\n return this._contentPortal;\n }\n\n /** @hidden */\n private get _window(): Nullable<Window & typeof globalThis> {\n return this._document?.defaultView;\n }\n\n /** @hidden */\n constructor(\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _viewportRuler: ViewportRuler,\n @Optional() @Inject(DOCUMENT) private readonly _document: Document | null\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._contentPortal = new TemplatePortal(this._templateRef, this._viewContainerRef);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._processPaneOnCanvas();\n this._listenToResize();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._unsubscribe$.next();\n this._unsubscribe$.complete();\n }\n\n /** Hide pane from the canvas. */\n hideFromCanvas(): void {\n if (!this.isOnCanvas) {\n return;\n }\n\n this._isOnCanvas = false;\n\n this.toggleOnCanvas.emit(false);\n }\n\n /** Show pane on the canvas. */\n showOnCanvas(): void {\n if (this.isOnCanvas) {\n return;\n }\n\n this._isOnCanvas = true;\n\n this.toggleOnCanvas.emit(true);\n }\n\n /** @hidden */\n private _listenToResize(): void {\n if (!this._window) {\n return;\n }\n\n this._viewportRuler\n .change(10)\n .pipe(takeUntil(this._unsubscribe$))\n .subscribe(() => this._processPaneOnCanvas());\n }\n\n /** @hidden */\n private _processPaneOnCanvas(): void {\n if (!this._window) {\n return;\n }\n\n if (this.requiredParentWidth > this._window.innerWidth && this.isOnCanvas) {\n this.hideFromCanvas();\n }\n\n if (this.requiredParentWidth < this._window.innerWidth && !this.isOnCanvas) {\n this.showOnCanvas();\n }\n }\n}\n","<ng-template>\n <ng-content></ng-content>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { SplitterSplitPaneComponent } from './splitter-split-pane/splitter-split-pane.component';\n\n@Component({\n selector: 'fd-splitter',\n templateUrl: './splitter.component.html',\n styleUrls: ['./splitter.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'fd-splitter' }\n})\nexport class SplitterComponent {\n /** Id of the main pane. */\n @Input()\n set defaultPaneId(value: string) {\n this._defaultPaneId = value;\n\n this._defaultPaneId$.next(this._defaultPaneId);\n }\n\n get defaultPaneId(): string {\n return this._defaultPaneId;\n }\n\n /**\n * @deprecated use i18n capabilities instead\n * aria-label for the pagination item.\n */\n @Input()\n paginationItemAriaLabel: string;\n\n /** @hidden */\n _defaultPaneId$ = new Subject<string>();\n\n /** @hidden */\n @ContentChildren(SplitterSplitPaneComponent, { descendants: true })\n _panes: QueryList<SplitterSplitPaneComponent>;\n\n /** @hidden */\n private _defaultPaneId: string;\n\n /** Check whether certain pane is on canvas. */\n isPaneOnCanvas(paneId: string): boolean {\n if (!this._panes.length) {\n return false;\n }\n\n const paneToCheck = this._panes.find((pane) => pane.id === paneId);\n\n return !!paneToCheck?.isOnCanvas;\n }\n\n /** Hide certain pane from the canvas. */\n hidePaneFromCanvas(paneId: string): void {\n if (!this._panes.length) {\n return;\n }\n\n const paneToRemove = this._panes.find((pane) => pane.id === paneId);\n\n paneToRemove?.hideFromCanvas();\n }\n\n /** Show certain pane from the canvas. */\n showPaneOnCanvas(paneId: string): void {\n if (!this._panes.length) {\n return;\n }\n\n const paneToShow = this._panes.find((pane) => pane.id === paneId);\n\n paneToShow?.showOnCanvas();\n }\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { SplitterComponent } from '../splitter.component';\n\n@Component({\n selector: 'fd-splitter-pagination',\n templateUrl: './splitter-pagination.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-splitter__pagination',\n '[attr.role]': '\"radiogroup\"'\n }\n})\nexport class SplitterPaginationComponent {\n /** Array of pages ids. */\n @Input()\n pages: string[] = [];\n\n /** Current page id. */\n @Input()\n currentPage: string;\n\n /** Event emitted on page change. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onPageChange = new EventEmitter<string>();\n\n /**\n * @hidden\n * @deprecated use i18n capabilities instead\n */\n get paginationItemAriaLabel(): string {\n return this._splitter.paginationItemAriaLabel;\n }\n\n /** @Hidden */\n constructor(private readonly _splitter: SplitterComponent) {}\n\n /** @hidden */\n _changePage(page: string): void {\n if (page === this.currentPage) {\n return;\n }\n\n this.currentPage = page;\n this.onPageChange.emit(this.currentPage);\n }\n}\n","<button\n *ngFor=\"let page of pages\"\n fd-button\n fdType=\"transparent\"\n class=\"fd-splitter__pagination-item\"\n [class.fd-splitter__pagination-item--active]=\"page === currentPage\"\n role=\"radio\"\n [attr.aria-label]=\"paginationItemAriaLabel || ('coreSplitter.paginationItemAriaLabel' | fdTranslate)\"\n [attr.aria-checked]=\"page === currentPage\"\n (click)=\"_changePage(page)\"\n (keydown.enter)=\"_changePage(page)\"\n>\n <span class=\"fd-splitter__pagination-item-dot\"></span>\n</button>\n","export enum SplitterPaneContainerOrientation {\n vertical = 'vertical',\n horizontal = 'horizontal'\n}\n\nexport type SplitterPaneContainerOrientationType =\n | keyof typeof SplitterPaneContainerOrientation\n | SplitterPaneContainerOrientation;\n","import { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { fromEvent, Subject, throttleTime } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\n\nimport {\n SplitterPaneContainerOrientation,\n SplitterPaneContainerOrientationType\n} from '../splitter-pane-container/splitter-pane-orientation.enum';\n\n/** @dynamic */\n@Component({\n selector: 'fd-splitter-resizer',\n templateUrl: './splitter-resizer.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-splitter__resizer',\n '[class.is-active]': '_start != null || _isInFocus',\n '[tabindex]': '0'\n }\n})\nexport class SplitterResizerComponent implements OnDestroy {\n /** Orientation of the splitter's host pane container. */\n @Input()\n orientation: SplitterPaneContainerOrientationType = SplitterPaneContainerOrientation.vertical;\n\n /** Event emitted after resizing has started. */\n @Output()\n startResize = new EventEmitter<void>();\n\n /** Event emitted after resizing has ended. */\n @Output()\n endResize = new EventEmitter<void>();\n\n /** Event emitted while resizing. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n resize = new EventEmitter<number>();\n\n /** @hidden */\n _start: number | null = null;\n\n /** @hidden */\n _isInFocus = false;\n\n /** @hidden */\n @HostBinding('attr.role')\n get _role(): string {\n return 'separator';\n }\n\n /** @hidden */\n @HostBinding('attr.aria-orientation')\n get _ariaOrientation(): string {\n return this.orientation;\n }\n\n /** @hidden */\n get _isHorizontal(): boolean {\n return this.orientation === SplitterPaneContainerOrientation.horizontal;\n }\n\n /** @hidden */\n get _isVertical(): boolean {\n return this.orientation === SplitterPaneContainerOrientation.vertical;\n }\n\n /** @hidden */\n private _prevDiff = 0;\n\n /** @hidden */\n private _pointerMoveListener = new Subject<void>();\n\n /** @hidden */\n constructor(\n private readonly _elementRef: ElementRef<Element>,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _ngZone: NgZone,\n @Optional() @Inject(DOCUMENT) private readonly _document: Document | null\n ) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._unsubscribe();\n }\n\n /** @hidden */\n @HostListener('mousedown', ['$event'])\n _onMouseDown(event: MouseEvent): void {\n event.preventDefault();\n\n this._start = this._isHorizontal ? event.clientY : event.clientX;\n\n this.startResize.emit();\n\n this._listenToPointerMove();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n _onKeydown(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n event.preventDefault();\n\n let diff: number | undefined;\n\n if (this._isHorizontal) {\n this._start = this._elementRef.nativeElement.getBoundingClientRect().left;\n\n if (KeyUtil.isKeyCode(event, [UP_ARROW])) {\n diff = this._start - 1;\n }\n\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW])) {\n diff = this._start + 1;\n }\n }\n\n if (this._isVertical) {\n this._start = this._elementRef.nativeElement.getBoundingClientRect().top;\n\n if (KeyUtil.isKeyCode(event, [LEFT_ARROW])) {\n diff = this._start - 1;\n }\n\n if (KeyUtil.isKeyCode(event, [RIGHT_ARROW])) {\n diff = this._start + 1;\n }\n }\n\n if (diff !== undefined) {\n this.startResize.emit();\n this._emitResize(diff);\n this.endResize.emit();\n }\n\n this._unsubscribe(false);\n }\n }\n\n /** @hidden */\n @HostListener('focus')\n _onFocus(): void {\n this._isInFocus = true;\n\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n @HostListener('blur')\n _onBlur(): void {\n this._isInFocus = false;\n\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n private _listenToPointerMove(): void {\n this._pointerMoveListener = new Subject<void>();\n\n if (!this._document) {\n return;\n }\n\n this._ngZone.runOutsideAngular(() => {\n fromEvent<MouseEvent>(this._document!, 'mousemove')\n .pipe(throttleTime(10), takeUntil(this._pointerMoveListener))\n .subscribe((event) => {\n this._ngZone.run(() => {\n const newPosition = this._isHorizontal ? event.clientY : event.clientX;\n\n this._emitResize(newPosition);\n this._cdr.markForCheck();\n });\n });\n\n fromEvent(this._document!, 'mouseup')\n .pipe(take(1), takeUntil(this._pointerMoveListener))\n .subscribe(() => {\n this._ngZone.run(() => {\n this.endResize.emit();\n this._unsubscribe();\n this._cdr.markForCheck();\n });\n });\n });\n }\n\n /** @hidden */\n private _emitResize(newPosition: number): void {\n const diff = newPosition - (this._start ?? newPosition);\n\n this.resize.emit(diff - this._prevDiff);\n\n this._prevDiff = diff;\n }\n\n /** @hidden */\n private _unsubscribe(removeFocus = true): void {\n this._start = null;\n this._prevDiff = 0;\n\n this._pointerMoveListener?.next();\n this._pointerMoveListener?.complete();\n\n if (removeFocus) {\n this._isInFocus = false;\n\n this._cdr.markForCheck();\n }\n }\n}\n","<div class=\"fd-splitter__resizer-decoration-before\"></div>\n\n<button fd-button fdType=\"transparent\" tabindex=\"-1\" class=\"fd-splitter__resizer-grip\">\n <fd-icon\n class=\"fd-splitter__resizer-grip-icon\"\n [glyph]=\"(_isVertical && 'vertical-grip') || (_isHorizontal && 'horizontal-grip')\"\n ></fd-icon>\n</button>\n\n<div class=\"fd-splitter__resizer-decoration-after\"></div>\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Optional,\n Output,\n Pipe,\n PipeTransform,\n QueryList,\n SkipSelf,\n ViewEncapsulation\n} from '@angular/core';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\n\nimport { SplitterComponent } from '../splitter.component';\nimport { SplitterPaneResizeEvent } from '../interfaces/splitter-pane-resize-event.interface';\nimport { SplitterSplitPaneComponent } from '../splitter-split-pane/splitter-split-pane.component';\nimport { PANE_AUTO_SIZE, PANE_NONE_SIZE, RESIZER_SIZE_PX, ROOT_PAGE } from '../constants';\nimport {\n SplitterPaneContainerOrientation,\n SplitterPaneContainerOrientationType\n} from './splitter-pane-orientation.enum';\n\n@Component({\n selector: 'fd-splitter-pane-container',\n templateUrl: './splitter-pane-container.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-splitter__pane-container',\n '[class.fd-splitter__pane-container--horizontal]': '!_isRootContainer && _isHorizontal',\n '[class.fd-splitter__pane-container--vertical]': '_isRootContainer || _isVertical'\n }\n})\nexport class SplitterPaneContainerComponent implements AfterContentInit, AfterViewInit, OnDestroy {\n /** Pane type - vertical (default) or horizontal. */\n @Input()\n orientation: SplitterPaneContainerOrientationType = SplitterPaneContainerOrientation.vertical;\n\n /** Event emitted after container's panes has resized. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n readonly resize = new EventEmitter<SplitterPaneResizeEvent[]>();\n\n /** @hidden */\n @ContentChildren(SplitterSplitPaneComponent, { descendants: true })\n _panes: QueryList<SplitterSplitPaneComponent>;\n\n /** @hidden */\n @ContentChildren(SplitterSplitPaneComponent)\n _directPanes: QueryList<SplitterSplitPaneComponent>;\n\n /** @hidden */\n _defaultPane: SplitterSplitPaneComponent;\n\n /** @hidden */\n _pages: string[] = [];\n\n /** @hidden */\n _currentPage: string;\n\n /** @hidden */\n private _paneSizes: number[] = [];\n\n /** @hidden */\n private _wantedPanesSizes: number[] = [];\n\n /** @hidden */\n private _initialPaneSizes: number[] = [];\n\n /** @hidden */\n private _directPaneSubscription$ = new Subscription();\n\n /** @hidden */\n private _subscription$ = new Subscription();\n\n /** @hidden */\n get _isHorizontal(): boolean {\n return this.orientation === SplitterPaneContainerOrientation.horizontal;\n }\n\n /** @hidden */\n get _isVertical(): boolean {\n return this.orientation === SplitterPaneContainerOrientation.vertical;\n }\n\n /** @hidden */\n get _isRootContainer(): boolean {\n return !this._parentSplitterPaneContainer;\n }\n\n /** @hidden */\n get _panesOnCanvas(): SplitterSplitPaneComponent[] {\n return this._directPanes.filter((pane) => pane.isOnCanvas);\n }\n\n /** @hidden */\n get _activePanes(): SplitterSplitPaneComponent[] {\n if (this._currentPage === ROOT_PAGE) {\n return this._panesOnCanvas;\n }\n\n return this._panes.filter((pane) => pane.id === this._currentPage);\n }\n\n /** @hidden */\n private get _panesInRightOrderForResize(): SplitterSplitPaneComponent[] {\n const panes = this._directPanes.filter((pane) => pane.id !== this._defaultPane?.id);\n\n if (this._defaultPane) {\n panes.unshift(this._defaultPane);\n }\n\n return panes;\n }\n\n /** @hidden */\n private get _isRtl(): boolean {\n return this._rtlService?.rtl.getValue();\n }\n\n /** @hidden */\n constructor(\n private readonly _cdr: ChangeDetectorRef,\n private readonly _elementRef: ElementRef,\n private readonly _splitter: SplitterComponent,\n private readonly _viewportRuler: ViewportRuler,\n @Optional() private readonly _rtlService: RtlService,\n @Optional() @SkipSelf() private readonly _parentSplitterPaneContainer: SplitterPaneContainerComponent\n ) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (this._isRootContainer) {\n this._setDefaultPane();\n this._updatePages();\n\n this._panes.forEach((pane) => {\n this._subscription$.add(pane.toggleOnCanvas.subscribe(() => this._updatePages()));\n });\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._setPanes();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._directPaneSubscription$.unsubscribe();\n this._subscription$.unsubscribe();\n }\n\n /** @hidden */\n _getPaneStyles(pane: SplitterSplitPaneComponent): { [klass: string]: any } {\n const style = {\n 'min-width': PANE_AUTO_SIZE,\n 'max-width': PANE_NONE_SIZE,\n 'min-height': PANE_AUTO_SIZE,\n 'max-height': PANE_NONE_SIZE\n };\n\n if (this._isVertical && pane.isOnCanvas && pane._actualSize !== PANE_AUTO_SIZE) {\n style['min-width'] = pane._actualSize;\n style['max-width'] = pane._actualSize;\n }\n\n if (this._isHorizontal && pane.isOnCanvas && pane._actualSize !== PANE_AUTO_SIZE) {\n style['min-height'] = pane._actualSize;\n style['max-height'] = pane._actualSize;\n }\n\n return style;\n }\n\n /** @hidden */\n _startResize(): void {\n this._paneSizes = [];\n this._initialPaneSizes = [];\n\n this._panesInRightOrderForResize.forEach((pane) => {\n const paneSize = this._getPaneElementSizePx(pane.id);\n\n this._paneSizes.push(paneSize);\n this._initialPaneSizes.push(paneSize);\n });\n }\n\n /** @hidden */\n _endResize(): void {\n const changedPaneSizes: SplitterPaneResizeEvent[] = [];\n\n this._panesInRightOrderForResize.forEach((pane, index) => {\n if (this._paneSizes[index] !== this._initialPaneSizes[index]) {\n changedPaneSizes.push({\n paneId: pane.id,\n oldSize: this._initialPaneSizes[index] + 'px',\n newSize: this._paneSizes[index] + 'px'\n });\n }\n });\n\n this.resize.emit(changedPaneSizes);\n\n this._resizePanesToFitInContainer(true);\n }\n\n /** @hidden */\n _onResize(paneId: string, diff: number): void {\n if (diff === 0) {\n return;\n }\n\n diff *= this._isRtl && this.orientation === SplitterPaneContainerOrientation.vertical ? -1 : 1;\n\n const resizedPaneIndex =\n this._panesInRightOrderForResize.findIndex((pane) => pane.id === paneId) + (diff < 0 ? 1 : 0);\n const resizedPane = this._panesInRightOrderForResize[resizedPaneIndex];\n\n let siblingPaneIndex = resizedPaneIndex;\n let siblingPane;\n let siblingPaneSize;\n\n do {\n siblingPaneIndex += diff < 0 ? -1 : 1;\n siblingPane = this._panesInRightOrderForResize[siblingPaneIndex];\n siblingPaneSize = this._paneSizes[siblingPaneIndex];\n\n if (!siblingPane) {\n return;\n }\n } while (!siblingPaneSize);\n\n const resizedPaneNewSize = this._paneSizes[resizedPaneIndex] + diff * (diff < 0 ? -1 : 1);\n const siblingPaneNewSize = this._paneSizes[siblingPaneIndex] + diff * (diff < 0 ? 1 : -1);\n\n /** Prevent from setting negative size */\n if (resizedPaneNewSize < 0 || siblingPaneNewSize < 0) {\n return;\n }\n\n this._paneSizes[resizedPaneIndex] = resizedPaneNewSize;\n this._paneSizes[siblingPaneIndex] = siblingPaneNewSize;\n\n resizedPane.size = this._paneSizes[resizedPaneIndex] + 'px';\n siblingPane.size = this._paneSizes[siblingPaneIndex] + 'px';\n\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n _onPageChange(page: string = ROOT_PAGE): void {\n this._currentPage = page;\n\n this._cdr.detectChanges();\n }\n\n /** @hidden */\n private _updatePages(): void {\n this._pages = [];\n\n const offCanvasDemandPages = this._panes\n .filter((pane) => !pane.isOnCanvas && pane.demandPane)\n .map((pane) => pane.id);\n let newPage = ROOT_PAGE;\n\n if (offCanvasDemandPages.length) {\n this._pages = offCanvasDemandPages;\n newPage = offCanvasDemandPages[0];\n\n if (this._panesOnCanvas.length > 1) {\n this._pages.unshift(ROOT_PAGE);\n newPage = ROOT_PAGE;\n }\n\n if (this._panesOnCanvas.length === 1) {\n this._pages.unshift(this._panesOnCanvas[0].id);\n newPage = this._panesOnCanvas[0].id;\n }\n }\n\n const currentPageExist = this._pages.includes(this._currentPage);\n\n if (!currentPageExist) {\n /** Detaching basically works without the code but it's the edge-case */\n const isShouldDetachDefaultPane = this._currentPage === this._defaultPane?.id && newPage === ROOT_PAGE;\n\n if (isShouldDetachDefaultPane && this._defaultPane?._content?.isAttached) {\n this._defaultPane._content.detach();\n }\n\n this._onPageChange(newPage);\n return;\n }\n\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n private _setPanes(): void {\n this._resizePanesToFitInContainer(true);\n\n const setDirectPanesSubscription = (): void => {\n this._directPaneSubscription$.unsubscribe();\n this._directPaneSubscription$ = new Subscription();\n\n this._directPanes.forEach((pane) => {\n this._directPaneSubscription$.add(\n pane.toggleOnCanvas.subscribe(() => this._resizePanesToFitInContainer())\n );\n });\n };\n\n let prevDirectPanes = [...this._directPanes];\n const areDirectPanesSame = (panes: QueryList<SplitterSplitPaneComponent>): boolean => {\n if (panes.length !== prevDirectPanes.length) {\n return false;\n }\n\n return prevDirectPanes.every((prevPane) => !!panes.find((pane) => pane.id === prevPane.id));\n };\n\n setDirectPanesSubscription();\n\n this._subscription$.add(\n this._panes.changes.pipe(filter((panes) => !areDirectPanesSame(panes))).subscribe((panesList) => {\n prevDirectPanes = panesList.toArray();\n\n setDirectPanesSubscription();\n\n this._resizePanesToFitInContainer(true);\n })\n );\n\n this._subscription$.add(this._viewportRuler.change(10).subscribe(() => this._resizePanesToFitInContainer()));\n }\n\n /** @hidden */\n private _setDefaultPane(): void {\n const setDefaultPane = (): void => {\n if (this._splitter.defaultPaneId) {\n this._defaultPane =\n this._panes.find((pane) => pane.id === this._splitter.defaultPaneId) ?? this._directPanes[0];\n }\n\n /** Detaching basically works without the code but it's the edge-case */\n if (this._defaultPane?._content?.isAttached) {\n this._defaultPane._content.detach();\n }\n };\n\n setDefaultPane();\n\n this._subscription$.add(\n this._splitter._defaultPaneId$.subscribe(() => {\n this._cdr.detectChanges();\n\n setDefaultPane();\n\n this._resizePanesToFitInContainer(true);\n this._updatePages();\n })\n );\n }\n\n /** @hidden */\n private _resizePanesToFitInContainer(setInitialSize = false): void {\n if (setInitialSize) {\n this._cdr.detectChanges();\n }\n\n const containerSizePx = this._isHorizontal\n ? this._elementRef.nativeElement.offsetHeight\n : this._elementRef.nativeElement.offsetWidth;\n let availableSpacePx = containerSizePx - RESIZER_SIZE_PX * (this._directPanes.length - 1);\n\n this._directPanes.forEach((pane, index) => {\n if (!availableSpacePx) {\n pane._actualSize = '0px';\n return;\n }\n\n if (setInitialSize) {\n this._wantedPanesSizes[index] = this._getPaneElementSizePx(pane.id);\n }\n\n const paneSize = this._wantedPanesSizes[index];\n\n if (availableSpacePx - this._wantedPanesSizes[index] < 0) {\n pane._actualSize = availableSpacePx + 'px';\n availableSpacePx = 0;\n return;\n }\n\n pane._actualSize = pane.size === PANE_AUTO_SIZE ? PANE_AUTO_SIZE : paneSize + 'px';\n availableSpacePx -= paneSize;\n });\n\n this._cdr.detectChanges();\n }\n\n /** @hidden */\n private _getPaneElementSizePx(paneId: string): number {\n const paneElement = this._getPaneElement(paneId);\n\n if (!paneElement) {\n return 0;\n }\n\n return this._isHorizontal ? paneElement.offsetHeight : paneElement.offsetWidth;\n }\n\n /** @hidden */\n private _getPaneElement(paneId: string): HTMLElement {\n return this._elementRef.nativeElement.querySelector(`#${paneId}`);\n }\n}\n\n@Pipe({ name: 'noDefaultPane' })\nexport class NoDefaultPanePipe implements PipeTransform {\n /** @hidden */\n constructor(private readonly _splitterPaneContainer: SplitterPaneContainerComponent) {}\n\n /** @hidden */\n transform(value: SplitterSplitPaneComponent[], excludingCondition = true): SplitterSplitPaneComponent[] {\n if (!excludingCondition) {\n return value;\n }\n\n return value.filter((pane) => pane.id !== this._splitterPaneContainer._defaultPane?.id);\n }\n}\n","<ng-container *ngIf=\"_isRootContainer; else panesOnCanvasTemplate\">\n <ng-container *ngIf=\"_defaultPane?.isOnCanvas && _activePanes.length > 1\">\n <ng-container\n *ngTemplateOutlet=\"panesTemplate; context: { panes: [_defaultPane], showResizer: true }\"\n ></ng-container>\n </ng-container>\n\n <div class=\"fd-splitter__split-pane\">\n <div\n class=\"fd-splitter__pane-container\"\n [class.fd-splitter__pane-container--horizontal]=\"!_isRootContainer && _isHorizontal\"\n [class.fd-splitter__pane-container--vertical]=\"_isRootContainer || _isVertical\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n panesTemplate;\n context: {\n panes: _activePanes | noDefaultPane: _defaultPane?.isOnCanvas && _activePanes.length > 1\n }\n \"\n ></ng-container>\n </div>\n\n <fd-splitter-pagination\n *ngIf=\"_pages.length\"\n [pages]=\"_pages\"\n [currentPage]=\"_currentPage\"\n (onPageChange)=\"_onPageChange($event)\"\n ></fd-splitter-pagination>\n </div>\n</ng-container>\n\n<ng-template #panesOnCanvasTemplate>\n <ng-container *ngTemplateOutlet=\"panesTemplate; context: { panes: _panesOnCanvas }\"></ng-container>\n</ng-template>\n\n<!-- IDE won't recognize types properly below -->\n\n<ng-template #panesTemplate let-panes=\"panes\" let-showResizer=\"showResizer\">\n <ng-container *ngFor=\"let pane of panes; let last = last\">\n <section [id]=\"pane.id\" class=\"fd-splitter__split-pane\" [style]=\"_getPaneStyles(pane)\">\n <ng-template [cdkPortalOutlet]=\"pane._content\"></ng-template>\n </section>\n\n <fd-splitter-resizer\n *ngIf=\"!last || showResizer\"\n [orientation]=\"orientation\"\n (startResize)=\"_startResize()\"\n (endResize)=\"_endResize()\"\n (resize)=\"_onResize(pane.id, $event)\"\n ></fd-splitter-resizer>\n </ng-container>\n</ng-template>\n","import { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\n\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { I18nModule } from '@fundamental-ngx/i18n';\n\nimport { SplitterPaginationComponent } from './splitter-pagination/splitter-pagination.component';\nimport {\n SplitterPaneContainerComponent,\n NoDefaultPanePipe\n} from './splitter-pane-container/splitter-pane-container.component';\nimport { SplitterResizerComponent } from './splitter-resizer/splitter-resizer.component';\nimport { SplitterSplitPaneComponent } from './splitter-split-pane/splitter-split-pane.component';\nimport { SplitterComponent } from './splitter.component';\n\n@NgModule({\n declarations: [\n SplitterComponent,\n SplitterPaneContainerComponent,\n SplitterSplitPaneComponent,\n SplitterResizerComponent,\n SplitterPaginationComponent,\n NoDefaultPanePipe\n ],\n imports: [CommonModule, IconModule, ButtonModule, PortalModule, I18nModule],\n exports: [\n SplitterComponent,\n SplitterPaneContainerComponent,\n SplitterSplitPaneComponent,\n SplitterResizerComponent,\n SplitterPaginationComponent,\n NoDefaultPanePipe\n ]\n})\nexport class SplitterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.SplitterComponent","i2","i4","i1","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-splitter.mjs","sources":["../../../../libs/core/src/lib/splitter/constants.ts","../../../../libs/core/src/lib/splitter/splitter-split-pane/splitter-split-pane.component.ts","../../../../libs/core/src/lib/splitter/splitter-split-pane/splitter-split-pane.component.html","../../../../libs/core/src/lib/splitter/splitter.component.ts","../../../../libs/core/src/lib/splitter/splitter.component.html","../../../../libs/core/src/lib/splitter/splitter-pagination/splitter-pagination.component.ts","../../../../libs/core/src/lib/splitter/splitter-pagination/splitter-pagination.component.html","../../../../libs/core/src/lib/splitter/splitter-pane-container/splitter-pane-orientation.enum.ts","../../../../libs/core/src/lib/splitter/splitter-resizer/splitter-resizer.component.ts","../../../../libs/core/src/lib/splitter/splitter-resizer/splitter-resizer.component.html","../../../../libs/core/src/lib/splitter/splitter-pane-container/splitter-pane-container.component.ts","../../../../libs/core/src/lib/splitter/splitter-pane-container/splitter-pane-container.component.html","../../../../libs/core/src/lib/splitter/splitter.module.ts","../../../../libs/core/src/lib/splitter/fundamental-ngx-core-splitter.ts"],"sourcesContent":["export const PANE_AUTO_SIZE = 'auto';\n\nexport const PANE_NONE_SIZE = 'none';\n\nexport const RESIZER_SIZE_PX = 16;\n\nexport const ROOT_PAGE = 'FD_SPLITTER_ROOT_PAGE';\n","import { TemplatePortal } from '@angular/cdk/portal';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { PANE_AUTO_SIZE } from '../constants';\n\nlet paneUniqueId = 0;\n\n/** @dynamic */\n@Component({\n selector: 'fd-splitter-split-pane',\n templateUrl: './splitter-split-pane.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SplitterSplitPaneComponent implements OnInit, AfterViewInit, OnDestroy {\n /** Size (height in vertical orientation, width in horizontal orientation) of the pane. */\n @Input()\n set size(size: string) {\n this._size = size;\n this._actualSize = this._size;\n }\n\n get size(): string {\n return this._size;\n }\n\n /** Id of the split pane. Generated if not provided. */\n @Input()\n id = `fd-splitter-split-pane-${paneUniqueId++}`;\n\n /** Required browser's window width in pixels when the panel will be shown. */\n @Input()\n requiredParentWidth: number;\n\n /** Whether pane is reachable using pagination bar when is off-canvas. */\n @Input()\n demandPane = true;\n\n /** Event emitted when the pane appears on/disappears out of canvas. */\n @Output()\n readonly toggleOnCanvas = new EventEmitter<boolean>();\n\n /** @hidden */\n @ViewChild(TemplateRef, { static: true })\n _templateRef: TemplateRef<any>;\n\n /** @hidden */\n _actualSize = PANE_AUTO_SIZE;\n\n /** @hidden */\n private _size = PANE_AUTO_SIZE;\n\n /** @hidden */\n private _contentPortal: TemplatePortal | null = null;\n\n /** @hidden */\n private _isOnCanvas = true;\n\n /** @hidden */\n private _unsubscribe$ = new Subject<void>();\n\n /** Returns if the pane is on canvas. */\n get isOnCanvas(): boolean {\n return this._isOnCanvas;\n }\n\n /** @hidden */\n get _content(): TemplatePortal | null {\n return this._contentPortal;\n }\n\n /** @hidden */\n private get _window(): Nullable<Window & typeof globalThis> {\n return this._document?.defaultView;\n }\n\n /** @hidden */\n constructor(\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _viewportRuler: ViewportRuler,\n @Optional() @Inject(DOCUMENT) private readonly _document: Document | null\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._contentPortal = new TemplatePortal(this._templateRef, this._viewContainerRef);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._processPaneOnCanvas();\n this._listenToResize();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._unsubscribe$.next();\n this._unsubscribe$.complete();\n }\n\n /** Hide pane from the canvas. */\n hideFromCanvas(): void {\n if (!this.isOnCanvas) {\n return;\n }\n\n this._isOnCanvas = false;\n\n this.toggleOnCanvas.emit(false);\n }\n\n /** Show pane on the canvas. */\n showOnCanvas(): void {\n if (this.isOnCanvas) {\n return;\n }\n\n this._isOnCanvas = true;\n\n this.toggleOnCanvas.emit(true);\n }\n\n /** @hidden */\n private _listenToResize(): void {\n if (!this._window) {\n return;\n }\n\n this._viewportRuler\n .change(10)\n .pipe(takeUntil(this._unsubscribe$))\n .subscribe(() => this._processPaneOnCanvas());\n }\n\n /** @hidden */\n private _processPaneOnCanvas(): void {\n if (!this._window) {\n return;\n }\n\n if (this.requiredParentWidth > this._window.innerWidth && this.isOnCanvas) {\n this.hideFromCanvas();\n }\n\n if (this.requiredParentWidth < this._window.innerWidth && !this.isOnCanvas) {\n this.showOnCanvas();\n }\n }\n}\n","<ng-template>\n <ng-content></ng-content>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { SplitterSplitPaneComponent } from './splitter-split-pane/splitter-split-pane.component';\n\n@Component({\n selector: 'fd-splitter',\n templateUrl: './splitter.component.html',\n styleUrls: ['./splitter.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'fd-splitter' }\n})\nexport class SplitterComponent {\n /** Id of the main pane. */\n @Input()\n set defaultPaneId(value: string) {\n this._defaultPaneId = value;\n\n this._defaultPaneId$.next(this._defaultPaneId);\n }\n\n get defaultPaneId(): string {\n return this._defaultPaneId;\n }\n\n /**\n * @deprecated use i18n capabilities instead\n * aria-label for the pagination item.\n */\n @Input()\n paginationItemAriaLabel: string;\n\n /** @hidden */\n _defaultPaneId$ = new Subject<string>();\n\n /** @hidden */\n @ContentChildren(SplitterSplitPaneComponent, { descendants: true })\n _panes: QueryList<SplitterSplitPaneComponent>;\n\n /** @hidden */\n private _defaultPaneId: string;\n\n /** Check whether certain pane is on canvas. */\n isPaneOnCanvas(paneId: string): boolean {\n if (!this._panes.length) {\n return false;\n }\n\n const paneToCheck = this._panes.find((pane) => pane.id === paneId);\n\n return !!paneToCheck?.isOnCanvas;\n }\n\n /** Hide certain pane from the canvas. */\n hidePaneFromCanvas(paneId: string): void {\n if (!this._panes.length) {\n return;\n }\n\n const paneToRemove = this._panes.find((pane) => pane.id === paneId);\n\n paneToRemove?.hideFromCanvas();\n }\n\n /** Show certain pane from the canvas. */\n showPaneOnCanvas(paneId: string): void {\n if (!this._panes.length) {\n return;\n }\n\n const paneToShow = this._panes.find((pane) => pane.id === paneId);\n\n paneToShow?.showOnCanvas();\n }\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { SplitterComponent } from '../splitter.component';\n\n@Component({\n selector: 'fd-splitter-pagination',\n templateUrl: './splitter-pagination.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-splitter__pagination',\n '[attr.role]': '\"radiogroup\"'\n }\n})\nexport class SplitterPaginationComponent {\n /** Array of pages ids. */\n @Input()\n pages: string[] = [];\n\n /** Current page id. */\n @Input()\n currentPage: string;\n\n /** Event emitted on page change. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onPageChange = new EventEmitter<string>();\n\n /**\n * @hidden\n * @deprecated use i18n capabilities instead\n */\n get paginationItemAriaLabel(): string {\n return this._splitter.paginationItemAriaLabel;\n }\n\n /** @Hidden */\n constructor(private readonly _splitter: SplitterComponent) {}\n\n /** @hidden */\n _changePage(page: string): void {\n if (page === this.currentPage) {\n return;\n }\n\n this.currentPage = page;\n this.onPageChange.emit(this.currentPage);\n }\n}\n","<button\n *ngFor=\"let page of pages\"\n fd-button\n fdType=\"transparent\"\n class=\"fd-splitter__pagination-item\"\n [class.fd-splitter__pagination-item--active]=\"page === currentPage\"\n role=\"radio\"\n [attr.aria-label]=\"paginationItemAriaLabel || ('coreSplitter.paginationItemAriaLabel' | fdTranslate)\"\n [attr.aria-checked]=\"page === currentPage\"\n (click)=\"_changePage(page)\"\n (keydown.enter)=\"_changePage(page)\"\n>\n <span class=\"fd-splitter__pagination-item-dot\"></span>\n</button>\n","export enum SplitterPaneContainerOrientation {\n vertical = 'vertical',\n horizontal = 'horizontal'\n}\n\nexport type SplitterPaneContainerOrientationType =\n | keyof typeof SplitterPaneContainerOrientation\n | SplitterPaneContainerOrientation;\n","import { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { fromEvent, Subject, throttleTime } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\n\nimport {\n SplitterPaneContainerOrientation,\n SplitterPaneContainerOrientationType\n} from '../splitter-pane-container/splitter-pane-orientation.enum';\n\n/** @dynamic */\n@Component({\n selector: 'fd-splitter-resizer',\n templateUrl: './splitter-resizer.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-splitter__resizer',\n '[class.is-active]': '_start != null || _isInFocus',\n '[tabindex]': '0'\n }\n})\nexport class SplitterResizerComponent implements OnDestroy {\n /** Orientation of the splitter's host pane container. */\n @Input()\n orientation: SplitterPaneContainerOrientationType = SplitterPaneContainerOrientation.vertical;\n\n /** Event emitted after resizing has started. */\n @Output()\n startResize = new EventEmitter<void>();\n\n /** Event emitted after resizing has ended. */\n @Output()\n endResize = new EventEmitter<void>();\n\n /** Event emitted while resizing. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n resize = new EventEmitter<number>();\n\n /** @hidden */\n _start: number | null = null;\n\n /** @hidden */\n _isInFocus = false;\n\n /** @hidden */\n @HostBinding('attr.role')\n get _role(): string {\n return 'separator';\n }\n\n /** @hidden */\n @HostBinding('attr.aria-orientation')\n get _ariaOrientation(): string {\n return this.orientation;\n }\n\n /** @hidden */\n get _isHorizontal(): boolean {\n return this.orientation === SplitterPaneContainerOrientation.horizontal;\n }\n\n /** @hidden */\n get _isVertical(): boolean {\n return this.orientation === SplitterPaneContainerOrientation.vertical;\n }\n\n /** @hidden */\n private _prevDiff = 0;\n\n /** @hidden */\n private _pointerMoveListener = new Subject<void>();\n\n /** @hidden */\n constructor(\n private readonly _elementRef: ElementRef<Element>,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _ngZone: NgZone,\n @Optional() @Inject(DOCUMENT) private readonly _document: Document | null\n ) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._unsubscribe();\n }\n\n /** @hidden */\n @HostListener('mousedown', ['$event'])\n _onMouseDown(event: MouseEvent): void {\n event.preventDefault();\n\n this._start = this._isHorizontal ? event.clientY : event.clientX;\n\n this.startResize.emit();\n\n this._listenToPointerMove();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n _onKeydown(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n event.preventDefault();\n\n let diff: number | undefined;\n\n if (this._isHorizontal) {\n this._start = this._elementRef.nativeElement.getBoundingClientRect().left;\n\n if (KeyUtil.isKeyCode(event, [UP_ARROW])) {\n diff = this._start - 1;\n }\n\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW])) {\n diff = this._start + 1;\n }\n }\n\n if (this._isVertical) {\n this._start = this._elementRef.nativeElement.getBoundingClientRect().top;\n\n if (KeyUtil.isKeyCode(event, [LEFT_ARROW])) {\n diff = this._start - 1;\n }\n\n if (KeyUtil.isKeyCode(event, [RIGHT_ARROW])) {\n diff = this._start + 1;\n }\n }\n\n if (diff !== undefined) {\n this.startResize.emit();\n this._emitResize(diff);\n this.endResize.emit();\n }\n\n this._unsubscribe(false);\n }\n }\n\n /** @hidden */\n @HostListener('focus')\n _onFocus(): void {\n this._isInFocus = true;\n\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n @HostListener('blur')\n _onBlur(): void {\n this._isInFocus = false;\n\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n private _listenToPointerMove(): void {\n this._pointerMoveListener = new Subject<void>();\n\n if (!this._document) {\n return;\n }\n\n this._ngZone.runOutsideAngular(() => {\n fromEvent<MouseEvent>(this._document!, 'mousemove')\n .pipe(throttleTime(10), takeUntil(this._pointerMoveListener))\n .subscribe((event) => {\n this._ngZone.run(() => {\n const newPosition = this._isHorizontal ? event.clientY : event.clientX;\n\n this._emitResize(newPosition);\n this._cdr.markForCheck();\n });\n });\n\n fromEvent(this._document!, 'mouseup')\n .pipe(take(1), takeUntil(this._pointerMoveListener))\n .subscribe(() => {\n this._ngZone.run(() => {\n this.endResize.emit();\n this._unsubscribe();\n this._cdr.markForCheck();\n });\n });\n });\n }\n\n /** @hidden */\n private _emitResize(newPosition: number): void {\n const diff = newPosition - (this._start ?? newPosition);\n\n this.resize.emit(diff - this._prevDiff);\n\n this._prevDiff = diff;\n }\n\n /** @hidden */\n private _unsubscribe(removeFocus = true): void {\n this._start = null;\n this._prevDiff = 0;\n\n this._pointerMoveListener?.next();\n this._pointerMoveListener?.complete();\n\n if (removeFocus) {\n this._isInFocus = false;\n\n this._cdr.markForCheck();\n }\n }\n}\n","<div class=\"fd-splitter__resizer-decoration-before\"></div>\n\n<button fd-button fdType=\"transparent\" tabindex=\"-1\" class=\"fd-splitter__resizer-grip\">\n <fd-icon\n class=\"fd-splitter__resizer-grip-icon\"\n [glyph]=\"(_isVertical && 'vertical-grip') || (_isHorizontal && 'horizontal-grip')\"\n ></fd-icon>\n</button>\n\n<div class=\"fd-splitter__resizer-decoration-after\"></div>\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Optional,\n Output,\n Pipe,\n PipeTransform,\n QueryList,\n SkipSelf,\n ViewEncapsulation\n} from '@angular/core';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\n\nimport { SplitterComponent } from '../splitter.component';\nimport { SplitterPaneResizeEvent } from '../interfaces/splitter-pane-resize-event.interface';\nimport { SplitterSplitPaneComponent } from '../splitter-split-pane/splitter-split-pane.component';\nimport { PANE_AUTO_SIZE, PANE_NONE_SIZE, RESIZER_SIZE_PX, ROOT_PAGE } from '../constants';\nimport {\n SplitterPaneContainerOrientation,\n SplitterPaneContainerOrientationType\n} from './splitter-pane-orientation.enum';\n\n@Component({\n selector: 'fd-splitter-pane-container',\n templateUrl: './splitter-pane-container.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-splitter__pane-container',\n '[class.fd-splitter__pane-container--horizontal]': '!_isRootContainer && _isHorizontal',\n '[class.fd-splitter__pane-container--vertical]': '_isRootContainer || _isVertical'\n }\n})\nexport class SplitterPaneContainerComponent implements AfterContentInit, AfterViewInit, OnDestroy {\n /** Pane type - vertical (default) or horizontal. */\n @Input()\n orientation: SplitterPaneContainerOrientationType = SplitterPaneContainerOrientation.vertical;\n\n /**\n * Style of the resizer.\n */\n @Input()\n resizerType: 'default' | 'transparent' | 'translucent' = 'default';\n\n /** Event emitted after container's panes has resized. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n readonly resize = new EventEmitter<SplitterPaneResizeEvent[]>();\n\n /** @hidden */\n @ContentChildren(SplitterSplitPaneComponent, { descendants: true })\n _panes: QueryList<SplitterSplitPaneComponent>;\n\n /** @hidden */\n @ContentChildren(SplitterSplitPaneComponent)\n _directPanes: QueryList<SplitterSplitPaneComponent>;\n\n /** @hidden */\n _defaultPane: SplitterSplitPaneComponent;\n\n /** @hidden */\n _pages: string[] = [];\n\n /** @hidden */\n _currentPage: string;\n\n /** @hidden */\n private _paneSizes: number[] = [];\n\n /** @hidden */\n private _wantedPanesSizes: number[] = [];\n\n /** @hidden */\n private _initialPaneSizes: number[] = [];\n\n /** @hidden */\n private _directPaneSubscription$ = new Subscription();\n\n /** @hidden */\n private _subscription$ = new Subscription();\n\n /** @hidden */\n get _isHorizontal(): boolean {\n return this.orientation === SplitterPaneContainerOrientation.horizontal;\n }\n\n /** @hidden */\n get _isVertical(): boolean {\n return this.orientation === SplitterPaneContainerOrientation.vertical;\n }\n\n /** @hidden */\n get _isRootContainer(): boolean {\n return !this._parentSplitterPaneContainer;\n }\n\n /** @hidden */\n get _panesOnCanvas(): SplitterSplitPaneComponent[] {\n return this._directPanes.filter((pane) => pane.isOnCanvas);\n }\n\n /** @hidden */\n get _activePanes(): SplitterSplitPaneComponent[] {\n if (this._currentPage === ROOT_PAGE) {\n return this._panesOnCanvas;\n }\n\n return this._panes.filter((pane) => pane.id === this._currentPage);\n }\n\n /** @hidden */\n private get _panesInRightOrderForResize(): SplitterSplitPaneComponent[] {\n const panes = this._directPanes.filter((pane) => pane.id !== this._defaultPane?.id);\n\n if (this._defaultPane) {\n panes.unshift(this._defaultPane);\n }\n\n return panes;\n }\n\n /** @hidden */\n private get _isRtl(): boolean {\n return this._rtlService?.rtl.getValue();\n }\n\n /** @hidden */\n constructor(\n private readonly _cdr: ChangeDetectorRef,\n private readonly _elementRef: ElementRef,\n private readonly _splitter: SplitterComponent,\n private readonly _viewportRuler: ViewportRuler,\n @Optional() private readonly _rtlService: RtlService,\n @Optional() @SkipSelf() private readonly _parentSplitterPaneContainer: SplitterPaneContainerComponent\n ) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (this._isRootContainer) {\n this._setDefaultPane();\n this._updatePages();\n\n this._panes.forEach((pane) => {\n this._subscription$.add(pane.toggleOnCanvas.subscribe(() => this._updatePages()));\n });\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._setPanes();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._directPaneSubscription$.unsubscribe();\n this._subscription$.unsubscribe();\n }\n\n /** @hidden */\n _getPaneStyles(pane: SplitterSplitPaneComponent): { [klass: string]: any } {\n const style = {\n 'min-width': PANE_AUTO_SIZE,\n 'max-width': PANE_NONE_SIZE,\n 'min-height': PANE_AUTO_SIZE,\n 'max-height': PANE_NONE_SIZE\n };\n\n if (this._isVertical && pane.isOnCanvas && pane._actualSize !== PANE_AUTO_SIZE) {\n style['min-width'] = pane._actualSize;\n style['max-width'] = pane._actualSize;\n }\n\n if (this._isHorizontal && pane.isOnCanvas && pane._actualSize !== PANE_AUTO_SIZE) {\n style['min-height'] = pane._actualSize;\n style['max-height'] = pane._actualSize;\n }\n\n return style;\n }\n\n /** @hidden */\n _startResize(): void {\n this._paneSizes = [];\n this._initialPaneSizes = [];\n\n this._panesInRightOrderForResize.forEach((pane) => {\n const paneSize = this._getPaneElementSizePx(pane.id);\n\n this._paneSizes.push(paneSize);\n this._initialPaneSizes.push(paneSize);\n });\n }\n\n /** @hidden */\n _endResize(): void {\n const changedPaneSizes: SplitterPaneResizeEvent[] = [];\n\n this._panesInRightOrderForResize.forEach((pane, index) => {\n if (this._paneSizes[index] !== this._initialPaneSizes[index]) {\n changedPaneSizes.push({\n paneId: pane.id,\n oldSize: this._initialPaneSizes[index] + 'px',\n newSize: this._paneSizes[index] + 'px'\n });\n }\n });\n\n this.resize.emit(changedPaneSizes);\n\n this._resizePanesToFitInContainer(true);\n }\n\n /** @hidden */\n _onResize(paneId: string, diff: number): void {\n if (diff === 0) {\n return;\n }\n\n diff *= this._isRtl && this.orientation === SplitterPaneContainerOrientation.vertical ? -1 : 1;\n\n const resizedPaneIndex =\n this._panesInRightOrderForResize.findIndex((pane) => pane.id === paneId) + (diff < 0 ? 1 : 0);\n const resizedPane = this._panesInRightOrderForResize[resizedPaneIndex];\n\n let siblingPaneIndex = resizedPaneIndex;\n let siblingPane;\n let siblingPaneSize;\n\n do {\n siblingPaneIndex += diff < 0 ? -1 : 1;\n siblingPane = this._panesInRightOrderForResize[siblingPaneIndex];\n siblingPaneSize = this._paneSizes[siblingPaneIndex];\n\n if (!siblingPane) {\n return;\n }\n } while (!siblingPaneSize);\n\n const resizedPaneNewSize = this._paneSizes[resizedPaneIndex] + diff * (diff < 0 ? -1 : 1);\n const siblingPaneNewSize = this._paneSizes[siblingPaneIndex] + diff * (diff < 0 ? 1 : -1);\n\n /** Prevent from setting negative size */\n if (resizedPaneNewSize < 0 || siblingPaneNewSize < 0) {\n return;\n }\n\n this._paneSizes[resizedPaneIndex] = resizedPaneNewSize;\n this._paneSizes[siblingPaneIndex] = siblingPaneNewSize;\n\n resizedPane.size = this._paneSizes[resizedPaneIndex] + 'px';\n siblingPane.size = this._paneSizes[siblingPaneIndex] + 'px';\n\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n _onPageChange(page: string = ROOT_PAGE): void {\n this._currentPage = page;\n\n this._cdr.detectChanges();\n }\n\n /** @hidden */\n private _updatePages(): void {\n this._pages = [];\n\n const offCanvasDemandPages = this._panes\n .filter((pane) => !pane.isOnCanvas && pane.demandPane)\n .map((pane) => pane.id);\n let newPage = ROOT_PAGE;\n\n if (offCanvasDemandPages.length) {\n this._pages = offCanvasDemandPages;\n newPage = offCanvasDemandPages[0];\n\n if (this._panesOnCanvas.length > 1) {\n this._pages.unshift(ROOT_PAGE);\n newPage = ROOT_PAGE;\n }\n\n if (this._panesOnCanvas.length === 1) {\n this._pages.unshift(this._panesOnCanvas[0].id);\n newPage = this._panesOnCanvas[0].id;\n }\n }\n\n const currentPageExist = this._pages.includes(this._currentPage);\n\n if (!currentPageExist) {\n /** Detaching basically works without the code but it's the edge-case */\n const isShouldDetachDefaultPane = this._currentPage === this._defaultPane?.id && newPage === ROOT_PAGE;\n\n if (isShouldDetachDefaultPane && this._defaultPane?._content?.isAttached) {\n this._defaultPane._content.detach();\n }\n\n this._onPageChange(newPage);\n return;\n }\n\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n private _setPanes(): void {\n this._resizePanesToFitInContainer(true);\n\n const setDirectPanesSubscription = (): void => {\n this._directPaneSubscription$.unsubscribe();\n this._directPaneSubscription$ = new Subscription();\n\n this._directPanes.forEach((pane) => {\n this._directPaneSubscription$.add(\n pane.toggleOnCanvas.subscribe(() => this._resizePanesToFitInContainer())\n );\n });\n };\n\n let prevDirectPanes = [...this._directPanes];\n const areDirectPanesSame = (panes: QueryList<SplitterSplitPaneComponent>): boolean => {\n if (panes.length !== prevDirectPanes.length) {\n return false;\n }\n\n return prevDirectPanes.every((prevPane) => !!panes.find((pane) => pane.id === prevPane.id));\n };\n\n setDirectPanesSubscription();\n\n this._subscription$.add(\n this._panes.changes.pipe(filter((panes) => !areDirectPanesSame(panes))).subscribe((panesList) => {\n prevDirectPanes = panesList.toArray();\n\n setDirectPanesSubscription();\n\n this._resizePanesToFitInContainer(true);\n })\n );\n\n this._subscription$.add(this._viewportRuler.change(10).subscribe(() => this._resizePanesToFitInContainer()));\n }\n\n /** @hidden */\n private _setDefaultPane(): void {\n const setDefaultPane = (): void => {\n if (this._splitter.defaultPaneId) {\n this._defaultPane =\n this._panes.find((pane) => pane.id === this._splitter.defaultPaneId) ?? this._directPanes[0];\n }\n\n /** Detaching basically works without the code but it's the edge-case */\n if (this._defaultPane?._content?.isAttached) {\n this._defaultPane._content.detach();\n }\n };\n\n setDefaultPane();\n\n this._subscription$.add(\n this._splitter._defaultPaneId$.subscribe(() => {\n this._cdr.detectChanges();\n\n setDefaultPane();\n\n this._resizePanesToFitInContainer(true);\n this._updatePages();\n })\n );\n }\n\n /** @hidden */\n private _resizePanesToFitInContainer(setInitialSize = false): void {\n if (setInitialSize) {\n this._cdr.detectChanges();\n }\n\n const containerSizePx = this._isHorizontal\n ? this._elementRef.nativeElement.offsetHeight\n : this._elementRef.nativeElement.offsetWidth;\n let availableSpacePx = containerSizePx - RESIZER_SIZE_PX * (this._directPanes.length - 1);\n\n this._directPanes.forEach((pane, index) => {\n if (!availableSpacePx) {\n pane._actualSize = '0px';\n return;\n }\n\n if (setInitialSize) {\n this._wantedPanesSizes[index] = this._getPaneElementSizePx(pane.id);\n }\n\n const paneSize = this._wantedPanesSizes[index];\n\n if (availableSpacePx - this._wantedPanesSizes[index] < 0) {\n pane._actualSize = availableSpacePx + 'px';\n availableSpacePx = 0;\n return;\n }\n\n pane._actualSize = pane.size === PANE_AUTO_SIZE ? PANE_AUTO_SIZE : paneSize + 'px';\n availableSpacePx -= paneSize;\n });\n\n this._cdr.detectChanges();\n }\n\n /** @hidden */\n private _getPaneElementSizePx(paneId: string): number {\n const paneElement = this._getPaneElement(paneId);\n\n if (!paneElement) {\n return 0;\n }\n\n return this._isHorizontal ? paneElement.offsetHeight : paneElement.offsetWidth;\n }\n\n /** @hidden */\n private _getPaneElement(paneId: string): HTMLElement {\n return this._elementRef.nativeElement.querySelector(`#${paneId}`);\n }\n}\n\n@Pipe({ name: 'noDefaultPane' })\nexport class NoDefaultPanePipe implements PipeTransform {\n /** @hidden */\n constructor(private readonly _splitterPaneContainer: SplitterPaneContainerComponent) {}\n\n /** @hidden */\n transform(value: SplitterSplitPaneComponent[], excludingCondition = true): SplitterSplitPaneComponent[] {\n if (!excludingCondition) {\n return value;\n }\n\n return value.filter((pane) => pane.id !== this._splitterPaneContainer._defaultPane?.id);\n }\n}\n","<ng-container *ngIf=\"_isRootContainer; else panesOnCanvasTemplate\">\n <ng-container *ngIf=\"_defaultPane?.isOnCanvas && _activePanes.length > 1\">\n <ng-container\n *ngTemplateOutlet=\"panesTemplate; context: { panes: [_defaultPane], showResizer: true }\"\n ></ng-container>\n </ng-container>\n\n <div class=\"fd-splitter__split-pane\">\n <div\n class=\"fd-splitter__pane-container\"\n [class.fd-splitter__pane-container--horizontal]=\"!_isRootContainer && _isHorizontal\"\n [class.fd-splitter__pane-container--vertical]=\"_isRootContainer || _isVertical\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n panesTemplate;\n context: {\n panes: _activePanes | noDefaultPane : _defaultPane?.isOnCanvas && _activePanes.length > 1\n }\n \"\n ></ng-container>\n </div>\n\n <fd-splitter-pagination\n *ngIf=\"_pages.length\"\n [pages]=\"_pages\"\n [currentPage]=\"_currentPage\"\n (onPageChange)=\"_onPageChange($event)\"\n ></fd-splitter-pagination>\n </div>\n</ng-container>\n\n<ng-template #panesOnCanvasTemplate>\n <ng-container *ngTemplateOutlet=\"panesTemplate; context: { panes: _panesOnCanvas }\"></ng-container>\n</ng-template>\n\n<!-- IDE won't recognize types properly below -->\n\n<ng-template #panesTemplate let-panes=\"panes\" let-showResizer=\"showResizer\">\n <ng-container *ngFor=\"let pane of panes; let last = last\">\n <section [id]=\"pane.id\" class=\"fd-splitter__split-pane\" [style]=\"_getPaneStyles(pane)\">\n <ng-template [cdkPortalOutlet]=\"pane._content\"></ng-template>\n </section>\n\n <fd-splitter-resizer\n *ngIf=\"!last || showResizer\"\n [orientation]=\"orientation\"\n (startResize)=\"_startResize()\"\n (endResize)=\"_endResize()\"\n (resize)=\"_onResize(pane.id, $event)\"\n [class]=\"'fd-splitter__resizer--' + resizerType\"\n ></fd-splitter-resizer>\n </ng-container>\n</ng-template>\n","import { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\n\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { I18nModule } from '@fundamental-ngx/i18n';\n\nimport { SplitterPaginationComponent } from './splitter-pagination/splitter-pagination.component';\nimport {\n SplitterPaneContainerComponent,\n NoDefaultPanePipe\n} from './splitter-pane-container/splitter-pane-container.component';\nimport { SplitterResizerComponent } from './splitter-resizer/splitter-resizer.component';\nimport { SplitterSplitPaneComponent } from './splitter-split-pane/splitter-split-pane.component';\nimport { SplitterComponent } from './splitter.component';\n\n@NgModule({\n declarations: [\n SplitterComponent,\n SplitterPaneContainerComponent,\n SplitterSplitPaneComponent,\n SplitterResizerComponent,\n SplitterPaginationComponent,\n NoDefaultPanePipe\n ],\n imports: [CommonModule, IconModule, ButtonModule, PortalModule, I18nModule],\n exports: [\n SplitterComponent,\n SplitterPaneContainerComponent,\n SplitterSplitPaneComponent,\n SplitterResizerComponent,\n SplitterPaginationComponent,\n NoDefaultPanePipe\n ]\n})\nexport class SplitterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.SplitterComponent","i2","i4","i1","i3"],"mappings":"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"}
|
|
@@ -60,10 +60,10 @@ class TextComponent {
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
TextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: TextComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
63
|
-
TextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: TextComponent, selector: "fd-text", inputs: { text: "text", maxLines: "maxLines", whitespaces: "whitespaces", hyphenation: "hyphenation", expandable: "expandable", moreLabel: "moreLabel", lessLabel: "lessLabel", isCollapsed: "isCollapsed" }, outputs: { isCollapsedChange: "isCollapsedChange" }, ngImport: i0, template: "<p class=\"fd-text\" [class.fd-text--pre-wrap]=\"whitespaces\" [style.hyphens]=\"hyphenation\">\n <span\n
|
|
63
|
+
TextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: TextComponent, selector: "fd-text", inputs: { text: "text", maxLines: "maxLines", whitespaces: "whitespaces", hyphenation: "hyphenation", expandable: "expandable", moreLabel: "moreLabel", lessLabel: "lessLabel", isCollapsed: "isCollapsed" }, outputs: { isCollapsedChange: "isCollapsedChange" }, ngImport: i0, template: "<p class=\"fd-text\" [class.fd-text--pre-wrap]=\"whitespaces\" [style.hyphens]=\"hyphenation\">\n <span\n fdkLineClamp\n class=\"fd-text__lineclamp\"\n #lineClamp=\"fdLineClamp\"\n [fdLineclampState]=\"_isCollapsed\"\n [fdLineClampLines]=\"maxLines\"\n (lineCountUpdate)=\"checkLineCount($event)\"\n >\n <span fdkLineClampTarget [fdLineClampTargetText]=\"text\" (update)=\"lineClamp.refreshTarget($event)\"></span>\n </span>\n\n <a\n fd-link\n tabindex=\"0\"\n class=\"fd-text__link--more\"\n *ngIf=\"_expandable && _hasMore\"\n (keydown.enter)=\"toggleTextView()\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreText.moreLabel' | fdTranslate)\n : lessLabel || ('coreText.lessLabel' | fdTranslate)\n \"\n ></a>\n</p>\n", styles: ["/*!\n * Fundamental Library Styles v0.27.1\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-text{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-text:after,.fd-text:before{box-sizing:inherit;font-size:inherit}.fd-text::selection{background-color:var(--fdText_Selected_Background_Color);color:var(--sapContent_ContrastTextColor)}.fd-text--max-lines{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.fd-text--pre-wrap{white-space:pre-wrap}.fd-text--hyphenation{-webkit-hyphens:auto;hyphens:auto}.fd-text__link--more{cursor:pointer;text-transform:uppercase}.fd-text__lineclamp{display:block}.fd-text__link--more{text-transform:uppercase;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "directive", type: i3.LineClampTargetDirective, selector: "[fdkLineClampTarget], [fdLineClampTarget], [fd-lineclamp-target]", inputs: ["fdLineClampTargetText"], outputs: ["update"], exportAs: ["fdLineClampTarget"] }, { kind: "directive", type: i3.LineClampDirective, selector: "[fdkLineClamp], [fdLineClamp], [fd-lineclamp]", inputs: ["fdLineClampLines", "fdLineclampState"], outputs: ["lineCountUpdate"], exportAs: ["fdLineClamp"] }, { kind: "pipe", type: i4.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
64
64
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: TextComponent, decorators: [{
|
|
65
65
|
type: Component,
|
|
66
|
-
args: [{ selector: 'fd-text', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<p class=\"fd-text\" [class.fd-text--pre-wrap]=\"whitespaces\" [style.hyphens]=\"hyphenation\">\n <span\n
|
|
66
|
+
args: [{ selector: 'fd-text', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<p class=\"fd-text\" [class.fd-text--pre-wrap]=\"whitespaces\" [style.hyphens]=\"hyphenation\">\n <span\n fdkLineClamp\n class=\"fd-text__lineclamp\"\n #lineClamp=\"fdLineClamp\"\n [fdLineclampState]=\"_isCollapsed\"\n [fdLineClampLines]=\"maxLines\"\n (lineCountUpdate)=\"checkLineCount($event)\"\n >\n <span fdkLineClampTarget [fdLineClampTargetText]=\"text\" (update)=\"lineClamp.refreshTarget($event)\"></span>\n </span>\n\n <a\n fd-link\n tabindex=\"0\"\n class=\"fd-text__link--more\"\n *ngIf=\"_expandable && _hasMore\"\n (keydown.enter)=\"toggleTextView()\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreText.moreLabel' | fdTranslate)\n : lessLabel || ('coreText.lessLabel' | fdTranslate)\n \"\n ></a>\n</p>\n", styles: ["/*!\n * Fundamental Library Styles v0.27.1\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-text{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-text:after,.fd-text:before{box-sizing:inherit;font-size:inherit}.fd-text::selection{background-color:var(--fdText_Selected_Background_Color);color:var(--sapContent_ContrastTextColor)}.fd-text--max-lines{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.fd-text--pre-wrap{white-space:pre-wrap}.fd-text--hyphenation{-webkit-hyphens:auto;hyphens:auto}.fd-text__link--more{cursor:pointer;text-transform:uppercase}.fd-text__lineclamp{display:block}.fd-text__link--more{text-transform:uppercase;cursor:pointer}\n"] }]
|
|
67
67
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { text: [{
|
|
68
68
|
type: Input
|
|
69
69
|
}], maxLines: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-text.mjs","sources":["../../../../libs/core/src/lib/text/text.component.ts","../../../../libs/core/src/lib/text/text.component.html","../../../../libs/core/src/lib/text/text.module.ts","../../../../libs/core/src/lib/text/fundamental-ngx-core-text.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\n/** Type of hyphenation */\nexport type HyphenationType = 'none' | 'manual' | 'auto' | null;\n\n@Component({\n selector: 'fd-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TextComponent {\n /**\n * Text for render\n */\n @Input()\n text: string;\n\n /**\n * Max visible lines of text\n */\n @Input()\n maxLines: Nullable<number> = null;\n\n /**\n * Property allowing browsers to render whitespace and tabs\n */\n @Input()\n whitespaces = false;\n\n /**\n * Property for managing hyphenation, using css rule hyphens.\n */\n @Input()\n hyphenation: HyphenationType = null;\n\n /**\n * Option that adds more and less buttons to expand/collapse text\n */\n @Input()\n expandable = false;\n\n /**\n * @deprecated use i18n capabilities instead\n * Text for more button\n */\n @Input()\n moreLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Text for less button\n */\n @Input()\n lessLabel: string;\n\n /**\n * Option to set text collapsed or expand on render\n */\n @Input()\n isCollapsed = true;\n\n /**\n * Event, notifying about collapse state changes\n */\n @Output()\n isCollapsedChange = new EventEmitter<boolean>();\n\n /** @hidden */\n get _isCollapsed(): boolean {\n return this.isCollapsed && !!this.maxLines && this.maxLines > 0;\n }\n\n /** @hidden */\n get _expandable(): boolean {\n return this.expandable && !!this.maxLines && this.maxLines > 0;\n }\n\n /** @hidden */\n _hasMore = false;\n\n /** @hidden */\n constructor(private readonly _changeDetectorRef: ChangeDetectorRef) {}\n\n /** @hidden */\n toggleTextView(): void {\n this.isCollapsed = !this.isCollapsed;\n this.isCollapsedChange.emit(this.isCollapsed);\n }\n\n /** @hidden */\n checkLineCount(count: number): void {\n this._hasMore = !!this.maxLines && count > this.maxLines;\n this._changeDetectorRef.detectChanges();\n }\n}\n","<p class=\"fd-text\" [class.fd-text--pre-wrap]=\"whitespaces\" [style.hyphens]=\"hyphenation\">\n <span\n
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-text.mjs","sources":["../../../../libs/core/src/lib/text/text.component.ts","../../../../libs/core/src/lib/text/text.component.html","../../../../libs/core/src/lib/text/text.module.ts","../../../../libs/core/src/lib/text/fundamental-ngx-core-text.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\n/** Type of hyphenation */\nexport type HyphenationType = 'none' | 'manual' | 'auto' | null;\n\n@Component({\n selector: 'fd-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TextComponent {\n /**\n * Text for render\n */\n @Input()\n text: string;\n\n /**\n * Max visible lines of text\n */\n @Input()\n maxLines: Nullable<number> = null;\n\n /**\n * Property allowing browsers to render whitespace and tabs\n */\n @Input()\n whitespaces = false;\n\n /**\n * Property for managing hyphenation, using css rule hyphens.\n */\n @Input()\n hyphenation: HyphenationType = null;\n\n /**\n * Option that adds more and less buttons to expand/collapse text\n */\n @Input()\n expandable = false;\n\n /**\n * @deprecated use i18n capabilities instead\n * Text for more button\n */\n @Input()\n moreLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Text for less button\n */\n @Input()\n lessLabel: string;\n\n /**\n * Option to set text collapsed or expand on render\n */\n @Input()\n isCollapsed = true;\n\n /**\n * Event, notifying about collapse state changes\n */\n @Output()\n isCollapsedChange = new EventEmitter<boolean>();\n\n /** @hidden */\n get _isCollapsed(): boolean {\n return this.isCollapsed && !!this.maxLines && this.maxLines > 0;\n }\n\n /** @hidden */\n get _expandable(): boolean {\n return this.expandable && !!this.maxLines && this.maxLines > 0;\n }\n\n /** @hidden */\n _hasMore = false;\n\n /** @hidden */\n constructor(private readonly _changeDetectorRef: ChangeDetectorRef) {}\n\n /** @hidden */\n toggleTextView(): void {\n this.isCollapsed = !this.isCollapsed;\n this.isCollapsedChange.emit(this.isCollapsed);\n }\n\n /** @hidden */\n checkLineCount(count: number): void {\n this._hasMore = !!this.maxLines && count > this.maxLines;\n this._changeDetectorRef.detectChanges();\n }\n}\n","<p class=\"fd-text\" [class.fd-text--pre-wrap]=\"whitespaces\" [style.hyphens]=\"hyphenation\">\n <span\n fdkLineClamp\n class=\"fd-text__lineclamp\"\n #lineClamp=\"fdLineClamp\"\n [fdLineclampState]=\"_isCollapsed\"\n [fdLineClampLines]=\"maxLines\"\n (lineCountUpdate)=\"checkLineCount($event)\"\n >\n <span fdkLineClampTarget [fdLineClampTargetText]=\"text\" (update)=\"lineClamp.refreshTarget($event)\"></span>\n </span>\n\n <a\n fd-link\n tabindex=\"0\"\n class=\"fd-text__link--more\"\n *ngIf=\"_expandable && _hasMore\"\n (keydown.enter)=\"toggleTextView()\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreText.moreLabel' | fdTranslate)\n : lessLabel || ('coreText.lessLabel' | fdTranslate)\n \"\n ></a>\n</p>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TextComponent } from './text.component';\nimport { LinkModule } from '@fundamental-ngx/core/link';\nimport { LineClampModule } from '@fundamental-ngx/cdk/utils';\nimport { I18nModule } from '@fundamental-ngx/i18n';\n\n@NgModule({\n declarations: [TextComponent],\n imports: [CommonModule, LinkModule, LineClampModule, I18nModule],\n exports: [TextComponent]\n})\nexport class TextModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;MAqBa,aAAa,CAAA;;AA0DtB,IAAA,IAAI,YAAY,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;KACnE;;AAGD,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;KAClE;;AAMD,IAAA,WAAA,CAA6B,kBAAqC,EAAA;QAArC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;AAhElE;;AAEG;QAEH,IAAQ,CAAA,QAAA,GAAqB,IAAI,CAAC;AAElC;;AAEG;QAEH,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAEpB;;AAEG;QAEH,IAAW,CAAA,WAAA,GAAoB,IAAI,CAAC;AAEpC;;AAEG;QAEH,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAgBnB;;AAEG;QAEH,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;AAEnB;;AAEG;AAEH,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAW,CAAC;;QAahD,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;KAGqD;;IAGtE,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACjD;;AAGD,IAAA,cAAc,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;AACzD,QAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KAC3C;;0GAnFQ,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,kTCrB1B,u5BA0BA,EAAA,MAAA,EAAA,CAAA,g+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,kEAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDLa,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,iBAGJ,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,u5BAAA,EAAA,MAAA,EAAA,CAAA,g+BAAA,CAAA,EAAA,CAAA;wGAO/C,IAAI,EAAA,CAAA;sBADH,KAAK;gBAON,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAON,WAAW,EAAA,CAAA;sBADV,KAAK;gBAON,WAAW,EAAA,CAAA;sBADV,KAAK;gBAON,UAAU,EAAA,CAAA;sBADT,KAAK;gBAQN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAQN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAON,WAAW,EAAA,CAAA;sBADV,KAAK;gBAON,iBAAiB,EAAA,CAAA;sBADhB,MAAM;;;ME9DE,UAAU,CAAA;;uGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAV,UAAU,EAAA,YAAA,EAAA,CAJJ,aAAa,CAAA,EAAA,OAAA,EAAA,CAClB,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,CAAA,EAAA,OAAA,EAAA,CACrD,aAAa,CAAA,EAAA,CAAA,CAAA;AAEd,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAHT,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,CAAA,EAAA,CAAA,CAAA;2FAGtD,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,aAAa,CAAC;oBAC7B,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,CAAC;oBAChE,OAAO,EAAE,CAAC,aAAa,CAAC;AAC3B,iBAAA,CAAA;;;ACZD;;AAEG;;;;"}
|
|
@@ -112,7 +112,7 @@ const THEMING_CONFIG_TOKEN = new InjectionToken('FdThemingConfig');
|
|
|
112
112
|
|
|
113
113
|
class ThemingService {
|
|
114
114
|
/**
|
|
115
|
-
*
|
|
115
|
+
* Observable of the current theme, applied to the application.
|
|
116
116
|
*/
|
|
117
117
|
get currentTheme() {
|
|
118
118
|
return this._currentThemeSubject.asObservable();
|
|
@@ -125,7 +125,9 @@ class ThemingService {
|
|
|
125
125
|
this._document = _document;
|
|
126
126
|
this._activatedRoute = _activatedRoute;
|
|
127
127
|
this._providedConfig = _providedConfig;
|
|
128
|
-
/**
|
|
128
|
+
/**
|
|
129
|
+
* Theming configuration.
|
|
130
|
+
*/
|
|
129
131
|
this.config = new BaseThemingConfig();
|
|
130
132
|
/** @hidden */
|
|
131
133
|
this._standardThemes = [];
|
|
@@ -172,7 +174,6 @@ class ThemingService {
|
|
|
172
174
|
if (!this.config.excludeThemingFonts) {
|
|
173
175
|
this._setThemeResource('fonts', theme.theming.themeFontPath);
|
|
174
176
|
}
|
|
175
|
-
this._currentTheme = theme;
|
|
176
177
|
this._currentThemeSubject.next(theme);
|
|
177
178
|
return true;
|
|
178
179
|
}
|
|
@@ -182,6 +183,12 @@ class ThemingService {
|
|
|
182
183
|
getThemes() {
|
|
183
184
|
return [...this._availableThemes].map((entry) => entry[1]);
|
|
184
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Returns current theme definition.
|
|
188
|
+
*/
|
|
189
|
+
getCurrentTheme() {
|
|
190
|
+
return this._currentThemeSubject.value;
|
|
191
|
+
}
|
|
185
192
|
/**
|
|
186
193
|
* @hidden
|
|
187
194
|
* @param type
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-theming.mjs","sources":["../../../../libs/core/src/lib/theming/config.ts","../../../../libs/core/src/lib/theming/standard-themes.ts","../../../../libs/core/src/lib/theming/tokens.ts","../../../../libs/core/src/lib/theming/theming.service.ts","../../../../libs/core/src/lib/theming/theming.module.ts","../../../../libs/core/src/lib/theming/fundamental-ngx-core-theming.ts"],"sourcesContent":["import { ThemeDefinition, ThemeStyleLink } from './interfaces/theme.interface';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\n\n/**\n * Theming Configuration.\n */\nexport class BaseThemingConfig implements ThemingConfig {\n /**\n * Array of user-defined themes.\n */\n customThemes: ThemeDefinition[] = [];\n /**\n * Default theme.\n */\n defaultTheme = 'sap_fiori_3';\n /**\n * Default theme font file. Used as a fallback for themes which do not have own font file.\n */\n defaultFontFile = 'sap_fiori_3';\n /**\n * Whether to exclude default themes from the list of available options. By default, false.\n */\n excludeDefaultThemes = false;\n /**\n * Whether to exclude theme font file from inserting it onto the page. By default, false.\n */\n excludeThemingFonts = false;\n /**\n * URL Query parameter flag to change theme based on the provided parameter.\n */\n themeQueryParam = 'theme';\n /**\n * Whether to change theme if URL Query parameter flag has been found or changed. Default is true.\n */\n changeThemeOnQueryParamChange = true;\n /**\n * Identifiers of theme style links.\n */\n themeStyleLinkIdentifiers: Record<ThemeStyleLink, string> = {\n 'base-theme': 'base-theme-styles',\n 'custom-theme': 'custom-theme-styles',\n fonts: 'theme-font-styles'\n };\n}\n","import { ThemeDefinition } from './interfaces/theme.interface';\n\nexport const STANDARD_THEMES: ThemeDefinition[] = [\n {\n id: 'sap_horizon',\n name: 'Morning Horizon (Light)',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_dark',\n name: 'Evening Horizon (Dark)',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_hcb',\n name: 'Horizon High Contrast Black',\n description: 'Optimized contrast and accessibility for extremely bright environments',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_hcw',\n name: 'Horizon High Contrast White',\n description: 'Optimized contrast and accessibility for extremely dark environments',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_fiori_3',\n name: 'Quartz Light',\n description: 'Use in regular office environment'\n },\n {\n id: 'sap_fiori_3_dark',\n name: 'Quartz Dark',\n description: 'Use in dimmed environments'\n },\n {\n id: 'sap_fiori_3_hcb',\n name: 'Quartz High Contrast Black',\n description: 'Optimized contrast and accessibility for extremely bright environments'\n },\n {\n id: 'sap_fiori_3_hcw',\n name: 'Quartz High Contrast White',\n description: 'Optimized contrast and accessibility for extremely dark environments'\n },\n {\n id: 'sap_fiori_3_light_dark',\n name: 'Quartz Auto (Depending on the OS Settings)'\n }\n];\n","import { InjectionToken } from '@angular/core';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\n\nexport const THEMING_CONFIG_TOKEN = new InjectionToken<Partial<ThemingConfig>>('FdThemingConfig');\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, isDevMode, OnDestroy, Optional, Renderer2, RendererFactory2 } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { cloneDeep, merge } from 'lodash-es';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { THEME_SWITCHER_ROUTER_MISSING_ERROR } from '@fundamental-ngx/cdk/utils';\nimport { BaseThemingConfig } from './config';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\nimport { STANDARD_THEMES } from './standard-themes';\nimport {\n CompleteThemeDefinition,\n CompleteThemingResource,\n ThemeDefinition,\n ThemeStyleLink\n} from './interfaces/theme.interface';\nimport { THEMING_CONFIG_TOKEN } from './tokens';\n\n@Injectable()\nexport class ThemingService implements OnDestroy {\n /** @hidden */\n private readonly config = new BaseThemingConfig();\n\n /**\n * Current theme applied to the application.\n */\n get currentTheme(): Observable<CompleteThemeDefinition | null> {\n return this._currentThemeSubject.asObservable();\n }\n\n /** @hidden */\n private readonly _renderer: Renderer2;\n\n /** @hidden */\n private readonly _availableThemes: Map<string, CompleteThemeDefinition>;\n\n /** @hidden */\n private readonly _standardThemes: ThemeDefinition[] = [];\n\n /** @hidden **/\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _currentTheme: CompleteThemeDefinition;\n\n /** @hidden */\n private readonly _currentThemeSubject: BehaviorSubject<CompleteThemeDefinition | null> =\n new BehaviorSubject<CompleteThemeDefinition | null>(null);\n\n /**\n * @hidden\n */\n constructor(\n private _rendererFactory: RendererFactory2,\n @Inject(DOCUMENT) private _document: Document,\n @Optional() private _activatedRoute: ActivatedRoute,\n @Optional()\n @Inject(THEMING_CONFIG_TOKEN)\n private readonly _providedConfig: Partial<ThemingConfig>\n ) {\n this.config = merge(cloneDeep(this.config), cloneDeep(this._providedConfig));\n\n this._renderer = this._rendererFactory.createRenderer(this._document, null);\n\n if (!this.config.excludeDefaultThemes) {\n this._standardThemes = STANDARD_THEMES;\n }\n\n const mergedThemes = this._formatProvidedThemes(this.config.customThemes);\n this._availableThemes = new Map<string, CompleteThemeDefinition>(\n mergedThemes.map((theme) => [theme.id, theme])\n );\n }\n\n /**\n * Initiates theme change based on query parameter or provided default theme in config.\n */\n init(): void {\n if (this.config.changeThemeOnQueryParamChange) {\n this._setThemeByRoute();\n } else {\n this.setTheme(this.config.defaultTheme);\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * Sets defined theme.\n * @param themeId ID of theme that needs to be used by the application.\n */\n setTheme(themeId: string): boolean {\n const theme = this._availableThemes.get(themeId);\n\n if (!theme) {\n console.warn(\n `Theme with ID '${themeId}' is not found. Please check if ID is correct or provide custom theme for ThemingModule.`\n );\n return false;\n }\n\n this._setThemeResource('base-theme', theme.theming.themingBasePath);\n this._setThemeResource('custom-theme', theme.theming.themePath);\n\n if (!this.config.excludeThemingFonts) {\n this._setThemeResource('fonts', theme.theming.themeFontPath);\n }\n\n this._currentTheme = theme;\n this._currentThemeSubject.next(theme);\n\n return true;\n }\n\n /**\n * Returns array of available themes.\n */\n getThemes(): CompleteThemeDefinition[] {\n return [...this._availableThemes].map((entry) => entry[1]);\n }\n\n /**\n * @hidden\n * @param type\n * @param resourceUrl\n * @private\n */\n private _setThemeResource(type: ThemeStyleLink, resourceUrl: string): void {\n const linkElm = this._getStyleLinkElement(type);\n\n if (linkElm.getAttribute('href') === resourceUrl) {\n return;\n }\n\n this._renderer.setAttribute(linkElm, 'href', resourceUrl);\n }\n\n /**\n * @hidden\n * @param type\n * @private\n */\n private _getStyleLinkElement(type: ThemeStyleLink): HTMLLinkElement {\n const existingLinkElement = this._document.getElementById(this.config.themeStyleLinkIdentifiers[type]);\n\n if (existingLinkElement) {\n return existingLinkElement as HTMLLinkElement;\n }\n\n const newLinkElement = this._renderer.createElement('link');\n this._renderer.setAttribute(newLinkElement, 'rel', 'stylesheet');\n this._renderer.setAttribute(newLinkElement, 'id', this.config.themeStyleLinkIdentifiers[type]);\n this._renderer.appendChild(this._document.head, newLinkElement);\n\n return newLinkElement;\n }\n\n /**\n * @hidden\n * @param themes\n * @private\n */\n private _formatProvidedThemes(themes?: ThemeDefinition[]): CompleteThemeDefinition[] {\n themes = themes || [];\n const mergedThemes = [...this._standardThemes, ...themes];\n\n if (mergedThemes.length === 0 && isDevMode()) {\n console.error('Error. No themes were provided. Please check your configuration.');\n }\n\n return mergedThemes.map((theme) => {\n theme.theming = this._getThemingResourceConfig(theme);\n return theme;\n }) as CompleteThemeDefinition[];\n }\n\n /** @hidden */\n private _getThemingResourceConfig(theme: ThemeDefinition): CompleteThemingResource {\n const existingConfig = theme.theming || {};\n const defaultConfig: CompleteThemingResource = {\n themingBasePath: `assets/theming-base/${theme.id}/css_variables.css`,\n themePath: `assets/fundamental-styles-theming/${theme.id}.css`,\n themeFontPath: `${this.config.defaultFontFile}_fonts.css`\n };\n\n return Object.assign(defaultConfig, existingConfig);\n }\n\n /** @hidden */\n private _getNativeParameterByName(paramName: string): string {\n paramName = paramName.replace(/[[\\\\\\]]/g, '\\\\$&');\n const regex = new RegExp('[?&]' + paramName + '(=([^&#]*)|&|#|$)'),\n results = regex.exec(window.location.href);\n if (!results || !results[2]) {\n return '';\n }\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n }\n\n /**\n * @hidden\n * Set theme according to additional URL parameter.\n * This parameter can be changed in function argument.\n **/\n private _setThemeByRoute(): void {\n const paramName = this.config.themeQueryParam;\n\n if (!this._activatedRoute) {\n throw new Error(THEME_SWITCHER_ROUTER_MISSING_ERROR);\n }\n\n this._activatedRoute.queryParams\n .pipe(\n takeUntil(this._onDestroy$),\n filter((param) => param && param[paramName])\n )\n .subscribe((param) => this.setTheme(param[paramName]));\n\n const nativeTheme = this._getNativeParameterByName(paramName) || this.config.defaultTheme;\n this.setTheme(nativeTheme);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseThemingConfig } from './config';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\nimport { ThemingService } from './theming.service';\nimport { THEMING_CONFIG_TOKEN } from './tokens';\n\n@NgModule({\n imports: [CommonModule],\n providers: [\n {\n provide: THEMING_CONFIG_TOKEN,\n useValue: new BaseThemingConfig()\n },\n ThemingService\n ]\n})\nexport class ThemingModule {\n /** Module with providers */\n static withConfig(config: Partial<ThemingConfig>): ModuleWithProviders<ThemingModule> {\n return {\n ngModule: ThemingModule,\n providers: [\n {\n provide: THEMING_CONFIG_TOKEN,\n useValue: config\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-theming.mjs","sources":["../../../../libs/core/src/lib/theming/config.ts","../../../../libs/core/src/lib/theming/standard-themes.ts","../../../../libs/core/src/lib/theming/tokens.ts","../../../../libs/core/src/lib/theming/theming.service.ts","../../../../libs/core/src/lib/theming/theming.module.ts","../../../../libs/core/src/lib/theming/fundamental-ngx-core-theming.ts"],"sourcesContent":["import { ThemeDefinition, ThemeStyleLink } from './interfaces/theme.interface';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\n\n/**\n * Theming Configuration.\n */\nexport class BaseThemingConfig implements ThemingConfig {\n /**\n * Array of user-defined themes.\n */\n customThemes: ThemeDefinition[] = [];\n /**\n * Default theme.\n */\n defaultTheme = 'sap_fiori_3';\n /**\n * Default theme font file. Used as a fallback for themes which do not have own font file.\n */\n defaultFontFile = 'sap_fiori_3';\n /**\n * Whether to exclude default themes from the list of available options. By default, false.\n */\n excludeDefaultThemes = false;\n /**\n * Whether to exclude theme font file from inserting it onto the page. By default, false.\n */\n excludeThemingFonts = false;\n /**\n * URL Query parameter flag to change theme based on the provided parameter.\n */\n themeQueryParam = 'theme';\n /**\n * Whether to change theme if URL Query parameter flag has been found or changed. Default is true.\n */\n changeThemeOnQueryParamChange = true;\n /**\n * Identifiers of theme style links.\n */\n themeStyleLinkIdentifiers: Record<ThemeStyleLink, string> = {\n 'base-theme': 'base-theme-styles',\n 'custom-theme': 'custom-theme-styles',\n fonts: 'theme-font-styles'\n };\n}\n","import { ThemeDefinition } from './interfaces/theme.interface';\n\nexport const STANDARD_THEMES: ThemeDefinition[] = [\n {\n id: 'sap_horizon',\n name: 'Morning Horizon (Light)',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_dark',\n name: 'Evening Horizon (Dark)',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_hcb',\n name: 'Horizon High Contrast Black',\n description: 'Optimized contrast and accessibility for extremely bright environments',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_hcw',\n name: 'Horizon High Contrast White',\n description: 'Optimized contrast and accessibility for extremely dark environments',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_fiori_3',\n name: 'Quartz Light',\n description: 'Use in regular office environment'\n },\n {\n id: 'sap_fiori_3_dark',\n name: 'Quartz Dark',\n description: 'Use in dimmed environments'\n },\n {\n id: 'sap_fiori_3_hcb',\n name: 'Quartz High Contrast Black',\n description: 'Optimized contrast and accessibility for extremely bright environments'\n },\n {\n id: 'sap_fiori_3_hcw',\n name: 'Quartz High Contrast White',\n description: 'Optimized contrast and accessibility for extremely dark environments'\n },\n {\n id: 'sap_fiori_3_light_dark',\n name: 'Quartz Auto (Depending on the OS Settings)'\n }\n];\n","import { InjectionToken } from '@angular/core';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\n\nexport const THEMING_CONFIG_TOKEN = new InjectionToken<Partial<ThemingConfig>>('FdThemingConfig');\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, isDevMode, OnDestroy, Optional, Renderer2, RendererFactory2 } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { cloneDeep, merge } from 'lodash-es';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Nullable, THEME_SWITCHER_ROUTER_MISSING_ERROR } from '@fundamental-ngx/cdk/utils';\nimport { BaseThemingConfig } from './config';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\nimport { STANDARD_THEMES } from './standard-themes';\nimport {\n CompleteThemeDefinition,\n CompleteThemingResource,\n ThemeDefinition,\n ThemeStyleLink\n} from './interfaces/theme.interface';\nimport { THEMING_CONFIG_TOKEN } from './tokens';\n\n@Injectable()\nexport class ThemingService implements OnDestroy {\n /**\n * Theming configuration.\n */\n readonly config = new BaseThemingConfig();\n\n /**\n * Observable of the current theme, applied to the application.\n */\n get currentTheme(): Observable<CompleteThemeDefinition | null> {\n return this._currentThemeSubject.asObservable();\n }\n\n /** @hidden */\n private readonly _renderer: Renderer2;\n\n /** @hidden */\n private readonly _availableThemes: Map<string, CompleteThemeDefinition>;\n\n /** @hidden */\n private readonly _standardThemes: ThemeDefinition[] = [];\n\n /** @hidden **/\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private readonly _currentThemeSubject: BehaviorSubject<CompleteThemeDefinition | null> =\n new BehaviorSubject<CompleteThemeDefinition | null>(null);\n\n /**\n * @hidden\n */\n constructor(\n private _rendererFactory: RendererFactory2,\n @Inject(DOCUMENT) private _document: Document,\n @Optional() private _activatedRoute: ActivatedRoute,\n @Optional()\n @Inject(THEMING_CONFIG_TOKEN)\n private readonly _providedConfig: Partial<ThemingConfig>\n ) {\n this.config = merge(cloneDeep(this.config), cloneDeep(this._providedConfig));\n\n this._renderer = this._rendererFactory.createRenderer(this._document, null);\n\n if (!this.config.excludeDefaultThemes) {\n this._standardThemes = STANDARD_THEMES;\n }\n\n const mergedThemes = this._formatProvidedThemes(this.config.customThemes);\n this._availableThemes = new Map<string, CompleteThemeDefinition>(\n mergedThemes.map((theme) => [theme.id, theme])\n );\n }\n\n /**\n * Initiates theme change based on query parameter or provided default theme in config.\n */\n init(): void {\n if (this.config.changeThemeOnQueryParamChange) {\n this._setThemeByRoute();\n } else {\n this.setTheme(this.config.defaultTheme);\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * Sets defined theme.\n * @param themeId ID of theme that needs to be used by the application.\n */\n setTheme(themeId: string): boolean {\n const theme = this._availableThemes.get(themeId);\n\n if (!theme) {\n console.warn(\n `Theme with ID '${themeId}' is not found. Please check if ID is correct or provide custom theme for ThemingModule.`\n );\n return false;\n }\n\n this._setThemeResource('base-theme', theme.theming.themingBasePath);\n this._setThemeResource('custom-theme', theme.theming.themePath);\n\n if (!this.config.excludeThemingFonts) {\n this._setThemeResource('fonts', theme.theming.themeFontPath);\n }\n\n this._currentThemeSubject.next(theme);\n\n return true;\n }\n\n /**\n * Returns array of available themes.\n */\n getThemes(): CompleteThemeDefinition[] {\n return [...this._availableThemes].map((entry) => entry[1]);\n }\n\n /**\n * Returns current theme definition.\n */\n getCurrentTheme(): Nullable<ThemeDefinition> {\n return this._currentThemeSubject.value;\n }\n\n /**\n * @hidden\n * @param type\n * @param resourceUrl\n * @private\n */\n private _setThemeResource(type: ThemeStyleLink, resourceUrl: string): void {\n const linkElm = this._getStyleLinkElement(type);\n\n if (linkElm.getAttribute('href') === resourceUrl) {\n return;\n }\n\n this._renderer.setAttribute(linkElm, 'href', resourceUrl);\n }\n\n /**\n * @hidden\n * @param type\n * @private\n */\n private _getStyleLinkElement(type: ThemeStyleLink): HTMLLinkElement {\n const existingLinkElement = this._document.getElementById(this.config.themeStyleLinkIdentifiers[type]);\n\n if (existingLinkElement) {\n return existingLinkElement as HTMLLinkElement;\n }\n\n const newLinkElement = this._renderer.createElement('link');\n this._renderer.setAttribute(newLinkElement, 'rel', 'stylesheet');\n this._renderer.setAttribute(newLinkElement, 'id', this.config.themeStyleLinkIdentifiers[type]);\n this._renderer.appendChild(this._document.head, newLinkElement);\n\n return newLinkElement;\n }\n\n /**\n * @hidden\n * @param themes\n * @private\n */\n private _formatProvidedThemes(themes?: ThemeDefinition[]): CompleteThemeDefinition[] {\n themes = themes || [];\n const mergedThemes = [...this._standardThemes, ...themes];\n\n if (mergedThemes.length === 0 && isDevMode()) {\n console.error('Error. No themes were provided. Please check your configuration.');\n }\n\n return mergedThemes.map((theme) => {\n theme.theming = this._getThemingResourceConfig(theme);\n return theme;\n }) as CompleteThemeDefinition[];\n }\n\n /** @hidden */\n private _getThemingResourceConfig(theme: ThemeDefinition): CompleteThemingResource {\n const existingConfig = theme.theming || {};\n const defaultConfig: CompleteThemingResource = {\n themingBasePath: `assets/theming-base/${theme.id}/css_variables.css`,\n themePath: `assets/fundamental-styles-theming/${theme.id}.css`,\n themeFontPath: `${this.config.defaultFontFile}_fonts.css`\n };\n\n return Object.assign(defaultConfig, existingConfig);\n }\n\n /** @hidden */\n private _getNativeParameterByName(paramName: string): string {\n paramName = paramName.replace(/[[\\\\\\]]/g, '\\\\$&');\n const regex = new RegExp('[?&]' + paramName + '(=([^&#]*)|&|#|$)'),\n results = regex.exec(window.location.href);\n if (!results || !results[2]) {\n return '';\n }\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n }\n\n /**\n * @hidden\n * Set theme according to additional URL parameter.\n * This parameter can be changed in function argument.\n **/\n private _setThemeByRoute(): void {\n const paramName = this.config.themeQueryParam;\n\n if (!this._activatedRoute) {\n throw new Error(THEME_SWITCHER_ROUTER_MISSING_ERROR);\n }\n\n this._activatedRoute.queryParams\n .pipe(\n takeUntil(this._onDestroy$),\n filter((param) => param && param[paramName])\n )\n .subscribe((param) => this.setTheme(param[paramName]));\n\n const nativeTheme = this._getNativeParameterByName(paramName) || this.config.defaultTheme;\n this.setTheme(nativeTheme);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseThemingConfig } from './config';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\nimport { ThemingService } from './theming.service';\nimport { THEMING_CONFIG_TOKEN } from './tokens';\n\n@NgModule({\n imports: [CommonModule],\n providers: [\n {\n provide: THEMING_CONFIG_TOKEN,\n useValue: new BaseThemingConfig()\n },\n ThemingService\n ]\n})\nexport class ThemingModule {\n /** Module with providers */\n static withConfig(config: Partial<ThemingConfig>): ModuleWithProviders<ThemingModule> {\n return {\n ngModule: ThemingModule,\n providers: [\n {\n provide: THEMING_CONFIG_TOKEN,\n useValue: config\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|